【发布时间】:2011-04-26 10:42:49
【问题描述】:
我不明白为什么 m1 显然被记住了,而 m2 不在下面:
m1 = ((filter odd [1..]) !!)
m2 n = ((filter odd [1..]) !! n)
m1 10000000 在第一次调用时大约需要 1.5 秒,而在后续调用中只需要一小部分时间(大概它会缓存列表),而 m2 10000000 总是需要相同的时间(每次调用都重建列表)。知道发生了什么吗?关于 GHC 是否以及何时会记忆功能是否有任何经验法则?谢谢。
【问题讨论】:
标签: haskell ghc memoization