Type signature FiniteStringableType
A common signature type that can be used to represent any finite type, excluding newtypes, in
order to provide a toString() method.
Cannot be used to represent infinite types, such as int or string, and cannot represent
newtypes since those do not have a toString() member predicate, but can be used to represent
finite classes such as most normal classes. To support infinite types in your module, use
InfiniteType instead, and to support newtypes, use FiniteType.
If you do not need toString() in your parameterization, you should prefer to use FiniteType
over this class, so that your module will support newtypes as well as normal classes.