4. ラムダ計算 非形式的な概説
(wiki)
例えば、ある数に 2 を加える関数 f を考える。これは通常の書き方では
f(x) = x + 2 と書くことができるだろう。この関数 f は、ラムダ計算の式
(ラムダ式という)では λx. x + 2 と書かれる。変数 x の名前は重要では
なく、 λy. y + 2 と書いても同じである。同様に、この関数に 3 を適用し
た結果の数 f(3) は (λx. x + 2) 3 と書かれる。関数の適用は左結合である。
つまり、 f x y = (f x) y である。今度は、引数(関数の入力)に関数をとり
それに 3 を適用する関数を考えてみよう。これはラムダ式では λf. f 3 と
なる。この関数に、先ほど作った 2 を加える関数を適用すると、 (λf. f 3)
(λx. x + 2) となる。ここで、
(λf. f 3) (λx. x + 2) と (λx. x + 2) 3 と 3 + 2
の3つの表現はいずれも同値である。
5. Church数 (wikipedia)
0 ≡ λf.λx. X
1 ≡ λf.λx. f x
2 ≡ λf.λx. f (f x)
3 ≡ λf.λx. f (f (f x))...
n ≡ λf.λx. fn x...
直感的には、数 n はラムダ式では f という関数
をもらってそれを n 回適用したものを返す関数
である。つまり、チャーチ数は1引数関数を受け
取り、1引数関数を返す高階関数である。