minus xs [] = xs minus [] ys = map negate ys minus (x:xs) (y:ys) = x-y : minus xs ys der [] = [] der (_:xs) = minus ys (0:0:ys) where ys = zipWith (*) [1..] xs main = mapM_ print $ take 10 $ iterate der [0,1]