Dual型
code:hs
newtype Dual a = Dual { getDual :: a }
「双対を表すもの」、とか、「入れ替えができる」と説明される よくわかっていないmrsekut.icon
Monoid (Dual a)はMonoid aの双対、Functor (Dual f)はFunctor fの双対、みたいな解釈で良いんだろうか #?? instances
code:hs
instance Semigroup a => Semigroup (Dual a) where
Dual a <> Dual b = Dual (b <> a)
逆転して連結しているmrsekut.icon
code:hs
instance Monoid a => Monoid (Dual a) where
mempty = Dual mempty
etc.
割といっぱいあるmrsekut.icon