假设我有一个类似的函数
foo = 8 + f1
where f1 = 8 + 9
f2 = 8 + 10
f1
显然必须进行评估,但 f2
则不必进行评估。会是这样吗?我可以看到评估每个 where
表达式将如何成为一个性能问题。
最佳答案
是的,它是惰性的,因此 f2
不会被计算,例如:
foo = 8 + f1
where f1 = 8 + 9
f2 = last [1..]
会立即计算,如果严格的话会花费很长时间。
关于haskell - "where"关键字是懒惰的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31090119/