当ブログのタイトル「( (lambda(a)(a a))(lambda(a)(a a)))」について説明

まずS式について

「1 + 2」を「(+ 1 2)」と表現する書き方があります。

1 + 2 - 3 * 4

(- (+ 1 2) (* 3 4))

となります。これがS式です。

高階関数

関数を値として扱います。


自分で関数を定義する時、高校とかだと以下のように書くと思います。

f(x) = 2 * x + 1
関数f(x)は、xに2をかけて、それに1を足します。


練習にf(10)を解きます。

f(10) = 2 * x + 1
      = 21


f(x)をちょっと変形します。

f = {x => 2 * x + 1}
fは、xを引数にとって、xに2をかけてそれに1を足す関数です。


さらに、「f = {x => 2 * x + 1}」をS式の流儀チックに変形するとこうなります。
lambdaは関数を作るって意味です。

f = (lambda (x) (+ (* 2 x) 1))
(f 10)
  = (+ (* 2 10) 1)
  = (+ 20 1)
  = 21

では「( (lambda(a)(a a))(lambda(a)(a a)))」は?

さて、ようやく本命の「( (lambda(a)(a a))(lambda(a)(a a)))」という式に入ります。
この式は以下のような感じに分解できます。

A = (lambda(a)(a a))
B = (lambda(a)(a a))
(A B)

つまり、こうなります。

A = {a => a(a)}
B = {a => a(a)}
A(B)

さらに噛み砕くとこうなります。

A(a) = a(a)
B(a) = a(a)
A(B)

後は、実際に計算してみます。

A(B) = B(B)             A(a) = a(a)より、
     = B(B(B))          B(a) = a(a)より、
     = B(B(B(B)))       B(a) = a(a)より、
     = B(B(B(B(B))))    B(a) = a(a)より、
     = ....

無限に計算が終わらないことがわかります。


つまりこの「( (lambda(a)(a a))(lambda(a)(a a)))」という式は、永遠に答えが出ない式なんです。

答えがないという答え

「幸せとは何か?」とか「人生とは何か?」とかめんどくせーから、答え無しという答えでズルしようぜ、みたいな。
無限に広がる話を、尻すぼみに終わらせてみた。