<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Yes, I meant to say S.First and S.Last on the right-hand sides. I’m trying to get rid of Option on <a href="https://ghc.haskell.org/trac/ghc/ticket/15028">https://ghc.haskell.org/trac/ghc/ticket/15028</a>. It will likely need to be discussed on the mailing list, but I figured I would just check on the trac first for that one since it’s more clear that Option is no longer useful. <br><br><div id="AppleMailSignature">Sent from my iPhone</div><div><br>On Apr 11, 2018, at 8:17 PM, Ivan Lazar Miljenovic <<a href="mailto:ivan.miljenovic@gmail.com">ivan.miljenovic@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div><span>On 12 April 2018 at 09:46, Andrew Martin <<a href="mailto:andrew.thaddeus@gmail.com">andrew.thaddeus@gmail.com</a>> wrote:</span><br><blockquote type="cite"><span>I propose that the data types First and Last, provided by Data.Monoid, be marked deprecated in GHC 8.6 and removed in GHC 8.10. The Semigroup-Monoid Proposal (SMP) brought about changes that, I will argue, make these data types (1) unneeded and (2) confusing.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Why are they no longer needed? Data.Semigroup provides two identically named data types (First and Last). These have Semigroup instances matches what their names suggest. Additionally, SMP corrects the Monoid instance for Maybe so that it now lifts Semigroup instances instead of Monoid instances. What this means is that, assuming the following imports:</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>    import qualified Data.Monoid as M</span><br></blockquote><blockquote type="cite"><span>    import qualified Data.Semigroup as S</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>We have the following equivalences:</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>    M.First a === Maybe (M.First a)</span><br></blockquote><blockquote type="cite"><span>    M.Last a === Maybe (M.Last a)</span><br></blockquote><span></span><br><span>Do you mean `M.First a === Maybe (S.First a)` (and similarly for Last)?</span><br><span></span><br><span>I'm +0.5 on this (more because of potential code churn.)</span><br><span></span><br><span>Since base-4.11 the Maybe instances also use Semigroup rather than</span><br><span>Monoid; is there a plan to deprecate the Option type as well?</span><br><span></span><br><span>-- </span><br><span>Ivan Lazar Miljenovic</span><br><span><a href="mailto:Ivan.Miljenovic@gmail.com">Ivan.Miljenovic@gmail.com</a></span><br><span><a href="http://IvanMiljenovic.wordpress.com">http://IvanMiljenovic.wordpress.com</a></span><br></div></blockquote></body></html>