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

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

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

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

10得票4回答
如何为一个通用递归方案构建的数据类型提供一个Functor实例?

我有一个递归数据类型,它具有Functor实例: 我有一个递归数据类型,它具有Functor实例:data Expr1 a = Val1 a | Add1 (Expr1 a) (Expr1 a) deriving (Eq, Show, Functor) 现在,我有兴趣修改这种数据类...

35得票2回答
Ana-/Catamorphisms是否只是更慢的方式?

在写完这篇文章后,我决定付诸行动,将我的一个旧项目转换为使用recursion-schemes。 所涉及的数据结构是懒惰的kdtree。请查看具有显式递归和隐式递归的实现。 这主要是一种沿着以下方向进行的简单转换:data KDTree v a = Node a (Node v a) (N...

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

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

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

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

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

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

11得票1回答
原始递归和折叠函数之间有什么联系?

使用以下针对自然数的折叠函数,我可以实现各种算术算法,而无需处理递归: cataNat :: b -> (b -> b) -> Natural -> b cataNat zero succ = go where go n = if (n <= 0) ...

9得票1回答
什么是变形(anamorphism),在C#中它是什么样子?

我正在努力理解“anamorphism”的概念。 在函数式编程中,anamorphism是对列表展开概念的一般化。形式上,anamorphisms是通用函数,可以递归地构造某种类型的结果,并且由决定构造下一个单步的函数参数化。 它的对偶,catamorphism,在这篇文章中得到了很好的描...

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

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