[Haskell-beginners] Variable re-use

Grzegorz Milka grzegorzmilka at gmail.com
Tue Apr 28 10:12:10 UTC 2015


Hi,

The variable is not reassigned, but hidden. The do notation is a
syntactic sugar for:

    [1, 2, 3] >>= (\a ->
    [a + 1] >>= (\a ->
    return a))


The second 'a' is inside a nested lambda function and therefore inside a
nested scope. The first 'a' still exists, but the value to which it
refers is hidden inside the second lambda function, where 'a' is bound
to a different value.

On 28.04.2015 11:53, Shishir Srivastava wrote:
> Hi,
>
> Please can anyone explain how does 'a' get re-used in the code below. My
> understanding so far of haskell is that variables are not allowed to mutate
> or re-assigned.
>
> ---
> do
> a <- [1,2,3]
> a <- [a+1]
> return a
>
> [2,3,4]
> ---
>
> Thanks,
> Shishir
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150428/b16b5821/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150428/b16b5821/attachment.sig>


More information about the Beginners mailing list