Closed boboyada closed 7 years ago
有什么意义?好像参与运算的对象集合,也就这三个元素?
是这样的,但这并没有什么问题,正如newtype All = All {getAll :: Bool}
只有两个元素也可以是Monoid
一样,他的意义是可以用来提供一系列基于Ord
的实例的,举个例子:
instance Ord a => Ord [a] where
a `compare` b = mconcat (zipWith compare a b)
当然base
里面也许不是这样定义的(甚至顺序和结果也不同),但是你理解利用Monoid
实例合并顺序的思路就可以了。
而且,这与该书前一页的定义 class Monid a where ......... 不符,Ordering的半群实例中缺少a这类型变量
你应该还是对类型类/实例的概念不熟悉,再回去反复看看概念,这个问题并不存在。
instance Monoid Ordering where mempty = EQ LT 'mappend' _ = LT
EQ ........... GT............ 有什么意义?好像参与运算的对象集合,也就这三个元素?
而且,这与该书前一页的定义 class Monid a where .......... 不符,Ordering的半群实例中缺少a这类型变量
顺祝节日快乐