【发布时间】:2012-03-23 20:54:07
【问题描述】:
我指的是this question
type Churchlist t u = (t->u->u)->u->u
在 lambda 演算中,列表编码如下:
[] := λc. λn. n
[1,2,3] := λc. λn. c 1 (c 2 (c 3 n))
mapChurch :: (t->s) -> (Churchlist t u) -> (Churchlist s u)
mapChurch f l = \c n -> l (c.f) n
我正在考虑我可以在 Churchlists 上实现哪些其他列表函数,并成功编写了一个 conc2 函数来连接 2 个教堂列表
conc2Church l1 l2 c n = l1 c (l2 c n)
我还尝试了一个 zipWithChurch,它在普通列表上的运行方式与 zipWith 类似。但我找不到解决方案。谁能帮帮我?
【问题讨论】:
-
您是否尝试过将问题从教会列表限制到教会数字?
zip
的数字模拟是min
;写下来可能会给你一些见解。 -
感谢您的建议,如果我发现有启发性的内容,我会尝试并报告
-
我认为这更容易,就像我上面的 conc2church 示例一样。我认为在这种情况下,这对我来说是最重要的。还是谢谢你
标签: haskell lambda-calculus church-encoding