2008/10/16 John Ky <[EMAIL PROTECTED]>: > Hi, > > I've written this function here: > > scramble [] = [] > scramble [x] = [[z] | z <- scramble x] > scramble (x:xs) = > [(y:z)|y <- scramble x, z <- scramble xs] > > and (I think) it roughly does what I want it to: > > *Main> scramble ([]::[Int]) > [] > *Main> scramble ([1]::[Int]) > [[1],[2]]
So, um, this is nonsense. You've given it only 1, and yet it outputs a 2, yet there is no mention of addition or the literal 2 anywhere in your function. This function looks a lot like the more sensible: scramble' n xs = sequence (replicate n xs) >>> scramble' 0 [1,2,3] [[]] >>> scramble' 1 [1,2,3] [[1],[2],[3]] >>> scramble' 2 [1,2,3] [[1,1],[1,2],[1,3],[2,1],[2,2],[2,3],[3,1],[3,2],[3,3]] Where your examples all had [1,2] as the argument. Luke _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
