一. Y Combinator 二. 递归的本质 G(G) 三. Z Combinator 四. Turing Combinator 五. 更多的不动点组合子 附录:lambda演算 (Lambda calculus) 参考 基于可逆计算理论设计的低代码平台NopPlatform已开源: Y Combinator是Lambda演算理论中的一个关键性概念,通过它我们可以实现匿名的
我们额外引入一个概念,叫做 Combinator。Combinator 指一个没有自由变量的 L.-term,自由变量、约束变量的详细概念可以阅读有关 Lambda-Calculus 的概念。 这里简要解释一下就是,一个不需要额外信息的 Lambda-term,比如 (/x.x) 中只有 x 这个符号,而 x 会被作为自变量传入,所以这个表达式是自我封闭的,不需要额外...
这两天看了下教主关于reinvent Y组合子的PPT,对以前觉得天书一般的Y Combinator有了些理解,于是翻到《The Little Schemer》的第九章,把它的推导看了一遍,这下总算是大概明白了。Y组合子来自于lambda calculus中对于递归函数的处理。因为lambda calculus中,函数是不允许调用自己的,就像我们不能把自己举起来一样。用Sch...
你也许听说过Y组合子(又叫Y Combinator),也查过一些资料看过一些示例代码,但就是不明白什么意思,可能是因为自己平常使用的开发语言先入为主阻碍了对函数式独特的运算规则和一些细节没想清楚。 一:Lambda演算(Lambda Calculus) Lambda又写作希腊字母λ,Lambda演算由Alonzo Church引入以定义“可计算函数”。该演算影响了...
以下小节——lambda calculus——纯粹是为了没有接触过lambda算子理论的读者准备的,并不属于本文重点讨论的东西,然而要讨论Y combinator就必须先了解一下lambda(当然,以编程语言来了解也行,但是你会看到,丘齐最初提出的lambda算子理论才是最最简洁和漂亮的,学起来也最省事。)所以我单独准备了一个小节来介绍它。如果你...
lambda calculus设定下。在typed lambda calculus下,如果你的语言有recursive types,那么Y Combinator也...
因为Scheme 是一种实际的语言,跟纯粹的理论还是有一定差距。如 果要完全实验 lambda calculas, 最好使用一些专用的 lambda 计算 器。比如:http://okmij.org/ftp/Computation/lambda-calc.html就有多种语言实现的 lambda 计算器。 在Scheme 里,通常 Y Combinator 是用来实现一些很 hack 的编程 技巧,用来定义“没...
这两天看了下教主关于reinvent Y组合子的PPT,对以前觉得天书一般的Y Combinator有了些理解,于是翻到《The Little Schemer》的第九章,把它的推导看了一遍,这下总算是大概明白了。Y组合子来自于lambda calculus中对于递归函数的处理。因为lambda calculus中,函数是不允许调用自己的,就像我们不能把自己...
Y Combinator 由于匿名函数(通常成为lambda函数但是跟lambda calculus不同)在递归时无法获得函数名,从而导致一些问题,而Y Combinator能很好地解决这个问题。利用不动点的原理,可以利用一般的函数来辅助得到匿名函数的递归形式,从而间接调用无法表达的真正的匿名函数。下面以一个阶乘的递归来说明。
在typed lambda calculus下,如果你的语言有recursive types,那么Y Combinator也可以由它和其它基本元件...