Listen und Bäume besitzen strukturerhaltendes Rekursionsschema:
map :: (a -> b) -> ([a] -> [b]) tmap :: (a -> b) -> (Tree a -> Tree b)Diese Gemeinsamkeit wird ausgedrückt durch:
class Functor f where fmap :: (a -> b) -> (f a -> f b) instance Functor [] where fmap = map instance Functor Tree where fmap = tmapFunctor ist eine Klasse für Typkonstruktoren
(Datenkonstruktor: erzeugt Datum, Typkonstruktor: erzeugt Typ)