Ane*_*ime 2 haskell types typeclass
我是Haskell的新手,我来自c ++背景.
我在理解类型和类型类之间的关系时遇到了一些麻烦.
据我所知,类型类指定了一堆函数.就像Eq类型类指定==和/=.
但是现在假设我有一个类型t,当我说这t是Eq类型类的实例时,它意味着什么.它只是意味着t支持和实现指定的函数Eq吗?
它只是意味着t支持并实现Eq指定的函数吗?
是的,确切地说.
它只是意味着有一个实例Eq t定义了运算符(==),如下所示Eq.因此,您可以t在代码中使用所述运算符.
一个愚蠢的例子:
data MyPair = P Int String
instance Eq MyPair where
(P i1 s1) == (P i2 s2) = -- we define equality ...
i1==i2 && s1==S2 -- ... as component-wise equality
testTrue :: Bool
testTrue = (P (1+1) "aa") == (P 2 ("a"++"a"))
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,常见的习语实际上是
data MyPair = P Int String deriving Eq
Run Code Online (Sandbox Code Playgroud)
它自动派生实例 - 所以不需要明确地编写它.
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |