"where"关键字是懒惰的吗?
Is the "where" keyword lazy?
假设我有一个像
这样的函数
foo = 8 + f1
where f1 = 8 + 9
f2 = 8 + 10
f1
显然必须进行评估,但 f2
则不必。会不会呢?我可以看到评估每个 where
表达式将如何成为一个性能问题。
是的,它是偷懒的,所以不会对f2
求值,例如:
foo = 8 + f1
where f1 = 8 + 9
f2 = last [1..]
将立即计算,如果严格计算则需要很长时间。
假设我有一个像
这样的函数foo = 8 + f1
where f1 = 8 + 9
f2 = 8 + 10
f1
显然必须进行评估,但 f2
则不必。会不会呢?我可以看到评估每个 where
表达式将如何成为一个性能问题。
是的,它是偷懒的,所以不会对f2
求值,例如:
foo = 8 + f1
where f1 = 8 + 9
f2 = last [1..]
将立即计算,如果严格计算则需要很长时间。