15得票1回答
F#中的Catamorphism

我正在阅读维基百科上有关“catamorphisms”(一种函数式编程概念)的文章,目前我已经能够在 F# 中复制 Haskell 的示例,但有一个部分我还没做到:type Algebra f a = f a -> a -- the generic f-algebras newtype...

27得票5回答
什么是Catamorphism?它能在C# 3.0中实现吗?

我正在尝试学习有关Catamorphism的知识,我已经阅读了维基百科文章和Inside F#博客上该主题系列的前几篇文章。 我了解它是折叠的一般化(即将许多值的结构映射到一个值,包括将值列表映射为另一个列表)。 我发现fold-list和fold-tree是一个典型的例子。 是否能够在C...

12得票1回答
如何在Java中实现functors的固定点

最近我发现了一种在Java中以某种迂回的方式来模拟高阶类型的方法,具体实现可以参考highj interface H<F, T> { } 在这里,H编码一个更高阶的类型,它接受一个类型参数F,而F本身需要一个参数T。 现在我想知道,我们能否使用这个实现一些更高级别的构造?例...

23得票1回答
能否让GHC优化(消除)通用函数例如折叠函数(catamorphisms)?

我很喜欢以一种通用的方式使用折叠/展开函数来处理范畴学中的catamorphisms/anamorphisms的想法,但我认为它有一个显著的性能缺陷: 假设我们想以范畴化的方式处理树形结构——使用通用的catamorphism function来描述不同的折叠过程: newtype Fix...

11得票1回答
一个递归方案的库实现

我“发明”了一种递归方案,它是折叠映射的一般化。使用折叠映射对数据结构进行折叠时,您无法访问子术语,只能访问折叠的子结果:{-# LANGUAGE DeriveFunctor #-} import qualified Data.Map as M newtype Fix f = Fix { u...

17得票4回答
复合多个“猫amorphism”时,何时为“猫amorphism”?

从http://research.microsoft.com/en-us/um/people/emeijer/Papers/meijer94more.pdf第3页可知: 一般情况下,猫态射并不满足合成的封闭性。 在什么条件下,猫态射才能组合成一个猫态射?更具体地(假设我正确理解了该...

16得票2回答
Catamorphism和Haskell中的树遍历

我迫不及待地希望了解与此SO问题相关的catamorphism:链接 :) 我只练习过《Real World Haskell》教程的开始部分。因此,也许我现在会问太多了,如果是这样,请告诉我应该学习哪些概念。 下面,我引用了维基百科关于catamorphism的代码示例链接. 我想知道您...

7得票2回答
我可以用“递归方案”中的“cata”函数来编写 `foldr` (或 `foldMap`)吗?

我最近阅读了有关递归方案的内容,其中将折叠函数描述为类似于广义的foldr。 在所有情况下,是否可以通过cata编写Foldable实例(通过foldr或foldMap)?

12得票2回答
如何使catamorphisms能够与参数化/索引类型一起使用?

我最近学习了一些关于F-代数的知识:https://www.fpcomplete.com/user/bartosz/understanding-algebras。我想将这种功能扩展到更高级的类型(索引和高阶)。此外,我查看了“使Haskell晋升”(http://research.micros...

7得票1回答
Scala的Option类型中,fold函数是一个范畴论中的折叠函数吗?

这个问题的答案表明,在Scala中,Option的fold方法是一个catamorphism。从维基百科上可以看到,catamorphism是“从初始代数到其他代数的唯一同态。该概念已应用于函数式编程中的折叠”。所以这似乎是合理的,但我需要了解F-代数类别中的初始代数作为初始对象。 因此,...