Haskell の他のすべてのメモ化のトリックとテクニックを見てきましたが、私が探しているのは、メモ化を処理するコンパイラ/インタプリタのレベルでの簡単な実装です。
たとえば、フィボナッチ関数の次のコードを考えてみます。
fib 0 = 1
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
デフォルトでメモ化を使用して上記のコードを実行する、ghc (またはその他の Haskell コンパイラ) 用のある種のコンパイラ オプションが必要です。たとえば、「fib 10」を計算するには、「fib 8」と「fib 9」を最初に計算する必要があります。また、「fib 9」の計算は、最初の「fib 8」の計算に依存します。したがって、「fib 10」を計算するときは、コンパイラ/インタープリターにそれを理解し、「fib 8」を一度だけ計算してもらいたいのです。
メモ化を処理する新しいフィボナッチ関数を書きたくないことに注意してください (Haskell の他のすべてのメモ化に関する質問の場合と同様)。私が欲しいのは、上記の機能を維持し、メモ化を行うことです。Haskell コンパイラにその機能があるかどうかはわかりませんが、それは私の質問の一部です。これを提供できる Haskell コンパイラを知っていますか?
ありがとう