Druh (teorie typů)
Druh je v teorii typů "typ typu". Druh konkrétních typů (např. čísla nebo řetězce) je , druh generických typů (např. seznamu List⟨_⟩) je a druh monád je . V případě monád jde o druh vyššího řádu.
Konkrétní typy (druhu ) tvoří kategorii, ve které morfismy jsou funkce. Typem druhu je v C++ například
template<typename T> class A;
Typem druhu je například
template<typename T, typename U> class A;
Typem vyššího druhu je kupříkladu:
template<template<typename> class T> class A;
Ve většině běžných imperativních jazyků (Java, Swift, Go…) není možné typy vyšších druhů používat kvůli chybějící podpoře v překladači a runtimu. V dynamicky typovaných jazycích (Python, Objective-C apod.) je implementace bezproblémová, ovšem bez typové kontroly během překladu.
Kombinátor pevného bodu
Příkladem funkce s typem vyššího druhu je kombinátor pevného bodu, jehož druh je . V Haskellu se definuje takto:
fix f = let x = f x in x
neboli
fix f = f (fix f)