関数型プログラミング言語Haskell Part13
■ このスレッドは過去ログ倉庫に格納されています
0366デフォルトの名無しさん
2010/12/11(土) 22:11:27たとえば、2つの計算 A と B が有るとする。
A を計算し、その結果が x だったらそれを使用し、
もし結果が y だったら B の計算結果を使用したい。
他の言語なら、A の後で B を計算する様に、逐次的に見える様に記述するが、
Haskell なら A と B を同時に計算する様に、宣言的に見える様に記述する。
それはリストに羅列されていたり、演算子で結合されていたりと、形は様々だ。
で、A と B のどちらが必要になるかはたいてい別のところに記述する。
B が不要なら実際には計算されない。
つまり、時間的な流れに沿った計算を空間に広げて「一望できる」ようにする。
これが遅延評価の為せる業であり、宣言的に記述できる Haskell の特徴だ。
これは一例だが、時間の流れを空間の広がりに換える考え方は、
Haskell プログラムの至る所で役に立つ。
■ このスレッドは過去ログ倉庫に格納されています