









[blog]
[ML]
[todo]
[CVS]
[bug]
[apache log]
[swiki log]
[statistics]
[map]
[man]
[info]
[アンテナ]
遅延評価
評価を遅延させること。
要するに、求めたいときに解を求めるという方式。
これには、正格性や参照透明性といった概念が、強く関連すると
思われる。
逆に言えば、正格性は、遅延評価があるかということだと思われる。
(自身がないので、語尾が弱いです。)
例えば、無限集合を定義する。
(1) numsFrom n = n : numsFrom (n+1)
これは、nから始める無限集合となる。
これに対し、この集合に2乗する演算をapplyする
(2) squares = map (^2) (numsFrom 0)
当然、squaresも無限集合となるわけである。
このsquaresに対し、
(3) take 5 squares => [0,1,4,9,16]
とすると欲しい値だけ返ってくる。
上記、(1)〜(3)のものをそのまま書いちゃうと正格な言語では、
(1)を評価する時点で無限再帰に突入→死んじゃう。
遅延評価のある言語では、(1)〜(3)を定義し、(3)を評価するまで、(1)
と(2)を評価しないでおく。
そうすれば、破綻はしないのである。
このようにいつ評価してもかまわないというのは、多分、参照透明性
と関係があるわけ。
で、これの何がいいのかっていうと、おそらく、式そのものの性質を
そのまま書き下すことができるということなのである。
逆に言えば、無限集合となるものを言語で抽象的に自由に表現する
ことが可能なのである。

突っ込み大歓迎

Links to this Page
- プログラミング的概念 last edited on 1 June 2004 at 12:41 pm
- 遅延評価 last edited on 31 May 2004 at 9:58 pm
- 正格性 last edited on 31 May 2004 at 10:07 pm