A particularly important example is that of data constructors, especially if they have higher-ranked types.
It is, perhaps, helpful to view the constructors of a datatype as building larger "new" elements from smaller "old" ones.
Inlining is also possible (with some risk of code blow-up) for sets with just a few constructors, although we have not implemented this.
A data type declaration defines the structure of a recursive datum and the data constructor names.
Also, we need a constructor for creating new processes.
In particular, strictness annotations that may accompany the declaration of a data constructor are not apparent in the concrete syntax of a constructor application.
Derived comparisons always traverse constructors from left to right.
The system then loads the type files and builds the structure of type constructors.