En utilisant cata
Je peux plier un AST pour un résultat. Avec Cofree
je peux stocker des annotations supplémentaires sur l'AST. Comment est-ce que je peux prendre un AST et renvoyer un AST annoté avec les résultats à chaque étape du chemin?Schémas de récurrence Haskell: Étiqueter l'arbre avec des résultats intermédiaires
alg :: Term Result -> Result
alg = undefined
run :: Fix Term -> Result
run ast = cata alg ast
run' :: Fix Term -> Cofree Term Result
run' = ???
double possible de https://stackoverflow.com/questions/38462563/how-to-work-with-ast-with-cofree-annotation –
(tl; dr: utiliser 'produit ', pas' Cofree', pour l'étiquetage.) –
Lorsque vous utilisez 'Product', il va itérer sur les deux structures simoultaniasly, correct? – user47376