Church数 0

SICPの問題2.6のChurch数の問題で、足し算があるなら、引き算もあるんだろうと、まず自分でadd-1に対応するようなsub-1がどんな形をしているか考えてみる。

f (f (f (x))) みたいなのが f (f (x)) みたいなのになればいいだけでしょ?簡単かんた・・・・


・・・やばいくらいに、まったく思いつかず。どうやったらいいか見当もつかん。


それどころか、lambdaを弄ってて、そもそも関数が関数の返却値となるということを根本的に理解していないことが判明。

(define a (lambda (x) (lambda (y) (+ x y))))

から、xの値を固定して、yだけの新しい一変数の関数を作るとき、

(define (b y) (a 5)) ;; xを 5に固定

と、しなければならんと思ってました。

(define b (a 5)) ;; (b 3) ;=> 8

で十分なのね。どおりで動いたり動かなかったりしたわけだ。
ぜんぜん理解してなかったからか。


先はいろいろ長い。