content_image/776552.jpg content_image/776553.jpg
Each variant is characteriz I'd by a list, in parentheses, of declarations of its pertinent comp(lilents. Each list is preceded by one or more constants, and the set of I isis is preceded by a case clause specifying the data type of these ('nnstants (i.e., the type according to which the variants are discriminak'd). 

<img src='content_image/776552.jpg'>

<img src='content_image/776553.jpg'>

As an example, assume the existence of a 

type MaritalStatus = (Marr d,Widowed,Divorced,Single) 

Then we can describe persons by data of the 

type Person record { fields common to case MaritalStatus of Married: ( {fields Single: ( {fields c end ,~l persons go here }; ,j married persons only} ); :;ingle persons only} ); 

Note that every value of the type by which the variants are discriminated (the so-called tag typ,' ) must be explicitly listed with one of the variants. In the above eXaJllple the constants Widowed and Di vorced must also appear (along ,vilh Marr ied and Single) for the example to be valid. 

Usually, a component (field) I)f the record itself indicates its currently valid variant. For example the above defined person record is likely to contain a common field: 

