catamorphism相关内容
我正在尝试了解 catamorphisms 并且我已经阅读了维基百科文章和F#主题系列中的前几篇文章F# 内部 博客. 我理解这是折叠的概括(即,将多个值的结构映射到一个值,包括将值列表映射到另一个列表).我认为折叠列表和折叠树是一个典型的例子. 是否可以使用 LINQ 的 Aggregate 运算符或其他一些更高阶的方法在 C# 中完成此操作? 解决方案 LINQ 的 Agg
..
我有这个简单的 Expr AST,我可以轻松地将它转换为 String. import Prelude 隐藏(可折叠)进口合格前奏将 Data.Foldable 导入为 F导入 Data.Functor.Foldable导入 Data.Monoid导入 Control.Comonad.Cofree数据 ExprF r = Const Int|添加 r派生 ( Show, Eq, Ord, Fun
..
是否有一个递归方案的名称,就像一个变态法,但是它允许在仍运行时查看最终结果?这是一个精心设计的示例: toPercents ::浮动==>[a]->[一种]toPercents xs =结果在哪里(总计,结果)=文件夹go(0,[])xs去x〜(t,r)=(x + t,100 * x/total:r){->>>toPercents [1,2,3][16.666666666666668,33.3
..
最近,我终于开始觉得自己能理解变态.我在最近的答案中写了一些关于它们的内容,但我会简要地说一遍,在递归过程中对类型的抽象化遍历该类型的值,并对该类型具有的每个构造函数将该类型上的模式匹配化为一个函数.虽然我欢迎上面链接的我的回答中的这一点或更长版本的任何更正,但我认为我或多或少都对此有所保留,这不是这个问题的主题,只是一些背景. 一旦我意识到传递给目录转换的函数完全对应于该类型的构造函数,并
..
我目前正在从结构递归/同构性的意义上学习褶皱.我对自然数使用折线来实现幂和阶乘.请注意,我几乎不了解Haskell,因此代码可能很尴尬: foldNat zero succ = go where go n = if (n
..
data数据颜色=红色|粉红色|白色|蓝色|紫色|绿色|黄色 派生(Show,Eq) 数据Plant = Leaf |开花颜色 | Stalk Plant Plant derived(Show,Eq) 现在我应该实现一个以下类型的函数 fold_plant : (x - > x - > x) - > (颜色 - > x) - > x - >植物 -
..
不用说,Haskell的标准构造 newtype修复f =修复{getFix :: f(修复f) } cata ::(Functor f)=> (f a - > a) - >修复f - > cata f = f。 fmap(cata f)。 getFix 非常棒,非常有用。 试图在Agda中定义一个类似的东西(我只是为了完整起见) da
..
许多catamorphisms似乎很简单,主要用自定义函数替换每个数据构造函数,例如 data Bool = False | True foldBool :: r - 假构造函数 - > r - 真正的构造函数 - >布尔 - > r data也许a = Nothing |只需 foldMaybe :: b - 无构造函数 - > (a - > b) -
..
我很不耐烦,期待了解变态现象相关的这个SO问题) 我只练习真实世界Haskell教程的开始。所以,也许我现在要问的方式太多了,如果是这样的话,请告诉我我应该学习的概念。下面我引用变形术的维基百科代码示例。 我想知道你对下面的foldTree的看法,这是遍历Tree的一种方式,与其他SO的问题和答案相比,还涉及遍历Tree n元树遍历。 (独立于二元或不是,我认为下面的变形可以写成为管理
..
我有这个简单的 Expr AST,我可以很容易地将它转换为 String 。 导入Prelude隐藏(可折叠) 导入限定前奏 导入Data.Foldable为F 导入Data.Functor。可折叠 导入Data.Monoid 导入Control.Comonad.Cofree 数据ExprF r = Const Int |添加rr deriving(Show,Eq,Ord,
..
典型的学术范例是总结一个清单。 是否有现实世界中使用fold的例子可以揭示它的用途? 解决方案 fold 可能是序列中最基本的操作。要求它的实用性就像在一个命令式语言中要求为循环使用一样。 给定一个列表(或数组,树或..),起始值和函数, fold 运算符将列表减少为单个结果。它也是列表的自然变形记忆(析构函数)。 将列表作为输入并在检查列表元素后生成输出的任何操作都可以编码
..
Scalaz为各种ADT提供了一个名为 fold 的方法,比如 Boolean , Option [ _] ,验证[_,_] , [_,_] 等。这种方法基本上针对给定的ADT使用与所有可能情况相对应的函数。换句话说,模式匹配如下所示: x匹配{ case Case1(a,b,c) => f(a,b,c) case情况2(a,b)=> g(a,b) 。 。 case Cas
..
我想了解catamorphisms和我读过维基百科的文章并在第一对夫妇的帖子该系列中的主题有关的在F#的博客F# 。 据我所知,这是褶皱的一般化(即,映射许多值的结构的一个值,包括值的另一个列表中的列表)。我收集了折叠式表和折叠树是一个典型的例子。 这能显示在C#中做,使用LINQ的总结运营商或其他一些高阶的方法? 解决方案 LINQ的聚合()仅仅是IEnumerables。在一般Ca
..