Hello everyone,
I would like to announce the release of the numerals and
numerals-base packages.
* Numerals
The numerals package contains functions to convert numbers to
number words in a number of languages. For now the package only
supports cardinal numbers.
Example:
>>> import qualified Text.Numeral.Language.EN as EN
>>> EN.uk_cardinal 123 :: Maybe String
Just "one hundred and twenty-three"
You can also inspect the underlying structure of a number word:
>>> import Text.Numerals
>>> EN.shortScaleStruct 123 :: Exp
Add (Mul (Lit 1) (Lit 100)) (Add (Mul (Lit 2) (Lit 10)) (Lit 3))
Compare this structure with the number word:
1 (one) * 100 (hundred) + (and) 2 (twen) * 10 (ty) + 3 (three)
The package also comes with a test suite:
>>> cabal configure --enable-tests
>>> cabal build
>>> ./dist/build/test-numerals/test-numerals --hide-successes
I recommend the "--hide-successes" option of test-framework (>=0.4)
because there are many tests (3383).
* Numerals-base
The numerals-base package contains all the machinery upon which
numerals is build. Using this package you can write conversion
functions for your own language(s). It is documented, although
the documentation can be improved. For now the numerals package
is probably the best documentation.
* Resources:
Hackage:
http://hackage.haskell.org/package/numeralshttp://hackage.haskell.org/package/numerals-base
Github:
http://github.com/roelvandijk/numeralshttp://github.com/roelvandijk/numerals-base
* Help wanted
Currently I support 24 languages. But I only have some experience with
4 of them. The rest is scraped together with information I found
online. For most languages I can find online how to form the first 100
cardinal numbers. But after that information is sparse. You can help
by checking and expanding the test suite. This is very simple because
the test suite consists only of numbers combined with the expected
cardinal number word.
Regards,
Roel van Dijk