HKT (types d'ordre supérieur)
Une fonctionnalité du système de types : abstraire sur des constructeurs de types (des types qui prennent eux-mêmes des types en paramètre). Permet le générique sur du générique : un Functor F où F est n'importe quel type conteneur (List, Option, Tree).
Standard en Haskell et en Scala. C'est le fondement de l'abstraction par classes de types : Monad, Functor, Applicative exigent tous des HKT. Rust en est dépourvu — d'où d'innombrables discussions « pourquoi Rust n'a pas de monades » — remplacés par les GAT (Generic Associated Types), qui couvrent la majorité des cas d'usage. TypeScript en manque aussi — la communauté contourne via la bibliothèque fp-ts. Un compromis classique des langages grand public : les HKT sont intellectuellement élégants mais ajoutent de la complexité pour des cas simples. Tendance actuelle : Rust, Swift et Carbon choisissent explicitement de s'en passer.