
11 May
2011
11 May
'11
11:36 a.m.
Hello, I am trying to understand list comprehensions (I am very new to Haskell) and there's one thing I simply don't understand. If I have code that looks like: combinations = [ (x,y) | x <-[1,2,3], y<-[1,2,3]] Then it happily gives me all the possible combinations of x and y. [(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)] However... If I change the function to look like: combinations xs ys = [ (x,y) | x <-[xs], y<-[ys]] The output changes to: [([1,2,3],[1,2,3])] I don't understand what's going on there. Is there any way I can get it to produce all the combinations of a user supplied list? Thanks H.