module Text.Numeral ( -- * Overview -- $overview -- ** Expression language -- $dsl -- ** Rules -- $rules -- ** Rendering -- $render module Text.Numeral.Exp , module Text.Numeral.Render , module Text.Numeral.Rules ) where ------------------------------------------------------------------------------- -- Imports ------------------------------------------------------------------------------- -- from numerals: import Text.Numeral.Exp import Text.Numeral.Render import Text.Numeral.Rules ------------------------------------------------------------------------------- -- Documentation ------------------------------------------------------------------------------- {- $overview 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. -} {- $dsl Numerals are represented by a small expression language defined in the "Text.Numeral.Exp.Classes" module. This language is also reified as the concrete type 'Exp' in the "Text.Numeral.Exp" module. -} {- $rules Conversion from numbers to numerals is the responsibility of rules. The '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. -} {- $render 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 with a '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 'Monoid'. -}