http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_need说:
“Call-by-need 是 call-by-name 的记忆版本,如果函数参数被评估,该值将被存储以供后续使用。 [...] Haskell 是最知名的使用按需调用评估的语言。”
然而,计算的值并不总是为了更快的访问而存储(例如考虑斐波那契数的递归定义)。我在#haskell 上问过某人,答案是“仅在一种情况下,例如,如果你有 `let foo = bar baz',foo 将被评估一次”,这种记忆是自动完成的。
我的问题是: instance 到底是什么意思,除了 let 之外还有其他情况可以自动完成记忆吗?