gpt4 book ai didi

haskell - 为什么 ghci 输出 (Num a) => a for :t 4 and not (Ord a) => a?

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

当我在 ghci 中输入 :t 4 时,我得到

Prelude> :t 4
4 :: Num t => t

我理解为什么 4 不仅是 Int 或 Integer,而且它是自下而上推断的,但我不明白为什么 4 不显示为 Ord t => t 或者更正确的是这样的:

4 :: (Ord t || Num t) => t

因为 4 既是 Ord 又是 Num,但是 OrdNum > 没有连接...

那么为什么:t 4只输出Num

最佳答案

并非所有具有 Num 实例的类型也具有 Ord 实例,并且您只需要 Num< 的 fromInteger 部分 具有 Haskell 的重载数字文字。例如,来自 Data.ComplexComplex有一个 Num 实例,但没有 Ord。在本例中,4 不是 Ord

ghci> import Data.Complex
ghci> let x = 1 :: Complex Double
ghci> let y = 2 :: Complex Double
ghci> x < y
<interactive>
* No instance for (Ord (complex Double)) arising from use of `<'
* In the expression: x < y
In the equation for `it': it = x < y
ghci>

正如 @Lee 评论的那样,这是 report 中概述的行为.

关于haskell - 为什么 ghci 输出 (Num a) => a for :t 4 and not (Ord a) => a?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40351748/

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