data SF a b = SF { run :: [a] -> [b] } arr :: ( a -> b ) -> SF a b arr f = SF $ map f integrate :: SF Integer Integer integrate = SF $ \ xs -> let int s [] = [] int s (x:xs) = (s+x) : int (s+x) xs in int 0 xs