
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
2008/10/16 John Ky
: 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