I を使用cata
すると、AST を結果に折りたたむことができます。ASTにCofree
追加の注釈を格納できます。AST を取得して、各ステップの結果を含む注釈付き AST を返すにはどうすればよいですか?
alg :: Term Result -> Result
alg = undefined
run :: Fix Term -> Result
run ast = cata alg ast
run' :: Fix Term -> Cofree Term Result
run' = ???