斯卡拉在哈斯克尔的风格
发布时间:2020-12-16 19:22:38 所属栏目:安全 来源:网络整理
导读:在 Scala中,我可以表达一个函数,每次引用它时都会对它进行评估: def function = 1 + 2 + 3 或仅评估一次的val val val1 = 1 + 2 + 3 即使我多次打电话. 当然,在Haskell中,我可以定义一个函数(当我调用它时,它会反复评估): function = 1 + 2 + 3 我可以在Ha
在
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,因此函数最多被评估一次.
您还会发现许多人反对将此称为函数,因为除非您做了一些非常奇特的事情,否则它不是一个函数. (其类型中没有箭头.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |