Previous

6.4. Uniting

{Uniting does not change the mode of the run-time value yielded by a construct, but simply gives more freedom to it. That value must be acceptable to not just that one mode, but rather to the whole of a given set of modes. However, after uniting, that value may be subject to a primitive action only after being dynamically tested in a conformity-clause {3.4.1.q }; indeed, no primitive action can be programmed with a construct of a 'UNITED' mode (except to assign it to a UNITED-variable, of course).

Example:

UNION(BOOL, CHAR) t, v;
  t := "a"; t := TRUE; v := t 
.
}

6.4.1. Syntax

a) united to{61B } UNITED FORM : MEEK{61C} MOID FORM, where MOID unites to UNITED{b}.

b) WHETHER MOID1 unites to MOID2{a,34i ,71m} : where MOID1 equivalent MOID2{73a } , WHETHER false ; unless MOID1 equivalent MOID2{73a } , WHETHER safe MOODS1 subset of safe MOODS2{73l,m,n } , where (MOODS1) is (MOID1) or (union of MOODS1 mode) is (MOID1), where (MOODS2) is (MOID2) or (union of MOODS2 mode) is (MOID2). {Examples:

}

a)
x (in uir := x) ·u (in UNION(CHAR, INT, VOID)(u), in a reach containing UNION(INT, VOID) u := EMPTY)

 
Next