let-where difference

Hal Daume III hdaume at ISI.EDU
Mon Dec 22 07:15:32 EST 2003


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               mechvel at botik.ru
> 
> -----------------
> Serge Mechveliani
> mechvel at botik.ru
> 
> 
> 
> 
> _______________________________________________
> Haskell mailing list
> Haskell at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell
> 

-- 
 Hal Daume III                                   | hdaume at isi.edu
 "Arrest this man, he talks in maths."           | www.isi.edu/~hdaume



More information about the Haskell mailing list