FC2ブログ
--.--
--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

11.12
Mon
ここのブログにラムダ計算で検索して来られる人がいるようなので

ここなんかより1億倍はしっかりまとまってるサイトさんを貼って置きたいと思います

まずwikipedia

ラムダ計算

ラムダ計算基礎文法最速マスター

チャーチ数とラムダ計算

ラムダ計算入門

おとうさんにもわかるYコンビネータ!

Yコンビネータ実装しなイカ?

Y Combinator

Y-Combinator, lambda再帰, 不動点

ラムダ計算でハマる

TuringとChurchの狭間で

lci Manual



ということでラムダ式で足し算掛け算したいのですが

PLUS関数とMULT関数をつくる考え方を自分なりに書いておこうかと思います


まず自然数は関数を何回適用したかで表されるので

例えば2はこうあらわされます λf.λx.(f (f x))

3だったら

λf.λx.(f (f (f x)))

なわけです

ということは2 + 3は

λf.λx.(f (f (f (f (f x)))))

とあらわせそうです.

ということで、PLUS関数は自然数n,mのふたっつをとって一つの自然数を返す感じなので

λn.λm.λf.λx.(なになに)

とかけそうです

なになにの部分にはn+mをする具体的な式が入るんですが

ここでnにmを足すってのは、nで行われてる関数適用の回数とmで行われてる関数適用の回数を足した分だけ

関数適用すればいいのですから、(あれ日本語おかしい?)

nのxがmの(f (f (f x)))で置き換わってくれたりすると嬉しいですよね

なので、nのfを消すのに一回適用してやりますと、λxになるので、

mにfとxを適用したやつをつまり(f (f (f x)))

また適用すると、(f (f (f (f (f x)))))になります。

つまり関数PLUSは

PLUS := λn.λm.λf.λx.((n f) ((m f) x))

とかけそうですね

あれ掛け算書いてる暇なくなってしまった

ねむねむ〜おやすみなさい



引き算はなんかめちゃくちゃ難しいですね
スポンサーサイト

comment 0 trackback 0
トラックバックURL
http://telracsmoratori.blog.fc2.com/tb.php/148-c2a344d1
トラックバック
コメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。