Higher-rank polymorphism Polymorphism inside a function type (fn(f: fn(a) -> a) -> ...). Often needs annotations.