Thu, 20 Sep 2001 09:45:59 +1200
John Hughes wrote:
> That's the reason Haskell has two binding constructions.
Its a reason why it was a good decision to have both constructs.
There was some debate about which to have - it's a matter of personal
preference and style. The problem is that if you have both let and where
in the expression syntax, then
let a in b where c
is ambiguous unless you make an arbitrary decision about the precedence,
and that kind of arbitrariness is an opportunity for error - the
programmer mis-remembers the rule and gets a syntactically valid program
that does not do what was intended.
I always though that the resolution, allowing both but making where part
of the declaration syntax, thus both having a justification for the
parsing order and creating a means to write local definitions which span
guarded equations, was a very fine decision.