gpt4 book ai didi

haskell - 为什么 let y = 1 + y 可以编译,它是什么意思?

转载 作者:行者123 更新时间:2023-12-02 03:21:21 25 4
gpt4 key购买 nike

在 GHCi 中 let y = y + 1编译得很好,但是当我尝试评估 y 时,我得到 *** Exception: <<loop>>

为什么没有编译错误,这是什么意思 <<loop>>

最佳答案

haskell let , where顶级绑定(bind)默认是递归的,即使它们不是针对函数的。所以let y = y + 1定义了添加 1 的无限循环到一个数字。 GHC 表示像这样的循环 <<loop>>异常(exception)——当然,如果它能捕获它们!

这可用于惰性操作,因为它允许我们轻松定义诸如无限列表( let xs = 0:xs )之类的东西,这些东西定义良好并且对于普通代码实际上很有用。但是,它不适用于像+这样的严格操作。 (对于大多数数字类型)因为它们需要立即评估整个(无限)事物。

关于haskell - 为什么 let y = 1 + y 可以编译,它是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27557380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com