10 Unions
Union are more closely related to ML's datatypes then to C's
unions. The basic difference is that Gont compiler remembers which member
is currently stored in union.
Unions are defined as:
union exp {
int Const;
void Var;
*[exp, exp] Add;
*[exp, exp] Sub;
*[exp, exp] Mul;
*[exp, exp] Div;
}
This union can be later on used for processing symbolic expressions.
For example:
// f = (x / 10) + x
exp f = Add[Div[Var, Const[10]], Var];
exp g = Var; // both forms
exp h = Var[]; // are correct
You can access union components only using pattern matching (there is
no `.' notation). Pattern matching is discussed in
Section 13.