- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
792 :デフォルトの名無しさん[sage]:2016/11/19(土) 09:25:14.41 ID:nvUvA6H6 - >>773です。要はこういう事です。
純粋な計算ならば必要になるまで遅延されます。 IOアクションそれ単体も、必要になるまでアクションさせず、かつソース内の見た目は、 アクションと結果の利用がそれぞれ塊になって分かれるようにするのも簡単です。 しかし、そのIOアクション群に open/close (あるいは前処理/後処理)が必要になると、 両者を分ける方法が思いつきません。 各IOアクションに open/close を付けると、今度は複数のアクションの結果が必要な場合に、 無駄な open/close が行われてしまいます。 >>774 人によっては例が悪かったと思います。 データベースへのアクセスで考えてみてください。 1回の open/close の間にテーブルAとテーブルBから一つずつ何かデータを取り出します。 その取り出したデータを使って何かをしたいが、テーブルA由来のデータのみ必要な場合もあれば、 両方のテーブルからのデータが必要な場合もあります。 前者の場合、テーブルBへのアクセスは必要ないが、>>773 の初めの例の方法だとそちらにもアクセスしてしまいます。 そんな一瞬で終わるアクセスが無駄だとかグダクダ言うなとおっしゃるのなら、 インターネット越しのアクセスなど時間のかかるIOアクションで考えてみてください。 >>775 ひとつの意見として受け止めますが、私個人は書き手と読み手の両方の努力、精進が欠かせないと思っています。 >>776 >>777 すいません、評価環境という文脈がよく分かりません。 私の例で言うと、アクションの結果を利用している部分が評価環境の文脈ということでしょうか。 それとも、IOアクションしている部分が評価環境の文脈なのでしょうか。
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
794 :デフォルトの名無しさん[sage]:2016/11/19(土) 09:59:56.91 ID:nvUvA6H6 - >>793
評価環境の文脈の意味は分かりました。 しかし、すいません。 その評価環境の文脈という考え方をどのように利用すれば 私の問題が解決するのかがまだ分かりません。 あるいは、解決不可能ということを仰っているのでしょうか。
|
- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
797 :デフォルトの名無しさん[sage]:2016/11/19(土) 10:14:39.11 ID:nvUvA6H6 - >>795
ごめんなさい。 次からは、私へアンカーが打たれているレスにのみご返事します。
|