在最高级别,结果将保留在内存中

时间:2019-02-13 19:15:18

标签: haskell

我正在研究https://www.packtpub.com/application-development/haskell-high-performance-programming这本书,此刻,我正在尝试了解备忘录。

它显示以下记忆功能:

fib_mem :: Int -> Integer
fib_mem = (map fib [0..] !!)
where fib 0 = 1
      fib 1 = 1
      fib n = fib_mem (n-2) + fib_mem (n-1)  

书中写着:

  

因此,如果在顶层定义了fib_mem,则结果将保留在   在程序本身的整个生命周期内存!

在顶层定义是什么意思?

1 个答案:

答案 0 :(得分:4)

“顶级”是"REPL"的同义词,或者,如果您使用源代码文件,则它是最外部的作用域-它是全局作用域。

传统上,在Lisp中,加载源代码文件就像您通过在REPL上一一键入它们来执行其顶级语句一样。

另请参阅:How is this fibonacci-function memoized?