Je to něco jako algebraické typy, jen flexibilnější a hlavně jednodušší než původní kontrakty u typů. Nejspíš si chtěli ušetřit práci, proto naroubovali typové množiny na rozhraní. Runtime (implementace pod kapotou) se podobá typovému systému Rustu, syntax je dost odlišná. Rust je o krok napřed, jelikož má přidružené typy a GADT (potažmo HKT), ale to nemá většina rozšířených jazyků.