On Fri, Jul 19, 2013 at 3:23 PM, Matt Ford <m...@dancingfrog.co.uk> wrote:
> 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. > You're bracketing from the wrong end, which your intuition about n's visibility hints at. Try this as your first set of parens: [1,2] >>= (\n -> [3,4] >>= \m -> return (n,m)) --Rogan > > 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 > >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe