> > map f (S a ss) = S (f a) (map f ss) This should have been "... = S (f a) (map (map f) ss)" i believe. Sorry.