why is this legal
David Feuer
David_Feuer@brown.edu
Fri, 1 Feb 2002 18:03:28 -0500
Hal Daume III wondered:
> f x = f' 0 x
> where f' acc [] = acc
> f acc (x:xs) = f' (x+acc) xs
> why are we allowed to rebind f in the where clause?
this is clearly a
> typo (in this instance) but it seems really strange to
me that this would
> be allowed.
Because this definition is equivalent to
f x = let f' acc [] = acc
f acc (x:xs) = f' (x+acc) xs
in f' 0 x
More generally (if I am not mistaken...)
g p1 q1 ... | c1 = ...
| c2 = ...
| ....
where <bindings>
is the same as
g p1 q1 ... = let <bindings>
in case () of
_ | c1 -> ...
| c2 -> ...
This message has been brought to you by the letter alpha and the number pi.