main = print $ foldr (+) 0 $ take 100 $ unfoldr ( \ c -> Just (c, c+1) ) 1Implementierung (in
Prelude, List
):
unfoldr :: (b -> Maybe (a,b)) -> b -> [a] unfoldr f b = case f b of Nothing -> [] Just (a,b) -> a : unfoldr f b foldr :: (a -> b -> b) -> b -> [a] -> b foldr f z [] = z foldr f z (x : xs) = f x (foldr f z xs)
Funktionen sind Bürger erster Klasse (dürfen lokal definiert werden, Argument und Resultat anderer Funktionen sein)