data Stream a = Cons { head :: a, tail :: Stream a } zipWith :: (a -> b -> c) -> Stream a -> Stream b -> Stream c zipWith f (Cons x xs) (Cons y ys) = Cons (f x y) (zipWith f xs ys) f = Cons 0 (Cons 1 (zipWith (+) f (tail f)))
geschlossener (algebraischer) Ausdruck für erzeugende Funktion?