我已经在 Haskell 中看到了所有其他的记忆技巧和技术,但我正在寻找的是一个在编译器/解释器级别的简单实现,它为我处理记忆。
例如,考虑斐波那契函数的以下代码:
fib 0 = 1
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
我想要 ghc(或任何其他 Haskell 编译器)的某种编译器选项,默认情况下使用 memoization 执行上面的代码。例如,要计算“fib 10”,首先需要计算“fib 8”和“fib 9”。此外,计算“fib 9”取决于首先计算“fib 8”。因此,在计算“fib 10”时,我希望编译器/解释器能够理解并仅计算一次“fib 8”。
请注意,我不想编写一个新的斐波那契函数来处理记忆(就像 Haskell 中的所有其他记忆问题一样)。我想要的是保持上面的功能并且仍然有记忆。我不知道是否有任何 Haskell 编译器具有这种能力,这是我的问题的一部分。你知道可以给我这个的 Haskell 编译器吗?
谢谢