Each of the basic types have zero or more associated
anonymous constructor functions
(often abbreviated to constructors)
which are responsible for introducing values of the types into the
environment. An expression of the form
new s (x₀ : t₀, ..., xₙ : tₙ) has
type s iff
there is a constructor for
s of type
(t₀ ✕ ... tₙ) → s.