←講義のツボメニューへ
情報学基礎A
【第15回】【2000.11.30】
関数モデル
(4)
ラムダ計算・ラムダ記法(λ計算を通して計算を眺める)
f(x)=x2+2x+4
λx.x2+2x+4
(上:いつも見る関数、下:ラムダ記法による表記)
仮引数、本体
実際に数値を入れて計算
f(-3)=(-3)2+2(-3)+4=7
(λx.x2+2x+4)-3=(-3)2+2(-3)+4=7
実引数
1つの変数xを含む式x2からλx.x2というようにして関数を作ることをラムダ抽象という。
2つの変数x、yからなる式x*yに対してラムダ抽象を繰り返せば、λx.(λy.x*y)が得られる。
例)
((λx.(λy.x*y))4)5
=(λy.4*y)5
=4*5=20
n変数関数N×N×・・・×N×Nに対してn回ラムダ抽象を繰り返すと、1変数関数
N→(N→(・・・)→N)に変換できる。
これをカリー化という。
ラムダ式とは
- 変数x、y、x、・・・はラムダ式。
- Mがラムダ式でxが変数ならば(λx.M)はラムダ式。
- M、Nがラムダ式ならば(M N)はラムダ式。
λx.Mをxに関するラムダ抽象、λxのxをラムダ変数と呼ぶ。
また、(M N)を、MのNに対する関数適用という。
ラムダ式の略記規則
- 最外側のカッコははずしてもよい。
- ((・・・(M1 M2)・・・)Mn)は左側により強く結合されることとして、M1 M2・・・Mnと書いてよい。
- (λx1.(・・・(λxn.M)・・・))はλx1・・・n.Mと書いてよい。