我正在研究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,则结果将保留在 在程序本身的整个生命周期内存!
在顶层定义是什么意思?
答案 0 :(得分:4)
“顶级”是"REPL"的同义词,或者,如果您使用源代码文件,则它是最外部的作用域-它是全局作用域。
传统上,在Lisp中,加载源代码文件就像您通过在REPL上一一键入它们来执行其顶级语句一样。