我正在做一些测试函数来了解更多关于Haskell的信息,我这样做了:
constroiMSet :: Ord a => [a] -> [(a,Int)]
constroiMSet( x:x1:xs) |x1==x =[(x,2)]
Run Code Online (Sandbox Code Playgroud)
我没有得到的是为什么这个功能有效.这个功能Ord a但它==用来比较a.是不是Ord a只为>=,<=,<,>?
Wil*_*sem 11
如果我们看一下类的定义Ord,我们会看到:
class Eq a => Ord a where
compare :: a -> a -> Ordering
(<) :: a -> a -> Bool
(<=) :: a -> a -> Bool
(>) :: a -> a -> Bool
(>=) :: a -> a -> Bool
max :: a -> a -> a
min :: a -> a -> aRun Code Online (Sandbox Code Playgroud)
所以这意味着每种类型的a地方Ord a,也意味着Eq a.所以a支持Ord,也支持Eq,从而(==)和(/=).