HKT (Higher-Kinded Types)
Recurso de sistema de tipos que abstrai sobre construtores de tipo (tipos que recebem tipos como parâmetro). Permite programar de forma genérica sobre genéricos: Functor F, onde F é qualquer tipo de contêiner (List, Option, Tree).
Padrão em Haskell e Scala. É a base da abstração por typeclasses: Monad, Functor e Applicative dependem de HKT. O Rust não tem HKT, o que rende muitas discussões do tipo "por que o Rust não tem mônadas"; no lugar há os GATs (Generic Associated Types), que resolvem a maioria dos casos. O TypeScript também não tem, e a comunidade contorna com a biblioteca fp-ts. É um dilema das linguagens populares: HKT é intelectualmente limpo, mas complica casos simples. A tendência atual é Rust, Swift e Carbon decidirem explicitamente PULAR o HKT.