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 在顶层定义,结果将在程序本身的生命周期内持续存在内存中!
这是什么意思,在顶层定义?
解决方案
“顶级”是“REPL”的同义词,或者如果您使用源代码文件,它是它的最外层范围——它是全局范围。
传统上,在 Lisp 中,加载源代码文件就像您通过在 REPL 中一一键入来执行其顶级语句一样。
推荐阅读
- javascript - 在智能手机和arduino之间读取ndef消息
- python - 为什么 PyGame 与 PyMongo 结合使用时会冻结?
- python - 尝试将图像作为背景时出现 Unicode 错误
- arrays - Mongoose $push 无法正常工作。无法推入数组
- powershell - 多个共享的导出权限
- amazon-web-services - 如何在 Terraform 中获取 EC2 实例的公共 IP?
- sqlite - 在气流 2.0 中启用约束更改?运行 Airflow initdb 时,我得到“不支持 SQLite 方言中的约束更改”
- git - 如何获取自创建分支以来更改文件的当前文件路径列表
- ios - 如何在swiftUI中每秒自动随机化一个数字
- python - Python中的round()在应用于变量时不会舍入,但在应用于分配给变量的值时会舍入吗?