<< 計算可能とはどういうことか | top | λ式のβ変換 >>

スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | | - | - |

ラムダ計算

弟に半角/全角キーを含むいくつかのキーが動かないノートpcを1万円で譲ってもらった。
お金を払うのを忘れないようにしなくては。
基本的にはあまり使わないキーが動かないだけなのでそれほど問題はないが、半角/全角キーは困る。
なのでIMEの設定をいじってshift+spaceで切り替え出来るように設定した。Linux風に。これでさしあたっては問題ないな。

「計算論」の続き。
第二章を流し読み。いよいよλ計算。
まずはλ式って何だってところから。
普通、数学では関数を
f(x) = 2x+1
などと表す。引数に具体的な値を入れる場合は
f(2)=2*2+1
などという具合だ。しかし、f(2)=2*2+1という表現では元の関数形がどのような形かという情報が失われている。
そこでλ式というもので表現する。
λx.(2x+1)(2)
λの次に変数を与え、関数形、引数の値の順に書く。
これは1変数関数に対するλ式だが、多変数関数に対しても1変数のλ式で対応できる。
例えばf(x,y)を考える。xを固定してyの関数と考えよう。
λy.fx=λy.f(x,y)
と書ける。次にλy.fxのxを変数と考える。
λx.(λy.fx)=λx.λy.f(x,y)
つまり、「引数はx」、戻り値は「引数yを受け取り結果を返す関数」である。関数を返すことに注意する。これをカリー化というらしい。

で、定義2.1.1に具体的なλ式の定義が書いてある。
λx.Mは関数抽象と呼ばれる。具体的な値になっていない状態だと思う。
MNは関数適用と呼ばれる。代入操作だと思う。

上の例でいえば
λx.(2x+1)
は関数抽象で、
λx.(2x+1)(2)
は関数適用というところか。変数に対してこれらの操作によって得られる式がλ式ということらしい。
λ式の定義がわかったところで一旦中断。
 
ジャジャガッチ | LISP | 21:46 | comments(0) | trackbacks(0) |

スポンサーサイト

スポンサードリンク | - | 21:46 | - | - |
Comment









Trackback
URL:

07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
PR
RECOMMEND
RECENT COMMENT
MOBILE
qrcode
OTHERS
Since 2013/09/17
LATEST ENTRY
CATEGORY
ARCHIVE
LINKS
PROFILE
SEARCH