gpt4 book ai didi

haskell - 为什么 Haskell 中 Num 的惰性求值与 Int 的惰性求值的工作方式不同?

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

在 GHCI,如果我这样做的话..

let x = 1 + 2

然后

:sprint x

我明白了

x = _

那么如果我这样做

x

3

然后..

:sprint x

我还是明白了

x = _

但是如果我这样做

let x = 1 + 2 :: Int

然后第二个 :sprint x 给了我

3

只是想知道这是为什么?

最佳答案

看看1 + 2的类型:它是Num a => a。这意味着它可以是任何数字类型,由使用 x 的人指定。因此,如果您对它求值一次,GHCI 的默认规则意味着它默认为 Int,然后您对 x::Int 求值,这确实是 3::Int。但是,它不能保存为 x 的值,因为有人稍后可能会尝试将其用作 x::Double,例如,答案将是不同。

关于haskell - 为什么 Haskell 中 Num 的惰性求值与 Int 的惰性求值的工作方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144569/

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