church計數

正如書中寫的一樣(“還不足以令人如雷灌頂是吧?!!”),看到完全沒有數實現加一和0的定義,着實嚇了一跳。
當然了,既然你不走尋常路,那我也不能在一棵樹上吊死,你說不用數字,那至少得體現數的概念吧?多少個蘋果是數,函數迭代多少次也是數(哈哈,其實是從書上的代碼看出點端倪,然後順藤摸瓜推出來的)。
嗯哼,揭曉答案:這裏的數n對應的是f迭代n次,如果n是0,n對應的就是自變量。

(define zero (lambda (f) (lambda (x) x)))
(define one (lambda (f) (lambda (x) (f x))))
(define two (lambda (f) (lambda (x) (f (f x)))))
(define (add-1 n) (lambda (f) (lambda (x) (f ((n f) x)))))
(define (my+ a b)
  (lambda (f) (lambda (x) ((a f) ((b f) x)))))
(define (f x) (+ 1 x))
((zero f) 0)
((one f) 0)
((two f) 0)
(((my+ one two) f) 0)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章