Programmierer gibt für jeden Bezeichner Typ an, Compiler prüft auf Konsistenz.
Prinzip: (f : : ab x : : a) f (x) : : b
Compiler berechnet (= inferiert) Typ der Bezeichner
Prinzip: aus var x = 5; folgt x :: int
var x = 5;
x :: int