catamorphism

    11热度

    1回答

    我'发明'一个递推方案,这是一个变形的泛化。当你与catamorphism倍的数据结构,你没有访问subterms,只能折叠子结果: {-# LANGUAGE DeriveFunctor #-} import qualified Data.Map as M newtype Fix f = Fix { unFix :: f (Fix f) } cata :: Functor f => (f

    5热度

    3回答

    有时候我发现自己正在编制模式“如果Bool不是假的”或者“如果列表不是空的使用它,否则使用别的东西”。 我要寻找的布尔认为是“可能”的功能是什么也许和功能列表。有没有? 更新:我的意思是使用布尔情况作为列表的情况下的推广。例如,当使用Data.Text作为T时: if T.null x then x else foo x 我在寻找减少这种锅炉板代码。

    23热度

    1回答

    我真的很喜欢在一个通用的方式与catamorphisms/anamorphisms工作的想法,但在我看来,它有一个显著的性能缺点: 假设我们想用一个树形结构的分类方式工作 - 来形容不同的折叠使用通用catamorphism function: newtype Fix f = Fix { unfix :: f (Fix f) } data TreeT r = Leaf | Tree r r

    1热度

    1回答

    在以下代码中,如何让cataM自上而下遍历树(而不是像现在这样是自下而上的)? 我想我应该实现foldMap不同,但因为branch如何给孩子之前处理branch节点本身没有t实例,它儿都没有? module Catatree where import Data.Foldable import Data.Traversable import Data.Monoid import Data

    10热度

    2回答

    我最近了解了一些关于F-代数的知识: https://www.fpcomplete.com/user/bartosz/understanding-algebras。 我想将这个功能提升到更高级的类型(索引和更高主动)。 此外,我检查了“给予Haskell促销”(http://research.microsoft.com/en-us/people/dimitris/fc-kind-poly.pdf)

    4热度

    3回答

    我有这样的语言AST data ExprF r = Const Int | Var String | Lambda String r | EList [r] | Apply r r deriving (Show, Eq, Ord, Functor, Foldable) 我想将它转换为字符串 toString = cata $ \

    15热度

    2回答

    我不耐烦了,期待了解catamorphism related to this SO question :) 我只练真实世界哈斯克尔教程的开始。所以,也许我现在要问的方式太多了,如果是这样的话,只要告诉我我应该学习的概念。我的报价为wikipedia code sample for catamorphism。 我想知道你对下面的foldTree的看法,这是一种遍历Tree的方法,与其他SO的问题和答

    4热度

    2回答

    我想对n元树数据结构进行折叠。 (倍是又名聚集在LINQ) 我设法拿出一个工作液: public static R Aggregate<T, R>(T node, Func<T, IEnumerable<T>> getChildren, Func<T, IEnumerable<R>, R> aggregator) { var childResults = ge

    1热度

    3回答

    典型的学术范例是总结一个列表。 是否有真实世界中使用折叠的例子来阐明其效用?

    9热度

    2回答

    我有这个AST data ExprF r = Const Int | Add r r type Expr = Fix ExprF ,我想比较 x = Fix $ Add (Fix (Const 1)) (Fix (Const 1)) y = Fix $ Add (Fix (Const 1)) (Fix (Const 2)) 但是所有的递归方案的功能似乎只用单一结构 显然工作,我可以用递