User-defined types

New types can be declared as described in detail in theUser-defined typessection. These include ordinarydata types,unique types,andrecord types.A type declaration introduces atype, a correspondingtypeconstructor, one or moredataconstructorsthat (collectively) construct all possible values of the type, and (in the case of record types) accessors for the named arguments of the type's single data constructor.