斯卡拉在哈斯克尔的风格

Scala中,我可以表达一个函数,每次引用它时都会对它进行评估:

def function = 1 + 2 + 3

或仅评估一次的val

val val1 = 1 + 2 + 3

即使我多次打电话.

当然,在Haskell中,我可以定义一个函数(当我调用它时,它会反复评估):

function = 1 + 2 + 3

我可以在Haskell中定义Scala的val模拟吗?

更新:问题不在于懒惰的评估.

UPDATE2:

将评估函数值的次数

function = 1 + 2 + 3
main = do
        print function
        print function
        print function

解决方法

Haskell没有指定很多方法来控制次数或命令事物的评估.也就是说,GHC最多评估一次 CAFs(除非它们是类型多态).注意,对于(认)单态性限制,函数= 1 2 3将函数定义为单态CAF,因此函数最多被评估一次.

您还会发现许多人反对将此称为函数,因为除非您做了一些非常奇特的事情,否则它不是一个函数. (其类型中没有箭头.)

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...