The general idea behind this package is to take a number, convert that number to an abstract representation of its spoken form and finally render that representation to a string-like value.
Conversion from numbers to numerals is the responsibility of
Rule type itself and a number of useful rules are defined
in the Text.Numeral.Rules module. All rules are completely
polymorphic in their types. Their result types are only constrained by
the type classes that make up the numeral expression language.
Finally, the Text.Numeral.Render module is responsible for
converting the numeral expression language to a string-like
value. This happens via the
render function. Render is parametrised
Repr value which contains all the knowledge on how to convert
the abstract expression to a concrete string-like value. The
expression itself is passed as a concrete
Exp value. The only
constrained on the final value is that it is a