paul Hudak in his 'gentle introduction to haskell" says that a where clause
is allowed only at the top level of a set of equations or case expression.
So you cannot declare
let
f x = z / y where z = x + y
in
I do not know the reason why this restriction has
>
>Let's make this more concrete and fill out those definitions... and also
>include the important class definition from p.32. The definitions are a
>bit contrived to get the types right:
>
>| class Foo a where foo :: a -> a
>| class Foo a => Bar a where bar :: a -> a
>|
>
>| inst
Haskell 1.2 report on page 33 says that
> If the two instance declarations read like this
>
> instance Num a => Foo [a] where ...
>
> instance (Eq a, Text a) => Bar [a] where ...
>
> then the program would be illegal.
I cannot find out the exact r