`type`

    Defines a type synonym. These are used purely for readability, i.e., a type synonym can always be "expanded out" to its definition at any time.

    topDefn ::= type typeId {tyVarId }= type
    

    Examples:

    type Byte     = Bit 8
    type Word     = Bit 16
    type LongWord = Bit 32
    

    These provide commonly used names for certain bit lengths. In a specification of a processor:

    data RegName = R0 | R1 | ... | R31
    type Rdest = RegName
    type Rsrc = RegName
    data ArithInstr = Add Rdest Rsrc Rsrc
                    | Sub Rdest Rsrc Rsrc
    

    the last two lines suggest the roles of the registers in the instructions, and is more readable than:

    data ArithInstr = Add RegName RegName RegName
                    | Sub RegName RegName RegName