is a behaviour
that may be used to generate instances having the behaviour.
A language is
if type compatibility of
all expressions representing values can be determined from the
static program representation at compile time.
-- Wegner. Dimensions of
object-based language design. OOPSLA 1987