`module type Signed = sig ... end`

  Module type for signed integers.

`val mkSigned : name:string -> size:int -> (module Signed)`

`module type Unsigned = sig ... end`

  Module type for unsigned integers.

`val mkUnsigned : name:string -> size:int -> (module Unsigned)`

`module type Arithmetic = sig ... end`

  Module type for arithmetic numbers. In POSIX world, an arithmetic type can be either a floating point number or an integer (of unknown size).

`val mkArithmetic : name:string -> size:int -> is_float:bool -> (module Arithmetic)`