标签: haskell lazy-evaluation
假设我有像
foo = 8 + f1 where f1 = 8 + 9 f2 = 8 + 10
f1显然必须进行评估,但f2并非必须如此。会不会呢?我可以看到评估每个where表达式是否会成为性能问题。
f1
f2
where
答案 0 :(得分:6)
是的,它是懒惰的,因此不会评估f2,例如:
foo = 8 + f1 where f1 = 8 + 9 f2 = last [1..]
将立即计算,如果严格则会永远计算。