Haskell 我们如何知道一个typeclass是否是另一个typeclass的子typeclass?

Haskell 我们如何知道一个typeclass是否是另一个typeclass的子typeclass?,haskell,Haskell,如果我们这样做 让我们添加一个b=a+b 然后add::Num a=>a->a->a 我们还知道1.5::分数a=>a。 而add11.5的工作原理是完美的 如果我正确理解了每一种类型,它有一个fractive的实例,也有一个Num的实例,那么这个事实是如何明确的呢?它在fractive类的定义中: class Num a => Fractional a where ... 您可以在GHCi中或在上看到它键入:i分数。您能更好地解释一下“这个事实是如何明确的”吗?你的确切意思是什么

如果我们这样做
让我们添加一个b=a+b
然后
add::Num a=>a->a->a

我们还知道
1.5::分数a=>a
。 而
add11.5
的工作原理是完美的


如果我正确理解了每一种类型,它有一个
fractive
的实例,也有一个
Num
的实例,那么这个事实是如何明确的呢?

它在
fractive
类的定义中:

class Num a => Fractional a where
   ...

您可以在GHCi中或在上看到它键入
:i分数

您能更好地解释一下“这个事实是如何明确的”吗?你的确切意思是什么?需要注意的是:Haskell没有“子类型类”,它只是检查
fractive
的所有实例是否遵守类上下文,在本例中,类上下文表示类似子类型类的关系。它不是一种特殊的语法,只是一种有用的习语。