Previous Up Next

3.11  Type definition

Abstract types can be defined. Their syntax is inherited from Objective Caml and is reminded here.

type-definition::=type typedef { and typedef }
 
typedef::=[ type-params ] typeconstr-name
    | sum-type-def
    | record-type-def
 
sum-type-def::=[ | ] one-sum-def { | one-sum-def }
 
one-sum-def::=capitalized-ident
    | capitalized-ident of type
 
record-type-def::={ label-type { ; label-type } }
 
label-type::=ident : type
 
type-params::= ident
    | ( ident { , ident } )

Previous Up Next