haskell - "where"关键字是懒惰的吗?

标签 haskell lazy-evaluation

假设我有一个类似的函数

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/

相关文章:

windows - 如何在 WinGhci、Haskell 中设置标志

haskell - 为什么在 Haskell 函数应用中使用逗号会导致不同的类型?

haskell - HXT解析到列表

haskell - 如何在ghci的多行模式下编辑前一行?

r - 函数内 ggplot2 的惰性求值

haskell - 围请求复制

performance - 强制预计算一个常数

python - 在 Python 中延迟评估/惰性评估

hibernate - Spring + Hibernate 懒加载

list - 为什么使用头/尾而不是模式匹配会使评估终止?