小编Som*_*ome的帖子

Lambda演算中的清单元素总和和清单长度

我正在尝试制作用于计算lambda演算中的列表元素总和和列表长度的函数。
列表示例:a := [1, 2, 3] = ?cn.c 1 (c 2 (c 3 n))
sum a应返回6并len a应返回3。

我写了递归版本:

len = ?l.if (empty l) 0 (plus 1 (len (tail l)))
sum = ?l.if (empty l) 0 (plus (head l) (sum (tail l)))
Run Code Online (Sandbox Code Playgroud)

如果if,empty,plus,tail是其他lamda函数。

然后,我使用定点组合器做了一些技巧:

len = ?l.if (empty l) 0 (plus 1 (len (tail l))) 
len = ?fl.if (empty l) 0 (plus 1 (f (tail l))) len
len = Y ?fl.if (empty l) 0 (plus 1 (f …
Run Code Online (Sandbox Code Playgroud)

functional-programming lambda-calculus

5
推荐指数
1
解决办法
1007
查看次数