forwardDifference :: Num a => [a] -> [a] forwardDifference = tail >>= zipWith (-) nthForwardDifference :: Num a => [a] -> Int -> [a] nthForwardDifference = (!!) . iterate forwardDifference main :: IO () main = mapM_ print $ take 10 (iterate forwardDifference [90, 47, 58, 29, 22, 32, 55, 5, 55, 73])