Python lambda:纯正的 λ 演算味儿

2021-04-08 11:27:24 +08:00
 abersheeran

最近看了一下 λ 演算。比如说,众所周知的 λ 演算里没有 a = b,赋值都靠函数参数来搞定。而 Python 也不允许你在 lambda 里写赋值操作,如果学习过 λ 演算,写 Python 的 lambda 其实感觉还行,至少不会说它难用。

看的时候顺便整了个活,Y 组合子。https://gist.github.com/abersheeran/80709d4ffd7e83c1206dbcc8df11d4d5

Y = lambda g: (lambda f: g(lambda arg: f(f)(arg))) (lambda f: g(lambda arg: f(f)(arg)))

if __name__ == "__main__":
    fib = Y(lambda f: lambda n: (1 if n < 3 else f(n-1) + f(n-2)))
    print(fib(10))
4610 次点击
所在节点    Python
41 条回复
abersheeran
2021-04-12 12:22:27 +08:00
@nthhdy 是的。所以我当它是智力游戏嘛。现实编程里我或许用不到里面任何一个东西,但可以汲取它的思想。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/768990

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX