加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

斯卡拉在哈斯克尔的风格

发布时间: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,因此函数最多被评估一次.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读