In dtc-24-05-18.pdf, section 10.3.1.2 Grammar rules, page 103 Replace 56. formal parameter = parameter name [":" type ] ; with 56. formal parameter = parameter name [":" type ] [ "?" | "..." ] ; ------------------------------------------------------------------------- In dtc-24-05-18.pdf, section 10.3.1.2 Grammar rules, page 106 Add a new bullet point at the end of Additional syntax rules: * In rule 56 ("formal parameter"), the symbols "?" and "..." are used to define type qualifiers. The symbol "?" denotes an optional parameter and "..." that the enclosing function definition has a variable number of parameters. Parameters with these qualifiers must come after the ones without qualifiers. A function definition can have at most one optional parameter and at most one variable argument parameter. A function definition cannot have both optional and variable argument qualifiers. ------------------------------------------------------------------------- In dtc-24-05-18.pdf, section 10.3.2.9.1 Type Equivalence, page 114 Replace bullet point Two function types (T1, ..., Tn) →U and (S1, ..., Sm) →V are equivalent iff n = m, Ti ≡ Sj for i = 1, n and U ≡ V. with Two function types (T1, ..., Tn) →U and (S1, ..., Sm) →V are equivalent iff n = m, Ti ≡ Sj and Ti and Sj have the same type qualifiers for i = 1, n and U ≡ V. ------------------------------------------------------------------------- In dtc-24-05-18.pdf, section 10.3.2.9.2 Type Conformance, page 114 Replace bullet point The function type (T1, ..., Tn) → U conforms to type (S1, ..., Sm) → V iff n = m, Si <: Ti for i = 1, n and U <: V. The FEEL functions follow the “contravariant function argument type” and “covariant function return type” principles to provide type safety. with The function type (T1, ..., Tn) → U conforms to type (S1, ..., Sm) → V if Ti has not type qualifiers for i = 1, n and one of the following is satisfied: - if n = m, Si <: Ti for i = 1, n and U <: V. - if n = m - 1 and second function type has an optional parameter, Si <: Ti for i = 1, m-1 and U <: V - if n < m and second function type has a variable argument parameter, Si <: Ti for i = 1, n-1, Sn <: Ti for i = n, m and U <: V The FEEL functions follow the “contravariant function argument type” and “covariant function return type” principles to provide type safety.