Writing of soft-typing:
<constructor name> is bound to a procedure that takes as many arguments
as there are <field tag>s in the (<constructor name> ...) subform
and returns a new <type name> record. Fields whose tags are listed
with <constructor name> have the corresponding argument as their
initial value. The initial values of all other fields are
unspecified.
It is a good idea to allow extra fields, but I would like to see that they
are initialized with a value. A soft typer will otherwise analyze this
field with "undefined" or something like this, and potentially every access
to the field will be "polluted." Even a good flow-sensitive analysis will
often not make a difference. That's our experience.
-- Matthias