Dual型
code:hs
newtype Dual a = Dual { getDual :: a }
「双対を表すもの」、とか、「入れ替えができる」と説明される
よくわかっていないmrsekut.icon
Monoid (Dual a)はMonoid aの双対、Functor (Dual f)はFunctor fの双対、みたいな解釈で良いんだろうか #??
instances
Semigroup型クラス
code:hs
instance Semigroup a => Semigroup (Dual a) where
Dual a <> Dual b = Dual (b <> a)
逆転して連結しているmrsekut.icon
Monoid型クラス
code:hs
instance Monoid a => Monoid (Dual a) where
mempty = Dual mempty
etc.
割といっぱいあるmrsekut.icon
ここでみた
https://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Monoid.html#t:Dual
https://qiita.com/eielh/items/537ac751b75a1a6734ad#dual