[Haskell-cafe] Re: Function Precedence
cdsmith at twu.net
Tue Apr 1 16:45:49 EDT 2008
PR Stanley wrote:
>>Should that be f (1 (2 3)), or ((f 1) 2) 3?
> The latter, of course, but that's not really what I'm
> driving at. I'm asking why we can't have a function treated differently
> with regard to the precedence and associativity rules. f 1 2 is indeed
> ((f 1) 2). Why not f 1 g 2 == ((f 1) (g 2))?
Are you asking why one doesn't change the rules for all functions? Or
are you asking why Haskell doesn't include a system of user-defined
precedence and associativity for function application so that one could
declare that g binds more tightly than f? I see good reasons for both
questions, but I'm unsure which you mean.
In both cases, it comes down to consistency of the syntax rules. In
order for (f 1 g 2) to parse as (f 1) (g 2), one would have to do
something surprising. It's unclear what that is: perhaps treat literals
differently from variables? Somehow determine a precedence level for
(f 1)? Or maybe favor shorter argument lists for grouping function
If you have a very clear kind of grouping that you think makes sense in
all cases, feel free to mention it. It seems unlikely to me, but perhaps
everyone will agree, once they see it, that it is in fact better than the
current parsing rules.
More information about the Haskell-Cafe