如何清除ghci的函数结果缓存?

use*_*179 16 haskell ghci

GHCI似乎在交互式会话期间缓存功能的结果.很容易注意到,只需调用一次耗时的功能两次.第二次,结果将立即显示.

有没有办法从GHCI中清除这个缓存,所以我不必重新启动它?我正在做一些非常详细的非详细性能比较,因此使用System.CPUTime会有点过分.

yat*_*975 14

您始终可以通过命令重新加载您正在使用的模块:r.这将丢弃你所做的任何交互式绑定,如果你只是在四处寻找,这可能并不总是实用的.如果您实际上没有使用模块,这也可以.


scl*_*clv 6

如注释所述,您正在let名称绑定到,这是应用函数的结果。如果您想保留该值,请不要随意命名!(或者只是不要引用您已经在let中计算出的值)。

  • `let f = foo f`将给出绑定。“让f = f中的foo f”不会。简单! (6认同)