函数何时应该是独立的,何时应该在类型类中?这只是品味问题吗?

时间:2014-07-26 15:02:58

标签: haskell

fromIntegral函数:

为例
fromIntegral :: (Integral a, Num b) => a -> b

检查是否:

  • 类型类Integral
  • 类型类Num
  • 在其他一些类型
  • 独立,不在任何类型类

我们可以使用:info fromIntegral来查找。

事实证明它是独立的

但为什么呢?为什么它不能成为IntegralNum类型类(或其他类型类)的一部分?这有什么好的理由还是更多的品味?

这个例子的答案将帮助我在设计我自己的自定义类型类和函数时回答相同的问题。

1 个答案:

答案 0 :(得分:9)

fromIntegral定义为

fromIntegral = fromInteger . toInteger

这两个函数分别位于NumIntegral类中。当您在一个类中包含一个函数时,您说它可能会针对不同类型进行不同的定义。 fromIntegral没有。