Hi Luke, Thankyou so much. I need the sequence function.
What I was after was this: class Scramblable a where scramble :: a -> [a] instance Scramblable [MyType] where scramble values = sequence (map scramble values) instance Scramblable MyType where scramble myType = {- blah blah -} I was basically after exhaustively generating lots ASTs given a template AST with lots of leaf values changed. Thanks, -John On Thu, Oct 16, 2008 at 8:39 PM, Luke Palmer <[EMAIL PROTECTED]> wrote: > 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 Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe