<html><head><style>p{margin-top:0px;margin-bottom:0px;}</style></head><body><div style="font-size:10pt; font-family:NanumGothic, ë‚˜ëˆ”고딕, sans-serif;"><p>Now since `base` package version `4.11.0.0`, `Monoid` is a subclass of `Semigroup`. And that made `Monoid (Either a b)` instance impossible to exist.<br><br>Current (`4.11.0.1`) instance of `Semigroup (Either a b)` (excluding `stimes`:<br>{{{#!hs<br>-- | @since 4.9.0.0<br>instance Semigroup (Either a b) where<br>    Left _ <> b = b<br>    a      <> _ = a<br>}}}<br><br>No value of `Either a b` can be `mempty`.<br><br>This must be eventually changed to:<br>{{{#!hs<br>instance Semigroup a => Semigroup (Either a b) where<br>    Left a <> Left b = Left (a <> b)<br>    Left _ <> b      = b<br>    a      <> _      = a<br>}}}<br><br>The former behavior can be made with `Either (Last a) b`.<br><br>This makes `Monoid (Either a b)` possible:<br>{{{#!hs<br>instance Monoid a => Monoid (Either a b) where<br>    mempty = Left mempty<br>}}}<br><br>Also `Alternative (Either e)`:<br>{{{#!hs<br>instance Monoid e => Alternative (Either e) where<br>    empty = mempty<br>    (<|>) = (<>)<br>}}} </p></div></body></html><table style='display:none'><tr><td><img src="https://mail.naver.com/readReceipt/notify/?img=JmRCbHFTpz%2FYaqgZKrRZFzKrMqi0FzMrMxpSF4U9F4Empou%2FFqi4KquZMrJCFdIo%2BrkSKAK5W4d5W4C5bX0q%2BzkR74FTWx%2FsWz0Sb4JZ16kqtzCCbrR0Wzm5WXiN.gif" border="0"/></td></tr></table>