newtype Comparison a
定义于Data.Functor.Contravariant http://hackage.haskell.org/package/base-4.12.0.0/docs/src/Data.Functor.Contravariant.html#Comparison.
在此模块的版本中定义contravariant-1.5 http://hackage.haskell.org/package/contravariant-1.5/docs/src/Data.Functor.Contravariant.html#Comparison, the Monoid
实例于Contravariant
定义如下:
instance Monoid (Comparison a) where
mempty = Comparison (\_ _ -> EQ)
mappend (Comparison p) (Comparison q) = Comparison $ mappend p q
Data.Functor.Contravariant
也在 base 中定义(显然,从 GHC 8.6.1 开始)。
在基地,Monoid
实例于Comparison
被定义为如下 http://hackage.haskell.org/package/base-4.12.0.0/docs/src/Data.Functor.Contravariant.html#Comparison:
deriving instance Semigroup (Comparison a)
deriving instance Monoid (Comparison a)
实例的用途是什么Monoid (Comparison a)
在基数中自动导出?
我应该在哪里查看定义mempty
and mappend
for it?
For newtype
s, with GeneralizedNewtypeDeriving
启用后,实例是使用基础类型的实例获取的。
So, mempty @ a -> a -> Ordering
被使用(同上mappend
),然后重新包装为mappend :: Comparison a
.
请注意,这最终涉及函数类型的半群/幺半群实例b -> c
以及那些用于Ordering
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)