On Thu, 2006-11-09 at 22:20 +0100, Benjamin Franksen wrote:
> Henning Thielemann wrote:
> >  Maybe making fixity declarations like type class instance declarations is
> > good.
> 
> I thought so too at first but, having thought about it for a while, I now
> see this will cause /major/ problems. The precedence relations as declared
> explicitly by the programmer must form a DAG, with the vertices being the
> operator classes with equal precedence. There are two ways you can break
> the DAG: by introducing a 'smaller' or 'larger' relation when another
> module has already declared them to have equal precedence (resp. the other
> way around); or by introducing a cycle. Both can be caused simply by
> importing yet another module. I think it would be unacceptable not to
> provide some way for the programmer to resolve such conflicts.

[ ... possibilities for resolving conflicts omitted ... ]

Another possibility is:

If you have operators op1 and op2, where the compiler sees conflicting
requirements for the precedence of op1 and op2, then they are treated as
non-associative relative to each other: the expression 
  a op1 b op2 c
is illegal, and the programmer must instead write 
  (a op1 b) op2 c
or
  a op1 (b op2 c)

Carl Witty


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to