Proposal #3339: Add (+>) as a synonym for mappend

Edward Kmett ekmett at gmail.com
Sun Nov 6 23:36:43 CET 2011


On Sun, Nov 6, 2011 at 4:46 PM, Duncan Coutts
<duncan.coutts at googlemail.com>wrote:

> > Ultimately no code breaks, after all it is changing the associativity of
> an
> > operator that is by definition *associative*. ;)
>
> That's what I thought too, but I already gave an example:
>
> a <> empty <+> b
>
> This means different things depending on whether we use infixl or
> infixr. And as I noted, this doesn't bite Text.PrettyPrint.Leijen
> because it lacks the <+> unit law.


Bah. Good point.


> So my tentative suggestion is:


> infixr 6 <>
> infixr 5 <+>
> infixr 4 $$, $+$
>
> So <> binds tighter than <+> and $$ and $+$ are still lower precedence
> than <> and <+>, but switched round to being right associative.


Reasonable, but there is the caveat that causes another problem, which is
that now <+>, : and ++ conflict, which was why we had to raise <> to 6 in
the first place. We could adopt your proposed fix one level up though with:

infixr 7 <>
infixr 6 <+>

-Edward
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20111106/b653682b/attachment.htm>


More information about the Libraries mailing list