Stream Functions

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



Johannes Waldmann 2010-01-25