从church numerals 理解数据抽象

现在到了数学抽象中最关键的一步:让我们忘记这些符号所表示的对象。(数学家)不应在这里停步,有许多操作可以应用于这些符号,而根本不必考虑它们到底代表着什么东西。 --- sicp (第二章 数据抽象) 邱奇数可以帮我们充分理解上面这句话和数据抽象的含义。(我的读书笔记见:[url]http://book.douban.com/people/xulao/annotation/[/url]

(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

你可能感兴趣的:(lambda,sicp,sicp)