Expression types are categorized as primitive or derived.
Primitive expression types include variables and procedure calls.
Derived expression types are not semantically primitive but can instead
be explained in terms of the primitive constructs.
They are redundant in the strict sense of
the word, but they capture common patterns of usage, and are, therefore,
provided as convenient abbreviations.