
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@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners