【问题标题】:Why does this need both (Eq t, Num t) as type classes? [duplicate]为什么这需要 (Eq t, Num t) 作为类型类? [复制]
【发布时间】:2022-01-01 19:18:48
【问题描述】:

所以我在Haskell中做了一些练习,我认为int2nat的类型在

int2nat :: (Eq t, Num t) => t -> Nat

int2nat 0 = Zero
int2nat n = Succ (int2nat (n-1)

应该是int2nat :: (Num t) => t -> Nat

有人可以解释为什么不是这样,以及为什么附加的Eq t 是正确的吗?

【问题讨论】:

  • 欢迎来到 StackOverflow。请始终在您的问题中使用代码而不是代码图片,因为这样会让其他人更容易阅读和测试您的代码。

标签: haskell types functional-programming typeclass


【解决方案1】:

因为您匹配模式中的数字文字 0int2nat 0 = Zero 脱糖成 int2nat n | n == fromInteger 0 = Zero 之类的东西。

【讨论】:

    猜你喜欢
    • 2018-08-22
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2014-11-17
    相关资源
    最近更新 更多