λ計算: 函数の適用 | Chandler@Berlin

Chandler@Berlin

ベルリン在住

English version

λ計算でもう一つ重要なのは函数は引数を一つしかとらないことである.引数というのは函数の入力のことである.二つ以上の入力がある場合の話はすぐ後にしよう.

引数の具体的な値が決まったら,つまり入力が決まったら,それを右に書いて函数の「適用」ということをする.入力が決まるというのは,自動販売機で言えば,お金を入れた状態である.自動販売機はお金が入ってくるのを待っており,ひとたび入力が決まれば,出力を計算する.函数も多くの場合,それ自体では計算はせず,何か入力があって計算を開始する.

「適用」というとおおげさな気もするが,とりあえずは函数に値を代入すると考えておいてもいいだろう.あとで値でないものを代入する場合があったり,値をどうこうするというよりも,函数そのものがどういう役割なのかということを考える方が面白くなってくるので,おいおい「函数を適用する」という言い方の方がしっくりくるようになるだろう.

具体的な函数の適用の例を見てみよう.

f(x) := 2x

λ x. 2 x

これらは同じ函数である.最初のものは通常の書き方,二番目のものはλ式である.これに 3 を代入する,あるいは 3 に適用する場合を書いてみると次のようになる.

f(3) := 2 x
= 2 * 3
= 6

(λ x. 2 x) 3
= (λ 3. 2 3)
= 2 * 3
= 6

同じ結果になった.両方とも入力を二倍する函数なので3を入れれば 6 になる.

λ計算では函数はいつも一つの値しかとらない.では f(x,y) := x-y のようなものはどうするかと言うと,一つの値をとって一つの値をとる函数を返すようにする.

λ y. (λ x. x - y)

ここで λ x. x - y は,x を引数にとり,x - y を出力にする函数である.これを 3 に適用すると,

(λ x. x - y) 3
= 3 - y

が返ってくる.それでこれを y の函数とすると,

λ y. 3 - y

である.ここで y = 1 にすれば,

(λ y. 3 - y) 1 = 3 - 1 = 2

となって,3 - 2 が計算できた.一回の適用で一つ引数が決まるので,これを繰り返していけば引数がいくつあっても問題はない.

値でないものが返ってくるのは多少気持が悪いかもしれないが,これは強力な道具になる.

シリウスサイバネティクス社の自動販売機には,自動販売機を売る自動販売機がある.シリウスサイバネティクス社は「なんでも売る自動販売機gensym3141! これ一つであなたもコンツェルンの経営者」とか宣伝しているが,マービンに言わせれば「そんなものが不可能なことは地球人にだってわかる.ああ気が滅入る」ということになるらしい.しかし,こういうふうに何かをする機能のものを取り出す機能というものをλ計算では普通に考えることにする.それも入力をとって出力を返すものだから,やっぱり函数であって,λなのである.