Tim*_*imY 1 performance functional-programming scala lazy-evaluation
我已经注意到,我几乎完全使用lazy val分配,因为他们往往避免不必要的计算,我不能看到,许多情况下一个会不会想这样做(在可变的变量是当然的一个明显的例外依赖).
在我看来,这是函数式编程的一大优势,应尽可能鼓励它的使用,如果我理解正确,Haskell默认情况下就是这样做的.
那么为什么Scala值默认不是懒惰?是否仅仅是为了避免与可变变量相关的问题?
rig*_*old 10
Scala和Haskell之间的最大区别在于Scala允许副作用,而Haskell则不然.
懒惰导致一种语言中的各种问题,这种问题允许在程序中的任意点处产生副作用,因为副作用发生的顺序变得不确定.
几乎透明的Java互操作性在Scala的设计中起着重要作用,而Java库通常充满了副作用.