Strukturerhaltende Folds

elementweise Operation:

Argument und Resultat haben gleiche Struktur, aber (mglw.) verschiedene Elemente:

map :: (a -> b) -> (Tree a -> Tree b)
map f = fold Leaf 
   ( \ l k r -> Branch l (f k) r )

map :: (a -> b) -> ([a] -> [b])
map f = foldr ( \ x ys -> f x : ys ) []

map length [ "foo", "bar" ] = [ 3, 3 ]

Ü: Unterschiede zw. map reverse und reverse



Johannes Waldmann 2012-06-25