Let is part of an expression, whereas where is part of a declaration. Your first program should be rejected, since lists can only be made up of expressions. That is, the 'where' in example 1 *must* come after the entire expression [ 1, 2, ... ] so that it can be part of the declaration of f. OTOH, the let/in in example 2 is fine in situ, because it is part of an epxression, which is allowed for let/in constructs.
On Mon, 22 Dec 2003, Serge D. Mechveliani wrote: > The program > f = [ 1, > 2, > (a+b where a = 1 > b = 2 > ) > ] > is qualified by some compilers as a wrong syntax. > And > f = [ 1, > 2, > (let a = 1 > b = 2 > in a+b > ) > ] > is accepted. > What may be the reason for such difference, > is this a `bug' in Haskell-98 ? > > (Usually `let' and `where' are moved out of such a list construct, > but for a large list with non-trivial expressions for the members, > it may be natural to remain them). > > Thank you in advance for the explanation. > Copy, please, the answer to [EMAIL PROTECTED] > > ----------------- > Serge Mechveliani > [EMAIL PROTECTED] > > > > > _______________________________________________ > Haskell mailing list > [EMAIL PROTECTED] > http://www.haskell.org/mailman/listinfo/haskell > -- Hal Daume III | [EMAIL PROTECTED] "Arrest this man, he talks in maths." | www.isi.edu/~hdaume _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell
