English version
函数も結局名前はどうでも良いのであって,そのものが何かが重要である.そういうわけで,函数自身は,函数であることさえわかれば良い.λは函数ということを示すだけである.ただ,名前は重要視されていないので,それが何かということを直接書くのが重要だ.名前をつけたければあとで適当に名前との対応をつければ良い.(これを bind するとか束縛するとか言う.)
以前,函数の説明で自動販売機のアナロジを使ったのは,函数は何かを入れると何かが出てくるものであるからだ.自動販売機はお金を入れると商品が出てくる.最も簡単な函数は,入れたものがそのまま出てくるものだろう.そんな自動販売機ならば私にも作れそうだ.そういう函数は「何か」を入れたら「何かそのもの」が出てくるものだ.○を入れたら○が出てくるわけである.そういう函数を「λ○.○」と書こう.ここで最初の○は入力を,後の○は出力を示すとしよう.
なんでこう書くのかというのをちょっと考えてみよう.いきなりこう書こうと言われても,数学者じゃなければ「何で?」と思うのは普通である.数学者はこういうのはゲームのルールと同じであることを知っているので,「これがルールだ」と言うだけで納得してくれる.とはいっても一応数学者なりに便利なルールを作っているのが普通であるのでちょっと説明してみよう.
まず,最初の「λ」はこれが函数であることを示す記号である.函数だとわかればなんでもいいので,「これから私は函数を書くぞ」と書いても良い.その場合には,「これから私は函数を書くぞ ○.○」となる.「.」より前の「○」は入力を示し,最後の○は出力を示す.これも定義だから他の方法でも良い.例えば逆に書いても良い.あるいは入力と出力を明確にするために,「入力は」と「出力は」という言葉を補っても良い.その場合,「これから私は函数を書くぞ 入力は○.出力は○」となる.
「これから私は函数を書くぞ」と毎回書くのは面倒なので.それをλと書くと,「λ入力は○.出力は○」となる.ここで面倒だからλと書くというのは冗談ではなく,極めて真面目である.「入力は」「出力は」というのも順番を決めておけば必要ない.結局ルールさえ決めておけば「λ○.○」で十分である.ただ何でλなのかは正直言って私も知らない.でもそれは何故函数は函数と書くのですかという質問と同じである.あるいは 1 を 1 と書くのは何故かとか,滝はなぜ滝というのかというのを考えるのは面白いだろうが,それでは話が進まないのでここで打ち切ろう.ところで,マーク・トゥウェインさんは滝についてはアイデアがあるようだ.
もし,○を入れたら△が出てくるのであれば,「λ○.△」であるのだが,これでは○と△の関係がわからない.「λ○.○」の関係はわかり易い.なぜならば同じということがわかるからだ.自動販売機のアナロジを思い出して欲しい.「λ○.○」では,10ユーロ入れたら,10ユーロそのままが出力される.5ユーロを入れたら5ユーロがそのまま出力される.
「λ○.△」の場合,□を入れたら何が出てくるのだろうか.この場合,λ計算ではやっぱり△が出てくるのである.つまり「λ○.△」と「λ□.△」は同じ意味であることに注意が必要である.もっと言えば,「λ○.△」は何を入れようが△を出す自動販売機である.「λ○.○」とは,同じものが出てくるという意味であって,実際に○を入れるわけではないのだ.うーむ難しいなあ.変数を御存知の場合には,○は変数であると言えば良いのだが,それでは不親切であろうから次にもう少し説明してみる.