Homework
oleg@pobox.com
oleg@pobox.com
Mon, 25 Aug 2003 18:50:42 -0700 (PDT)
> Here's one: figure out what the following does :-)
> puzzle = (!!) $ map (1:) $ iterate (s (lzw (+)) (1:)) [] where
> s f g x = f x (g x)
> lzw op xs [] = xs
> lzw op [] ys = ys
> lzw op (x:xs) (y:ys) = op x y : lzw op xs ys
Can be written simpler
puzzle = (!!) $ iterate (s (lzw (+)) (0:)) [1] where
s f g x = f x (g x)
lzw op [] ys = ys
lzw op (x:xs) (y:ys) = op x y : lzw op xs ys
Incidentally, a small change gives a different series:
puzzle1 = (!!) $ iterate (s ((lzw (+)).(0:)) (1:)) [] where
s f g x = f x (g x)
lzw op [] ys = ys
lzw op (x:xs) (y:ys) = op x y : lzw op xs ys
can you tell which? Without loading into GHCi?
Finally, how can we possibly live without the following:
puzzle2 = (!!) $ iterate (s ((lzw (+)).(1:).(0:)) (0:)) [1,1] where
s f g x = f x (g x)
lzw op xs [] = []
lzw op (x:xs) (y:ys) = op x y : lzw op xs ys