树状结构的递归方案

Nas*_*eva 5 haskell functional-programming catamorphism recursion-schemes

我正在尝试构建以下递归方案:

\n\n
{-# LANGUAGE DeriveFunctor #-}\nimport Data.Functor.Foldable\nimport Control.Comonad\nimport Control.Comonad.Cofree\n\ndata Term a = Str String | Array [a] deriving (Show, Functor)\ntype Tree = Fix Term\ntype Annotated = Cofree Term String\n-- i.e. Annotated = String \xc3\x97 Term Annotated\n\nsomething :: (Term String -> String) -> Tree -> Annotated\nsomething algebra = cata algebra\' where\n    algebra\' t = algebra (extract <$> t) :< t\n
Run Code Online (Sandbox Code Playgroud)\n\n

我怎样才能something以最通用和简约的方式编写这个,使用现代递归方案库中的库存函数,例如recursion-schemes编写它?这个计划有一个众所周知的名字吗?

\n