『技術者/プログラマのためのラムダ計算、論理、圏』セミナー#1
告知:「技術者/プログラマのためのラムダ計算、論理、圏」セミナー - 檜山正幸のキマイラ飼育記
セミナー補足:報告記事とか後悔とか独り言とか - 檜山正幸のキマイラ飼育記
Diary?::2009-01-24
「ラムダ計算、論理、圏」セミナー(第1回)の報告+次回の告知 - 檜山正幸のキマイラ飼育記
ラムダ計算とスノーグローブ現象:oto-oto-otoさんの疑問に答える - 檜山正幸のキマイラ飼育記
まだスノーグローブ:superstring04さんへのフォロー - 檜山正幸のキマイラ飼育記
スノーグローブ
- 箱庭みたいなの
- モデル化
記号の解釈と使用法の多様性
同じ記号でもコンテクストによって意味合いが違う
+記号
- 宿題の中の「2+3」→子供に「2と3を足し算しろ」と指示する
- 電卓を叩く「2+3」→電卓に「2と3を足し算しろ」と指示する
=記号
- 子供にとっての「2+3=」→(子供に)2と3を足し算しろと指示する
- 2+3=5→2と3を足し算した結果と5は等しい
- x=x+1→変数xの値に1を加算した結果を変数xに代入する
これらは全然違う
ラムダ計算
関数
(+ 2 3)
↑のコードを人間が実行するというのと、
↓のコードでevalがやる事は等価
(eval '(+ 2 3) )
3種類の箱
関数に対する立場の違い
b…数学の立場:本物の高階関数
c,d…計算科学/後学の立場:ノイマン/ゲーデルのコード化
e…論理(記号計算)の立場:人間が操作可能な記号的言語(だが、人間が操作しない事が多い)
数学の立場は模倣出来る
(c2(x))(y)=c'(c(x),y)
- 関数は入力を捨てる
- 入力を受ける→結果を返す→入力されたものは捨ててしまう
- 状態を持たない(状態を持つのは状態マシン)
2番目の箱に
関数コードの実行エンジン
- 関数コード(紙カード)≠関数(箱)
- 関数コード:計算手順を記述したデータ。それ自身は計算を行わない。
- cが返すのが関数コード、c'は関数