2014年2月9日日曜日

関数型言語(静的型付け、型推論あり)について

[遅延評価]
プログラムの実行順序が手続型とは逆。
先に答えがあって答えに必要な計算を探して計算不要になるまで繰り返す。
makeと似ている。
これが可能なのは参照透過で変数を持たないから実行順序に制約が無いから。

[参照透過]
参照透過だと各部分の関連が弱くなるので部分に集中出来る。全体への影響が少ない。
小さい関数の合成関数で書くところはDFDとも似ている。
関数が小さいと関数間のデータがどの様に遷移して行くかが分かりやすい。
データと計算を分離している。
一入力一出力になっている。複数入力でもカリー化で一入力の連続に変換。

[強い静的型付け]
静的型付けで関数の仕様が推測、表現、機械チェックできる。
作った人の意図をプログラムに反映しやすい。
型を省略せずに型推論は機械チェックのために使った方が良い??
人間に「どういう部分なのか」と言うその部分の意味を考えさせる。
「どう動くのか」ではなくて。

[宣言的]
仕様の重視を強要する。
条件を列挙することでそれを満たす関数が出来る?
あれこれ条件を列挙するのは人間は得意? 全て満たすような仕組みを考えるのは苦手?

[高品質]
言語としての制約がミスの発生しやすい作りにならない様に制限している。
言語としての制約がプログラムの動作をちゃんと考える事を強要している。
言語としての制約を進んで受け入れられる人間は動作を考える事やミスしない作りにする事に対して価値を感じている。何故ミスが発生するのかを分かっている。

0 件のコメント:

コメントを投稿