Chandler@Berlin -57ページ目

Chandler@Berlin

ベルリン在住

English version

函数の適用は左からというルールを前回述べた.まず,左結合とか右結合とかいうことをどうして考えるのかというのは,同じ式でも処理の方法で答えが違うのは困るからだ.1-2-3 を (1-2)-3 (=-4)と計算する場合と 1-(2-3) (=2)とする場合では答えが異なる.答えが毎回違うという計算機でも使えるという人もいるかもしれないが,普通はそうでは困るということは賛成してもらえると思う.式が同じならば答えが同じ計算機を使いたい場合には,どう計算するかを定義しておかねばいけない.それが左結合とか右結合とかいうことを考える理由である.

左 結合か右結合を決めなくてはいけないのは上記の理由によるが,なぜ左結合なのかとか思った人がいるかもしれない.これも定義で右か左かはどちらかに決まっていればかまわない.左結合にするというのは,誰か人が決めたのである.どっちにするかは最初に決めた人次第だが,慣れのせいだろうか,これが私には自然に感じるので不思議なものである.しかし,自然に感じるというのは不自然な気がする.まあ,定義なので,そのものにはあまり意味がないと思ってもかまわない.右結合の書き方でも定義は可能である.左結合なのは,現存する数学の記法がヨーロッパで発達したものであり,既存のヨーロッパの言語が左から右に書くからであろうと個人的に推測する.

English version

λ式では函数の適用は左結合という規則を忘れていたので追加しておこう.これは

f x y = (f x) y

と書くが,まあ,左側から処理するということで良いだろう.たとえば,λ式ではないが,1 - 2 - 3 は,左結合であり,(1 - 2) - 3 となる.(括弧のある方が先に計算される) したがって,

1-2-3 = (1-2)-3
= -1-3
= -4

である.これが右結合であれば,

1-2-3 = 1-(2-3)
= 1-(-1)
= 2

となって答えが異なる.λ式で書けば,

λx. λy. λz. x - y - z

に 1 2 3 を適用すると,

x. λy. λz. x - y - z) 1 2 3 ... x に 1 を適用
= (λy. λz. 1 - y - z) 2 3 ... y に 2 を適用
= (λz. 1 - 2 - z) 3
= (λz. -1 - z) 3 ... z に 3 を適用
= -1 - 3
= -4

ということになる.左結合ならば x = 1,y = 2, z = 3 であって,右結合ならば x = 3,y = 2, z = 1 であり,何も言わなければ左結合となる.

English version

Peano の定理で重要だったのは Successor 函数であった.覚えているだろうか.次の数を作るという函数である.実際に SUCC1 という機械の手順を既に説明した.

何が数かという意味で数を定義する際,全部の数を並べることで数を定義してもかまわない.しかし数学者は怠けることが仕事であるし,無限のものを並べるのはたいへん難しい.こういう問題に対して数学者は最初の数と「次の数を出すもの」を作って,あとはそれぞれの人に適当にしてもらうことをする.具体的な数1,2,3, ... をそのまま使うのではなく,「数」というものの性質を抽象化してそれを数の定義にするのだ.抽象化の話は覚えているだろうか?

「次の数」を作るもの,そういうものは函数であるのでλである.最初の数とこのようなλがあれば,全部の数が出せるはずだ.自動販売機gensym3141は,自動販売機を入れると,次の自動販売機を出す自動販売機(自動販売機6931471805)も売っている.自動販売機 1 は「ニシン販売機」であり,自動販売機 2 は「サンドイッチ販売機」であり,自動販売機 3 は「ニシンサンドイッチ販売機」である.自動販売機6931471805 は自動販売機 1 を入れると自動販売機 2 を出す販売機である.これはまた,自動販売機 2 を入れると自動販売機 3 出す.じゃあ,自動販売機6931471805 を入れるとどうなるか,もちろん自動販売機6931471806 を出すに決まっている.これは数ある自動販売機の一種に過ぎないが,次の自動販売機を出す自動販売機は知的生命体には特別なのものとして感じるので,SUCC と呼んだりする.それはこんな形のλとして書くことができる.

SUCC := λn f x. f (n f x)

多分 Wikipedia を読んだ人は,このλ式を適用しようとしただろう.で,簡単に適用できた人はここから先を読む必要はない.私はできなかったので一週間考えてしまった.それで,多分こうだろうというのがわかったので,この文章を書いている.Wikipedia の補足のようなものだが,もし実際に適用してみたい人にはきっと面白いだろう.