我知道有些地方懒惰评估会阻止需要计算。例如,将两个数字相加,然后将它们传递给最终从未使用过的函数参数。
但在我看来,存储和加载稍后要使用的操作会产生很多开销,而且这些开销通常会抵消任何 yield 。
有人可以解决这个问题吗?
最佳答案
你是对的。惰性评估确实有很大的开销,而且大多数时候你不会从中获得实际的性能提升。惰性求值的主要原因是它很方便——它使 Haskell 的语言语义更清晰,并且(例如)惰性/无限列表有时对程序员来说很方便。
幸运的是,编译器通常可以优化内部循环之外的惰性机制,否则幼稚的实现会导致严重的性能损失。
关于haskell - 惰性评估是如何以不需要比所产生的 yield 更多的开销的方式实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63698539/