tion("datatype", "structural datatypes") ?>

<P>Datatype declarations are <EM>not generative</EM>: all datatypes
that have structurally equivalent definitions are compatible. For example, the
following program will elaborate:</P>

<PRE class=code>
datatype 'a t = A | B of 'a | C of 'a t
val x = C (B 0)

datatype 'a u = B of 'a | C of 'a u | A
val y = B 20

datatype 'a v = B of 'a | C of 'a t | A
val z = A

val l = [x,y,z]</PRE>

<P>This relaxation is particularly interesting for
<A href="distribution.html">