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

sta*_*ser 4 haskell

fromIntegral功能为例:

fromIntegral :: (Integral a, Num b) => a -> b
Run Code Online (Sandbox Code Playgroud)

检查是否:

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

我们可以:info fromIntegral用来找出答案.

结果证明它是独立的.

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

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

Kar*_*elė 9

fromIntegral 被定义为

fromIntegral = fromInteger . toInteger
Run Code Online (Sandbox Code Playgroud)

这两个函数分别在NumIntegral类中.当你在一个类中包含一个函数时,你会说它可能会因不同的类型而被不同地定义.fromIntegral才不是.