11得票4回答
如何使用 Church 编码实现自由 Monad?

我一直在使用free包中的Control.Monad.Free中的Free数据类型。现在我想将其转换为Control.Monad.Free.Church中的F,但无法弄清楚如何映射函数。 例如,使用Free的简单模式匹配函数如下: -- Pattern match Free matchFr...

10得票3回答
寻找一个使用 Church 编码(λ演算)来定义 <、> 和 != 的方法。

我需要创建一些Lambda函数来处理 &gt;, &lt; 和 !=,但我不知道该如何操作,是否有人能帮助我?PS:我们刚开始学习Lambda演算,请不要假设任何先前的知识。谢谢提前! 编辑 - 我的意思是使用lambda演算实现Lambda演算中的算术运算 编辑2 - 更准确地说:寻找一个C...

10得票2回答
为什么差异列表不是可折叠类型的实例?

dlist包 包含了 DList 数据类型,它有很多的实例,但没有 Foldable 或者 Traversable。在我看来,这两个类是最类似“列表”的类。是否有性能原因使得 DList 不是这些类的实例呢? 此外,该包确实实现了 foldr 和 unfoldr 但没有其他的折叠函数。

7得票2回答
在λ演算中编码二进制数值

我在lambda演算中没有看到任何关于二进制数字的提及。Church数是一元系统。 我曾在这里提出过如何在Haskell中实现此操作的问题:How to implement Binary numbers in Haskell 但即使我看到并理解了那个答案,我仍然不知道如何在纯无类型lambda...