最近看了一下 λ 演算。比如说,众所周知的 λ 演算里没有 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))
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.