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