从church numerals 理解数据抽象
现在到了数学抽象中最关键的一步:让我们忘记这些符号所表示的对象。(数学家)不应在这里停步,有许多操作可以应用于这些符号,而根本不必考虑它们到底代表着什么东西。 --- sicp (第二章 数据抽象) 邱奇数可以帮我们充分理解上面这句话和数据抽象的含义。(我的读书笔记见:http://book.douban.com/people/xulao/annotation/
(define (inc n) (+ n 1))(define zero (lambda (f zero) zero))(define one (lambda (f zero) (f zero)))(define two (lambda (f zero) (f (f zero))))(define (add x y) (lambda (f zero) (x f (y f zero))))(define three (add two one));; 3+3(define (multiply x y) (lambda (f zero) (x (lambda (z) (y f z)) zero)))(define four (multiply two three))(four inc 0)
邱奇数可以很好的将数学计算,用符号演算构造出来,并得到所有(可计算的)“自然数”(符号)。(将操作应用于符号,而不必考虑他们到底代表什么东西) 其实邱奇的lambda calculus建立一个强大的符号演算系统,利用这个(抽象)符号操作概念可以建立一个强大的形式语言,从而实现一个图灵等价的计算模型。符号演算可以模拟出数学世界里的所有计算模型,而数学计算只是这个形式语言的其中一个具体罢了。 关于邱奇-图灵理论,停机问题,Y 组合子,不完备性定理,可以参考一下2篇好文:
http://blog.csdn.net/pongba/article/details/1336028
http://blog.csdn.net/pongba/article/details/621723