I started by putting brackets in
([1,2] >>= \n -> [3,4]) >>= \m -> return (n,m)
This immediately fails when evaluated: I expect it's something to do
with the n value now not being seen by the final return.
It seems to me that the return function is doing something more than
it's definition (return x = [x]).
If ignore the error introduced by the brackets I have and continue to
simplify I get.
[3,4,3,4] >>= \m -> return (n,m)
Now this obviously won't work as there is no 'n' value. So what's
happening here? Return seems to be doing way more work than lifting the
result to a list, how does Haskell know to do this? Why's it not in the
function definition? Are lists somehow a special case?
Any pointers appreciated.
Cheers,
--
Matt
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe