http://confreaks.com/videos/1287-rubyconf2012-y-not-adventures-in-functional-programming
(wtf?)
Jim Weirich(@ jimweirich)是 Rake 的作者,也是少见的经常在演讲现场作 Live Coding 的一位风趣大叔(老爷爷?)。
这场演讲的内容主要是和 Y-Combinator 有关,Y-Combinator 是一种寻找 Fixed-Point 的一个算法,是函数式编程中经常出现的话题。
Fixed-point 定义就下面一个等式:
X = F(X)
像函数 F 输入一个值 X,其输出为 X,也就是说下面这样也是成立的
X = F(F(F(X)))
关于 Fixed-Point 大概就是这么个东西,不过这个视频的主要看点不在具体算法上,在这个演讲中 Jim 通过只使用 Lambda 的方式实现了阶乘,以及 Y-Combinator,展现了许多关于 Ruby 中 Lambda 的使用,最有意思的地方在我看来是其实现的过程。
视频内容大概如下: