この質問について正確に何をグーグルするかわからないので、SOに直接投稿します:
- Haskell の変数は不変です
- 純粋な関数は、同じ引数に対して同じ値になる必要があります
somePureFunc somevar1 somevar2
これら 2 つの点から、コードを 2 回呼び出した場合、最初の呼び出し時に値を計算することだけが意味があると推測できます。結果の値は、ある種の巨大なハッシュ テーブル (またはそれに類するもの) に格納でき、その後の関数呼び出しで参照できます。2 つの質問があります。
- GHC は実際にこのような最適化を行っているのでしょうか?
- もしそうなら、結果を調べるよりも計算を繰り返す方が実際に安価な場合の動作は何ですか?
ありがとう。