David House schrieb:
Also, it provides an infinite space for fixities. I think the problem
'binds tighter than X but not as tight as Y', where X and Y are only
fixity integer apart is somewhat common, and this would fix it. It
would allow for extensibility into the future, where the operator
space will only become more dense, and maintaining a complete order
with only 10 integers to play will become more and more difficult.
Allowing an infinite amount of operators to come between any two
operators sounds like a solid design decision to me.

Yes, but allowing simply to specify some ordering relationship to existing operators is an even more solid one.

Fractional fixities are overspecification, and this can hurt in scenarios like this one:

Developer A creates an operator with this fixity declaration:
  infixl 6.25  +*
Developer B has this:
  infixl 6.75 *+
(They don't use 6.5 because each has another operator at 6.5 already.)

Now when some developer mixes +* and *+ in the same expression, the compiler will automatically assign a relative priority for the two operators, even though it's not at all clear whether the two operators have any relative precedence - it would be far preferable if the compiler simply declared nonpriority and emitted an error, forcing the programmer to clearly state what priorities he had in mind when writing down the expression.

I know the above example is a bit far-fetched. And it's not a really important issue anyway.

Regards,
Jo

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

Reply via email to