No type coercion is performed. Constructed types are equivalent when the join calculus type constructor is defined by an external type declaration that establishes the equivalence of type constructors from both languages. Additionally, their type arguments must be equivalent. Arguments must match by following the argument correspondence specified using type variables. If an iterator is specified, then unrestricted type equivalence applies.
Type coercion is performed, using the specified iterator.
Otherwise, type variables arguments are equivalent to themselves. All other types are equivalent to the Objective Caml type word , the types of values in the join-calculus runtime. A simple coercion is performed that does not extends to the subcomponents of constructed values of these types. No type coercion is performed. Observe that, by rules 2. and 4. above, equivalence with the Objective Caml type word disables type coercion.