It is not. Lets are expressions. Wheres are part of declarations. In a grammar sense, you have something like:
funcdef ::= name = expr (where decls)? expr ::= let decls in expr so the declarations inside a let are internal to the expression and can't go outside into the where clause. -- Hal Daume III | [EMAIL PROTECTED] "Arrest this man, he talks in maths." | www.isi.edu/~hdaume On Sun, 16 Mar 2003, Graham Klyne wrote: > In the function body (rhs): > > let > { a = (e1) } > in > (e2) > where > { b = f a } > > Does the Haskell specification indicate that the definition of 'a' is > in-scope for the definition of 'b'? > > Practical experience using HUGS suggests the answer is no, but my intuition > is that the answer should be yes. > > I was unable to find anything in either the report or the "gentle > introduction" that made the correct answer clear to me (which is not to say > it's not there, just that I didn't find it). I think the tutorial might > benefit from a discussion of what is in-scope for where clauses. > > <comment> > FWIW, my intuition was that > > e where defs > > was a form of expression (like let ... in), in which some sub-expressions > were factored out as subsidiary definitions; i.e. that I'd expect to be > able to replace each occurrence of a name defined by 'where' with the body > of the corresponding definition. Hence I'd expect the let definitions to > be in-scope. > > I now see that use of 'where' is restricted to specific contexts. I wonder > if such restriction is needed? The differences between let and where in > Haskell are something I find to be confusing. > </comment> > > #g > > > ------------------- > Graham Klyne > <[EMAIL PROTECTED]> > PGP: 0FAA 69FF C083 000B A2E9 A131 01B9 1C7A DBCA CB5E > > _______________________________________________ > Haskell mailing list > [EMAIL PROTECTED] > http://www.haskell.org/mailman/listinfo/haskell > _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell