Functor
Una struttura dati su cui si può applicare map: implementa map/fmap, che applica una funzione al «contenuto» senza modificare il «contenitore».
Viene dalla teoria delle categorie. Le leggi: fmap id == id e fmap (f . g) == fmap f . fmap g. Lista, Maybe/Optional, Either, albero, Promise/Future sono tutti functor. Da qui si sale all'Applicative (che aggiunge pure e <*>) e poi alla Monade (che aggiunge bind). Haskell, Scala, Rust (tramite Iterator::map) e il JavaScript funzionale usano molto il concetto.