numerals 0.4 → 0.4.1
raw patch · 232 files changed
+25216/−18644 lines, 232 filesdep +criteriondep +integer-simpledep −base-unicode-symbolsdep −containers-unicode-symbolsdep ~HUnitdep ~QuickCheckdep ~base
Dependencies added: criterion, integer-simple
Dependencies removed: base-unicode-symbols, containers-unicode-symbols
Dependency ranges changed: HUnit, QuickCheck, base, integer-gmp, test-framework, test-framework-hunit, test-framework-quickcheck2, text
Files
- README.markdown +7/−7
- numerals.cabal +163/−155
- src-bench/bench.hs +10/−0
- src-test/Text/Numeral/Language/ACH/TestData.hs +2/−8
- src-test/Text/Numeral/Language/ADY/TestData.hs +2/−8
- src-test/Text/Numeral/Language/AF/TestData.hs +0/−129
- src-test/Text/Numeral/Language/AFR/TestData.hs +122/−0
- src-test/Text/Numeral/Language/AMP/TestData.hs +2/−8
- src-test/Text/Numeral/Language/ARI/TestData.hs +2/−8
- src-test/Text/Numeral/Language/ARN/TestData.hs +175/−0
- src-test/Text/Numeral/Language/AST/TestData.hs +2/−8
- src-test/Text/Numeral/Language/AZ/TestData.hs +0/−206
- src-test/Text/Numeral/Language/AZE/TestData.hs +200/−0
- src-test/Text/Numeral/Language/BA/TestData.hs +0/−180
- src-test/Text/Numeral/Language/BAK/TestData.hs +174/−0
- src-test/Text/Numeral/Language/BAM/TestData.hs +197/−0
- src-test/Text/Numeral/Language/BG/TestData.hs +0/−237
- src-test/Text/Numeral/Language/BM/TestData.hs +0/−203
- src-test/Text/Numeral/Language/BUL/TestData.hs +228/−0
- src-test/Text/Numeral/Language/CA/TestData.hs +0/−217
- src-test/Text/Numeral/Language/CAF/TestData.hs +3/−9
- src-test/Text/Numeral/Language/CAR/TestData.hs +152/−0
- src-test/Text/Numeral/Language/CAT/TestData.hs +211/−0
- src-test/Text/Numeral/Language/CBK/TestData.hs +2/−8
- src-test/Text/Numeral/Language/CES/TestData.hs +204/−0
- src-test/Text/Numeral/Language/CHN/TestData.hs +2/−9
- src-test/Text/Numeral/Language/CHR/TestData.hs +2/−9
- src-test/Text/Numeral/Language/CKU/TestData.hs +175/−0
- src-test/Text/Numeral/Language/CLM/TestData.hs +2/−8
- src-test/Text/Numeral/Language/CO/TestData.hs +0/−225
- src-test/Text/Numeral/Language/COD/TestData.hs +2/−8
- src-test/Text/Numeral/Language/COO/TestData.hs +2/−8
- src-test/Text/Numeral/Language/COS/TestData.hs +219/−0
- src-test/Text/Numeral/Language/CRG/TestData.hs +138/−0
- src-test/Text/Numeral/Language/CRO/TestData.hs +114/−0
- src-test/Text/Numeral/Language/CS/TestData.hs +0/−212
- src-test/Text/Numeral/Language/CY/TestData.hs +0/−178
- src-test/Text/Numeral/Language/CYM/TestData.hs +171/−0
- src-test/Text/Numeral/Language/DE/TestData.hs +0/−475
- src-test/Text/Numeral/Language/DEU/TestData.hs +467/−0
- src-test/Text/Numeral/Language/DJK/TestData.hs +2/−8
- src-test/Text/Numeral/Language/EKK/TestData.hs +214/−0
- src-test/Text/Numeral/Language/EMI/TestData.hs +174/−0
- src-test/Text/Numeral/Language/EN/TestData.hs +0/−380
- src-test/Text/Numeral/Language/ENG/TestData.hs +373/−0
- src-test/Text/Numeral/Language/EO/TestData.hs +0/−142
- src-test/Text/Numeral/Language/EPO/TestData.hs +135/−0
- src-test/Text/Numeral/Language/ES/TestData.hs +0/−280
- src-test/Text/Numeral/Language/ET/TestData.hs +0/−220
- src-test/Text/Numeral/Language/FAO/TestData.hs +219/−0
- src-test/Text/Numeral/Language/FI/TestData.hs +0/−1827
- src-test/Text/Numeral/Language/FIN/TestData.hs +1820/−0
- src-test/Text/Numeral/Language/FO/TestData.hs +0/−225
- src-test/Text/Numeral/Language/FR/TestData.hs +0/−371
- src-test/Text/Numeral/Language/FRA/TestData.hs +364/−0
- src-test/Text/Numeral/Language/FRA_JER/TestData.hs +162/−0
- src-test/Text/Numeral/Language/FRR/TestData.hs +196/−0
- src-test/Text/Numeral/Language/FUR/TestData.hs +9/−17
- src-test/Text/Numeral/Language/GCF_MTQ/TestData.hs +2/−8
- src-test/Text/Numeral/Language/GIL/TestData.hs +2/−8
- src-test/Text/Numeral/Language/GL/TestData.hs +0/−235
- src-test/Text/Numeral/Language/GLG/TestData.hs +229/−0
- src-test/Text/Numeral/Language/GLV/TestData.hs +151/−0
- src-test/Text/Numeral/Language/GSW/TestData.hs +2/−9
- src-test/Text/Numeral/Language/GV/TestData.hs +0/−158
- src-test/Text/Numeral/Language/HAI/TestData.hs +3/−9
- src-test/Text/Numeral/Language/HAT/TestData.hs +219/−0
- src-test/Text/Numeral/Language/HE/TestData.hs +0/−315
- src-test/Text/Numeral/Language/HEB/TestData.hs +308/−0
- src-test/Text/Numeral/Language/HOP/TestData.hs +3/−9
- src-test/Text/Numeral/Language/HR/TestData.hs +0/−142
- src-test/Text/Numeral/Language/HRV/TestData.hs +135/−0
- src-test/Text/Numeral/Language/HU/TestData.hs +0/−142
- src-test/Text/Numeral/Language/HUN/TestData.hs +135/−0
- src-test/Text/Numeral/Language/HUP/TestData.hs +162/−0
- src-test/Text/Numeral/Language/HUR/TestData.hs +149/−0
- src-test/Text/Numeral/Language/HY/TestData.hs +0/−208
- src-test/Text/Numeral/Language/HYE/TestData.hs +202/−0
- src-test/Text/Numeral/Language/IBO/TestData.hs +219/−0
- src-test/Text/Numeral/Language/IND/TestData.hs +229/−0
- src-test/Text/Numeral/Language/INH/TestData.hs +218/−0
- src-test/Text/Numeral/Language/IT/TestData.hs +0/−295
- src-test/Text/Numeral/Language/ITA/TestData.hs +287/−0
- src-test/Text/Numeral/Language/IZH/TestData.hs +139/−0
- src-test/Text/Numeral/Language/JA/TestData.hs +0/−217
- src-test/Text/Numeral/Language/JPN/TestData.hs +211/−0
- src-test/Text/Numeral/Language/KAP/TestData.hs +2/−8
- src-test/Text/Numeral/Language/KEA/TestData.hs +2/−8
- src-test/Text/Numeral/Language/KLB/TestData.hs +175/−0
- src-test/Text/Numeral/Language/KMR/TestData.hs +209/−0
- src-test/Text/Numeral/Language/KRL/TestData.hs +138/−0
- src-test/Text/Numeral/Language/LA/TestData.hs +0/−148
- src-test/Text/Numeral/Language/LAT/TestData.hs +141/−0
- src-test/Text/Numeral/Language/LAV/TestData.hs +239/−0
- src-test/Text/Numeral/Language/LIN/TestData.hs +175/−0
- src-test/Text/Numeral/Language/LIT/TestData.hs +291/−0
- src-test/Text/Numeral/Language/LIV/TestData.hs +209/−0
- src-test/Text/Numeral/Language/LLD/TestData.hs +4/−11
- src-test/Text/Numeral/Language/LMO/TestData.hs +221/−0
- src-test/Text/Numeral/Language/LTZ/TestData.hs +239/−0
- src-test/Text/Numeral/Language/MG/TestData.hs +0/−162
- src-test/Text/Numeral/Language/MIC/TestData.hs +197/−0
- src-test/Text/Numeral/Language/MIN/TestData.hs +138/−0
- src-test/Text/Numeral/Language/MLG/TestData.hs +155/−0
- src-test/Text/Numeral/Language/MNK/TestData.hs +174/−0
- src-test/Text/Numeral/Language/MOH/TestData.hs +2/−8
- src-test/Text/Numeral/Language/NAV/TestData.hs +208/−0
- src-test/Text/Numeral/Language/NEE/TestData.hs +141/−0
- src-test/Text/Numeral/Language/NEN/TestData.hs +68/−0
- src-test/Text/Numeral/Language/NL/TestData.hs +0/−380
- src-test/Text/Numeral/Language/NLD/TestData.hs +373/−0
- src-test/Text/Numeral/Language/NO/TestData.hs +0/−170
- src-test/Text/Numeral/Language/NOB/TestData.hs +162/−0
- src-test/Text/Numeral/Language/NQM/TestData.hs +2/−9
- src-test/Text/Numeral/Language/OCI/TestData.hs +221/−0
- src-test/Text/Numeral/Language/OJ/TestData.hs +0/−159
- src-test/Text/Numeral/Language/OJI/TestData.hs +170/−0
- src-test/Text/Numeral/Language/ONE/TestData.hs +162/−0
- src-test/Text/Numeral/Language/ORM/TestData.hs +175/−0
- src-test/Text/Numeral/Language/PAA/TestData.hs +2/−8
- src-test/Text/Numeral/Language/PDC/TestData.hs +3/−10
- src-test/Text/Numeral/Language/PL/TestData.hs +0/−204
- src-test/Text/Numeral/Language/POL/TestData.hs +196/−0
- src-test/Text/Numeral/Language/POR/TestData.hs +291/−0
- src-test/Text/Numeral/Language/PT/TestData.hs +0/−302
- src-test/Text/Numeral/Language/RMN_DZA/TestData.hs +2/−8
- src-test/Text/Numeral/Language/RMY_KAL/TestData.hs +175/−0
- src-test/Text/Numeral/Language/RO/TestData.hs +0/−144
- src-test/Text/Numeral/Language/RON/TestData.hs +137/−0
- src-test/Text/Numeral/Language/RU/TestData.hs +0/−192
- src-test/Text/Numeral/Language/RUS/TestData.hs +184/−0
- src-test/Text/Numeral/Language/SCO/TestData.hs +2/−9
- src-test/Text/Numeral/Language/SME/TestData.hs +208/−0
- src-test/Text/Numeral/Language/SMN/TestData.hs +208/−0
- src-test/Text/Numeral/Language/SPA/TestData.hs +273/−0
- src-test/Text/Numeral/Language/SV/TestData.hs +0/−308
- src-test/Text/Numeral/Language/SWE/TestData.hs +300/−0
- src-test/Text/Numeral/Language/TAR/TestData.hs +12/−18
- src-test/Text/Numeral/Language/TGS/TestData.hs +161/−0
- src-test/Text/Numeral/Language/TR/TestData.hs +0/−262
- src-test/Text/Numeral/Language/TUR/TestData.hs +255/−0
- src-test/Text/Numeral/Language/WMW/TestData.hs +174/−0
- src-test/Text/Numeral/Language/WO/TestData.hs +0/−174
- src-test/Text/Numeral/Language/WOL/TestData.hs +167/−0
- src-test/Text/Numeral/Language/XPQ/TestData.hs +138/−0
- src-test/Text/Numeral/Language/YOR/TestData.hs +2/−10
- src-test/Text/Numeral/Language/ZAI/TestData.hs +174/−0
- src-test/Text/Numeral/Language/ZAQ/TestData.hs +2/−8
- src-test/Text/Numeral/Language/ZH/TestData.hs +0/−349
- src-test/Text/Numeral/Language/ZHO/TestData.hs +342/−0
- src-test/Text/Numeral/Language/ZPC/TestData.hs +2/−8
- src-test/Text/Numeral/Language/ZPL/TestData.hs +161/−0
- src-test/Text/Numeral/Test.hs +1/−1
- src-test/test.hs +503/−306
- src/GHC/Integer/Logarithms/Compat.hs +120/−0
- src/Math/NumberTheory/Logarithms.hs +74/−0
- src/Text/Numeral.hs +81/−27
- src/Text/Numeral/BigNum.hs +54/−70
- src/Text/Numeral/Entry.hs +16/−22
- src/Text/Numeral/Exp.hs +105/−125
- src/Text/Numeral/Exp/Reified.hs +0/−111
- src/Text/Numeral/Grammar.hs +408/−266
- src/Text/Numeral/Grammar/Reified.hs +0/−277
- src/Text/Numeral/Language/AF.hs +0/−207
- src/Text/Numeral/Language/AFR.hs +191/−0
- src/Text/Numeral/Language/AMP.hs +15/−24
- src/Text/Numeral/Language/BG.hs +0/−185
- src/Text/Numeral/Language/BUL.hs +163/−0
- src/Text/Numeral/Language/CES.hs +140/−0
- src/Text/Numeral/Language/CHN.hs +11/−21
- src/Text/Numeral/Language/CHR.hs +47/−59
- src/Text/Numeral/Language/CLM.hs +19/−29
- src/Text/Numeral/Language/CRO.hs +144/−0
- src/Text/Numeral/Language/CS.hs +0/−154
- src/Text/Numeral/Language/DE.hs +0/−241
- src/Text/Numeral/Language/DEU.hs +223/−0
- src/Text/Numeral/Language/EN.hs +0/−266
- src/Text/Numeral/Language/ENG.hs +232/−0
- src/Text/Numeral/Language/EO.hs +0/−100
- src/Text/Numeral/Language/EPO.hs +90/−0
- src/Text/Numeral/Language/ES.hs +0/−207
- src/Text/Numeral/Language/Entries.hs +61/−73
- src/Text/Numeral/Language/FI.hs +0/−960
- src/Text/Numeral/Language/FIN.hs +808/−0
- src/Text/Numeral/Language/FR.hs +0/−259
- src/Text/Numeral/Language/FRA.hs +238/−0
- src/Text/Numeral/Language/FUR.hs +27/−43
- src/Text/Numeral/Language/GLV.hs +113/−0
- src/Text/Numeral/Language/GSW.hs +38/−49
- src/Text/Numeral/Language/GV.hs +0/−123
- src/Text/Numeral/Language/HE.hs +0/−172
- src/Text/Numeral/Language/HEB.hs +158/−0
- src/Text/Numeral/Language/HOP.hs +34/−47
- src/Text/Numeral/Language/IT.hs +0/−272
- src/Text/Numeral/Language/ITA.hs +249/−0
- src/Text/Numeral/Language/JA.hs +0/−278
- src/Text/Numeral/Language/JPN.hs +267/−0
- src/Text/Numeral/Language/LA.hs +0/−174
- src/Text/Numeral/Language/LAT.hs +160/−0
- src/Text/Numeral/Language/LLD.hs +24/−40
- src/Text/Numeral/Language/MG.hs +0/−126
- src/Text/Numeral/Language/MLG.hs +114/−0
- src/Text/Numeral/Language/NEN.hs +95/−0
- src/Text/Numeral/Language/NL.hs +0/−268
- src/Text/Numeral/Language/NLD.hs +240/−0
- src/Text/Numeral/Language/NO.hs +0/−136
- src/Text/Numeral/Language/NOB.hs +123/−0
- src/Text/Numeral/Language/NQM.hs +10/−20
- src/Text/Numeral/Language/OJ.hs +0/−114
- src/Text/Numeral/Language/OJI.hs +103/−0
- src/Text/Numeral/Language/PDC.hs +38/−54
- src/Text/Numeral/Language/PL.hs +0/−165
- src/Text/Numeral/Language/POL.hs +151/−0
- src/Text/Numeral/Language/POR.hs +278/−0
- src/Text/Numeral/Language/PT.hs +0/−308
- src/Text/Numeral/Language/RU.hs +0/−169
- src/Text/Numeral/Language/RUS.hs +156/−0
- src/Text/Numeral/Language/SCO.hs +18/−28
- src/Text/Numeral/Language/SPA.hs +181/−0
- src/Text/Numeral/Language/SV.hs +0/−223
- src/Text/Numeral/Language/SWE.hs +201/−0
- src/Text/Numeral/Language/TR.hs +0/−163
- src/Text/Numeral/Language/TUR.hs +149/−0
- src/Text/Numeral/Language/WO.hs +0/−116
- src/Text/Numeral/Language/WOL.hs +105/−0
- src/Text/Numeral/Language/YOR.hs +31/−43
- src/Text/Numeral/Language/ZH.hs +0/−352
- src/Text/Numeral/Language/ZHO.hs +336/−0
- src/Text/Numeral/Misc.hs +5/−33
- src/Text/Numeral/Render.hs +88/−110
- src/Text/Numeral/Render/Utils.hs +7/−14
- src/Text/Numeral/Rules.hs +184/−189
README.markdown view
@@ -1,13 +1,13 @@ Numerals ======== -Convert numbers to numerals (number words) in a number of-languages. Each language has its own module. The module name is based-on one of the ISO 639 Alpha codes. Each module contains one or more-functions to convert numerical values to numerals. Several types of-numerals are supported. But not every type is supported by every-language. Some because they do not occur in that language. Others-because they are not yet defined in this package.+Convert numbers to number words in a number of languages. Each+language has its own module. The module name is based on the ISO 639-3+code for that language. Each module contains one or more functions to+convert numerical values to numerals. Several types of numerals are+supported. But not every type is supported by every language. Some+because they do not occur in that language. Others because they are+not yet defined in this package. - Cardinal numerals
numerals.cabal view
@@ -1,6 +1,6 @@ name: numerals-version: 0.4-cabal-version: >= 1.8+version: 0.4.1+cabal-version: >= 1.9.2 build-type: Simple stability: experimental author: Roel van Dijk <vandijk.roel@gmail.com>, Bas van Dijk <v.dijk.bas@gmail.com>@@ -13,75 +13,16 @@ category: Natural Language Processing, Numerical, Text synopsis: Convert numbers to number words description:- Convert numbers to number words in a number of languages. Each- language has its own module. The module name is based on one of the- ISO 639 Alpha codes. Each module contains one or more 'cardinal' and- 'ordinal' functions and a 'struct' function. The 'cardinal'- functions directly convert cardinal numbers to a string-like- representation of their spoken form. The 'ordinal' functions do the- same but for ordinal numbers. The 'struct' functions convert numbers- to a polymorphic representation of their grammatical structure.- .- The use of this package is best understood with some examples. First- some English number names, both British and US variants:- .- >>> import qualified Text.Numeral.Language.EN as EN- >>> EN.uk_cardinal defaultInflection 123 :: Maybe Text- Just "one hundred and twenty-three"- >>> EN.us_cardinal defaultInflection (10^50 + 42) :: Maybe Text- Just "one hundred quindecillion forty-two"- .- French, which contains some traces of a base 20 system:- .- >>> import qualified Text.Numeral.Language.FR as FR- >>> FR.cardinal defaultInflection (-99) :: Maybe Text- Just "moins quatre-vingt-dix-neuf"- .- Conversions can fail. Alamblak, a language spoken by a few people in- Papua New Guinea, has no representation for negative numbers:- .- >>> import qualified Text.Numeral.Language.AMP as AMP- >>> AMP.cardinal defaultInflection (-3) :: Maybe Text- Nothing- .- Some languages have multiple scripts and methods for writing number- names. Take Chinese for example, which can be written using Han- characters or transcribed to the Latin script using Pinyin.- .- Traditional Chinese characters:- .- >>> import qualified Text.Numeral.Language.ZH as ZH- >>> ZH.trad_cardinal defaultInflection 123456 :: Maybe Text- Just "十二萬三千四百五十六"- .- Simplified characters for use in financial contexts:- .- >>> ZH.finance_simpl_cardinal defaultInflection 123456 :: Maybe Text- Just "拾贰万参仟肆伯伍拾陆"- .- Transcribed using Pinyin:- .- >>> ZH.pinyin_cardinal defaultInflection 123456 :: Maybe Text- Just "shíèrwàn sānqiān sìbǎi wǔshí liù"- .- Using the 'struct' functions you can see the grammatical structure- of number names. Because the results of these functions are- polymorphic you need to specify a specific type.- .- >>> import qualified Text.Numeral.Language.NL as NL- >>> NL.struct 123 :: Integer- 123- >>> import Text.Numeral- >>> NL.struct 123 :: Exp- Add (Lit 100) (Add (Lit 3) (Mul (Lit 2) (Lit 10)))- .- Compare with:- .- >>> NL.cardinal defaultInflection 123 :: Maybe Text- Just "honderddrieëntwintig"- .- 100 (honderd) + (3 (drie) + (ën) 2 (twin) * 10 (tig))+ Convert numbers to number words in a number of languages. Each language has+ its own module. The module name is based on the ISO 639-3 code for that+ language. Each module contains one or more 'cardinal' and 'ordinal' functions+ and a 'struct' function. The 'cardinal' functions directly convert cardinal+ numbers to a string-like representation of their spoken form. The 'ordinal'+ functions do the same but for ordinal numbers. The 'struct' functions convert+ numbers to a polymorphic representation of their grammatical structure. + See the "Text.Numeral" module for information on how to use this library.+ extra-source-files: ./README.markdown -------------------------------------------------------------------------------@@ -92,72 +33,88 @@ ------------------------------------------------------------------------------- +flag integer-simple+ description: Use the integer-simple package instead of integer-gmp+ default: False++-------------------------------------------------------------------------------+ library hs-source-dirs: src ghc-options: -Wall - build-depends: base >= 3.0.3.1 && < 4.7- , base-unicode-symbols >= 0.2.2 && < 0.3- , containers >= 0.4 && < 0.6- , containers-unicode-symbols >= 0.3 && < 0.4- , fingertree >= 0.0.1 && < 0.2- , text >= 0.11 && < 1.2+ build-depends: base >= 3.0.3.1 && < 5+ , containers >= 0.4 && < 0.6+ , fingertree >= 0.0.1 && < 0.2+ , text >= 0.11 && < 1.3 - if impl(ghc >= 7.2.1)- build-depends: integer-gmp >= 0.3 && < 0.6+ -- if impl(ghc >= 7.2.1)+ -- build-depends: integer-gmp >= 0.3 && < 1.1 + if flag(integer-simple)+ build-depends: integer-simple+ CPP-options: -DINTEGER_SIMPLE+ else+ build-depends: integer-gmp+ exposed-modules: Text.Numeral , Text.Numeral.BigNum , Text.Numeral.Entry , Text.Numeral.Exp- , Text.Numeral.Exp.Reified , Text.Numeral.Grammar- , Text.Numeral.Grammar.Reified , Text.Numeral.Misc , Text.Numeral.Render , Text.Numeral.Rules , Text.Numeral.Language.Entries- , Text.Numeral.Language.AF+ , Text.Numeral.Language.AFR , Text.Numeral.Language.AMP- , Text.Numeral.Language.BG+ , Text.Numeral.Language.BUL+ , Text.Numeral.Language.CES , Text.Numeral.Language.CHN , Text.Numeral.Language.CHR , Text.Numeral.Language.CLM- , Text.Numeral.Language.CS- , Text.Numeral.Language.DE- , Text.Numeral.Language.EN- , Text.Numeral.Language.EO- , Text.Numeral.Language.ES- , Text.Numeral.Language.FI- , Text.Numeral.Language.FR+ , Text.Numeral.Language.CRO+ , Text.Numeral.Language.DEU+ , Text.Numeral.Language.ENG+ , Text.Numeral.Language.EPO+ , Text.Numeral.Language.FIN+ , Text.Numeral.Language.FRA , Text.Numeral.Language.FUR+ , Text.Numeral.Language.GLV , Text.Numeral.Language.GSW- , Text.Numeral.Language.GV- , Text.Numeral.Language.HE+ , Text.Numeral.Language.HEB , Text.Numeral.Language.HOP- , Text.Numeral.Language.IT- , Text.Numeral.Language.JA- , Text.Numeral.Language.LA+ , Text.Numeral.Language.ITA+ , Text.Numeral.Language.JPN+ , Text.Numeral.Language.LAT , Text.Numeral.Language.LLD- , Text.Numeral.Language.MG- , Text.Numeral.Language.NL- , Text.Numeral.Language.NO+ , Text.Numeral.Language.MLG+ , Text.Numeral.Language.NEN+ , Text.Numeral.Language.NLD+ , Text.Numeral.Language.NOB , Text.Numeral.Language.NQM- , Text.Numeral.Language.OJ+ , Text.Numeral.Language.OJI , Text.Numeral.Language.PDC- , Text.Numeral.Language.PL- , Text.Numeral.Language.PT- , Text.Numeral.Language.RU+ , Text.Numeral.Language.POL+ , Text.Numeral.Language.POR+ , Text.Numeral.Language.RUS , Text.Numeral.Language.SCO- , Text.Numeral.Language.SV- , Text.Numeral.Language.TR- , Text.Numeral.Language.WO+ , Text.Numeral.Language.SPA+ , Text.Numeral.Language.SWE+ , Text.Numeral.Language.TUR+ , Text.Numeral.Language.WOL , Text.Numeral.Language.YOR- , Text.Numeral.Language.ZH- other-modules: Text.Numeral.Render.Utils+ , Text.Numeral.Language.ZHO+ other-modules: Math.NumberTheory.Logarithms+ , GHC.Integer.Logarithms.Compat+ , Text.Numeral.Render.Utils + extensions: ScopedTypeVariables+ , PackageImports+ , OverloadedStrings + ------------------------------------------------------------------------------- test-suite test-numerals@@ -169,85 +126,136 @@ , Text.Numeral.Language.ACH.TestData , Text.Numeral.Language.ADY.TestData- , Text.Numeral.Language.AF.TestData+ , Text.Numeral.Language.AFR.TestData , Text.Numeral.Language.AMP.TestData , Text.Numeral.Language.ARI.TestData+ , Text.Numeral.Language.ARN.TestData , Text.Numeral.Language.AST.TestData- , Text.Numeral.Language.AZ.TestData- , Text.Numeral.Language.BA.TestData- , Text.Numeral.Language.BG.TestData- , Text.Numeral.Language.BM.TestData- , Text.Numeral.Language.CA.TestData+ , Text.Numeral.Language.AZE.TestData+ , Text.Numeral.Language.BAK.TestData+ , Text.Numeral.Language.BAM.TestData+ , Text.Numeral.Language.BUL.TestData , Text.Numeral.Language.CAF.TestData+ , Text.Numeral.Language.CAR.TestData+ , Text.Numeral.Language.CAT.TestData , Text.Numeral.Language.CBK.TestData+ , Text.Numeral.Language.CES.TestData , Text.Numeral.Language.CHN.TestData , Text.Numeral.Language.CHR.TestData+ , Text.Numeral.Language.CKU.TestData , Text.Numeral.Language.CLM.TestData- , Text.Numeral.Language.CO.TestData+ , Text.Numeral.Language.CRO.TestData , Text.Numeral.Language.COD.TestData , Text.Numeral.Language.COO.TestData- , Text.Numeral.Language.CS.TestData- , Text.Numeral.Language.CY.TestData- , Text.Numeral.Language.DE.TestData+ , Text.Numeral.Language.COS.TestData+ , Text.Numeral.Language.CRG.TestData+ , Text.Numeral.Language.CYM.TestData+ , Text.Numeral.Language.DEU.TestData , Text.Numeral.Language.DJK.TestData- , Text.Numeral.Language.EN.TestData- , Text.Numeral.Language.EO.TestData- , Text.Numeral.Language.ES.TestData- , Text.Numeral.Language.ET.TestData- , Text.Numeral.Language.FI.TestData- , Text.Numeral.Language.FO.TestData- , Text.Numeral.Language.FR.TestData+ , Text.Numeral.Language.EKK.TestData+ , Text.Numeral.Language.EMI.TestData+ , Text.Numeral.Language.ENG.TestData+ , Text.Numeral.Language.EPO.TestData+ , Text.Numeral.Language.FAO.TestData+ , Text.Numeral.Language.FIN.TestData+ , Text.Numeral.Language.FRA.TestData+ , Text.Numeral.Language.FRA_JER.TestData+ , Text.Numeral.Language.FRR.TestData , Text.Numeral.Language.FUR.TestData , Text.Numeral.Language.GCF_MTQ.TestData , Text.Numeral.Language.GIL.TestData- , Text.Numeral.Language.GL.TestData+ , Text.Numeral.Language.GLG.TestData+ , Text.Numeral.Language.GLV.TestData , Text.Numeral.Language.GSW.TestData- , Text.Numeral.Language.GV.TestData , Text.Numeral.Language.HAI.TestData- , Text.Numeral.Language.HE.TestData+ , Text.Numeral.Language.HAT.TestData+ , Text.Numeral.Language.HEB.TestData , Text.Numeral.Language.HOP.TestData- , Text.Numeral.Language.HR.TestData- , Text.Numeral.Language.HU.TestData- , Text.Numeral.Language.HY.TestData- , Text.Numeral.Language.IT.TestData- , Text.Numeral.Language.JA.TestData+ , Text.Numeral.Language.HRV.TestData+ , Text.Numeral.Language.HUN.TestData+ , Text.Numeral.Language.HUP.TestData+ , Text.Numeral.Language.HUR.TestData+ , Text.Numeral.Language.HYE.TestData+ , Text.Numeral.Language.IBO.TestData+ , Text.Numeral.Language.IND.TestData+ , Text.Numeral.Language.INH.TestData+ , Text.Numeral.Language.ITA.TestData+ , Text.Numeral.Language.IZH.TestData+ , Text.Numeral.Language.JPN.TestData , Text.Numeral.Language.KAP.TestData , Text.Numeral.Language.KEA.TestData- , Text.Numeral.Language.LA.TestData+ , Text.Numeral.Language.KLB.TestData+ , Text.Numeral.Language.KMR.TestData+ , Text.Numeral.Language.KRL.TestData+ , Text.Numeral.Language.LAT.TestData+ , Text.Numeral.Language.LAV.TestData+ , Text.Numeral.Language.LIN.TestData+ , Text.Numeral.Language.LIT.TestData+ , Text.Numeral.Language.LIV.TestData , Text.Numeral.Language.LLD.TestData- , Text.Numeral.Language.MG.TestData+ , Text.Numeral.Language.LMO.TestData+ , Text.Numeral.Language.LTZ.TestData+ , Text.Numeral.Language.MIC.TestData+ , Text.Numeral.Language.MIN.TestData+ , Text.Numeral.Language.MLG.TestData+ , Text.Numeral.Language.MNK.TestData , Text.Numeral.Language.MOH.TestData- , Text.Numeral.Language.NL.TestData- , Text.Numeral.Language.NO.TestData+ , Text.Numeral.Language.NAV.TestData+ , Text.Numeral.Language.NEE.TestData+ , Text.Numeral.Language.NEN.TestData+ , Text.Numeral.Language.NLD.TestData+ , Text.Numeral.Language.NOB.TestData , Text.Numeral.Language.NQM.TestData- , Text.Numeral.Language.OJ.TestData+ , Text.Numeral.Language.OCI.TestData+ , Text.Numeral.Language.OJI.TestData+ , Text.Numeral.Language.ONE.TestData+ , Text.Numeral.Language.ORM.TestData , Text.Numeral.Language.PAA.TestData , Text.Numeral.Language.PDC.TestData- , Text.Numeral.Language.PL.TestData- , Text.Numeral.Language.PT.TestData+ , Text.Numeral.Language.POL.TestData+ , Text.Numeral.Language.POR.TestData , Text.Numeral.Language.RMN_DZA.TestData- , Text.Numeral.Language.RO.TestData- , Text.Numeral.Language.RU.TestData+ , Text.Numeral.Language.RMY_KAL.TestData+ , Text.Numeral.Language.RON.TestData+ , Text.Numeral.Language.RUS.TestData , Text.Numeral.Language.SCO.TestData- , Text.Numeral.Language.SV.TestData+ , Text.Numeral.Language.SME.TestData+ , Text.Numeral.Language.SMN.TestData+ , Text.Numeral.Language.SPA.TestData+ , Text.Numeral.Language.SWE.TestData , Text.Numeral.Language.TAR.TestData- , Text.Numeral.Language.TR.TestData- , Text.Numeral.Language.WO.TestData+ , Text.Numeral.Language.TGS.TestData+ , Text.Numeral.Language.TUR.TestData+ , Text.Numeral.Language.WMW.TestData+ , Text.Numeral.Language.WOL.TestData+ , Text.Numeral.Language.XPQ.TestData , Text.Numeral.Language.YOR.TestData+ , Text.Numeral.Language.ZAI.TestData , Text.Numeral.Language.ZAQ.TestData- , Text.Numeral.Language.ZH.TestData+ , Text.Numeral.Language.ZHO.TestData , Text.Numeral.Language.ZPC.TestData+ , Text.Numeral.Language.ZPL.TestData ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N-- build-depends: base >= 3.0.3.1 && < 4.7- , base-unicode-symbols >= 0.2.2 && < 0.3- , HUnit >= 1.2.2 && < 1.3- , QuickCheck >= 2.4.2 && < 2.7- , test-framework >= 0.3.3 && < 0.9- , test-framework-hunit >= 0.2.6 && < 0.4- , test-framework-quickcheck2 >= 0.2.12 && < 0.4- , text >= 0.11 && < 1.2+ extensions: PackageImports+ , OverloadedStrings+ , ScopedTypeVariables+ build-depends: base >= 4 && < 5+ , HUnit >= 1.3 && < 1.4+ , QuickCheck >= 2.8 && < 2.9+ , test-framework >= 0.8 && < 0.9+ , test-framework-hunit >= 0.3 && < 0.4+ , test-framework-quickcheck2 >= 0.3 && < 0.4+ , text >= 1.2 && < 1.3 , numerals - if impl(ghc >= 7.2.1)- build-depends: integer-gmp >= 0.3 && < 0.6+-------------------------------------------------------------------------------++benchmark bench-numerals+ type: exitcode-stdio-1.0+ main-is: bench.hs+ hs-source-dirs: src-bench++ build-depends: base >= 3.0.3.1 && < 5+ , criterion >= 0.8 && < 1.2+ , numerals+ extensions: PackageImports
+ src-bench/bench.hs view
@@ -0,0 +1,10 @@+module Main where++import "criterion" Criterion.Main+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import qualified "numerals" Text.Numeral.Language.NLD as NLD+++main :: IO ()+main = defaultMain+ [bench "NLD" $ NLD.cardinal defaultInflection `nf` (10 ^ (42 :: Integer) - 1 :: Integer)]
src-test/Text/Numeral/Language/ACH/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-acholi/en/ach/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
src-test/Text/Numeral/Language/ADY/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-adyghe/en/ady/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
− src-test/Text/Numeral/Language/AF/TestData.hs
@@ -1,129 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] af--[@ISO639-2@] afr--[@ISO639-3@] afr--[@Native name@] Afrikaans--[@English name@] Afrikaans--}--module Text.Numeral.Language.AF.TestData (cardinals, ordinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Misc ( dec )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-afrikaans/en/afr/- http://mylanguages.org/afrikaans_numbers.php--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "nul")- , (1, "een")- , (2, "twee")- , (3, "drie")- , (4, "vier")- , (5, "vyf")- , (6, "ses")- , (7, "sewe")- , (8, "ag")- , (9, "nege")- , (10, "tien")- , (11, "elf")- , (12, "twaalf")- , (13, "dertien")- , (14, "veertien")- , (15, "vyftien")- , (16, "sestien")- , (17, "sewentien")- , (18, "agtien")- , (19, "negentien")- , (20, "twintig")- , (21, "een-en-twintig")- , (22, "twee-en-twintig")- , (23, "drie-en-twintig")- , (24, "vier-en-twintig")- , (25, "vyf-en-twintig")- , (26, "ses-en-twintig")- , (27, "sewe-en-twintig")- , (28, "ag-en-twintig")- , (29, "nege-en-twintig")- , (30, "dertig")- , (31, "een-en-dertig")- , (32, "twee-en-dertig")- , (33, "drie-en-dertig")- , (34, "vier-en-dertig")- , (35, "vyf-en-dertig")- , (36, "ses-en-dertig")- , (37, "sewe-en-dertig")- , (38, "ag-en-dertig")- , (39, "nege-en-dertig")- , (40, "veertig")- , (50, "vyftig")- , (60, "sestig")- , (70, "sewentig")- , (80, "tagtig")- , (90, "neëntig")- , (100, "eenhonderd")- , (121, "eenhonderd een-en-twintig")- , (1000, "eenduisend")- , (1219, "eenduisend tweehonderd negentien")- , (dec 6, "een miljoen")- , (dec 9, "een miljard")- , (dec 12, "een biljoen")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "default"- , defaultInflection- , [ (1, "eerste")- , (2, "tweede")- , (3, "derde")- , (4, "vierde")- , (5, "vyfde")- , (6, "sesde")- , (7, "sewende")- , (8, "agtste")- , (9, "negende")- , (10, "tiende")- , (11, "elfde")- , (12, "twaalfde")- , (13, "dertiende")- , (14, "veertiende")- , (15, "vyftiende")- , (16, "sestiende")- , (17, "sewentiende")- , (18, "agtiende")- , (19, "negentiende")- , (20, "twintigste")- ]- )- ]
+ src-test/Text/Numeral/Language/AFR/TestData.hs view
@@ -0,0 +1,122 @@+{-|+[@ISO639-1@] af++[@ISO639-2@] afr++[@ISO639-3@] afr++[@Native name@] Afrikaans++[@English name@] Afrikaans+-}++module Text.Numeral.Language.AFR.TestData (cardinals, ordinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Misc ( dec )+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-afrikaans/en/afr/+ http://mylanguages.org/afrikaans_numbers.php+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nul")+ , (1, "een")+ , (2, "twee")+ , (3, "drie")+ , (4, "vier")+ , (5, "vyf")+ , (6, "ses")+ , (7, "sewe")+ , (8, "ag")+ , (9, "nege")+ , (10, "tien")+ , (11, "elf")+ , (12, "twaalf")+ , (13, "dertien")+ , (14, "veertien")+ , (15, "vyftien")+ , (16, "sestien")+ , (17, "sewentien")+ , (18, "agtien")+ , (19, "negentien")+ , (20, "twintig")+ , (21, "een-en-twintig")+ , (22, "twee-en-twintig")+ , (23, "drie-en-twintig")+ , (24, "vier-en-twintig")+ , (25, "vyf-en-twintig")+ , (26, "ses-en-twintig")+ , (27, "sewe-en-twintig")+ , (28, "ag-en-twintig")+ , (29, "nege-en-twintig")+ , (30, "dertig")+ , (31, "een-en-dertig")+ , (32, "twee-en-dertig")+ , (33, "drie-en-dertig")+ , (34, "vier-en-dertig")+ , (35, "vyf-en-dertig")+ , (36, "ses-en-dertig")+ , (37, "sewe-en-dertig")+ , (38, "ag-en-dertig")+ , (39, "nege-en-dertig")+ , (40, "veertig")+ , (50, "vyftig")+ , (60, "sestig")+ , (70, "sewentig")+ , (80, "tagtig")+ , (90, "neëntig")+ , (100, "eenhonderd")+ , (121, "eenhonderd een-en-twintig")+ , (1000, "eenduisend")+ , (1219, "eenduisend tweehonderd negentien")+ , (dec 6, "een miljoen")+ , (dec 9, "een miljard")+ , (dec 12, "een biljoen")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "eerste")+ , (2, "tweede")+ , (3, "derde")+ , (4, "vierde")+ , (5, "vyfde")+ , (6, "sesde")+ , (7, "sewende")+ , (8, "agtste")+ , (9, "negende")+ , (10, "tiende")+ , (11, "elfde")+ , (12, "twaalfde")+ , (13, "dertiende")+ , (14, "veertiende")+ , (15, "vyftiende")+ , (16, "sestiende")+ , (17, "sewentiende")+ , (18, "agtiende")+ , (19, "negentiende")+ , (20, "twintigste")+ ]+ )+ ]
src-test/Text/Numeral/Language/AMP/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -22,8 +17,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -36,7 +30,7 @@ http://www.sf.airnet.ne.jp/~ts/language/number/alamblak.html -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
src-test/Text/Numeral/Language/ARI/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-arikara/en/ari/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/ARN/TestData.hs view
@@ -0,0 +1,175 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] arn++[@Native name@] Mapudungun++[@English name@] Mapuche+-}+module Text.Numeral.Language.ARN.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-mapudungun/en/arn/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "sero")+ , (1, "kiñe")+ , (2, "epu")+ , (3, "küla")+ , (4, "meli")+ , (5, "kechu")+ , (6, "kayu")+ , (7, "reqle")+ , (8, "pura")+ , (9, "aylla")+ , (10, "mari")+ , (11, "mari kiñe")+ , (12, "mari epu")+ , (13, "mari küla")+ , (14, "mari meli")+ , (15, "mari kechu")+ , (16, "mari kayu")+ , (17, "mari reqle")+ , (18, "mari pura")+ , (19, "mari aylla")+ , (20, "epu mari")+ , (21, "epu mari kiñe")+ , (22, "epu mari epu")+ , (23, "epu mari küla")+ , (24, "epu mari meli")+ , (25, "epu mari kechu")+ , (26, "epu mari kayu")+ , (27, "epu mari reqle")+ , (28, "epu mari pura")+ , (29, "epu mari aylla")+ , (30, "küla mari")+ , (31, "küla mari kiñe")+ , (32, "küla mari epu")+ , (33, "küla mari küla")+ , (34, "küla mari meli")+ , (35, "küla mari kechu")+ , (36, "küla mari kayu")+ , (37, "küla mari reqle")+ , (38, "küla mari pura")+ , (39, "küla mari aylla")+ , (40, "meli mari")+ , (41, "meli mari kiñe")+ , (42, "meli mari epu")+ , (43, "meli mari küla")+ , (44, "meli mari meli")+ , (45, "meli mari kechu")+ , (46, "meli mari kayu")+ , (47, "meli mari reqle")+ , (48, "meli mari pura")+ , (49, "meli mari aylla")+ , (50, "kechu mari")+ , (51, "kechu mari kiñe")+ , (52, "kechu mari epu")+ , (53, "kechu mari küla")+ , (54, "kechu mari meli")+ , (55, "kechu mari kechu")+ , (56, "kechu mari kayu")+ , (57, "kechu mari reqle")+ , (58, "kechu mari pura")+ , (59, "kechu mari aylla")+ , (60, "kayu mari")+ , (61, "kayu mari kiñe")+ , (62, "kayu mari epu")+ , (63, "kayu mari küla")+ , (64, "kayu mari meli")+ , (65, "kayu mari kechu")+ , (66, "kayu mari kayu")+ , (67, "kayu mari reqle")+ , (68, "kayu mari pura")+ , (69, "kayu mari aylla")+ , (70, "reqle mari")+ , (71, "reqle mari kiñe")+ , (72, "reqle mari epu")+ , (73, "reqle mari küla")+ , (74, "reqle mari meli")+ , (75, "reqle mari kechu")+ , (76, "reqle mari kayu")+ , (77, "reqle mari reqle")+ , (78, "reqle mari pura")+ , (79, "reqle mari aylla")+ , (80, "pura mari")+ , (81, "pura mari kiñe")+ , (82, "pura mari epu")+ , (83, "pura mari küla")+ , (84, "pura mari meli")+ , (85, "pura mari kechu")+ , (86, "pura mari kayu")+ , (87, "pura mari reqle")+ , (88, "pura mari pura")+ , (89, "pura mari aylla")+ , (90, "aylla mari")+ , (91, "aylla mari kiñe")+ , (92, "aylla mari epu")+ , (93, "aylla mari küla")+ , (94, "aylla mari meli")+ , (95, "aylla mari kechu")+ , (96, "aylla mari kayu")+ , (97, "aylla mari reqle")+ , (98, "aylla mari pura")+ , (99, "aylla mari aylla")+ , (100, "kiñe pataka")+ , (101, "kiñe pataka kiñe")+ , (102, "kiñe pataka epu")+ , (103, "kiñe pataka küla")+ , (104, "kiñe pataka meli")+ , (105, "kiñe pataka kechu")+ , (106, "kiñe pataka kayu")+ , (107, "kiñe pataka reqle")+ , (108, "kiñe pataka pura")+ , (109, "kiñe pataka aylla")+ , (110, "kiñe pataka mari")+ , (123, "kiñe pataka epu mari küla")+ , (200, "epu pataka")+ , (300, "küla pataka")+ , (321, "küla pataka epu mari kiñe")+ , (400, "meli pataka")+ , (500, "kechu pataka")+ , (600, "kayu pataka")+ , (700, "reqle pataka")+ , (800, "pura pataka")+ , (900, "aylla pataka")+ , (909, "aylla pataka aylla")+ , (990, "aylla pataka aylla mari")+ , (999, "aylla pataka aylla mari aylla")+ , (1000, "kiñe warangka")+ , (1001, "kiñe warangka kiñe")+ , (1008, "kiñe warangka pura")+ , (1234, "kiñe warangka epu pataka küla mari meli")+ , (2000, "epu warangka")+ , (3000, "küla warangka")+ , (4000, "meli warangka")+ , (4321, "meli warangka küla pataka epu mari kiñe")+ , (5000, "kechu warangka")+ , (6000, "kayu warangka")+ , (7000, "reqle warangka")+ , (8000, "pura warangka")+ , (9000, "aylla warangka")+ ]+ )+ ]
src-test/Text/Numeral/Language/AST/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-asturian/en/ast/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
− src-test/Text/Numeral/Language/AZ/TestData.hs
@@ -1,206 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] az--[@ISO639-2@] aze--[@ISO639-3@] aze--[@Native name@] Azərbaycanca--[@English name@] Azerbaijani--}-module Text.Numeral.Language.AZ.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-azerbaijani/en/aze/--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "sıfır")- , (1, "bir")- , (2, "iki")- , (3, "üç")- , (4, "dörd")- , (5, "beş")- , (6, "altı")- , (7, "yeddi")- , (8, "səkkiz")- , (9, "doqquz")- , (10, "on")- , (11, "on bir")- , (12, "on iki")- , (13, "on uç")- , (14, "on dörd")- , (15, "on beş")- , (16, "on altı")- , (17, "on yeddi")- , (18, "on səkkiz")- , (19, "on doqquz")- , (20, "iyirmi")- , (21, "iyirmi bir")- , (22, "iyirmi iki")- , (23, "iyirmi uç")- , (24, "iyirmi dörd")- , (25, "iyirmi beş")- , (26, "iyirmi altı")- , (27, "iyirmi yeddi")- , (28, "iyirmi səkkiz")- , (29, "iyirmi doqquz")- , (30, "otuz")- , (31, "otuz bir")- , (32, "otuz iki")- , (33, "otuz uç")- , (34, "otuz dörd")- , (35, "otuz beş")- , (36, "otuz altı")- , (37, "otuz yeddi")- , (38, "otuz səkkiz")- , (39, "otuz doqquz")- , (40, "qırx")- , (41, "qırx bir")- , (42, "qırx iki")- , (43, "qırx uç")- , (44, "qırx dörd")- , (45, "qırx beş")- , (46, "qırx altı")- , (47, "qırx yeddi")- , (48, "qırx səkkiz")- , (49, "qırx doqquz")- , (50, "əlli")- , (51, "əlli bir")- , (52, "əlli iki")- , (53, "əlli uç")- , (54, "əlli dörd")- , (55, "əlli beş")- , (56, "əlli altı")- , (57, "əlli yeddi")- , (58, "əlli səkkiz")- , (59, "əlli doqquz")- , (60, "altmış")- , (61, "altmış bir")- , (62, "altmış iki")- , (63, "altmış uç")- , (64, "altmış dörd")- , (65, "altmış beş")- , (66, "altmış altı")- , (67, "altmış yeddi")- , (68, "altmış səkkiz")- , (69, "altmış doqquz")- , (70, "yetmiş")- , (71, "yetmiş bir")- , (72, "yetmiş iki")- , (73, "yetmiş uç")- , (74, "yetmiş dörd")- , (75, "yetmiş beş")- , (76, "yetmiş altı")- , (77, "yetmiş yeddi")- , (78, "yetmiş səkkiz")- , (79, "yetmiş doqquz")- , (80, "səksən")- , (81, "səksən bir")- , (82, "səksən iki")- , (83, "səksən uç")- , (84, "səksən dörd")- , (85, "səksən beş")- , (86, "səksən altı")- , (87, "səksən yeddi")- , (88, "səksən səkkiz")- , (89, "səksən doqquz")- , (90, "doxsan")- , (91, "doxsan bir")- , (92, "doxsan iki")- , (93, "doxsan uç")- , (94, "doxsan dörd")- , (95, "doxsan beş")- , (96, "doxsan altı")- , (97, "doxsan yeddi")- , (98, "doxsan səkkiz")- , (99, "doxsan doqquz")- , (100, "yüz")- , (101, "yüz bir")- , (102, "yüz iki")- , (103, "yüz uç")- , (104, "yüz dörd")- , (105, "yüz beş")- , (106, "yüz altı")- , (107, "yüz yeddi")- , (108, "yüz səkkiz")- , (109, "yüz doqquz")- , (110, "yüz on")- , (123, "yüz iyirmi uç")- , (200, "iki yüz")- , (300, "üç yüz")- , (321, "üç yüz iyirmi bir")- , (400, "dörd yüz")- , (500, "beş yüz")- , (600, "altı yüz")- , (700, "yeddi yüz")- , (800, "səkkiz yüz")- , (900, "doqquz yüz")- , (909, "doqquz yüz doqquz")- , (990, "doqquz yüz doxsan")- , (999, "doqquz yüz doxsan doqquz")- , (1000, "bir min")- , (1001, "bir min bir")- , (1008, "bir min səkkiz")- , (1234, "bir min iki yüz otuz dörd")- , (2000, "iki min")- , (3000, "üç min")- , (4000, "dörd min")- , (4321, "dörd min üç yüz iyirmi bir")- , (5000, "beş min")- , (6000, "altı min")- , (7000, "yeddi min")- , (8000, "səkkiz min")- , (9000, "doqquz min")- , (10000, "on min")- , (12345, "oniki min üç yüz qırx beş")- , (20000, "iyirmi min")- , (30000, "otuz min")- , (40000, "qırx min")- , (50000, "əlli min")- , (54321, "əlli dörd min üç yüz iyirmi bir")- , (60000, "altmış min")- , (70000, "yetmiş min")- , (80000, "səksən min")- , (90000, "doxsan min")- , (100000, "yüz min")- , (123456, "yüz iyirmi üç min dörd yüz əlli altı")- , (200000, "iki yüz min")- , (300000, "üç yüz min")- , (400000, "dörd yüz min")- , (500000, "beş yüz min")- , (600000, "altı yüz min")- , (654321, "altı yüz əlli dörd min üç yüz iyirmi bir")- , (700000, "yeddi yüz min")- , (800000, "səkkiz yüz min")- , (900000, "doqquz yüz min")- , (1000000, "bir milyon")- , (1000000000, "bir milyar")- , (1000000000000, "bir trilyon")- ]- )- ]
+ src-test/Text/Numeral/Language/AZE/TestData.hs view
@@ -0,0 +1,200 @@+{-|+[@ISO639-1@] az++[@ISO639-2@] aze++[@ISO639-3@] aze++[@Native name@] Azərbaycanca++[@English name@] Azerbaijani+-}+module Text.Numeral.Language.AZE.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-azerbaijani/en/aze/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "sıfır")+ , (1, "bir")+ , (2, "iki")+ , (3, "üç")+ , (4, "dörd")+ , (5, "beş")+ , (6, "altı")+ , (7, "yeddi")+ , (8, "səkkiz")+ , (9, "doqquz")+ , (10, "on")+ , (11, "on bir")+ , (12, "on iki")+ , (13, "on uç")+ , (14, "on dörd")+ , (15, "on beş")+ , (16, "on altı")+ , (17, "on yeddi")+ , (18, "on səkkiz")+ , (19, "on doqquz")+ , (20, "iyirmi")+ , (21, "iyirmi bir")+ , (22, "iyirmi iki")+ , (23, "iyirmi uç")+ , (24, "iyirmi dörd")+ , (25, "iyirmi beş")+ , (26, "iyirmi altı")+ , (27, "iyirmi yeddi")+ , (28, "iyirmi səkkiz")+ , (29, "iyirmi doqquz")+ , (30, "otuz")+ , (31, "otuz bir")+ , (32, "otuz iki")+ , (33, "otuz uç")+ , (34, "otuz dörd")+ , (35, "otuz beş")+ , (36, "otuz altı")+ , (37, "otuz yeddi")+ , (38, "otuz səkkiz")+ , (39, "otuz doqquz")+ , (40, "qırx")+ , (41, "qırx bir")+ , (42, "qırx iki")+ , (43, "qırx uç")+ , (44, "qırx dörd")+ , (45, "qırx beş")+ , (46, "qırx altı")+ , (47, "qırx yeddi")+ , (48, "qırx səkkiz")+ , (49, "qırx doqquz")+ , (50, "əlli")+ , (51, "əlli bir")+ , (52, "əlli iki")+ , (53, "əlli uç")+ , (54, "əlli dörd")+ , (55, "əlli beş")+ , (56, "əlli altı")+ , (57, "əlli yeddi")+ , (58, "əlli səkkiz")+ , (59, "əlli doqquz")+ , (60, "altmış")+ , (61, "altmış bir")+ , (62, "altmış iki")+ , (63, "altmış uç")+ , (64, "altmış dörd")+ , (65, "altmış beş")+ , (66, "altmış altı")+ , (67, "altmış yeddi")+ , (68, "altmış səkkiz")+ , (69, "altmış doqquz")+ , (70, "yetmiş")+ , (71, "yetmiş bir")+ , (72, "yetmiş iki")+ , (73, "yetmiş uç")+ , (74, "yetmiş dörd")+ , (75, "yetmiş beş")+ , (76, "yetmiş altı")+ , (77, "yetmiş yeddi")+ , (78, "yetmiş səkkiz")+ , (79, "yetmiş doqquz")+ , (80, "səksən")+ , (81, "səksən bir")+ , (82, "səksən iki")+ , (83, "səksən uç")+ , (84, "səksən dörd")+ , (85, "səksən beş")+ , (86, "səksən altı")+ , (87, "səksən yeddi")+ , (88, "səksən səkkiz")+ , (89, "səksən doqquz")+ , (90, "doxsan")+ , (91, "doxsan bir")+ , (92, "doxsan iki")+ , (93, "doxsan uç")+ , (94, "doxsan dörd")+ , (95, "doxsan beş")+ , (96, "doxsan altı")+ , (97, "doxsan yeddi")+ , (98, "doxsan səkkiz")+ , (99, "doxsan doqquz")+ , (100, "yüz")+ , (101, "yüz bir")+ , (102, "yüz iki")+ , (103, "yüz uç")+ , (104, "yüz dörd")+ , (105, "yüz beş")+ , (106, "yüz altı")+ , (107, "yüz yeddi")+ , (108, "yüz səkkiz")+ , (109, "yüz doqquz")+ , (110, "yüz on")+ , (123, "yüz iyirmi uç")+ , (200, "iki yüz")+ , (300, "üç yüz")+ , (321, "üç yüz iyirmi bir")+ , (400, "dörd yüz")+ , (500, "beş yüz")+ , (600, "altı yüz")+ , (700, "yeddi yüz")+ , (800, "səkkiz yüz")+ , (900, "doqquz yüz")+ , (909, "doqquz yüz doqquz")+ , (990, "doqquz yüz doxsan")+ , (999, "doqquz yüz doxsan doqquz")+ , (1000, "bir min")+ , (1001, "bir min bir")+ , (1008, "bir min səkkiz")+ , (1234, "bir min iki yüz otuz dörd")+ , (2000, "iki min")+ , (3000, "üç min")+ , (4000, "dörd min")+ , (4321, "dörd min üç yüz iyirmi bir")+ , (5000, "beş min")+ , (6000, "altı min")+ , (7000, "yeddi min")+ , (8000, "səkkiz min")+ , (9000, "doqquz min")+ , (10000, "on min")+ , (12345, "oniki min üç yüz qırx beş")+ , (20000, "iyirmi min")+ , (30000, "otuz min")+ , (40000, "qırx min")+ , (50000, "əlli min")+ , (54321, "əlli dörd min üç yüz iyirmi bir")+ , (60000, "altmış min")+ , (70000, "yetmiş min")+ , (80000, "səksən min")+ , (90000, "doxsan min")+ , (100000, "yüz min")+ , (123456, "yüz iyirmi üç min dörd yüz əlli altı")+ , (200000, "iki yüz min")+ , (300000, "üç yüz min")+ , (400000, "dörd yüz min")+ , (500000, "beş yüz min")+ , (600000, "altı yüz min")+ , (654321, "altı yüz əlli dörd min üç yüz iyirmi bir")+ , (700000, "yeddi yüz min")+ , (800000, "səkkiz yüz min")+ , (900000, "doqquz yüz min")+ , (1000000, "bir milyon")+ , (1000000000, "bir milyar")+ , (1000000000000, "bir trilyon")+ ]+ )+ ]
− src-test/Text/Numeral/Language/BA/TestData.hs
@@ -1,180 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] ba--[@ISO639-2@] bak--[@ISO639-3@] bak--[@Native name@] Башҡорт теле--[@English name@] Bashkir--}-module Text.Numeral.Language.BA.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-bashkir/en/bak/--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (1, "бер")- , (2, "ике")- , (3, "өс")- , (4, "дүрт")- , (5, "биш")- , (6, "алты")- , (7, "ете")- , (8, "һигеҙ")- , (9, "туғыҙ")- , (10, "ун")- , (11, "ун бер")- , (12, "ун ике")- , (13, "ун өс")- , (14, "ун дүрт")- , (15, "ун биш")- , (16, "ун алты")- , (17, "ун ете")- , (18, "ун һигеҙ")- , (19, "ун туғыҙ")- , (20, "егерме")- , (21, "егерме бер")- , (22, "егерме ике")- , (23, "егерме өс")- , (24, "егерме дүрт")- , (25, "егерме биш")- , (26, "егерме алты")- , (27, "егерме ете")- , (28, "егерме һигеҙ")- , (29, "егерме туғыҙ")- , (30, "утыҙ")- , (31, "утыҙ бер")- , (32, "утыҙ ике")- , (33, "утыҙ өс")- , (34, "утыҙ дүрт")- , (35, "утыҙ биш")- , (36, "утыҙ алты")- , (37, "утыҙ ете")- , (38, "утыҙ һигеҙ")- , (39, "утыҙ туғыҙ")- , (40, "ҡырҡ")- , (41, "ҡырҡ бер")- , (42, "ҡырҡ ике")- , (43, "ҡырҡ өс")- , (44, "ҡырҡ дүрт")- , (45, "ҡырҡ биш")- , (46, "ҡырҡ алты")- , (47, "ҡырҡ ете")- , (48, "ҡырҡ һигеҙ")- , (49, "ҡырҡ туғыҙ")- , (50, "илле")- , (51, "илле бер")- , (52, "илле ике")- , (53, "илле өс")- , (54, "илле дүрт")- , (55, "илле биш")- , (56, "илле алты")- , (57, "илле ете")- , (58, "илле һигеҙ")- , (59, "илле туғыҙ")- , (60, "алтмыш")- , (61, "алтмыш бер")- , (62, "алтмыш ике")- , (63, "алтмыш өс")- , (64, "алтмыш дүрт")- , (65, "алтмыш биш")- , (66, "алтмыш алты")- , (67, "алтмыш ете")- , (68, "алтмыш һигеҙ")- , (69, "алтмыш туғыҙ")- , (70, "етмеш")- , (71, "етмеш бер")- , (72, "етмеш ике")- , (73, "етмеш өс")- , (74, "етмеш дүрт")- , (75, "етмеш биш")- , (76, "етмеш алты")- , (77, "етмеш ете")- , (78, "етмеш һигеҙ")- , (79, "етмеш туғыҙ")- , (80, "һикһән")- , (81, "һикһән бер")- , (82, "һикһән ике")- , (83, "һикһән өс")- , (84, "һикһән дүрт")- , (85, "һикһән биш")- , (86, "һикһән алты")- , (87, "һикһән ете")- , (88, "һикһән һигеҙ")- , (89, "һикһән туғыҙ")- , (90, "туҡһан")- , (91, "туҡһан бер")- , (92, "туҡһан ике")- , (93, "туҡһан өс")- , (94, "туҡһан дүрт")- , (95, "туҡһан биш")- , (96, "туҡһан алты")- , (97, "туҡһан ете")- , (98, "туҡһан һигеҙ")- , (99, "туҡһан туғыҙ")- , (100, "йөҙ")- , (101, "йөҙ бер")- , (102, "йөҙ ике")- , (103, "йөҙ өс")- , (104, "йөҙ дүрт")- , (105, "йөҙ биш")- , (106, "йөҙ алты")- , (107, "йөҙ ете")- , (108, "йөҙ һигеҙ")- , (109, "йөҙ туғыҙ")- , (110, "йөҙ ун")- , (123, "йөҙ егерме өс")- , (200, "ике йөҙ")- , (300, "өс йөҙ")- , (321, "өс йөҙ егерме бер")- , (400, "дүрт йөҙ")- , (500, "биш йөҙ")- , (600, "алты йөҙ")- , (700, "ете йөҙ")- , (800, "һигеҙ йөҙ")- , (900, "туғыҙ йөҙ")- , (909, "туғыҙ йөҙ туғыҙ")- , (990, "туғыҙ йөҙ туҡһан")- , (999, "туғыҙ йөҙ туҡһан туғыҙ")- , (1000, "мең")- , (1001, "мең бер")- , (1008, "мең һигеҙ")- , (1234, "мең ике йөҙ утыҙ дүрт")- , (2000, "ике мең")- , (3000, "өс мең")- , (4000, "дүрт мең")- , (4321, "дүрт мең өс йөҙ егерме бер")- , (5000, "биш мең")- , (6000, "алты мең")- , (7000, "ете мең")- , (8000, "һигеҙ мең")- , (9000, "туғыҙ мең")- ]- )- ]
+ src-test/Text/Numeral/Language/BAK/TestData.hs view
@@ -0,0 +1,174 @@+{-|+[@ISO639-1@] ba++[@ISO639-2@] bak++[@ISO639-3@] bak++[@Native name@] Башҡорт теле++[@English name@] Bashkir+-}+module Text.Numeral.Language.BAK.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-bashkir/en/bak/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "бер")+ , (2, "ике")+ , (3, "өс")+ , (4, "дүрт")+ , (5, "биш")+ , (6, "алты")+ , (7, "ете")+ , (8, "һигеҙ")+ , (9, "туғыҙ")+ , (10, "ун")+ , (11, "ун бер")+ , (12, "ун ике")+ , (13, "ун өс")+ , (14, "ун дүрт")+ , (15, "ун биш")+ , (16, "ун алты")+ , (17, "ун ете")+ , (18, "ун һигеҙ")+ , (19, "ун туғыҙ")+ , (20, "егерме")+ , (21, "егерме бер")+ , (22, "егерме ике")+ , (23, "егерме өс")+ , (24, "егерме дүрт")+ , (25, "егерме биш")+ , (26, "егерме алты")+ , (27, "егерме ете")+ , (28, "егерме һигеҙ")+ , (29, "егерме туғыҙ")+ , (30, "утыҙ")+ , (31, "утыҙ бер")+ , (32, "утыҙ ике")+ , (33, "утыҙ өс")+ , (34, "утыҙ дүрт")+ , (35, "утыҙ биш")+ , (36, "утыҙ алты")+ , (37, "утыҙ ете")+ , (38, "утыҙ һигеҙ")+ , (39, "утыҙ туғыҙ")+ , (40, "ҡырҡ")+ , (41, "ҡырҡ бер")+ , (42, "ҡырҡ ике")+ , (43, "ҡырҡ өс")+ , (44, "ҡырҡ дүрт")+ , (45, "ҡырҡ биш")+ , (46, "ҡырҡ алты")+ , (47, "ҡырҡ ете")+ , (48, "ҡырҡ һигеҙ")+ , (49, "ҡырҡ туғыҙ")+ , (50, "илле")+ , (51, "илле бер")+ , (52, "илле ике")+ , (53, "илле өс")+ , (54, "илле дүрт")+ , (55, "илле биш")+ , (56, "илле алты")+ , (57, "илле ете")+ , (58, "илле һигеҙ")+ , (59, "илле туғыҙ")+ , (60, "алтмыш")+ , (61, "алтмыш бер")+ , (62, "алтмыш ике")+ , (63, "алтмыш өс")+ , (64, "алтмыш дүрт")+ , (65, "алтмыш биш")+ , (66, "алтмыш алты")+ , (67, "алтмыш ете")+ , (68, "алтмыш һигеҙ")+ , (69, "алтмыш туғыҙ")+ , (70, "етмеш")+ , (71, "етмеш бер")+ , (72, "етмеш ике")+ , (73, "етмеш өс")+ , (74, "етмеш дүрт")+ , (75, "етмеш биш")+ , (76, "етмеш алты")+ , (77, "етмеш ете")+ , (78, "етмеш һигеҙ")+ , (79, "етмеш туғыҙ")+ , (80, "һикһән")+ , (81, "һикһән бер")+ , (82, "һикһән ике")+ , (83, "һикһән өс")+ , (84, "һикһән дүрт")+ , (85, "һикһән биш")+ , (86, "һикһән алты")+ , (87, "һикһән ете")+ , (88, "һикһән һигеҙ")+ , (89, "һикһән туғыҙ")+ , (90, "туҡһан")+ , (91, "туҡһан бер")+ , (92, "туҡһан ике")+ , (93, "туҡһан өс")+ , (94, "туҡһан дүрт")+ , (95, "туҡһан биш")+ , (96, "туҡһан алты")+ , (97, "туҡһан ете")+ , (98, "туҡһан һигеҙ")+ , (99, "туҡһан туғыҙ")+ , (100, "йөҙ")+ , (101, "йөҙ бер")+ , (102, "йөҙ ике")+ , (103, "йөҙ өс")+ , (104, "йөҙ дүрт")+ , (105, "йөҙ биш")+ , (106, "йөҙ алты")+ , (107, "йөҙ ете")+ , (108, "йөҙ һигеҙ")+ , (109, "йөҙ туғыҙ")+ , (110, "йөҙ ун")+ , (123, "йөҙ егерме өс")+ , (200, "ике йөҙ")+ , (300, "өс йөҙ")+ , (321, "өс йөҙ егерме бер")+ , (400, "дүрт йөҙ")+ , (500, "биш йөҙ")+ , (600, "алты йөҙ")+ , (700, "ете йөҙ")+ , (800, "һигеҙ йөҙ")+ , (900, "туғыҙ йөҙ")+ , (909, "туғыҙ йөҙ туғыҙ")+ , (990, "туғыҙ йөҙ туҡһан")+ , (999, "туғыҙ йөҙ туҡһан туғыҙ")+ , (1000, "мең")+ , (1001, "мең бер")+ , (1008, "мең һигеҙ")+ , (1234, "мең ике йөҙ утыҙ дүрт")+ , (2000, "ике мең")+ , (3000, "өс мең")+ , (4000, "дүрт мең")+ , (4321, "дүрт мең өс йөҙ егерме бер")+ , (5000, "биш мең")+ , (6000, "алты мең")+ , (7000, "ете мең")+ , (8000, "һигеҙ мең")+ , (9000, "туғыҙ мең")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/BAM/TestData.hs view
@@ -0,0 +1,197 @@+{-|+[@ISO639-1@] bm++[@ISO639-2@] bam++[@ISO639-3@] bam++[@Native name@] -++[@English name@] Bambara+-}+module Text.Numeral.Language.BAM.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-bambara/en/bam/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "kélen")+ , (2, "fila")+ , (3, "sàba")+ , (4, "náani")+ , (5, "dúuru")+ , (6, "wɔɔrɔ")+ , (7, "wólonwula")+ , (8, "séegin")+ , (9, "k̀ɔnɔntɔn")+ , (10, "tán")+ , (11, "tán ní kélen")+ , (12, "tán ní fila")+ , (13, "tán ní sàba")+ , (14, "tán ní náani")+ , (15, "tán ní dúuru")+ , (16, "tán ní wɔɔrɔ")+ , (17, "tán ní wólonwula")+ , (18, "tán ní séegin")+ , (19, "tán ní k̀ɔnɔntɔn")+ , (20, "mùgan")+ , (21, "mùgan ní kélen")+ , (22, "mùgan ní fila")+ , (23, "mùgan ní sàba")+ , (24, "mùgan ní náani")+ , (25, "mùgan ní dúuru")+ , (26, "mùgan ní wɔɔrɔ")+ , (27, "mùgan ní wólonwula")+ , (28, "mùgan ní séegin")+ , (29, "mùgan ní k̀ɔnɔntɔn")+ , (30, "bísàba")+ , (31, "bísàba ní kélen")+ , (32, "bísàba ní fila")+ , (33, "bísàba ní sàba")+ , (34, "bísàba ní náani")+ , (35, "bísàba ní dúuru")+ , (36, "bísàba ní wɔɔrɔ")+ , (37, "bísàba ní wólonwula")+ , (38, "bísàba ní séegin")+ , (39, "bísàba ní k̀ɔnɔntɔn")+ , (40, "bínaani")+ , (41, "bínaani ní kélen")+ , (42, "bínaani ní fila")+ , (43, "bínaani ní sàba")+ , (44, "bínaani ní náani")+ , (45, "bínaani ní dúuru")+ , (46, "bínaani ní wɔɔrɔ")+ , (47, "bínaani ní wólonwula")+ , (48, "bínaani ní séegin")+ , (49, "bínaani ní k̀ɔnɔntɔn")+ , (50, "bídúuru")+ , (51, "bídúuru ní kélen")+ , (52, "bídúuru ní fila")+ , (53, "bídúuru ní sàba")+ , (54, "bídúuru ní náani")+ , (55, "bídúuru ní dúuru")+ , (56, "bídúuru ní wɔɔrɔ")+ , (57, "bídúuru ní wólonwula")+ , (58, "bídúuru ní séegin")+ , (59, "bídúuru ní k̀ɔnɔntɔn")+ , (60, "bíwɔɔrɔ")+ , (61, "bíwɔɔrɔ ní kélen")+ , (62, "bíwɔɔrɔ ní fila")+ , (63, "bíwɔɔrɔ ní sàba")+ , (64, "bíwɔɔrɔ ní náani")+ , (65, "bíwɔɔrɔ ní dúuru")+ , (66, "bíwɔɔrɔ ní wɔɔrɔ")+ , (67, "bíwɔɔrɔ ní wólonwula")+ , (68, "bíwɔɔrɔ ní séegin")+ , (69, "bíwɔɔrɔ ní k̀ɔnɔntɔn")+ , (70, "bíwolonfila")+ , (71, "bíwolonfila ní kélen")+ , (72, "bíwolonfila ní fila")+ , (73, "bíwolonfila ní sàba")+ , (74, "bíwolonfila ní náani")+ , (75, "bíwolonfila ní dúuru")+ , (76, "bíwolonfila ní wɔɔrɔ")+ , (77, "bíwolonfila ní wólonwula")+ , (78, "bíwolonfila ní séegin")+ , (79, "bíwolonfila ní k̀ɔnɔntɔn")+ , (80, "bíséegin")+ , (81, "bíséegin ní kélen")+ , (82, "bíséegin ní fila")+ , (83, "bíséegin ní sàba")+ , (84, "bíséegin ní náani")+ , (85, "bíséegin ní dúuru")+ , (86, "bíséegin ní wɔɔrɔ")+ , (87, "bíséegin ní wólonwula")+ , (88, "bíséegin ní séegin")+ , (89, "bíséegin ní k̀ɔnɔntɔn")+ , (90, "bík̀ɔnɔntɔn")+ , (91, "bík̀ɔnɔntɔn ní kélen")+ , (92, "bík̀ɔnɔntɔn ní fila")+ , (93, "bík̀ɔnɔntɔn ní sàba")+ , (94, "bík̀ɔnɔntɔn ní náani")+ , (95, "bík̀ɔnɔntɔn ní dúuru")+ , (96, "bík̀ɔnɔntɔn ní wɔɔrɔ")+ , (97, "bík̀ɔnɔntɔn ní wólonwula")+ , (98, "bík̀ɔnɔntɔn ní séegin")+ , (99, "bík̀ɔnɔntɔn ní k̀ɔnɔntɔn")+ , (100, "k̀ɛmɛ")+ , (101, "k̀ɛmɛ ní kélen")+ , (102, "k̀ɛmɛ ní fila")+ , (103, "k̀ɛmɛ ní sàba")+ , (104, "k̀ɛmɛ ní náani")+ , (105, "k̀ɛmɛ ní dúuru")+ , (106, "k̀ɛmɛ ní wɔɔrɔ")+ , (107, "k̀ɛmɛ ní wólonwula")+ , (108, "k̀ɛmɛ ní séegin")+ , (109, "k̀ɛmɛ ní k̀ɔnɔntɔn")+ , (110, "k̀ɛmɛ ní tán")+ , (123, "k̀ɛmɛ ní mùgan ní sàba")+ , (200, "k̀ɛmɛ fila")+ , (300, "k̀ɛmɛ sàba")+ , (321, "k̀ɛmɛ sàba ní mùgan ní kélen")+ , (400, "k̀ɛmɛ náani")+ , (500, "k̀ɛmɛ dúuru")+ , (600, "k̀ɛmɛ wɔɔrɔ")+ , (700, "wólonwula k̀ɛmɛ")+ , (800, "séegin k̀ɛmɛ")+ , (900, "k̀ɔnɔntɔn k̀ɛmɛ")+ , (909, "k̀ɔnɔntɔn k̀ɛmɛ ní k̀ɔnɔntɔn")+ , (990, "k̀ɔnɔntɔn k̀ɛmɛ ní bík̀ɔnɔntɔn")+ , (999, "k̀ɔnɔntɔn k̀ɛmɛ ní bík̀ɔnɔntɔn ní k̀ɔnɔntɔn")+ , (1000, "wa kélen")+ , (1001, "wa kélen ní kélen")+ , (1008, "wa kélen ní séegin")+ , (1234, "wa kélen ní k̀ɛmɛ fila ní bísàba ní náani")+ , (2000, "wa fila")+ , (3000, "wa sàba")+ , (4000, "wa náani")+ , (4321, "wa náani ní k̀ɛmɛ sàba ní mùgan ní kélen")+ , (5000, "wa dúuru")+ , (6000, "wa wɔɔrɔ")+ , (7000, "wólonwula wa")+ , (8000, "séegin wa")+ , (9000, "k̀ɔnɔntɔn wa")+ , (10000, "tán wa")+ , (12345, "tán ní wa fila ní k̀ɛmɛ sàba ní bínaani ní dúuru")+ , (20000, "mùgan wa")+ , (30000, "bíwa sàba")+ , (40000, "bínaani wa")+ , (50000, "bíwa dúuru")+ , (54321, "bídúuru ní wa náani ní k̀ɛmɛ sàba ní mùgan ní kélen")+ , (60000, "bíwa wɔɔrɔ")+ , (70000, "bíwa wolonfila")+ , (80000, "bíséegin wa")+ , (90000, "bík̀ɔnɔntɔn wa")+ , (100000, "k̀ɛmɛ wa")+ , (123456, "k̀ɛmɛ ní mùgan ní wa sàba ní k̀ɛmɛ náani ní bídúuru ní wɔɔrɔ")+ , (200000, "k̀ɛmɛ fila wa")+ , (300000, "k̀ɛmɛ sàba wa")+ , (400000, "k̀ɛmɛ náani wa")+ , (500000, "k̀ɛmɛ dúuru wa")+ , (600000, "k̀ɛmɛ wɔɔrɔ wa")+ , (654321, "k̀ɛmɛ wɔɔrɔ ní bídúuru ní wa náani ní k̀ɛmɛ sàba ní mùgan ní kélen")+ , (700000, "wólonwula k̀ɛmɛ wa")+ , (800000, "séegin k̀ɛmɛ wa")+ , (900000, "k̀ɔnɔntɔn k̀ɛmɛ wa")+ , (1000000, "mílyɔn kélen")+ ]+ )+ ]
− src-test/Text/Numeral/Language/BG/TestData.hs
@@ -1,237 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] bg--[@ISO639-2@] bul--[@ISO639-3@] bul--[@Native name@] български език--[@English name@] Bulgarian--}--module Text.Numeral.Language.BG.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral, (+) )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-bulgarian/en/bul/- http://en.wikipedia.org/wiki/Bulgarian_grammar#Numbers- http://bg.wikipedia.org/wiki/Имена_на_числата--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "neuter"- , neuter defaultInflection- , [ (-3, "минус три")- , (0, "нула")- , (1, "едно")- , (2, "две")- , (3, "три")- , (4, "четири")- , (5, "пет")- , (6, "шест")- , (7, "седем")- , (8, "осем")- , (9, "девет")- , (10, "десет")- , (11, "единадесет")- , (12, "дванадесет")- , (13, "тринадесет")- , (14, "четиринадесет")- , (15, "петнадесет")- , (16, "шестнадесет")- , (17, "седемнадесет")- , (18, "осемнадесет")- , (19, "деветнадесет")- , (20, "двадесет")- , (21, "двадесет и едно")- , (22, "двадесет и две")- , (23, "двадесет и три")- , (24, "двадесет и четири")- , (25, "двадесет и пет")- , (26, "двадесет и шест")- , (27, "двадесет и седем")- , (28, "двадесет и осем")- , (29, "двадесет и девет")- , (30, "тридесет")- , (31, "тридесет и едно")- , (32, "тридесет и две")- , (33, "тридесет и три")- , (34, "тридесет и четири")- , (35, "тридесет и пет")- , (36, "тридесет и шест")- , (37, "тридесет и седем")- , (38, "тридесет и осем")- , (39, "тридесет и девет")- , (40, "четиридесет")- , (41, "четиридесет и едно")- , (42, "четиридесет и две")- , (43, "четиридесет и три")- , (44, "четиридесет и четири")- , (45, "четиридесет и пет")- , (46, "четиридесет и шест")- , (47, "четиридесет и седем")- , (48, "четиридесет и осем")- , (49, "четиридесет и девет")- , (50, "петдесет")- , (51, "петдесет и едно")- , (52, "петдесет и две")- , (53, "петдесет и три")- , (54, "петдесет и четири")- , (55, "петдесет и пет")- , (56, "петдесет и шест")- , (57, "петдесет и седем")- , (58, "петдесет и осем")- , (59, "петдесет и девет")- , (60, "шестдесет")- , (61, "шестдесет и едно")- , (62, "шестдесет и две")- , (63, "шестдесет и три")- , (64, "шестдесет и четири")- , (65, "шестдесет и пет")- , (66, "шестдесет и шест")- , (67, "шестдесет и седем")- , (68, "шестдесет и осем")- , (69, "шестдесет и девет")- , (70, "седемдесет")- , (71, "седемдесет и едно")- , (72, "седемдесет и две")- , (73, "седемдесет и три")- , (74, "седемдесет и четири")- , (75, "седемдесет и пет")- , (76, "седемдесет и шест")- , (77, "седемдесет и седем")- , (78, "седемдесет и осем")- , (79, "седемдесет и девет")- , (80, "осемдесет")- , (81, "осемдесет и едно")- , (82, "осемдесет и две")- , (83, "осемдесет и три")- , (84, "осемдесет и четири")- , (85, "осемдесет и пет")- , (86, "осемдесет и шест")- , (87, "осемдесет и седем")- , (88, "осемдесет и осем")- , (89, "осемдесет и девет")- , (90, "деветдесет")- , (91, "деветдесет и едно")- , (92, "деветдесет и две")- , (93, "деветдесет и три")- , (94, "деветдесет и четири")- , (95, "деветдесет и пет")- , (96, "деветдесет и шест")- , (97, "деветдесет и седем")- , (98, "деветдесет и осем")- , (99, "деветдесет и девет")- , (100, "сто")- , (101, "сто и едно")- , (102, "сто и две")- , (110, "сто и десет")- , (115, "сто и петнадесет")- , (120, "сто и двадесет")- , (121, "сто двадесет и едно")- , (130, "сто и тридесет")- , (133, "сто тридесет и три")- , (200, "двеста")- , (202, "двеста и две")- , (216, "двеста и шестнадесет")- , (265, "двеста шестдесет и пет")- , (300, "триста")- , (400, "четиристотин")- , (500, "петстотин")- , (507, "петстотин и седем")- , (600, "шестстотин")- , (700, "седемстотин")- , (800, "осемстотин")- , (900, "деветстотин")- , (1000, "хиляда")- , (1234, "хиляда двеста тридесет и четири")- , (2000, "две хиляди")- , (3000, "три хиляди")- , (5000, "пет хиляди")- , (6000, "шест хиляди")- , (9000, "девет хиляди")- , (16000, "шестнадесет хиляди")- , (21000, "двадесет и едно хиляди")- , (22000, "двадесет и две хиляди")- , (22136, "двадесет и две хиляди сто тридесет и шест")- , (23000, "двадесет и три хиляди")- , (28000, "двадесет и осем хиляди")- , (41000, "четиридесет и едно хиляди")- , (42000, "четиридесет и две хиляди")- , (49000, "четиридесет и девет хиляди")- , (100000, "сто хиляди")- , (200000, "двеста хиляди")- , (255383, "двеста петдесет и пет хиляди триста осемдесет и три")- , (300000, "триста хиляди")- , (300001, "триста хиляди и едно")- , (300020, "триста хиляди и двадесет")- , (300825, "триста хиляди осемстотин двадесет и пет")- , (dec 6, "един милион")- , (1300825, "един милион триста хиляди осемстотин двадесет и пет")- , (1021000, "един милион двадесет и едно хиляди")- , (1001234, "един милион хиляда двеста тридесет и четири")- , (1000216, "един милион двеста и шестнадесет")- , (1000074, "един милион седемдесет и четири")- , (1000004, "един милион и четири")- , (2 ⋅ dec 6, "два милиона")- , (5 ⋅ dec 6, "пет милиона")- , (dec 9, "един милиард")- , (2 ⋅ dec 9, "два милиарда")- , (3 ⋅ dec 12, "три трилиона")- , (dec 15, "един квадрилион")- , (15 ⋅ dec 15 + 41, "петнадесет квадрилиона четиридесет и едно")- , (dec 18, "един квинтилион")- , (dec 21, "един секстилион")- , (dec 24, "един септилион")- , (dec 27, "един октилион")- , (dec 30, "един нонилион")- , (dec 33, "един децилион")- , (dec 36, "един индецилион")- , (dec 39, "един дуодецилион")- , (dec 42, "един тридецилион")- , (dec 45, "един куадродецилион")- , (900 ⋅ dec 45, "деветстотин куадродецилиона")- ]- )- , ( "feminine"- , feminine defaultInflection- , [ (1, "една")- , (2, "две")- , (200, "двеста")- , (202, "двеста и две")- ]- )- , ( "masculine"- , masculine defaultInflection- , [ (1, "един")- , (2, "два")- , (200, "двеста")- , (202, "двеста и два")- ]- )- ]
− src-test/Text/Numeral/Language/BM/TestData.hs
@@ -1,203 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] bm--[@ISO639-2@] bam--[@ISO639-3@] bam--[@Native name@] ---[@English name@] Bambara--}-module Text.Numeral.Language.BM.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-bambara/en/bam/--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (1, "kélen")- , (2, "fila")- , (3, "sàba")- , (4, "náani")- , (5, "dúuru")- , (6, "wɔɔrɔ")- , (7, "wólonwula")- , (8, "séegin")- , (9, "k̀ɔnɔntɔn")- , (10, "tán")- , (11, "tán ní kélen")- , (12, "tán ní fila")- , (13, "tán ní sàba")- , (14, "tán ní náani")- , (15, "tán ní dúuru")- , (16, "tán ní wɔɔrɔ")- , (17, "tán ní wólonwula")- , (18, "tán ní séegin")- , (19, "tán ní k̀ɔnɔntɔn")- , (20, "mùgan")- , (21, "mùgan ní kélen")- , (22, "mùgan ní fila")- , (23, "mùgan ní sàba")- , (24, "mùgan ní náani")- , (25, "mùgan ní dúuru")- , (26, "mùgan ní wɔɔrɔ")- , (27, "mùgan ní wólonwula")- , (28, "mùgan ní séegin")- , (29, "mùgan ní k̀ɔnɔntɔn")- , (30, "bísàba")- , (31, "bísàba ní kélen")- , (32, "bísàba ní fila")- , (33, "bísàba ní sàba")- , (34, "bísàba ní náani")- , (35, "bísàba ní dúuru")- , (36, "bísàba ní wɔɔrɔ")- , (37, "bísàba ní wólonwula")- , (38, "bísàba ní séegin")- , (39, "bísàba ní k̀ɔnɔntɔn")- , (40, "bínaani")- , (41, "bínaani ní kélen")- , (42, "bínaani ní fila")- , (43, "bínaani ní sàba")- , (44, "bínaani ní náani")- , (45, "bínaani ní dúuru")- , (46, "bínaani ní wɔɔrɔ")- , (47, "bínaani ní wólonwula")- , (48, "bínaani ní séegin")- , (49, "bínaani ní k̀ɔnɔntɔn")- , (50, "bídúuru")- , (51, "bídúuru ní kélen")- , (52, "bídúuru ní fila")- , (53, "bídúuru ní sàba")- , (54, "bídúuru ní náani")- , (55, "bídúuru ní dúuru")- , (56, "bídúuru ní wɔɔrɔ")- , (57, "bídúuru ní wólonwula")- , (58, "bídúuru ní séegin")- , (59, "bídúuru ní k̀ɔnɔntɔn")- , (60, "bíwɔɔrɔ")- , (61, "bíwɔɔrɔ ní kélen")- , (62, "bíwɔɔrɔ ní fila")- , (63, "bíwɔɔrɔ ní sàba")- , (64, "bíwɔɔrɔ ní náani")- , (65, "bíwɔɔrɔ ní dúuru")- , (66, "bíwɔɔrɔ ní wɔɔrɔ")- , (67, "bíwɔɔrɔ ní wólonwula")- , (68, "bíwɔɔrɔ ní séegin")- , (69, "bíwɔɔrɔ ní k̀ɔnɔntɔn")- , (70, "bíwolonfila")- , (71, "bíwolonfila ní kélen")- , (72, "bíwolonfila ní fila")- , (73, "bíwolonfila ní sàba")- , (74, "bíwolonfila ní náani")- , (75, "bíwolonfila ní dúuru")- , (76, "bíwolonfila ní wɔɔrɔ")- , (77, "bíwolonfila ní wólonwula")- , (78, "bíwolonfila ní séegin")- , (79, "bíwolonfila ní k̀ɔnɔntɔn")- , (80, "bíséegin")- , (81, "bíséegin ní kélen")- , (82, "bíséegin ní fila")- , (83, "bíséegin ní sàba")- , (84, "bíséegin ní náani")- , (85, "bíséegin ní dúuru")- , (86, "bíséegin ní wɔɔrɔ")- , (87, "bíséegin ní wólonwula")- , (88, "bíséegin ní séegin")- , (89, "bíséegin ní k̀ɔnɔntɔn")- , (90, "bík̀ɔnɔntɔn")- , (91, "bík̀ɔnɔntɔn ní kélen")- , (92, "bík̀ɔnɔntɔn ní fila")- , (93, "bík̀ɔnɔntɔn ní sàba")- , (94, "bík̀ɔnɔntɔn ní náani")- , (95, "bík̀ɔnɔntɔn ní dúuru")- , (96, "bík̀ɔnɔntɔn ní wɔɔrɔ")- , (97, "bík̀ɔnɔntɔn ní wólonwula")- , (98, "bík̀ɔnɔntɔn ní séegin")- , (99, "bík̀ɔnɔntɔn ní k̀ɔnɔntɔn")- , (100, "k̀ɛmɛ")- , (101, "k̀ɛmɛ ní kélen")- , (102, "k̀ɛmɛ ní fila")- , (103, "k̀ɛmɛ ní sàba")- , (104, "k̀ɛmɛ ní náani")- , (105, "k̀ɛmɛ ní dúuru")- , (106, "k̀ɛmɛ ní wɔɔrɔ")- , (107, "k̀ɛmɛ ní wólonwula")- , (108, "k̀ɛmɛ ní séegin")- , (109, "k̀ɛmɛ ní k̀ɔnɔntɔn")- , (110, "k̀ɛmɛ ní tán")- , (123, "k̀ɛmɛ ní mùgan ní sàba")- , (200, "k̀ɛmɛ fila")- , (300, "k̀ɛmɛ sàba")- , (321, "k̀ɛmɛ sàba ní mùgan ní kélen")- , (400, "k̀ɛmɛ náani")- , (500, "k̀ɛmɛ dúuru")- , (600, "k̀ɛmɛ wɔɔrɔ")- , (700, "wólonwula k̀ɛmɛ")- , (800, "séegin k̀ɛmɛ")- , (900, "k̀ɔnɔntɔn k̀ɛmɛ")- , (909, "k̀ɔnɔntɔn k̀ɛmɛ ní k̀ɔnɔntɔn")- , (990, "k̀ɔnɔntɔn k̀ɛmɛ ní bík̀ɔnɔntɔn")- , (999, "k̀ɔnɔntɔn k̀ɛmɛ ní bík̀ɔnɔntɔn ní k̀ɔnɔntɔn")- , (1000, "wa kélen")- , (1001, "wa kélen ní kélen")- , (1008, "wa kélen ní séegin")- , (1234, "wa kélen ní k̀ɛmɛ fila ní bísàba ní náani")- , (2000, "wa fila")- , (3000, "wa sàba")- , (4000, "wa náani")- , (4321, "wa náani ní k̀ɛmɛ sàba ní mùgan ní kélen")- , (5000, "wa dúuru")- , (6000, "wa wɔɔrɔ")- , (7000, "wólonwula wa")- , (8000, "séegin wa")- , (9000, "k̀ɔnɔntɔn wa")- , (10000, "tán wa")- , (12345, "tán ní wa fila ní k̀ɛmɛ sàba ní bínaani ní dúuru")- , (20000, "mùgan wa")- , (30000, "bíwa sàba")- , (40000, "bínaani wa")- , (50000, "bíwa dúuru")- , (54321, "bídúuru ní wa náani ní k̀ɛmɛ sàba ní mùgan ní kélen")- , (60000, "bíwa wɔɔrɔ")- , (70000, "bíwa wolonfila")- , (80000, "bíséegin wa")- , (90000, "bík̀ɔnɔntɔn wa")- , (100000, "k̀ɛmɛ wa")- , (123456, "k̀ɛmɛ ní mùgan ní wa sàba ní k̀ɛmɛ náani ní bídúuru ní wɔɔrɔ")- , (200000, "k̀ɛmɛ fila wa")- , (300000, "k̀ɛmɛ sàba wa")- , (400000, "k̀ɛmɛ náani wa")- , (500000, "k̀ɛmɛ dúuru wa")- , (600000, "k̀ɛmɛ wɔɔrɔ wa")- , (654321, "k̀ɛmɛ wɔɔrɔ ní bídúuru ní wa náani ní k̀ɛmɛ sàba ní mùgan ní kélen")- , (700000, "wólonwula k̀ɛmɛ wa")- , (800000, "séegin k̀ɛmɛ wa")- , (900000, "k̀ɔnɔntɔn k̀ɛmɛ wa")- , (1000000, "mílyɔn kélen")- ]- )- ]
+ src-test/Text/Numeral/Language/BUL/TestData.hs view
@@ -0,0 +1,228 @@+{-|+[@ISO639-1@] bg++[@ISO639-2@] bul++[@ISO639-3@] bul++[@Native name@] български език++[@English name@] Bulgarian+-}++module Text.Numeral.Language.BUL.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-bulgarian/en/bul/+ http://en.wikipedia.org/wiki/Bulgarian_grammar#Numbers+ http://bg.wikipedia.org/wiki/Имена_на_числата+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "neuter"+ , neuter defaultInflection+ , [ (-3, "минус три")+ , (0, "нула")+ , (1, "едно")+ , (2, "две")+ , (3, "три")+ , (4, "четири")+ , (5, "пет")+ , (6, "шест")+ , (7, "седем")+ , (8, "осем")+ , (9, "девет")+ , (10, "десет")+ , (11, "единадесет")+ , (12, "дванадесет")+ , (13, "тринадесет")+ , (14, "четиринадесет")+ , (15, "петнадесет")+ , (16, "шестнадесет")+ , (17, "седемнадесет")+ , (18, "осемнадесет")+ , (19, "деветнадесет")+ , (20, "двадесет")+ , (21, "двадесет и едно")+ , (22, "двадесет и две")+ , (23, "двадесет и три")+ , (24, "двадесет и четири")+ , (25, "двадесет и пет")+ , (26, "двадесет и шест")+ , (27, "двадесет и седем")+ , (28, "двадесет и осем")+ , (29, "двадесет и девет")+ , (30, "тридесет")+ , (31, "тридесет и едно")+ , (32, "тридесет и две")+ , (33, "тридесет и три")+ , (34, "тридесет и четири")+ , (35, "тридесет и пет")+ , (36, "тридесет и шест")+ , (37, "тридесет и седем")+ , (38, "тридесет и осем")+ , (39, "тридесет и девет")+ , (40, "четиридесет")+ , (41, "четиридесет и едно")+ , (42, "четиридесет и две")+ , (43, "четиридесет и три")+ , (44, "четиридесет и четири")+ , (45, "четиридесет и пет")+ , (46, "четиридесет и шест")+ , (47, "четиридесет и седем")+ , (48, "четиридесет и осем")+ , (49, "четиридесет и девет")+ , (50, "петдесет")+ , (51, "петдесет и едно")+ , (52, "петдесет и две")+ , (53, "петдесет и три")+ , (54, "петдесет и четири")+ , (55, "петдесет и пет")+ , (56, "петдесет и шест")+ , (57, "петдесет и седем")+ , (58, "петдесет и осем")+ , (59, "петдесет и девет")+ , (60, "шестдесет")+ , (61, "шестдесет и едно")+ , (62, "шестдесет и две")+ , (63, "шестдесет и три")+ , (64, "шестдесет и четири")+ , (65, "шестдесет и пет")+ , (66, "шестдесет и шест")+ , (67, "шестдесет и седем")+ , (68, "шестдесет и осем")+ , (69, "шестдесет и девет")+ , (70, "седемдесет")+ , (71, "седемдесет и едно")+ , (72, "седемдесет и две")+ , (73, "седемдесет и три")+ , (74, "седемдесет и четири")+ , (75, "седемдесет и пет")+ , (76, "седемдесет и шест")+ , (77, "седемдесет и седем")+ , (78, "седемдесет и осем")+ , (79, "седемдесет и девет")+ , (80, "осемдесет")+ , (81, "осемдесет и едно")+ , (82, "осемдесет и две")+ , (83, "осемдесет и три")+ , (84, "осемдесет и четири")+ , (85, "осемдесет и пет")+ , (86, "осемдесет и шест")+ , (87, "осемдесет и седем")+ , (88, "осемдесет и осем")+ , (89, "осемдесет и девет")+ , (90, "деветдесет")+ , (91, "деветдесет и едно")+ , (92, "деветдесет и две")+ , (93, "деветдесет и три")+ , (94, "деветдесет и четири")+ , (95, "деветдесет и пет")+ , (96, "деветдесет и шест")+ , (97, "деветдесет и седем")+ , (98, "деветдесет и осем")+ , (99, "деветдесет и девет")+ , (100, "сто")+ , (101, "сто и едно")+ , (102, "сто и две")+ , (110, "сто и десет")+ , (115, "сто и петнадесет")+ , (120, "сто и двадесет")+ , (121, "сто двадесет и едно")+ , (130, "сто и тридесет")+ , (133, "сто тридесет и три")+ , (200, "двеста")+ , (202, "двеста и две")+ , (216, "двеста и шестнадесет")+ , (265, "двеста шестдесет и пет")+ , (300, "триста")+ , (400, "четиристотин")+ , (500, "петстотин")+ , (507, "петстотин и седем")+ , (600, "шестстотин")+ , (700, "седемстотин")+ , (800, "осемстотин")+ , (900, "деветстотин")+ , (1000, "хиляда")+ , (1234, "хиляда двеста тридесет и четири")+ , (2000, "две хиляди")+ , (3000, "три хиляди")+ , (5000, "пет хиляди")+ , (6000, "шест хиляди")+ , (9000, "девет хиляди")+ , (16000, "шестнадесет хиляди")+ , (21000, "двадесет и едно хиляди")+ , (22000, "двадесет и две хиляди")+ , (22136, "двадесет и две хиляди сто тридесет и шест")+ , (23000, "двадесет и три хиляди")+ , (28000, "двадесет и осем хиляди")+ , (41000, "четиридесет и едно хиляди")+ , (42000, "четиридесет и две хиляди")+ , (49000, "четиридесет и девет хиляди")+ , (100000, "сто хиляди")+ , (200000, "двеста хиляди")+ , (255383, "двеста петдесет и пет хиляди триста осемдесет и три")+ , (300000, "триста хиляди")+ , (300001, "триста хиляди и едно")+ , (300020, "триста хиляди и двадесет")+ , (300825, "триста хиляди осемстотин двадесет и пет")+ , (dec 6, "един милион")+ , (1300825, "един милион триста хиляди осемстотин двадесет и пет")+ , (1021000, "един милион двадесет и едно хиляди")+ , (1001234, "един милион хиляда двеста тридесет и четири")+ , (1000216, "един милион двеста и шестнадесет")+ , (1000074, "един милион седемдесет и четири")+ , (1000004, "един милион и четири")+ , (2 * dec 6, "два милиона")+ , (5 * dec 6, "пет милиона")+ , (dec 9, "един милиард")+ , (2 * dec 9, "два милиарда")+ , (3 * dec 12, "три трилиона")+ , (dec 15, "един квадрилион")+ , (15 * dec 15 + 41, "петнадесет квадрилиона четиридесет и едно")+ , (dec 18, "един квинтилион")+ , (dec 21, "един секстилион")+ , (dec 24, "един септилион")+ , (dec 27, "един октилион")+ , (dec 30, "един нонилион")+ , (dec 33, "един децилион")+ , (dec 36, "един индецилион")+ , (dec 39, "един дуодецилион")+ , (dec 42, "един тридецилион")+ , (dec 45, "един куадродецилион")+ , (900 * dec 45, "деветстотин куадродецилиона")+ ]+ )+ , ( "feminine"+ , feminine defaultInflection+ , [ (1, "една")+ , (2, "две")+ , (200, "двеста")+ , (202, "двеста и две")+ ]+ )+ , ( "masculine"+ , masculine defaultInflection+ , [ (1, "един")+ , (2, "два")+ , (200, "двеста")+ , (202, "двеста и два")+ ]+ )+ ]
− src-test/Text/Numeral/Language/CA/TestData.hs
@@ -1,217 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] ca--[@ISO639-2@] cat--[@ISO639-3@] cat--[@Native name@] català--[@English name@] Catalan--}-module Text.Numeral.Language.CA.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-catalan/en/cat/--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "zero")- , (1, "un")- , (2, "dos")- , (3, "tres")- , (4, "quatre")- , (5, "cinc")- , (6, "sis")- , (7, "set")- , (8, "vuit")- , (9, "nou")- , (10, "deu")- , (11, "onze")- , (12, "dotze")- , (13, "tretze")- , (14, "catorze")- , (15, "quinze")- , (16, "setze")- , (17, "disset")- , (18, "divuit")- , (19, "dinou")- , (20, "vint")- , (21, "vint-i-u")- , (22, "vint-i-dos")- , (23, "vint-i-tres")- , (24, "vint-i-quatre")- , (25, "vint-i-cinc")- , (26, "vint-i-sis")- , (27, "vint-i-set")- , (28, "vint-i-vuit")- , (29, "vint-i-nou")- , (30, "trenta")- , (31, "trenta-u")- , (32, "trenta-dos")- , (33, "trenta-tres")- , (34, "trenta-quatre")- , (35, "trenta-cinc")- , (36, "trenta-sis")- , (37, "trenta-set")- , (38, "trenta-vuit")- , (39, "trenta-nou")- , (40, "quaranta")- , (41, "quaranta-u")- , (42, "quaranta-dos")- , (43, "quaranta-tres")- , (44, "quaranta-quatre")- , (45, "quaranta-cinc")- , (46, "quaranta-sis")- , (47, "quaranta-set")- , (48, "quaranta-vuit")- , (49, "quaranta-nou")- , (50, "cinquanta")- , (51, "cinquanta-u")- , (52, "cinquanta-dos")- , (53, "cinquanta-tres")- , (54, "cinquanta-quatre")- , (55, "cinquanta-cinc")- , (56, "cinquanta-sis")- , (57, "cinquanta-set")- , (58, "cinquanta-vuit")- , (59, "cinquanta-nou")- , (60, "seixanta")- , (61, "seixanta-u")- , (62, "seixanta-dos")- , (63, "seixanta-tres")- , (64, "seixanta-quatre")- , (65, "seixanta-cinc")- , (66, "seixanta-sis")- , (67, "seixanta-set")- , (68, "seixanta-vuit")- , (69, "seixanta-nou")- , (70, "setanta")- , (71, "setanta-u")- , (72, "setanta-dos")- , (73, "setanta-tres")- , (74, "setanta-quatre")- , (75, "setanta-cinc")- , (76, "setanta-sis")- , (77, "setanta-set")- , (78, "setanta-vuit")- , (79, "setanta-nou")- , (80, "vuitanta")- , (81, "vuitanta-u")- , (82, "vuitanta-dos")- , (83, "vuitanta-tres")- , (84, "vuitanta-quatre")- , (85, "vuitanta-cinc")- , (86, "vuitanta-sis")- , (87, "vuitanta-set")- , (88, "vuitanta-vuit")- , (89, "vuitanta-nou")- , (90, "noranta")- , (91, "noranta-u")- , (92, "noranta-dos")- , (93, "noranta-tres")- , (94, "noranta-quatre")- , (95, "noranta-cinc")- , (96, "noranta-sis")- , (97, "noranta-set")- , (98, "noranta-vuit")- , (99, "noranta-nou")- , (100, "cent")- , (101, "cent un")- , (102, "cent dos")- , (103, "cent tres")- , (104, "cent quatre")- , (105, "cent cinc")- , (106, "cent sis")- , (107, "cent set")- , (108, "cent vuit")- , (109, "cent nou")- , (110, "cent deu")- , (123, "cent vint-i-tres")- , (200, "dos-cents")- , (300, "tres-cents")- , (321, "tres-cents vint-i-u")- , (400, "quatre-cents")- , (500, "cinc-cents")- , (600, "sis-cents")- , (700, "set-cents")- , (800, "vuit-cents")- , (900, "nou-cents")- , (909, "nou-cents nou")- , (990, "nou-cents noranta")- , (999, "nou-cents noranta-nou")- , (1000, "mil")- , (1001, "mil un")- , (1008, "mil vuit")- , (1234, "mil dos-cents trenta-quatre")- , (2000, "dos mil")- , (3000, "tres mil")- , (4000, "quatre mil")- , (4321, "quatre mil tres-cents vint-i-u")- , (5000, "cinc mil")- , (6000, "sis mil")- , (7000, "set mil")- , (8000, "vuit mil")- , (9000, "nou mil")- , (10000, "deu mil")- , (12345, "dotze mil tres-cents quaranta-cinc")- , (20000, "vint mil")- , (30000, "trenta mil")- , (40000, "quaranta mil")- , (50000, "cinquanta mil")- , (54321, "cinquanta-quatre mil tres-cents vint-i-u")- , (60000, "seixanta mil")- , (70000, "setanta mil")- , (80000, "vuitanta mil")- , (90000, "noranta mil")- , (100000, "cent mil")- , (123456, "cent vint-i-tres mil quatre-cents cinquanta-sis")- , (200000, "dos-cents mil")- , (300000, "tres-cents mil")- , (400000, "quatre-cents mil")- , (500000, "cinc-cents mil")- , (600000, "sis-cents mil")- , (654321, "sis-cents cinquanta-quatre mil tres-cents vint-i-u")- , (700000, "set-cents mil")- , (800000, "vuit-cents mil")- , (900000, "nou-cents mil")- , (1000000, "un milió")- , (1234567, "un milió dos-cents trenta-quatre mil cinc-cents seixanta-set")- , (7654321, "set milions sis-cents cinquanta-quatre mil tres-cents vint-i-u")- , (1000000000, "mil milions")- , (1000000000000, "un bilió")- , (1000000000000000000, "un trilió")- , (1000000000000000000000, "un triliard")- , (1000000000000000000000000, "un quadrilió")- , (1000000000000000000000000000, "un quadriliard")- , (1000000000000000000000000000000, "un quintilió")- , (1000000000000000000000000000000000, "un quintiliard")- , (1000000000000000000000000000000000000, "un sextilió")- , (1000000000000000000000000000000000000000, "un sextiliard")- , (1000000000000000000000000000000000000000000, "un septilió")- ]- )- ]
src-test/Text/Numeral/Language/CAF/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -24,8 +19,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -38,7 +32,7 @@ http://www.languagesandnumbers.com/how-to-count-in-carrier/en/caf/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection@@ -147,7 +141,7 @@ ] -- Using Carrier sylllabics-syllabic_cardinals ∷ (Num i) ⇒ TestData i+syllabic_cardinals :: (Num i) => TestData i syllabic_cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/CAR/TestData.hs view
@@ -0,0 +1,152 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] car++[@ISO639-3@] car++[@Native name@] -++[@English name@] Carib+-}+module Text.Numeral.Language.CAR.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-kalina/en/car/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "òwin")+ , (2, "oko")+ , (3, "oruwa")+ , (4, "okupàen")+ , (5, "ainatone")+ , (6, "òwin-tòima")+ , (7, "oko-tòima")+ , (8, "oruwa-tòima")+ , (9, "okupàen-tòima")+ , (10, "ainapatoro")+ , (11, "ainapatoro itùponaka òwin")+ , (12, "ainapatoro itùponaka oko")+ , (13, "ainapatoro itùponaka oruwa")+ , (14, "ainapatoro itùponaka okupàen")+ , (15, "atonèpu")+ , (16, "ainapatoro itùponaka òwin-tòima")+ , (17, "ainapatoro itùponaka oko-tòima")+ , (18, "ainapatoro itùponaka oruwa-tòima")+ , (19, "ainapatoro itùponaka okupàen-tòima")+ , (20, "òwin-karìna")+ , (21, "òwin-karìna itùponaka òwin")+ , (22, "òwin-karìna itùponaka oko")+ , (23, "òwin-karìna itùponaka oruwa")+ , (24, "òwin-karìna itùponaka okupàen")+ , (25, "òwin-karìna itùponaka ainatone")+ , (26, "òwin-karìna itùponaka òwin-tòima")+ , (27, "òwin-karìna itùponaka oko-tòima")+ , (28, "òwin-karìna itùponaka oruwa-tòima")+ , (29, "òwin-karìna itùponaka okupàen-tòima")+ , (30, "òwin-karìna itùponaka ainapatoro")+ , (31, "òwin-karìna itùponaka ainapatoro itùponaka òwin")+ , (32, "òwin-karìna itùponaka ainapatoro itùponaka oko")+ , (33, "òwin-karìna itùponaka ainapatoro itùponaka oruwa")+ , (34, "òwin-karìna itùponaka ainapatoro itùponaka okupàen")+ , (35, "òwin-karìna itùponaka atonèpu")+ , (36, "òwin-karìna itùponaka ainapatoro itùponaka òwin-tòima")+ , (37, "òwin-karìna itùponaka ainapatoro itùponaka oko-tòima")+ , (38, "òwin-karìna itùponaka ainapatoro itùponaka oruwa-tòima")+ , (39, "òwin-karìna itùponaka ainapatoro itùponaka okupàen-tòima")+ , (40, "oko-karìna")+ , (41, "oko-karìna itùponaka òwin")+ , (42, "oko-karìna itùponaka oko")+ , (43, "oko-karìna itùponaka oruwa")+ , (44, "oko-karìna itùponaka okupàen")+ , (45, "oko-karìna itùponaka ainatone")+ , (46, "oko-karìna itùponaka òwin-tòima")+ , (47, "oko-karìna itùponaka oko-tòima")+ , (48, "oko-karìna itùponaka oruwa-tòima")+ , (49, "oko-karìna itùponaka okupàen-tòima")+ , (50, "oko-karìna itùponaka ainapatoro")+ , (51, "oko-karìna itùponaka ainapatoro itùponaka òwin")+ , (52, "oko-karìna itùponaka ainapatoro itùponaka oko")+ , (53, "oko-karìna itùponaka ainapatoro itùponaka oruwa")+ , (54, "oko-karìna itùponaka ainapatoro itùponaka okupàen")+ , (55, "oko-karìna itùponaka atonèpu")+ , (56, "oko-karìna itùponaka ainapatoro itùponaka òwin-tòima")+ , (57, "oko-karìna itùponaka ainapatoro itùponaka oko-tòima")+ , (58, "oko-karìna itùponaka ainapatoro itùponaka oruwa-tòima")+ , (59, "oko-karìna itùponaka ainapatoro itùponaka okupàen-tòima")+ , (60, "oruwa-karìna")+ , (61, "oruwa-karìna itùponaka òwin")+ , (62, "oruwa-karìna itùponaka oko")+ , (63, "oruwa-karìna itùponaka oruwa")+ , (64, "oruwa-karìna itùponaka okupàen")+ , (65, "oruwa-karìna itùponaka ainatone")+ , (66, "oruwa-karìna itùponaka òwin-tòima")+ , (67, "oruwa-karìna itùponaka oko-tòima")+ , (68, "oruwa-karìna itùponaka oruwa-tòima")+ , (69, "oruwa-karìna itùponaka okupàen-tòima")+ , (70, "oruwa-karìna itùponaka ainapatoro")+ , (71, "oruwa-karìna itùponaka ainapatoro itùponaka òwin")+ , (72, "oruwa-karìna itùponaka ainapatoro itùponaka oko")+ , (73, "oruwa-karìna itùponaka ainapatoro itùponaka oruwa")+ , (74, "oruwa-karìna itùponaka ainapatoro itùponaka okupàen")+ , (75, "oruwa-karìna itùponaka atonèpu")+ , (76, "oruwa-karìna itùponaka ainapatoro itùponaka òwin-tòima")+ , (77, "oruwa-karìna itùponaka ainapatoro itùponaka oko-tòima")+ , (78, "oruwa-karìna itùponaka ainapatoro itùponaka oruwa-tòima")+ , (79, "oruwa-karìna itùponaka ainapatoro itùponaka okupàen-tòima")+ , (80, "okupàen-karìna")+ , (81, "okupàen-karìna itùponaka òwin")+ , (82, "okupàen-karìna itùponaka oko")+ , (83, "okupàen-karìna itùponaka oruwa")+ , (84, "okupàen-karìna itùponaka okupàen")+ , (85, "okupàen-karìna itùponaka ainatone")+ , (86, "okupàen-karìna itùponaka òwin-tòima")+ , (87, "okupàen-karìna itùponaka oko-tòima")+ , (88, "okupàen-karìna itùponaka oruwa-tòima")+ , (89, "okupàen-karìna itùponaka okupàen-tòima")+ , (90, "okupàen-karìna itùponaka ainapatoro")+ , (91, "okupàen-karìna itùponaka ainapatoro itùponaka òwin")+ , (92, "okupàen-karìna itùponaka ainapatoro itùponaka oko")+ , (93, "okupàen-karìna itùponaka ainapatoro itùponaka oruwa")+ , (94, "okupàen-karìna itùponaka ainapatoro itùponaka okupàen")+ , (95, "okupàen-karìna itùponaka atonèpu")+ , (96, "okupàen-karìna itùponaka ainapatoro itùponaka òwin-tòima")+ , (97, "okupàen-karìna itùponaka ainapatoro itùponaka oko-tòima")+ , (98, "okupàen-karìna itùponaka ainapatoro itùponaka oruwa-tòima")+ , (99, "okupàen-karìna itùponaka ainapatoro itùponaka okupàen-tòima")+ , (100, "ainatone-karìna")+ , (101, "ainatone-karìna itùponaka òwin")+ , (102, "ainatone-karìna itùponaka oko")+ , (103, "ainatone-karìna itùponaka oruwa")+ , (104, "ainatone-karìna itùponaka okupàen")+ , (105, "ainatone-karìna itùponaka ainatone")+ , (106, "ainatone-karìna itùponaka òwin-tòima")+ , (107, "ainatone-karìna itùponaka oko-tòima")+ , (108, "ainatone-karìna itùponaka oruwa-tòima")+ , (109, "ainatone-karìna itùponaka okupàen-tòima")+ , (110, "ainatone-karìna itùponaka ainapatoro")+ , (123, "òwin-tòima-karìna itùponaka oruwa")+ , (200, "ainapatoro-karìna")+ , (300, "atonèpu-karìna")+ , (321, "atonèpu-itùponaka-òwin-karìna itùponaka òwin")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/CAT/TestData.hs view
@@ -0,0 +1,211 @@+{-|+[@ISO639-1@] ca++[@ISO639-2@] cat++[@ISO639-3@] cat++[@Native name@] català++[@English name@] Catalan+-}+module Text.Numeral.Language.CAT.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-catalan/en/cat/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "zero")+ , (1, "un")+ , (2, "dos")+ , (3, "tres")+ , (4, "quatre")+ , (5, "cinc")+ , (6, "sis")+ , (7, "set")+ , (8, "vuit")+ , (9, "nou")+ , (10, "deu")+ , (11, "onze")+ , (12, "dotze")+ , (13, "tretze")+ , (14, "catorze")+ , (15, "quinze")+ , (16, "setze")+ , (17, "disset")+ , (18, "divuit")+ , (19, "dinou")+ , (20, "vint")+ , (21, "vint-i-u")+ , (22, "vint-i-dos")+ , (23, "vint-i-tres")+ , (24, "vint-i-quatre")+ , (25, "vint-i-cinc")+ , (26, "vint-i-sis")+ , (27, "vint-i-set")+ , (28, "vint-i-vuit")+ , (29, "vint-i-nou")+ , (30, "trenta")+ , (31, "trenta-u")+ , (32, "trenta-dos")+ , (33, "trenta-tres")+ , (34, "trenta-quatre")+ , (35, "trenta-cinc")+ , (36, "trenta-sis")+ , (37, "trenta-set")+ , (38, "trenta-vuit")+ , (39, "trenta-nou")+ , (40, "quaranta")+ , (41, "quaranta-u")+ , (42, "quaranta-dos")+ , (43, "quaranta-tres")+ , (44, "quaranta-quatre")+ , (45, "quaranta-cinc")+ , (46, "quaranta-sis")+ , (47, "quaranta-set")+ , (48, "quaranta-vuit")+ , (49, "quaranta-nou")+ , (50, "cinquanta")+ , (51, "cinquanta-u")+ , (52, "cinquanta-dos")+ , (53, "cinquanta-tres")+ , (54, "cinquanta-quatre")+ , (55, "cinquanta-cinc")+ , (56, "cinquanta-sis")+ , (57, "cinquanta-set")+ , (58, "cinquanta-vuit")+ , (59, "cinquanta-nou")+ , (60, "seixanta")+ , (61, "seixanta-u")+ , (62, "seixanta-dos")+ , (63, "seixanta-tres")+ , (64, "seixanta-quatre")+ , (65, "seixanta-cinc")+ , (66, "seixanta-sis")+ , (67, "seixanta-set")+ , (68, "seixanta-vuit")+ , (69, "seixanta-nou")+ , (70, "setanta")+ , (71, "setanta-u")+ , (72, "setanta-dos")+ , (73, "setanta-tres")+ , (74, "setanta-quatre")+ , (75, "setanta-cinc")+ , (76, "setanta-sis")+ , (77, "setanta-set")+ , (78, "setanta-vuit")+ , (79, "setanta-nou")+ , (80, "vuitanta")+ , (81, "vuitanta-u")+ , (82, "vuitanta-dos")+ , (83, "vuitanta-tres")+ , (84, "vuitanta-quatre")+ , (85, "vuitanta-cinc")+ , (86, "vuitanta-sis")+ , (87, "vuitanta-set")+ , (88, "vuitanta-vuit")+ , (89, "vuitanta-nou")+ , (90, "noranta")+ , (91, "noranta-u")+ , (92, "noranta-dos")+ , (93, "noranta-tres")+ , (94, "noranta-quatre")+ , (95, "noranta-cinc")+ , (96, "noranta-sis")+ , (97, "noranta-set")+ , (98, "noranta-vuit")+ , (99, "noranta-nou")+ , (100, "cent")+ , (101, "cent un")+ , (102, "cent dos")+ , (103, "cent tres")+ , (104, "cent quatre")+ , (105, "cent cinc")+ , (106, "cent sis")+ , (107, "cent set")+ , (108, "cent vuit")+ , (109, "cent nou")+ , (110, "cent deu")+ , (123, "cent vint-i-tres")+ , (200, "dos-cents")+ , (300, "tres-cents")+ , (321, "tres-cents vint-i-u")+ , (400, "quatre-cents")+ , (500, "cinc-cents")+ , (600, "sis-cents")+ , (700, "set-cents")+ , (800, "vuit-cents")+ , (900, "nou-cents")+ , (909, "nou-cents nou")+ , (990, "nou-cents noranta")+ , (999, "nou-cents noranta-nou")+ , (1000, "mil")+ , (1001, "mil un")+ , (1008, "mil vuit")+ , (1234, "mil dos-cents trenta-quatre")+ , (2000, "dos mil")+ , (3000, "tres mil")+ , (4000, "quatre mil")+ , (4321, "quatre mil tres-cents vint-i-u")+ , (5000, "cinc mil")+ , (6000, "sis mil")+ , (7000, "set mil")+ , (8000, "vuit mil")+ , (9000, "nou mil")+ , (10000, "deu mil")+ , (12345, "dotze mil tres-cents quaranta-cinc")+ , (20000, "vint mil")+ , (30000, "trenta mil")+ , (40000, "quaranta mil")+ , (50000, "cinquanta mil")+ , (54321, "cinquanta-quatre mil tres-cents vint-i-u")+ , (60000, "seixanta mil")+ , (70000, "setanta mil")+ , (80000, "vuitanta mil")+ , (90000, "noranta mil")+ , (100000, "cent mil")+ , (123456, "cent vint-i-tres mil quatre-cents cinquanta-sis")+ , (200000, "dos-cents mil")+ , (300000, "tres-cents mil")+ , (400000, "quatre-cents mil")+ , (500000, "cinc-cents mil")+ , (600000, "sis-cents mil")+ , (654321, "sis-cents cinquanta-quatre mil tres-cents vint-i-u")+ , (700000, "set-cents mil")+ , (800000, "vuit-cents mil")+ , (900000, "nou-cents mil")+ , (1000000, "un milió")+ , (1234567, "un milió dos-cents trenta-quatre mil cinc-cents seixanta-set")+ , (7654321, "set milions sis-cents cinquanta-quatre mil tres-cents vint-i-u")+ , (1000000000, "mil milions")+ , (1000000000000, "un bilió")+ , (1000000000000000000, "un trilió")+ , (1000000000000000000000, "un triliard")+ , (1000000000000000000000000, "un quadrilió")+ , (1000000000000000000000000000, "un quadriliard")+ , (1000000000000000000000000000000, "un quintilió")+ , (1000000000000000000000000000000000, "un quintiliard")+ , (1000000000000000000000000000000000000, "un sextilió")+ , (1000000000000000000000000000000000000000, "un sextiliard")+ , (1000000000000000000000000000000000000000000, "un septilió")+ ]+ )+ ]
src-test/Text/Numeral/Language/CBK/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-chavacano/en/cbk/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/CES/TestData.hs view
@@ -0,0 +1,204 @@+{-|+[@ISO639-1@] cs++[@ISO639-2B@] cze++[@ISO639-2T@] ces++[@ISO639-3@] ces++[@Native name@] Čeština++[@English name@] Czech+-}++module Text.Numeral.Language.CES.TestData (cardinals, ordinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nula")+ , (1, "jeden")+ , (2, "dva")+ , (3, "tři")+ , (4, "čtyři")+ , (5, "pět")+ , (6, "šest")+ , (7, "sedm")+ , (8, "osm")+ , (9, "devět")+ , (10, "deset")+ , (11, "jedenáct")+ , (12, "dvanáct")+ , (13, "třináct")+ , (14, "ctrnáct")+ , (15, "patnáct")+ , (16, "šestnáct")+ , (17, "sedmnáct")+ , (18, "osmnáct")+ , (19, "devatenáct")+ , (20, "dvacet")+ , (21, "dvacet jedna")+ , (22, "dvacet dva")+ , (23, "dvacet tři")+ , (24, "dvacet čtyři")+ , (25, "dvacet pět")+ , (26, "dvacet šest")+ , (27, "dvacet sedm")+ , (28, "dvacet osm")+ , (29, "dvacet devět")+ , (30, "třicet")+ , (31, "třicet jedna")+ , (32, "třicet dva")+ , (33, "třicet tři")+ , (34, "třicet čtyři")+ , (35, "třicet pět")+ , (36, "třicet šest")+ , (37, "třicet sedm")+ , (38, "třicet osm")+ , (39, "třicet devět")+ , (40, "čtyřicet")+ , (41, "čtyřicet jedna")+ , (42, "čtyřicet dva")+ , (43, "čtyřicet tři")+ , (44, "čtyřicet čtyři")+ , (45, "čtyřicet pět")+ , (46, "čtyřicet šest")+ , (47, "čtyřicet sedm")+ , (48, "čtyřicet osm")+ , (49, "čtyřicet devět")+ , (50, "padesát")+ , (51, "padesát jedna")+ , (52, "padesát dva")+ , (53, "padesát tři")+ , (54, "padesát čtyři")+ , (55, "padesát pět")+ , (56, "padesát šest")+ , (57, "padesát sedm")+ , (58, "padesát osm")+ , (59, "padesát devět")+ , (60, "šedesát")+ , (61, "šedesát jedna")+ , (62, "šedesát dva")+ , (63, "šedesát tři")+ , (64, "šedesát čtyři")+ , (65, "šedesát pět")+ , (66, "šedesát šest")+ , (67, "šedesát sedm")+ , (68, "šedesát osm")+ , (69, "šedesát devět")+ , (70, "sedmdesát")+ , (71, "sedmdesát jedna")+ , (72, "sedmdesát dva")+ , (73, "sedmdesát tři")+ , (74, "sedmdesát čtyři")+ , (75, "sedmdesát pět")+ , (76, "sedmdesát šest")+ , (77, "sedmdesát sedm")+ , (78, "sedmdesát osm")+ , (79, "sedmdesát devět")+ , (80, "osmdesát")+ , (81, "osmdesát jedna")+ , (82, "osmdesát dva")+ , (83, "osmdesát tři")+ , (84, "osmdesát čtyři")+ , (85, "osmdesát pět")+ , (86, "osmdesát šest")+ , (87, "osmdesát sedm")+ , (88, "osmdesát osm")+ , (89, "osmdesát devět")+ , (90, "devádesát")+ , (91, "devádesát jedna")+ , (92, "devádesát dva")+ , (93, "devádesát tři")+ , (94, "devádesát čtyři")+ , (95, "devádesát pět")+ , (96, "devádesát šest")+ , (97, "devádesát sedm")+ , (98, "devádesát osm")+ , (99, "devádesát devět")+ , (100, "sto")+ , (101, "sto jedna")+ , (102, "sto dva")+ , (110, "sto deset")+ , (120, "sto dvacet")+ , (200, "dvě stě")+ , (201, "dvě stě jedna") -- or is it "dvě stě jeden"?+ , (300, "tři sta")+ , (400, "čtyři sta")+ , (500, "pět set")+ , (600, "šest set")+ , (700, "sedm set")+ , (800, "osm set")+ , (900, "devět set")+ , (1000, "tisíc")+ , (1001, "tisíc jedna") -- or is it "tisíc jeden"?+ , (2000, "dva tisíce")+ , (2007, "dva tisíce sedm")+ , (2008, "dva tisíce osm")+ , (3000, "tři tisíce")+ , (4000, "čtyři tisíce")+ , (5000, "pět tisíc")+ , (6000, "šest tisíc")+ , (7000, "sedm tisíc")+ , (8000, "osm tisíc")+ , (9000, "devět tisíc")+ , (10000, "deset tisíc")+ , (11000, "jedenáct tisíc")+ , (25000, "dvacet pět tisíc")+ , (50000, "padesát tisíc")+ , (dec 5, "sto tisíc")+ , (138000, "sto třicet osm tisíc")+ , (dec 6, "milión")+ , (2 * dec 6, "dva milióny")+ , (5 * dec 6, "pět miliónů")+ , (6 * dec 6, "šest miliónů")+ , (7 * dec 6, "sedm miliónů")+ , (dec 9, "miliarda")+ , (dec 12, "bilión")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "první")+ , (2, "druhý")+ , (3, "třetí")+ , (4, "čtvrtý")+ , (5, "pátý")+ , (6, "šestý")+ , (7, "sedmý")+ , (8, "osmý")+ , (9, "devátý")+ , (10, "desátý")+ , (11, "jedenáctý")+ , (12, "dvanáctý")+ , (13, "třináctý")+ , (14, "čtrnáctý")+ , (15, "patnáctý")+ , (16, "šestnáctý")+ , (17, "sedmnáctý")+ , (18, "osmnáctý")+ , (19, "devatenáctý")+ , (20, "dvacátý")+ ]+ )+ ]
src-test/Text/Numeral/Language/CHN/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -23,15 +17,14 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) -------------------------------------------------------------------------------- -- Test data -------------------------------------------------------------------------------- -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
src-test/Text/Numeral/Language/CHR/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -22,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -37,7 +30,7 @@ http://www.languagesandnumbers.com/how-to-count-in-cherokee/en/chr/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/CKU/TestData.hs view
@@ -0,0 +1,175 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] cku++[@Native name@] Kowassá:ti++[@English name@] Koasati+-}+module Text.Numeral.Language.CKU.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-koasati/en/cku/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "ikson")+ , (1, "chaffaakan")+ , (2, "toklon")+ , (3, "totchiinan")+ , (4, "ostaakan")+ , (5, "chahappaakan")+ , (6, "hannaalin")+ , (7, "ontoklon")+ , (8, "ontotchiinan")+ , (9, "chakkaalin")+ , (10, "pokkoolin")+ , (11, "pokkol awah chaffaakan")+ , (12, "pokkol awah toklon")+ , (13, "pokkol awah totchiinan")+ , (14, "pokkol awah ostaakan")+ , (15, "pokkol awah chahappaakan")+ , (16, "pokkol awah hannaalin")+ , (17, "pokkol awah ontoklon")+ , (18, "pokkol awah ontotchiinan")+ , (19, "pokkol awah chakkaalin")+ , (20, "poltoklon")+ , (21, "poltoklon polo awah chaffaakan")+ , (22, "poltoklon polo awah toklon")+ , (23, "poltoklon polo awah totchiinan")+ , (24, "poltoklon polo awah ostaakan")+ , (25, "poltoklon polo awah chahappaakan")+ , (26, "poltoklon polo awah hannaalin")+ , (27, "poltoklon polo awah ontoklon")+ , (28, "poltoklon polo awah ontotchiinan")+ , (29, "poltoklon polo awah chakkaalin")+ , (30, "poltotchiinan")+ , (31, "poltotchiinan polo awah chaffaakan")+ , (32, "poltotchiinan polo awah toklon")+ , (33, "poltotchiinan polo awah totchiinan")+ , (34, "poltotchiinan polo awah ostaakan")+ , (35, "poltotchiinan polo awah chahappaakan")+ , (36, "poltotchiinan polo awah hannaalin")+ , (37, "poltotchiinan polo awah ontoklon")+ , (38, "poltotchiinan polo awah ontotchiinan")+ , (39, "poltotchiinan polo awah chakkaalin")+ , (40, "polostaakan")+ , (41, "polostaakan polo awah chaffaakan")+ , (42, "polostaakan polo awah toklon")+ , (43, "polostaakan polo awah totchiinan")+ , (44, "polostaakan polo awah ostaakan")+ , (45, "polostaakan polo awah chahappaakan")+ , (46, "polostaakan polo awah hannaalin")+ , (47, "polostaakan polo awah ontoklon")+ , (48, "polostaakan polo awah ontotchiinan")+ , (49, "polostaakan polo awah chakkaalin")+ , (50, "polchahappaakan")+ , (51, "polchahappaakan polo awah chaffaakan")+ , (52, "polchahappaakan polo awah toklon")+ , (53, "polchahappaakan polo awah totchiinan")+ , (54, "polchahappaakan polo awah ostaakan")+ , (55, "polchahappaakan polo awah chahappaakan")+ , (56, "polchahappaakan polo awah hannaalin")+ , (57, "polchahappaakan polo awah ontoklon")+ , (58, "polchahappaakan polo awah ontotchiinan")+ , (59, "polchahappaakan polo awah chakkaalin")+ , (60, "polahannaalin")+ , (61, "polahannaalin polo awah chaffaakan")+ , (62, "polahannaalin polo awah toklon")+ , (63, "polahannaalin polo awah totchiinan")+ , (64, "polahannaalin polo awah ostaakan")+ , (65, "polahannaalin polo awah chahappaakan")+ , (66, "polahannaalin polo awah hannaalin")+ , (67, "polahannaalin polo awah ontoklon")+ , (68, "polahannaalin polo awah ontotchiinan")+ , (69, "polahannaalin polo awah chakkaalin")+ , (70, "polontoklon")+ , (71, "polontoklon polo awah chaffaakan")+ , (72, "polontoklon polo awah toklon")+ , (73, "polontoklon polo awah totchiinan")+ , (74, "polontoklon polo awah ostaakan")+ , (75, "polontoklon polo awah chahappaakan")+ , (76, "polontoklon polo awah hannaalin")+ , (77, "polontoklon polo awah ontoklon")+ , (78, "polontoklon polo awah ontotchiinan")+ , (79, "polontoklon polo awah chakkaalin")+ , (80, "polontotchiinan")+ , (81, "polontotchiinan polo awah chaffaakan")+ , (82, "polontotchiinan polo awah toklon")+ , (83, "polontotchiinan polo awah totchiinan")+ , (84, "polontotchiinan polo awah ostaakan")+ , (85, "polontotchiinan polo awah chahappaakan")+ , (86, "polontotchiinan polo awah hannaalin")+ , (87, "polontotchiinan polo awah ontoklon")+ , (88, "polontotchiinan polo awah ontotchiinan")+ , (89, "polontotchiinan polo awah chakkaalin")+ , (90, "polchakkaalin")+ , (91, "polchakkaalin polo awah chaffaakan")+ , (92, "polchakkaalin polo awah toklon")+ , (93, "polchakkaalin polo awah totchiinan")+ , (94, "polchakkaalin polo awah ostaakan")+ , (95, "polchakkaalin polo awah chahappaakan")+ , (96, "polchakkaalin polo awah hannaalin")+ , (97, "polchakkaalin polo awah ontoklon")+ , (98, "polchakkaalin polo awah ontotchiinan")+ , (99, "polchakkaalin polo awah chakkaalin")+ , (100, "chokpi chaffaakan")+ , (101, "chokpi chaffaakan awah chaffaakan")+ , (102, "chokpi chaffaakan awah toklon")+ , (103, "chokpi chaffaakan awah totchiinan")+ , (104, "chokpi chaffaakan awah ostaakan")+ , (105, "chokpi chaffaakan awah chahappaakan")+ , (106, "chokpi chaffaakan awah hannaalin")+ , (107, "chokpi chaffaakan awah ontoklon")+ , (108, "chokpi chaffaakan awah ontotchiinan")+ , (109, "chokpi chaffaakan awah chakkaalin")+ , (110, "chokpi chaffaakan awah pokkoolin")+ , (123, "chokpi chaffaakan awah poltoklon polo awah totchiinan")+ , (200, "chokpi toklon")+ , (300, "chokpi totchiinan")+ , (321, "chokpi totchiinan awah poltoklon polo awah chaffaakan")+ , (400, "chokpi ostaakan")+ , (500, "chokpi chahappaakan")+ , (600, "chokpi hannaalin")+ , (700, "chokpi ontoklon")+ , (800, "chokpi ontotchiinan")+ , (900, "chokpi chakkaalin")+ , (909, "chokpi chakkaalin awah chakkaalin")+ , (990, "chokpi chakkaalin awah polchakkaalin")+ , (999, "chokpi chakkaalin awah polchakkaalin polo awah chakkaalin")+ , (1000, "chokpachoba chaffaakan")+ , (1001, "chokpachoba chaffaakan awah chaffaakan")+ , (1008, "chokpachoba chaffaakan awah ontotchiinan")+ , (1234, "chokpachoba chaffaakan awah chokpi toklon awah poltotchiinan polo awah ostaakan")+ , (2000, "chokpachoba toklon")+ , (3000, "chokpachoba totchiinan")+ , (4000, "chokpachoba ostaakan")+ , (4321, "chokpachoba ostaakan awah chokpi totchiinan awah poltoklon polo awah chaffaakan")+ , (5000, "chokpachoba chahappaakan")+ , (6000, "chokpachoba hannaalin")+ , (7000, "chokpachoba ontoklon")+ , (8000, "chokpachoba ontotchiinan")+ , (9000, "chokpachoba chakkaalin")+ ]+ )+ ]
src-test/Text/Numeral/Language/CLM/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -22,15 +17,14 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) -------------------------------------------------------------------------------- -- Test data -------------------------------------------------------------------------------- -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
− src-test/Text/Numeral/Language/CO/TestData.hs
@@ -1,225 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] co--[@ISO639-2@] cos--[@ISO639-3@] cos--[@Native name@] corsu--[@English name@] Corsican--}-module Text.Numeral.Language.CO.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-corsican/en/cos/--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "zéru")- , (1, "unu")- , (2, "dui")- , (3, "trè")- , (4, "quattru")- , (5, "cinque")- , (6, "séi")- , (7, "sétte")- , (8, "óttu")- , (9, "nóve")- , (10, "déce")- , (11, "òndeci")- , (12, "dòdeci")- , (13, "trèdeci")- , (14, "quattòrdeci")- , (15, "quindeci")- , (16, "sèdeci")- , (17, "dicessétte")- , (18, "dicióttu")- , (19, "dicennóve")- , (20, "vinti")- , (21, "vintunu")- , (22, "vintidui")- , (23, "vintitrè")- , (24, "vintiquattru")- , (25, "vinticinque")- , (26, "vintiséi")- , (27, "vintisétte")- , (28, "vintóttu")- , (29, "vintinóve")- , (30, "trènta")- , (31, "trèntunu")- , (32, "trèntadui")- , (33, "trèntatrè")- , (34, "trèntaquattru")- , (35, "trèntacinque")- , (36, "trèntaséi")- , (37, "trèntasétte")- , (38, "trèntóttu")- , (39, "trèntanóve")- , (40, "quaranta")- , (41, "quarantunu")- , (42, "quarantadui")- , (43, "quarantatrè")- , (44, "quarantaquattru")- , (45, "quarantacinque")- , (46, "quarantaséi")- , (47, "quarantasétte")- , (48, "quarantóttu")- , (49, "quarantanóve")- , (50, "cinquanta")- , (51, "cinquantunu")- , (52, "cinquantadui")- , (53, "cinquantatrè")- , (54, "cinquantaquattru")- , (55, "cinquantacinque")- , (56, "cinquantaséi")- , (57, "cinquantasétte")- , (58, "cinquantóttu")- , (59, "cinquantanóve")- , (60, "sessanta")- , (61, "sessantunu")- , (62, "sessantadui")- , (63, "sessantatrè")- , (64, "sessantaquattru")- , (65, "sessantacinque")- , (66, "sessantaséi")- , (67, "sessantasétte")- , (68, "sessantóttu")- , (69, "sessantanóve")- , (70, "settanta")- , (71, "settantunu")- , (72, "settantadui")- , (73, "settantatrè")- , (74, "settantaquattru")- , (75, "settantacinque")- , (76, "settantaséi")- , (77, "settantasétte")- , (78, "settantóttu")- , (79, "settantanóve")- , (80, "ottanta")- , (81, "ottantunu")- , (82, "ottantadui")- , (83, "ottantatrè")- , (84, "ottantaquattru")- , (85, "ottantacinque")- , (86, "ottantaséi")- , (87, "ottantasétte")- , (88, "ottantóttu")- , (89, "ottantanóve")- , (90, "novanta")- , (91, "novantunu")- , (92, "novantadui")- , (93, "novantatrè")- , (94, "novantaquattru")- , (95, "novantacinque")- , (96, "novantaséi")- , (97, "novantasétte")- , (98, "novantóttu")- , (99, "novantanóve")- , (100, "cèntu")- , (101, "cèntu è unu")- , (102, "cèntu è dui")- , (103, "cèntu è trè")- , (104, "cèntu è quattru")- , (105, "cèntu è cinque")- , (106, "cèntu è séi")- , (107, "cèntu è sétte")- , (108, "cèntu è óttu")- , (109, "cèntu è nóve")- , (110, "cèntu è déce")- , (123, "cèntuvintitrè")- , (200, "duiecèntu")- , (300, "trecèntu")- , (321, "trecèntu vintunu")- , (400, "quattrucèntu")- , (500, "cinquecèntu")- , (600, "séicèntu")- , (700, "séttecèntu")- , (800, "óttucèntu")- , (900, "nóvecèntu")- , (909, "nóvecèntu è nóve")- , (990, "nóvecèntu novanta")- , (999, "nóvecèntu novantanóve")- , (1000, "mille")- , (1001, "mille è unu")- , (1008, "mille è óttu")- , (1234, "mille è duiecèntu trèntaquattru")- , (2000, "duiemila")- , (3000, "trèmila")- , (4000, "quattrumila")- , (4321, "quattrumila è trecèntu vintunu")- , (5000, "cinquemila")- , (6000, "séimila")- , (7000, "séttemila")- , (8000, "óttumila")- , (9000, "nóvemila")- , (10000, "décemila")- , (12345, "dòdecimila è trecèntu quarantacinque")- , (20000, "vintimila")- , (30000, "trèntamila")- , (40000, "quarantamila")- , (50000, "cinquantamila")- , (54321, "cinquantaquattrumila è trecèntu vintunu")- , (60000, "sessantamila")- , (70000, "settantamila")- , (80000, "ottantamila")- , (90000, "novantamila")- , (100000, "cèntumila")- , (123456, "cèntuvintitrèmila è quattrucèntu cinquantaséi")- , (200000, "duiecèntumila")- , (300000, "trecèntumila")- , (400000, "quattrucèntumila")- , (500000, "cinquecèntumila")- , (600000, "séicèntumila")- , (654321, "séicèntu cinquantaquattrumila è trecèntu vintunu")- , (700000, "séttecèntumila")- , (800000, "óttucèntumila")- , (900000, "nóvecèntumila")- , (1000000, "un miliòne")- , (1000001, "un miliòne è unu")- , (1234567, "un miliòne è duiecèntu trèntaquattrumila è cinquecèntu sessantasétte")- , (2000000, "dui milioni")- , (3000000, "trè milioni")- , (4000000, "quattru milioni")- , (5000000, "cinque milioni")- , (6000000, "séi milioni")- , (7000000, "sétte milioni")- , (7654321, "sétte milioni è séicèntu cinquantaquattrumila è trecèntu vintunu")- , (8000000, "óttu milioni")- , (9000000, "nóve milioni")- , (1000000000, "una miliarda")- , (1000000001, "una miliarda è unu")- , (2000000000, "duie miliarde")- , (3000000000, "trè miliarde")- , (4000000000, "quattru miliarde")- , (5000000000, "cinque miliarde")- , (6000000000, "séi miliarde")- , (7000000000, "sétte miliarde")- , (8000000000, "óttu miliarde")- , (9000000000, "nóve miliarde")- ]- )- ]
src-test/Text/Numeral/Language/COD/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-cocama/en/cod/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
src-test/Text/Numeral/Language/COO/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-comox/en/coo/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/COS/TestData.hs view
@@ -0,0 +1,219 @@+{-|+[@ISO639-1@] co++[@ISO639-2@] cos++[@ISO639-3@] cos++[@Native name@] corsu++[@English name@] Corsican+-}+module Text.Numeral.Language.COS.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-corsican/en/cos/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "zéru")+ , (1, "unu")+ , (2, "dui")+ , (3, "trè")+ , (4, "quattru")+ , (5, "cinque")+ , (6, "séi")+ , (7, "sétte")+ , (8, "óttu")+ , (9, "nóve")+ , (10, "déce")+ , (11, "òndeci")+ , (12, "dòdeci")+ , (13, "trèdeci")+ , (14, "quattòrdeci")+ , (15, "quindeci")+ , (16, "sèdeci")+ , (17, "dicessétte")+ , (18, "dicióttu")+ , (19, "dicennóve")+ , (20, "vinti")+ , (21, "vintunu")+ , (22, "vintidui")+ , (23, "vintitrè")+ , (24, "vintiquattru")+ , (25, "vinticinque")+ , (26, "vintiséi")+ , (27, "vintisétte")+ , (28, "vintóttu")+ , (29, "vintinóve")+ , (30, "trènta")+ , (31, "trèntunu")+ , (32, "trèntadui")+ , (33, "trèntatrè")+ , (34, "trèntaquattru")+ , (35, "trèntacinque")+ , (36, "trèntaséi")+ , (37, "trèntasétte")+ , (38, "trèntóttu")+ , (39, "trèntanóve")+ , (40, "quaranta")+ , (41, "quarantunu")+ , (42, "quarantadui")+ , (43, "quarantatrè")+ , (44, "quarantaquattru")+ , (45, "quarantacinque")+ , (46, "quarantaséi")+ , (47, "quarantasétte")+ , (48, "quarantóttu")+ , (49, "quarantanóve")+ , (50, "cinquanta")+ , (51, "cinquantunu")+ , (52, "cinquantadui")+ , (53, "cinquantatrè")+ , (54, "cinquantaquattru")+ , (55, "cinquantacinque")+ , (56, "cinquantaséi")+ , (57, "cinquantasétte")+ , (58, "cinquantóttu")+ , (59, "cinquantanóve")+ , (60, "sessanta")+ , (61, "sessantunu")+ , (62, "sessantadui")+ , (63, "sessantatrè")+ , (64, "sessantaquattru")+ , (65, "sessantacinque")+ , (66, "sessantaséi")+ , (67, "sessantasétte")+ , (68, "sessantóttu")+ , (69, "sessantanóve")+ , (70, "settanta")+ , (71, "settantunu")+ , (72, "settantadui")+ , (73, "settantatrè")+ , (74, "settantaquattru")+ , (75, "settantacinque")+ , (76, "settantaséi")+ , (77, "settantasétte")+ , (78, "settantóttu")+ , (79, "settantanóve")+ , (80, "ottanta")+ , (81, "ottantunu")+ , (82, "ottantadui")+ , (83, "ottantatrè")+ , (84, "ottantaquattru")+ , (85, "ottantacinque")+ , (86, "ottantaséi")+ , (87, "ottantasétte")+ , (88, "ottantóttu")+ , (89, "ottantanóve")+ , (90, "novanta")+ , (91, "novantunu")+ , (92, "novantadui")+ , (93, "novantatrè")+ , (94, "novantaquattru")+ , (95, "novantacinque")+ , (96, "novantaséi")+ , (97, "novantasétte")+ , (98, "novantóttu")+ , (99, "novantanóve")+ , (100, "cèntu")+ , (101, "cèntu è unu")+ , (102, "cèntu è dui")+ , (103, "cèntu è trè")+ , (104, "cèntu è quattru")+ , (105, "cèntu è cinque")+ , (106, "cèntu è séi")+ , (107, "cèntu è sétte")+ , (108, "cèntu è óttu")+ , (109, "cèntu è nóve")+ , (110, "cèntu è déce")+ , (123, "cèntuvintitrè")+ , (200, "duiecèntu")+ , (300, "trecèntu")+ , (321, "trecèntu vintunu")+ , (400, "quattrucèntu")+ , (500, "cinquecèntu")+ , (600, "séicèntu")+ , (700, "séttecèntu")+ , (800, "óttucèntu")+ , (900, "nóvecèntu")+ , (909, "nóvecèntu è nóve")+ , (990, "nóvecèntu novanta")+ , (999, "nóvecèntu novantanóve")+ , (1000, "mille")+ , (1001, "mille è unu")+ , (1008, "mille è óttu")+ , (1234, "mille è duiecèntu trèntaquattru")+ , (2000, "duiemila")+ , (3000, "trèmila")+ , (4000, "quattrumila")+ , (4321, "quattrumila è trecèntu vintunu")+ , (5000, "cinquemila")+ , (6000, "séimila")+ , (7000, "séttemila")+ , (8000, "óttumila")+ , (9000, "nóvemila")+ , (10000, "décemila")+ , (12345, "dòdecimila è trecèntu quarantacinque")+ , (20000, "vintimila")+ , (30000, "trèntamila")+ , (40000, "quarantamila")+ , (50000, "cinquantamila")+ , (54321, "cinquantaquattrumila è trecèntu vintunu")+ , (60000, "sessantamila")+ , (70000, "settantamila")+ , (80000, "ottantamila")+ , (90000, "novantamila")+ , (100000, "cèntumila")+ , (123456, "cèntuvintitrèmila è quattrucèntu cinquantaséi")+ , (200000, "duiecèntumila")+ , (300000, "trecèntumila")+ , (400000, "quattrucèntumila")+ , (500000, "cinquecèntumila")+ , (600000, "séicèntumila")+ , (654321, "séicèntu cinquantaquattrumila è trecèntu vintunu")+ , (700000, "séttecèntumila")+ , (800000, "óttucèntumila")+ , (900000, "nóvecèntumila")+ , (1000000, "un miliòne")+ , (1000001, "un miliòne è unu")+ , (1234567, "un miliòne è duiecèntu trèntaquattrumila è cinquecèntu sessantasétte")+ , (2000000, "dui milioni")+ , (3000000, "trè milioni")+ , (4000000, "quattru milioni")+ , (5000000, "cinque milioni")+ , (6000000, "séi milioni")+ , (7000000, "sétte milioni")+ , (7654321, "sétte milioni è séicèntu cinquantaquattrumila è trecèntu vintunu")+ , (8000000, "óttu milioni")+ , (9000000, "nóve milioni")+ , (1000000000, "una miliarda")+ , (1000000001, "una miliarda è unu")+ , (2000000000, "duie miliarde")+ , (3000000000, "trè miliarde")+ , (4000000000, "quattru miliarde")+ , (5000000000, "cinque miliarde")+ , (6000000000, "séi miliarde")+ , (7000000000, "sétte miliarde")+ , (8000000000, "óttu miliarde")+ , (9000000000, "nóve miliarde")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/CRG/TestData.hs view
@@ -0,0 +1,138 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] crg++[@Native name@] Michif++[@English name@] Michif+-}+module Text.Numeral.Language.CRG.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-michif/en/crg/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "aeñ")+ , (2, "deu")+ , (3, "trwá")+ , (4, "kátr")+ , (5, "saeñk")+ , (6, "sis")+ , (7, "set")+ , (8, "wit")+ , (9, "naef")+ , (10, "jis")+ , (11, "óñz")+ , (12, "dóz")+ , (13, "trayz")+ , (14, "katorz")+ , (15, "kaeñz")+ , (16, "saeñz")+ , (17, "jis set")+ , (18, "jis wit")+ , (19, "jis naef")+ , (20, "vaeñ")+ , (21, "vaeñ aeñ")+ , (22, "vaeñ deu")+ , (23, "vaeñ trwá")+ , (24, "vaeñ kátr")+ , (25, "vaeñ saeñk")+ , (26, "vaeñ sis")+ , (27, "vaeñ set")+ , (28, "vaeñ wit")+ , (29, "vaeñ naef")+ , (30, "tráñt")+ , (31, "tráñt aeñ")+ , (32, "tráñt deu")+ , (33, "tráñt trwá")+ , (34, "tráñt kátr")+ , (35, "tráñt saeñk")+ , (36, "tráñt sis")+ , (37, "tráñt set")+ , (38, "tráñt wit")+ , (39, "tráñt naef")+ , (40, "karánt")+ , (41, "karánt aeñ")+ , (42, "karánt deu")+ , (43, "karánt trwá")+ , (44, "karánt kátr")+ , (45, "karánt saeñk")+ , (46, "karánt sis")+ , (47, "karánt set")+ , (48, "karánt wit")+ , (49, "karánt naef")+ , (50, "saeñkánt")+ , (51, "saeñkánt aeñ")+ , (52, "saeñkánt deu")+ , (53, "saeñkánt trwá")+ , (54, "saeñkánt kátr")+ , (55, "saeñkánt saeñk")+ , (56, "saeñkánt sis")+ , (57, "saeñkánt set")+ , (58, "saeñkánt wit")+ , (59, "saeñkánt naef")+ , (60, "swesáñt")+ , (61, "swesáñt aeñ")+ , (62, "swesáñt deu")+ , (63, "swesáñt trwá")+ , (64, "swesáñt kátr")+ , (65, "swesáñt saeñk")+ , (66, "swesáñt sis")+ , (67, "swesáñt set")+ , (68, "swesáñt wit")+ , (69, "swesáñt naef")+ , (70, "swesáñty jis")+ , (71, "swesáñty jis aeñ")+ , (72, "swesáñty jis deu")+ , (73, "swesáñty jis trwá")+ , (74, "swesáñty jis kátr")+ , (75, "swesáñty jis saeñk")+ , (76, "swesáñty jis sis")+ , (77, "swesáñty jis set")+ , (78, "swesáñty jis wit")+ , (79, "swesáñty jis naef")+ , (80, "katávaeñ")+ , (81, "katávaeñ aeñ")+ , (82, "katávaeñ deu")+ , (83, "katávaeñ trwá")+ , (84, "katávaeñ kátr")+ , (85, "katávaeñ saeñk")+ , (86, "katávaeñ sis")+ , (87, "katávaeñ set")+ , (88, "katávaeñ wit")+ , (89, "katávaeñ naef")+ , (90, "katrávaen jis")+ , (91, "katrávaen jis aeñ")+ , (92, "katrávaen jis deu")+ , (93, "katrávaen jis trwá")+ , (94, "katrávaen jis kátr")+ , (95, "katrávaen jis saeñk")+ , (96, "katrávaen jis sis")+ , (97, "katrávaen jis set")+ , (98, "katrávaen jis wit")+ , (99, "katrávaen jis naef")+ , (100, "sáñ")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/CRO/TestData.hs view
@@ -0,0 +1,114 @@+{-|+[@ISO639-1@] hr++[@ISO639-2B@] cro++[@ISO639-3@] cro++[@Native name@] Hrvatski++[@English name@] Croatian+-}+++module Text.Numeral.Language.CRO.TestData+ ( cardinals+ ) where++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++cardinals :: (Num i) => TestData i+cardinals =+ [ ("default"+ , defaultInflection+ , [ (0, "nula")+ , (1, "jedan")+ , (2, "dva")+ , (3, "tri")+ , (4, "četiri")+ , (5, "pet")+ , (6, "šest")+ , (7, "sedam")+ , (8, "osam")+ , (9, "devet")+ , (10, "deset")+ , (11, "jedanaest")+ , (12, "dvanaest")+ , (13, "trinaest")+ , (14, "četrnaest")+ , (15, "petnaest")+ , (16, "šesnaest")+ , (17, "sedamnaest")+ , (18, "osamnaest")+ , (19, "devetnaest")+ , (20, "dvadeset")+ , (21, "dvadeset jedan")+ , (22, "dvadeset dva")+ , (23, "dvadeset tri")+ , (24, "dvadeset četiri")+ , (25, "dvadeset pet")+ , (26, "dvadeset šest")+ , (27, "dvadeset sedam")+ , (28, "dvadeset osam")+ , (29, "dvadeset devet")+ , (30, "trideset")+ , (31, "trideset jedan")+ , (32, "trideset dva")+ , (33, "trideset tri")+ , (34, "trideset četiri")+ , (35, "trideset pet")+ , (36, "trideset šest")+ , (37, "trideset sedam")+ , (38, "trideset osam")+ , (39, "trideset devet")+ , (40, "četrdeset")+ , (50, "pedeset")+ , (60, "šesdeset")+ , (62, "šesdeset dva")+ , (70, "sedamdeset")+ , (80, "osamdeset")+ , (90, "devedeset")+ , (93, "devedeset tri")+ , (98, "devedeset osam")+ , (99, "devedeset devet")+ , (100, "sto")+ , (101, "sto jedan")+ , (102, "sto dva")+ , (110, "sto deset")+ , (111, "sto jedanaest")+ , (116, "sto šesnaest")+ , (126, "sto dvadeset šest")+ , (150, "sto pedeset")+ , (156, "sto pedeset šest")+ , (500, "petsto")+ , (634, "šesto trideset četiri")+ , (999, "devetsto devedeset devet")+ , (1000, "tisuću")+ , (1100, "tisuću sto")+ , (1101, "tisuću sto jedan")+ , (1102, "tisuću sto dva")+ , (1110, "tisuću sto deset")+ , (1111, "tisuću sto jedanaest")+ , (1116, "tisuću sto šesnaest")+ , (1126, "tisuću sto dvadeset šest")+ , (1150, "tisuću sto pedeset")+ , (1156, "tisuću sto pedeset šest")+ , (1500, "tisuću petsto")+ , (1634, "tisuću šesto trideset četiri")+ , (17999, "sedamnaest tisuća devetsto devedeset devet")+ , (25358, "dvadeset pet tisuća tristo pedeset osam")+ , (105358, "sto pet tisuća tristo pedeset osam")+ , (246912, "dvjesto četrdeset šest tisuća devetsto dvanaest")+ ]+ )+ ]
− src-test/Text/Numeral/Language/CS/TestData.hs
@@ -1,212 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] cs--[@ISO639-2B@] cze--[@ISO639-2T@] ces--[@ISO639-3@] ces--[@Native name@] Čeština--[@English name@] Czech--}--module Text.Numeral.Language.CS.TestData (cardinals, ordinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "nula")- , (1, "jeden")- , (2, "dva")- , (3, "tři")- , (4, "čtyři")- , (5, "pět")- , (6, "šest")- , (7, "sedm")- , (8, "osm")- , (9, "devět")- , (10, "deset")- , (11, "jedenáct")- , (12, "dvanáct")- , (13, "třináct")- , (14, "ctrnáct")- , (15, "patnáct")- , (16, "šestnáct")- , (17, "sedmnáct")- , (18, "osmnáct")- , (19, "devatenáct")- , (20, "dvacet")- , (21, "dvacet jedna")- , (22, "dvacet dva")- , (23, "dvacet tři")- , (24, "dvacet čtyři")- , (25, "dvacet pět")- , (26, "dvacet šest")- , (27, "dvacet sedm")- , (28, "dvacet osm")- , (29, "dvacet devět")- , (30, "třicet")- , (31, "třicet jedna")- , (32, "třicet dva")- , (33, "třicet tři")- , (34, "třicet čtyři")- , (35, "třicet pět")- , (36, "třicet šest")- , (37, "třicet sedm")- , (38, "třicet osm")- , (39, "třicet devět")- , (40, "čtyřicet")- , (41, "čtyřicet jedna")- , (42, "čtyřicet dva")- , (43, "čtyřicet tři")- , (44, "čtyřicet čtyři")- , (45, "čtyřicet pět")- , (46, "čtyřicet šest")- , (47, "čtyřicet sedm")- , (48, "čtyřicet osm")- , (49, "čtyřicet devět")- , (50, "padesát")- , (51, "padesát jedna")- , (52, "padesát dva")- , (53, "padesát tři")- , (54, "padesát čtyři")- , (55, "padesát pět")- , (56, "padesát šest")- , (57, "padesát sedm")- , (58, "padesát osm")- , (59, "padesát devět")- , (60, "šedesát")- , (61, "šedesát jedna")- , (62, "šedesát dva")- , (63, "šedesát tři")- , (64, "šedesát čtyři")- , (65, "šedesát pět")- , (66, "šedesát šest")- , (67, "šedesát sedm")- , (68, "šedesát osm")- , (69, "šedesát devět")- , (70, "sedmdesát")- , (71, "sedmdesát jedna")- , (72, "sedmdesát dva")- , (73, "sedmdesát tři")- , (74, "sedmdesát čtyři")- , (75, "sedmdesát pět")- , (76, "sedmdesát šest")- , (77, "sedmdesát sedm")- , (78, "sedmdesát osm")- , (79, "sedmdesát devět")- , (80, "osmdesát")- , (81, "osmdesát jedna")- , (82, "osmdesát dva")- , (83, "osmdesát tři")- , (84, "osmdesát čtyři")- , (85, "osmdesát pět")- , (86, "osmdesát šest")- , (87, "osmdesát sedm")- , (88, "osmdesát osm")- , (89, "osmdesát devět")- , (90, "devádesát")- , (91, "devádesát jedna")- , (92, "devádesát dva")- , (93, "devádesát tři")- , (94, "devádesát čtyři")- , (95, "devádesát pět")- , (96, "devádesát šest")- , (97, "devádesát sedm")- , (98, "devádesát osm")- , (99, "devádesát devět")- , (100, "sto")- , (101, "sto jedna")- , (102, "sto dva")- , (110, "sto deset")- , (120, "sto dvacet")- , (200, "dvě stě")- , (201, "dvě stě jedna") -- or is it "dvě stě jeden"?- , (300, "tři sta")- , (400, "čtyři sta")- , (500, "pět set")- , (600, "šest set")- , (700, "sedm set")- , (800, "osm set")- , (900, "devět set")- , (1000, "tisíc")- , (1001, "tisíc jedna") -- or is it "tisíc jeden"?- , (2000, "dva tisíce")- , (2007, "dva tisíce sedm")- , (2008, "dva tisíce osm")- , (3000, "tři tisíce")- , (4000, "čtyři tisíce")- , (5000, "pět tisíc")- , (6000, "šest tisíc")- , (7000, "sedm tisíc")- , (8000, "osm tisíc")- , (9000, "devět tisíc")- , (10000, "deset tisíc")- , (11000, "jedenáct tisíc")- , (25000, "dvacet pět tisíc")- , (50000, "padesát tisíc")- , (dec 5, "sto tisíc")- , (138000, "sto třicet osm tisíc")- , (dec 6, "milión")- , (2 ⋅ dec 6, "dva milióny")- , (5 ⋅ dec 6, "pět miliónů")- , (6 ⋅ dec 6, "šest miliónů")- , (7 ⋅ dec 6, "sedm miliónů")- , (dec 9, "miliarda")- , (dec 12, "bilión")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "default"- , defaultInflection- , [ (1, "první")- , (2, "druhý")- , (3, "třetí")- , (4, "čtvrtý")- , (5, "pátý")- , (6, "šestý")- , (7, "sedmý")- , (8, "osmý")- , (9, "devátý")- , (10, "desátý")- , (11, "jedenáctý")- , (12, "dvanáctý")- , (13, "třináctý")- , (14, "čtrnáctý")- , (15, "patnáctý")- , (16, "šestnáctý")- , (17, "sedmnáctý")- , (18, "osmnáctý")- , (19, "devatenáctý")- , (20, "dvacátý")- ]- )- ]
− src-test/Text/Numeral/Language/CY/TestData.hs
@@ -1,178 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] cy--[@ISO639-2B@] wel--[@ISO639-2T@] cym--[@ISO639-3@] cym--[@Native name@] Cymraeg--[@English name@] Welsh--}--module Text.Numeral.Language.CY.TestData (cardinals, ordinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources:--- http://mylanguages.org/welsh_numbers.php--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "dim")- , (1, "un")- , (2, "dau")- , (3, "tri")- , (4, "pedwar")- , (5, "pump")- , (6, "chwech")- , (7, "saith")- , (8, "wyth")- , (9, "naw")- , (10, "deg")- , (11, "un deg un")- , (12, "un deg dau")- , (13, "un deg tri")- , (14, "un deg pedwar")- , (15, "un deg pump")- , (16, "un deg chwech")- , (17, "un deg saith")- , (18, "un deg wyth")- , (19, "un deg naw")- , (20, "dau deg")- , (21, "dau deg un")- , (22, "dau deg dau")- , (23, "dau deg tri")- , (24, "dau deg pedwar")- , (25, "dau deg pump")- , (26, "dau deg chwech")- , (27, "dau deg saith")- , (28, "dau deg wyth")- , (29, "dau deg naw")- , (30, "tri deg")- , (31, "tri deg un")- , (32, "tri deg dau")- , (33, "tri deg tri")- , (34, "tri deg pedwar")- , (35, "tri deg pump")- , (36, "tri deg chwech")- , (37, "tri deg saith")- , (38, "tri deg wyth")- , (39, "tri deg naw")- , (40, "pedwar deg")- , (41, "pedwar deg un")- , (42, "pedwar deg dau")- , (43, "pedwar deg tri")- , (44, "pedwar deg pedwar")- , (45, "pedwar deg pump")- , (46, "pedwar deg chwech")- , (47, "pedwar deg saith")- , (48, "pedwar deg wyth")- , (49, "pedwar deg naw")- , (50, "pum deg")- , (51, "pum deg un")- , (52, "pum deg dau")- , (53, "pum deg tri")- , (54, "pum deg pedwar")- , (55, "pum deg pump")- , (56, "pum deg chwech")- , (57, "pum deg saith")- , (58, "pum deg wyth")- , (59, "pum deg naw")- , (60, "chwe deg")- , (61, "chwe deg un")- , (62, "chwe deg dau")- , (63, "chwe deg tri")- , (64, "chwe deg pedwar")- , (65, "chwe deg pump")- , (66, "chwe deg chwech")- , (67, "chwe deg saith")- , (68, "chwe deg wyth")- , (69, "chwe deg naw")- , (70, "saith deg")- , (71, "saith deg un")- , (72, "saith deg dau")- , (73, "saith deg tri")- , (74, "saith deg pedwar")- , (75, "saith deg pump")- , (76, "saith deg chwech")- , (77, "saith deg saith")- , (78, "saith deg wyth")- , (79, "saith deg naw")- , (80, "wyth deg")- , (81, "wyth deg un")- , (82, "wyth deg dau")- , (83, "wyth deg tri")- , (84, "wyth deg pedwar")- , (85, "wyth deg pump")- , (86, "wyth deg chwech")- , (87, "wyth deg saith")- , (88, "wyth deg wyth")- , (89, "wyth deg naw")- , (90, "naw deg")- , (91, "naw deg un")- , (92, "naw deg dau")- , (93, "naw deg tri")- , (94, "naw deg pedwar")- , (95, "naw deg pump")- , (96, "naw deg chwech")- , (97, "naw deg saith")- , (98, "naw deg wyth")- , (99, "naw deg naw")- , (100, "cant")- , (1000, "un thousand")- , (dec 6, "miliwn")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "default"- , defaultInflection- , [ (1, "gyntaf")- , (2, "ail")- , (3, "trydydd")- , (4, "pedwerydd")- , (5, "pumed")- , (6, "chweched")- , (7, "seithfed")- , (8, "wythfed")- , (9, "nawfed")- , (10, "degfed")- , (11, "unfed ar ddeg")- , (12, "deuddegfed")- , (13, "drydedd ar ddeg")- , (14, "ddeg")- , (15, "pymthegfed")- , (16, "ar bymtheg")- , (17, "ail ar bymtheg")- , (18, "deunawfed")- , (19, "bedwaredd ganrif ar bymtheg")- , (20, "ugeinfed")- ]- )- ]
+ src-test/Text/Numeral/Language/CYM/TestData.hs view
@@ -0,0 +1,171 @@+{-|+[@ISO639-1@] cy++[@ISO639-2B@] wel++[@ISO639-2T@] cym++[@ISO639-3@] cym++[@Native name@] Cymraeg++[@English name@] Welsh+-}++module Text.Numeral.Language.CYM.TestData (cardinals, ordinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources:+-- http://mylanguages.org/welsh_numbers.php++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "dim")+ , (1, "un")+ , (2, "dau")+ , (3, "tri")+ , (4, "pedwar")+ , (5, "pump")+ , (6, "chwech")+ , (7, "saith")+ , (8, "wyth")+ , (9, "naw")+ , (10, "deg")+ , (11, "un deg un")+ , (12, "un deg dau")+ , (13, "un deg tri")+ , (14, "un deg pedwar")+ , (15, "un deg pump")+ , (16, "un deg chwech")+ , (17, "un deg saith")+ , (18, "un deg wyth")+ , (19, "un deg naw")+ , (20, "dau deg")+ , (21, "dau deg un")+ , (22, "dau deg dau")+ , (23, "dau deg tri")+ , (24, "dau deg pedwar")+ , (25, "dau deg pump")+ , (26, "dau deg chwech")+ , (27, "dau deg saith")+ , (28, "dau deg wyth")+ , (29, "dau deg naw")+ , (30, "tri deg")+ , (31, "tri deg un")+ , (32, "tri deg dau")+ , (33, "tri deg tri")+ , (34, "tri deg pedwar")+ , (35, "tri deg pump")+ , (36, "tri deg chwech")+ , (37, "tri deg saith")+ , (38, "tri deg wyth")+ , (39, "tri deg naw")+ , (40, "pedwar deg")+ , (41, "pedwar deg un")+ , (42, "pedwar deg dau")+ , (43, "pedwar deg tri")+ , (44, "pedwar deg pedwar")+ , (45, "pedwar deg pump")+ , (46, "pedwar deg chwech")+ , (47, "pedwar deg saith")+ , (48, "pedwar deg wyth")+ , (49, "pedwar deg naw")+ , (50, "pum deg")+ , (51, "pum deg un")+ , (52, "pum deg dau")+ , (53, "pum deg tri")+ , (54, "pum deg pedwar")+ , (55, "pum deg pump")+ , (56, "pum deg chwech")+ , (57, "pum deg saith")+ , (58, "pum deg wyth")+ , (59, "pum deg naw")+ , (60, "chwe deg")+ , (61, "chwe deg un")+ , (62, "chwe deg dau")+ , (63, "chwe deg tri")+ , (64, "chwe deg pedwar")+ , (65, "chwe deg pump")+ , (66, "chwe deg chwech")+ , (67, "chwe deg saith")+ , (68, "chwe deg wyth")+ , (69, "chwe deg naw")+ , (70, "saith deg")+ , (71, "saith deg un")+ , (72, "saith deg dau")+ , (73, "saith deg tri")+ , (74, "saith deg pedwar")+ , (75, "saith deg pump")+ , (76, "saith deg chwech")+ , (77, "saith deg saith")+ , (78, "saith deg wyth")+ , (79, "saith deg naw")+ , (80, "wyth deg")+ , (81, "wyth deg un")+ , (82, "wyth deg dau")+ , (83, "wyth deg tri")+ , (84, "wyth deg pedwar")+ , (85, "wyth deg pump")+ , (86, "wyth deg chwech")+ , (87, "wyth deg saith")+ , (88, "wyth deg wyth")+ , (89, "wyth deg naw")+ , (90, "naw deg")+ , (91, "naw deg un")+ , (92, "naw deg dau")+ , (93, "naw deg tri")+ , (94, "naw deg pedwar")+ , (95, "naw deg pump")+ , (96, "naw deg chwech")+ , (97, "naw deg saith")+ , (98, "naw deg wyth")+ , (99, "naw deg naw")+ , (100, "cant")+ , (1000, "un thousand")+ , (dec 6, "miliwn")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "gyntaf")+ , (2, "ail")+ , (3, "trydydd")+ , (4, "pedwerydd")+ , (5, "pumed")+ , (6, "chweched")+ , (7, "seithfed")+ , (8, "wythfed")+ , (9, "nawfed")+ , (10, "degfed")+ , (11, "unfed ar ddeg")+ , (12, "deuddegfed")+ , (13, "drydedd ar ddeg")+ , (14, "ddeg")+ , (15, "pymthegfed")+ , (16, "ar bymtheg")+ , (17, "ail ar bymtheg")+ , (18, "deunawfed")+ , (19, "bedwaredd ganrif ar bymtheg")+ , (20, "ugeinfed")+ ]+ )+ ]
− src-test/Text/Numeral/Language/DE/TestData.hs
@@ -1,475 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] de--[@ISO639-2B@] ger--[@ISO639-2T@] deu--[@ISO639-3@] deu--[@Native name@] Deutsch--[@English name@] German--}--module Text.Numeral.Language.DE.TestData (cardinals, ordinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://de.wikipedia.org/wiki/Zahlennamen- http://german.about.com/library/blzahlen.htm--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "null")- , (1, "eins")- , (2, "zwei")- , (3, "drei")- , (4, "vier")- , (5, "fünf")- , (6, "sechs")- , (7, "sieben")- , (8, "acht")- , (9, "neun")- , (10, "zehn")- , (11, "elf")- , (12, "zwölf")- , (13, "dreizehn")- , (14, "vierzehn")- , (15, "fünfzehn")- , (16, "sechzehn")- , (17, "siebzehn")- , (18, "achtzehn")- , (19, "neunzehn")- , (20, "zwanzig")- , (21, "einundzwanzig")- , (22, "zweiundzwanzig")- , (23, "dreiundzwanzig")- , (24, "vierundzwanzig")- , (25, "fünfundzwanzig")- , (26, "sechsundzwanzig")- , (27, "siebenundzwanzig")- , (28, "achtundzwanzig")- , (29, "neunundzwanzig")- , (30, "dreißig")- , (31, "einunddreißig")- , (32, "zweiunddreißig")- , (33, "dreiunddreißig")- , (34, "vierunddreißig")- , (35, "fünfunddreißig")- , (36, "sechsunddreißig")- , (37, "siebenunddreißig")- , (38, "achtunddreißig")- , (39, "neununddreißig")- , (40, "vierzig")- , (41, "einundvierzig")- , (42, "zweiundvierzig")- , (43, "dreiundvierzig")- , (44, "vierundvierzig")- , (45, "fünfundvierzig")- , (46, "sechsundvierzig")- , (47, "siebenundvierzig")- , (48, "achtundvierzig")- , (49, "neunundvierzig")- , (50, "fünfzig")- , (51, "einundfünfzig")- , (52, "zweiundfünfzig")- , (53, "dreiundfünfzig")- , (54, "vierundfünfzig")- , (55, "fünfundfünfzig")- , (56, "sechsundfünfzig")- , (57, "siebenundfünfzig")- , (58, "achtundfünfzig")- , (59, "neunundfünfzig")- , (60, "sechzig")- , (61, "einundsechzig")- , (62, "zweiundsechzig")- , (63, "dreiundsechzig")- , (64, "vierundsechzig")- , (65, "fünfundsechzig")- , (66, "sechsundsechzig")- , (67, "siebenundsechzig")- , (68, "achtundsechzig")- , (69, "neunundsechzig")- , (70, "siebzig")- , (71, "einundsiebzig")- , (72, "zweiundsiebzig")- , (73, "dreiundsiebzig")- , (74, "vierundsiebzig")- , (75, "fünfundsiebzig")- , (76, "sechsundsiebzig")- , (77, "siebenundsiebzig")- , (78, "achtundsiebzig")- , (79, "neunundsiebzig")- , (80, "achtzig")- , (81, "einundachtzig")- , (82, "zweiundachtzig")- , (83, "dreiundachtzig")- , (84, "vierundachtzig")- , (85, "fünfundachtzig")- , (86, "sechsundachtzig")- , (87, "siebenundachtzig")- , (88, "achtundachtzig")- , (89, "neunundachtzig")- , (90, "neunzig")- , (91, "einundneunzig")- , (92, "zweiundneunzig")- , (93, "dreiundneunzig")- , (94, "vierundneunzig")- , (95, "fünfundneunzig")- , (96, "sechsundneunzig")- , (97, "siebenundneunzig")- , (98, "achtundneunzig")- , (99, "neunundneunzig")- , (100, "hundert")- , (101, "hunderteins")- , (102, "hundertzwei")- , (103, "hundertdrei")- , (153, "hundertdreiundfünfzig")- , (200, "zweihundert")- , (201, "zweihunderteins")- , (202, "zweihundertzwei")- , (203, "zweihundertdrei")- , (204, "zweihundertvier")- , (205, "zweihundertfünf")- , (206, "zweihundertsechs")- , (207, "zweihundertsieben")- , (208, "zweihundertacht")- , (209, "zweihundertneun")- , (210, "zweihundertzehn")- , (211, "zweihundertelf")- , (212, "zweihundertzwölf")- , (213, "zweihundertdreizehn")- , (214, "zweihundertvierzehn")- , (215, "zweihundertfünfzehn")- , (216, "zweihundertsechzehn")- , (217, "zweihundertsiebzehn")- , (218, "zweihundertachtzehn")- , (219, "zweihundertneunzehn")- , (220, "zweihundertzwanzig")- , (221, "zweihunderteinundzwanzig")- , (222, "zweihundertzweiundzwanzig")- , (223, "zweihundertdreiundzwanzig")- , (224, "zweihundertvierundzwanzig")- , (225, "zweihundertfünfundzwanzig")- , (226, "zweihundertsechsundzwanzig")- , (227, "zweihundertsiebenundzwanzig")- , (228, "zweihundertachtundzwanzig")- , (229, "zweihundertneunundzwanzig")- , (230, "zweihundertdreißig")- , (300, "dreihundert")- , (320, "dreihundertzwanzig")- , (400, "vierhundert")- , (421, "vierhunderteinundzwanzig")- , (500, "fünfhundert")- , (522, "fünfhundertzweiundzwanzig")- , (600, "sechshundert")- , (623, "sechshundertdreiundzwanzig")- , (700, "siebenhundert")- , (724, "siebenhundertvierundzwanzig")- , (800, "achthundert")- , (825, "achthundertfünfundzwanzig")- , (900, "neunhundert")- , (901, "neunhunderteins")- , (926, "neunhundertsechsundzwanzig")- , (998, "neunhundertachtundneunzig")- , (999, "neunhundertneunundneunzig")- , (1000, "tausend")- , (1001, "tausendeins")- , (1002, "tausendzwei")- , (1030, "tausenddreißig")- , (1031, "tausendeinunddreißig")- , (1032, "tausendzweiunddreißig")- , (1033, "tausenddreiunddreißig")- , (1034, "tausendvierunddreißig")- , (1035, "tausendfünfunddreißig")- , (1036, "tausendsechsunddreißig")- , (1037, "tausendsiebenunddreißig")- , (1038, "tausendachtunddreißig")- , (1039, "tausendneununddreißig")- , (1040, "tausendvierzig")- , (1041, "tausendeinundvierzig")- , (1042, "tausendzweiundvierzig")- , (1043, "tausenddreiundvierzig")- , (1044, "tausendvierundvierzig")- , (1045, "tausendfünfundvierzig")- , (1046, "tausendsechsundvierzig")- , (1047, "tausendsiebenundvierzig")- , (1048, "tausendachtundvierzig")- , (1049, "tausendneunundvierzig")- , (1050, "tausendfünfzig")- , (1051, "tausendeinundfünfzig")- , (1052, "tausendzweiundfünfzig")- , (1053, "tausenddreiundfünfzig")- , (1054, "tausendvierundfünfzig")- , (1055, "tausendfünfundfünfzig")- , (1056, "tausendsechsundfünfzig")- , (1057, "tausendsiebenundfünfzig")- , (1058, "tausendachtundfünfzig")- , (1059, "tausendneunundfünfzig")- , (1060, "tausendsechzig")- , (1061, "tausendeinundsechzig")- , (1062, "tausendzweiundsechzig")- , (1063, "tausenddreiundsechzig")- , (1064, "tausendvierundsechzig")- , (1065, "tausendfünfundsechzig")- , (1066, "tausendsechsundsechzig")- , (1067, "tausendsiebenundsechzig")- , (1068, "tausendachtundsechzig")- , (1069, "tausendneunundsechzig")- , (1070, "tausendsiebzig")- , (1071, "tausendeinundsiebzig")- , (1072, "tausendzweiundsiebzig")- , (1073, "tausenddreiundsiebzig")- , (1074, "tausendvierundsiebzig")- , (1075, "tausendfünfundsiebzig")- , (1076, "tausendsechsundsiebzig")- , (1077, "tausendsiebenundsiebzig")- , (1078, "tausendachtundsiebzig")- , (1079, "tausendneunundsiebzig")- , (1080, "tausendachtzig")- , (1081, "tausendeinundachtzig")- , (1082, "tausendzweiundachtzig")- , (1083, "tausenddreiundachtzig")- , (1084, "tausendvierundachtzig")- , (1085, "tausendfünfundachtzig")- , (1086, "tausendsechsundachtzig")- , (1087, "tausendsiebenundachtzig")- , (1088, "tausendachtundachtzig")- , (1089, "tausendneunundachtzig")- , (1090, "tausendneunzig")- , (1091, "tausendeinundneunzig")- , (1092, "tausendzweiundneunzig")- , (1093, "tausenddreiundneunzig")- , (1094, "tausendvierundneunzig")- , (1095, "tausendfünfundneunzig")- , (1096, "tausendsechsundneunzig")- , (1097, "tausendsiebenundneunzig")- , (1098, "tausendachtundneunzig")- , (1099, "tausendneunundneunzig")- , (1100, "tausendhundert")- , (1101, "tausendhunderteins")- , (1102, "tausendhundertzwei")- , (1103, "tausendhundertdrei")- , (1104, "tausendhundertvier")- , (1105, "tausendhundertfünf")- , (1106, "tausendhundertsechs")- , (1107, "tausendhundertsieben")- , (1108, "tausendhundertacht")- , (1109, "tausendhundertneun")- , (1210, "tausendzweihundertzehn")- , (1211, "tausendzweihundertelf")- , (1212, "tausendzweihundertzwölf")- , (1213, "tausendzweihundertdreizehn")- , (1214, "tausendzweihundertvierzehn")- , (1215, "tausendzweihundertfünfzehn")- , (1216, "tausendzweihundertsechzehn")- , (1217, "tausendzweihundertsiebzehn")- , (1218, "tausendzweihundertachtzehn")- , (1219, "tausendzweihundertneunzehn")- , (2000, "zweitausend")- , (2001, "zweitausendeins")- , (2002, "zweitausendzwei")- , (2004, "zweitausendvier")- , (9999, "neuntausendneunhundertneunundneunzig")- , (10000, "zehntausend")- , (20000, "zwanzigtausend")- , (dec 5, "hunderttausend")- , (dec 6, "million")- , (2 ⋅ dec 6, "zwei millionen")- , (dec 9, "milliarde")- , (6 ⋅ dec 9, "sechs milliarden")- , (dec 12, "billion")- , (dec 15, "billiarde")- , (dec 18, "trillion")- , (dec 21, "trilliarde")- , (dec 24, "quadrillion")- , (dec 27, "quadrilliarde")- , (dec 30, "quintillion")- , (dec 33, "quintilliarde")- , (dec 36, "sextillion")- , (dec 39, "sextilliarde")- , (dec 42, "septillion")- , (dec 45, "septilliarde")- , (dec 48, "oktillion")- , (dec 51, "oktilliarde")- , (dec 54, "nonillion")- , (dec 57, "nonilliarde")- , (dec 60, "dezillion")- , (dec 63, "dezilliarde")- , (dec 66, "undezillion")- , (dec 69, "undezilliarde")- , (dec 72, "duodezillion")- , (dec 75, "duodezilliarde")- , (dec 78, "tredezillion")- , (dec 81, "tredezilliarde")- , (dec 84, "quattuordezillion")- , (dec 87, "quattuordezilliarde")- , (dec 90, "quindezillion")- , (dec 93, "quindezilliarde")- , (dec 180, "trigintillion")- , (dec 600, "zentillion")- , (dec 603, "zentilliarde")- , (dec 6000, "millinillion")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "default"- , defaultInflection- , [ (0, "nullte")- , (1, "erste")- , (2, "zweite")- , (3, "dritte")- , (4, "vierte")- , (5, "fünfte")- , (6, "sechste")- , (7, "siebte")- , (8, "achte")- , (9, "neunte")- , (10, "zehnte")- , (11, "elfte")- , (12, "zwölfte")- , (13, "dreizehnte")- , (14, "vierzehnte")- , (15, "fünfzehnte")- , (16, "sechzehnte")- , (17, "siebzehnte")- , (18, "achtzehnte")- , (19, "neunzehnte")- , (20, "zwanzigste")- , (21, "einundzwanzigste")- , (22, "zweiundzwanzigste")- , (23, "dreiundzwanzigste")- , (24, "vierundzwanzigste")- , (25, "fünfundzwanzigste")- , (26, "sechsundzwanzigste")- , (27, "siebenundzwanzigste")- , (28, "achtundzwanzigste")- , (29, "neunundzwanzigste")- , (30, "dreißigste")- , (31, "einunddreißigste")- , (32, "zweiunddreißigste")- , (33, "dreiunddreißigste")- , (34, "vierunddreißigste")- , (35, "fünfunddreißigste")- , (36, "sechsunddreißigste")- , (37, "siebenunddreißigste")- , (38, "achtunddreißigste")- , (39, "neununddreißigste")- , (40, "vierzigste")- , (41, "einundvierzigste")- , (42, "zweiundvierzigste")- , (43, "dreiundvierzigste")- , (44, "vierundvierzigste")- , (45, "fünfundvierzigste")- , (46, "sechsundvierzigste")- , (47, "siebenundvierzigste")- , (48, "achtundvierzigste")- , (49, "neunundvierzigste")- , (50, "fünfzigste")- , (51, "einundfünfzigste")- , (52, "zweiundfünfzigste")- , (53, "dreiundfünfzigste")- , (54, "vierundfünfzigste")- , (55, "fünfundfünfzigste")- , (56, "sechsundfünfzigste")- , (57, "siebenundfünfzigste")- , (58, "achtundfünfzigste")- , (59, "neunundfünfzigste")- , (60, "sechzigste")- , (61, "einundsechzigste")- , (62, "zweiundsechzigste")- , (63, "dreiundsechzigste")- , (64, "vierundsechzigste")- , (65, "fünfundsechzigste")- , (66, "sechsundsechzigste")- , (67, "siebenundsechzigste")- , (68, "achtundsechzigste")- , (69, "neunundsechzigste")- , (70, "siebzigste")- , (71, "einundsiebzigste")- , (72, "zweiundsiebzigste")- , (73, "dreiundsiebzigste")- , (74, "vierundsiebzigste")- , (75, "fünfundsiebzigste")- , (76, "sechsundsiebzigste")- , (77, "siebenundsiebzigste")- , (78, "achtundsiebzigste")- , (79, "neunundsiebzigste")- , (80, "achtzigste")- , (81, "einundachtzigste")- , (82, "zweiundachtzigste")- , (83, "dreiundachtzigste")- , (84, "vierundachtzigste")- , (85, "fünfundachtzigste")- , (86, "sechsundachtzigste")- , (87, "siebenundachtzigste")- , (88, "achtundachtzigste")- , (89, "neunundachtzigste")- , (90, "neunzigste")- , (91, "einundneunzigste")- , (92, "zweiundneunzigste")- , (93, "dreiundneunzigste")- , (94, "vierundneunzigste")- , (95, "fünfundneunzigste")- , (96, "sechsundneunzigste")- , (97, "siebenundneunzigste")- , (98, "achtundneunzigste")- , (99, "neunundneunzigste")- , (100, "hundertste")- , (101, "hunderterste")- , (102, "hundertzweite")- , (103, "hundertdritte")- , (200, "zweihundertste")- , (201, "zweihunderterste")- , (202, "zweihundertzweite")- , (203, "zweihundertdritte")- , (900, "neunhundertste")- , (901, "neunhunderterste")- , (998, "neunhundertachtundneunzigste")- , (999, "neunhundertneunundneunzigste")- , (1000, "tausendste")- , (1001, "tausenderste")- , (1002, "tausendzweite")- , (2000, "zweitausendste")- , (2001, "zweitausenderste")- , (2002, "zweitausendzweite")- , (2004, "zweitausendvierte")- , (10000, "zehntausendste")- , (20000, "zwanzigtausendste")- , (dec 5, "hunderttausendste")- , (dec 6, "millionste")- , (2 ⋅ dec 6, "zwei millionste")- , (dec 9, "milliardste")- , (dec 12, "billionste")- ]- )- ]
+ src-test/Text/Numeral/Language/DEU/TestData.hs view
@@ -0,0 +1,467 @@+{-|+[@ISO639-1@] de++[@ISO639-2B@] ger++[@ISO639-2T@] deu++[@ISO639-3@] deu++[@Native name@] Deutsch++[@English name@] German+-}++module Text.Numeral.Language.DEU.TestData (cardinals, ordinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://de.wikipedia.org/wiki/Zahlennamen+ http://german.about.com/library/blzahlen.htm+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "null")+ , (1, "eins")+ , (2, "zwei")+ , (3, "drei")+ , (4, "vier")+ , (5, "fünf")+ , (6, "sechs")+ , (7, "sieben")+ , (8, "acht")+ , (9, "neun")+ , (10, "zehn")+ , (11, "elf")+ , (12, "zwölf")+ , (13, "dreizehn")+ , (14, "vierzehn")+ , (15, "fünfzehn")+ , (16, "sechzehn")+ , (17, "siebzehn")+ , (18, "achtzehn")+ , (19, "neunzehn")+ , (20, "zwanzig")+ , (21, "einundzwanzig")+ , (22, "zweiundzwanzig")+ , (23, "dreiundzwanzig")+ , (24, "vierundzwanzig")+ , (25, "fünfundzwanzig")+ , (26, "sechsundzwanzig")+ , (27, "siebenundzwanzig")+ , (28, "achtundzwanzig")+ , (29, "neunundzwanzig")+ , (30, "dreißig")+ , (31, "einunddreißig")+ , (32, "zweiunddreißig")+ , (33, "dreiunddreißig")+ , (34, "vierunddreißig")+ , (35, "fünfunddreißig")+ , (36, "sechsunddreißig")+ , (37, "siebenunddreißig")+ , (38, "achtunddreißig")+ , (39, "neununddreißig")+ , (40, "vierzig")+ , (41, "einundvierzig")+ , (42, "zweiundvierzig")+ , (43, "dreiundvierzig")+ , (44, "vierundvierzig")+ , (45, "fünfundvierzig")+ , (46, "sechsundvierzig")+ , (47, "siebenundvierzig")+ , (48, "achtundvierzig")+ , (49, "neunundvierzig")+ , (50, "fünfzig")+ , (51, "einundfünfzig")+ , (52, "zweiundfünfzig")+ , (53, "dreiundfünfzig")+ , (54, "vierundfünfzig")+ , (55, "fünfundfünfzig")+ , (56, "sechsundfünfzig")+ , (57, "siebenundfünfzig")+ , (58, "achtundfünfzig")+ , (59, "neunundfünfzig")+ , (60, "sechzig")+ , (61, "einundsechzig")+ , (62, "zweiundsechzig")+ , (63, "dreiundsechzig")+ , (64, "vierundsechzig")+ , (65, "fünfundsechzig")+ , (66, "sechsundsechzig")+ , (67, "siebenundsechzig")+ , (68, "achtundsechzig")+ , (69, "neunundsechzig")+ , (70, "siebzig")+ , (71, "einundsiebzig")+ , (72, "zweiundsiebzig")+ , (73, "dreiundsiebzig")+ , (74, "vierundsiebzig")+ , (75, "fünfundsiebzig")+ , (76, "sechsundsiebzig")+ , (77, "siebenundsiebzig")+ , (78, "achtundsiebzig")+ , (79, "neunundsiebzig")+ , (80, "achtzig")+ , (81, "einundachtzig")+ , (82, "zweiundachtzig")+ , (83, "dreiundachtzig")+ , (84, "vierundachtzig")+ , (85, "fünfundachtzig")+ , (86, "sechsundachtzig")+ , (87, "siebenundachtzig")+ , (88, "achtundachtzig")+ , (89, "neunundachtzig")+ , (90, "neunzig")+ , (91, "einundneunzig")+ , (92, "zweiundneunzig")+ , (93, "dreiundneunzig")+ , (94, "vierundneunzig")+ , (95, "fünfundneunzig")+ , (96, "sechsundneunzig")+ , (97, "siebenundneunzig")+ , (98, "achtundneunzig")+ , (99, "neunundneunzig")+ , (100, "hundert")+ , (101, "hunderteins")+ , (102, "hundertzwei")+ , (103, "hundertdrei")+ , (153, "hundertdreiundfünfzig")+ , (200, "zweihundert")+ , (201, "zweihunderteins")+ , (202, "zweihundertzwei")+ , (203, "zweihundertdrei")+ , (204, "zweihundertvier")+ , (205, "zweihundertfünf")+ , (206, "zweihundertsechs")+ , (207, "zweihundertsieben")+ , (208, "zweihundertacht")+ , (209, "zweihundertneun")+ , (210, "zweihundertzehn")+ , (211, "zweihundertelf")+ , (212, "zweihundertzwölf")+ , (213, "zweihundertdreizehn")+ , (214, "zweihundertvierzehn")+ , (215, "zweihundertfünfzehn")+ , (216, "zweihundertsechzehn")+ , (217, "zweihundertsiebzehn")+ , (218, "zweihundertachtzehn")+ , (219, "zweihundertneunzehn")+ , (220, "zweihundertzwanzig")+ , (221, "zweihunderteinundzwanzig")+ , (222, "zweihundertzweiundzwanzig")+ , (223, "zweihundertdreiundzwanzig")+ , (224, "zweihundertvierundzwanzig")+ , (225, "zweihundertfünfundzwanzig")+ , (226, "zweihundertsechsundzwanzig")+ , (227, "zweihundertsiebenundzwanzig")+ , (228, "zweihundertachtundzwanzig")+ , (229, "zweihundertneunundzwanzig")+ , (230, "zweihundertdreißig")+ , (300, "dreihundert")+ , (320, "dreihundertzwanzig")+ , (400, "vierhundert")+ , (421, "vierhunderteinundzwanzig")+ , (500, "fünfhundert")+ , (522, "fünfhundertzweiundzwanzig")+ , (600, "sechshundert")+ , (623, "sechshundertdreiundzwanzig")+ , (700, "siebenhundert")+ , (724, "siebenhundertvierundzwanzig")+ , (800, "achthundert")+ , (825, "achthundertfünfundzwanzig")+ , (900, "neunhundert")+ , (901, "neunhunderteins")+ , (926, "neunhundertsechsundzwanzig")+ , (998, "neunhundertachtundneunzig")+ , (999, "neunhundertneunundneunzig")+ , (1000, "tausend")+ , (1001, "tausendeins")+ , (1002, "tausendzwei")+ , (1030, "tausenddreißig")+ , (1031, "tausendeinunddreißig")+ , (1032, "tausendzweiunddreißig")+ , (1033, "tausenddreiunddreißig")+ , (1034, "tausendvierunddreißig")+ , (1035, "tausendfünfunddreißig")+ , (1036, "tausendsechsunddreißig")+ , (1037, "tausendsiebenunddreißig")+ , (1038, "tausendachtunddreißig")+ , (1039, "tausendneununddreißig")+ , (1040, "tausendvierzig")+ , (1041, "tausendeinundvierzig")+ , (1042, "tausendzweiundvierzig")+ , (1043, "tausenddreiundvierzig")+ , (1044, "tausendvierundvierzig")+ , (1045, "tausendfünfundvierzig")+ , (1046, "tausendsechsundvierzig")+ , (1047, "tausendsiebenundvierzig")+ , (1048, "tausendachtundvierzig")+ , (1049, "tausendneunundvierzig")+ , (1050, "tausendfünfzig")+ , (1051, "tausendeinundfünfzig")+ , (1052, "tausendzweiundfünfzig")+ , (1053, "tausenddreiundfünfzig")+ , (1054, "tausendvierundfünfzig")+ , (1055, "tausendfünfundfünfzig")+ , (1056, "tausendsechsundfünfzig")+ , (1057, "tausendsiebenundfünfzig")+ , (1058, "tausendachtundfünfzig")+ , (1059, "tausendneunundfünfzig")+ , (1060, "tausendsechzig")+ , (1061, "tausendeinundsechzig")+ , (1062, "tausendzweiundsechzig")+ , (1063, "tausenddreiundsechzig")+ , (1064, "tausendvierundsechzig")+ , (1065, "tausendfünfundsechzig")+ , (1066, "tausendsechsundsechzig")+ , (1067, "tausendsiebenundsechzig")+ , (1068, "tausendachtundsechzig")+ , (1069, "tausendneunundsechzig")+ , (1070, "tausendsiebzig")+ , (1071, "tausendeinundsiebzig")+ , (1072, "tausendzweiundsiebzig")+ , (1073, "tausenddreiundsiebzig")+ , (1074, "tausendvierundsiebzig")+ , (1075, "tausendfünfundsiebzig")+ , (1076, "tausendsechsundsiebzig")+ , (1077, "tausendsiebenundsiebzig")+ , (1078, "tausendachtundsiebzig")+ , (1079, "tausendneunundsiebzig")+ , (1080, "tausendachtzig")+ , (1081, "tausendeinundachtzig")+ , (1082, "tausendzweiundachtzig")+ , (1083, "tausenddreiundachtzig")+ , (1084, "tausendvierundachtzig")+ , (1085, "tausendfünfundachtzig")+ , (1086, "tausendsechsundachtzig")+ , (1087, "tausendsiebenundachtzig")+ , (1088, "tausendachtundachtzig")+ , (1089, "tausendneunundachtzig")+ , (1090, "tausendneunzig")+ , (1091, "tausendeinundneunzig")+ , (1092, "tausendzweiundneunzig")+ , (1093, "tausenddreiundneunzig")+ , (1094, "tausendvierundneunzig")+ , (1095, "tausendfünfundneunzig")+ , (1096, "tausendsechsundneunzig")+ , (1097, "tausendsiebenundneunzig")+ , (1098, "tausendachtundneunzig")+ , (1099, "tausendneunundneunzig")+ , (1100, "tausendhundert")+ , (1101, "tausendhunderteins")+ , (1102, "tausendhundertzwei")+ , (1103, "tausendhundertdrei")+ , (1104, "tausendhundertvier")+ , (1105, "tausendhundertfünf")+ , (1106, "tausendhundertsechs")+ , (1107, "tausendhundertsieben")+ , (1108, "tausendhundertacht")+ , (1109, "tausendhundertneun")+ , (1210, "tausendzweihundertzehn")+ , (1211, "tausendzweihundertelf")+ , (1212, "tausendzweihundertzwölf")+ , (1213, "tausendzweihundertdreizehn")+ , (1214, "tausendzweihundertvierzehn")+ , (1215, "tausendzweihundertfünfzehn")+ , (1216, "tausendzweihundertsechzehn")+ , (1217, "tausendzweihundertsiebzehn")+ , (1218, "tausendzweihundertachtzehn")+ , (1219, "tausendzweihundertneunzehn")+ , (2000, "zweitausend")+ , (2001, "zweitausendeins")+ , (2002, "zweitausendzwei")+ , (2004, "zweitausendvier")+ , (9999, "neuntausendneunhundertneunundneunzig")+ , (10000, "zehntausend")+ , (20000, "zwanzigtausend")+ , (dec 5, "hunderttausend")+ , (dec 6, "million")+ , (2 * dec 6, "zwei millionen")+ , (dec 9, "milliarde")+ , (6 * dec 9, "sechs milliarden")+ , (dec 12, "billion")+ , (dec 15, "billiarde")+ , (dec 18, "trillion")+ , (dec 21, "trilliarde")+ , (dec 24, "quadrillion")+ , (dec 27, "quadrilliarde")+ , (dec 30, "quintillion")+ , (dec 33, "quintilliarde")+ , (dec 36, "sextillion")+ , (dec 39, "sextilliarde")+ , (dec 42, "septillion")+ , (dec 45, "septilliarde")+ , (dec 48, "oktillion")+ , (dec 51, "oktilliarde")+ , (dec 54, "nonillion")+ , (dec 57, "nonilliarde")+ , (dec 60, "dezillion")+ , (dec 63, "dezilliarde")+ , (dec 66, "undezillion")+ , (dec 69, "undezilliarde")+ , (dec 72, "duodezillion")+ , (dec 75, "duodezilliarde")+ , (dec 78, "tredezillion")+ , (dec 81, "tredezilliarde")+ , (dec 84, "quattuordezillion")+ , (dec 87, "quattuordezilliarde")+ , (dec 90, "quindezillion")+ , (dec 93, "quindezilliarde")+ , (dec 180, "trigintillion")+ , (dec 600, "zentillion")+ , (dec 603, "zentilliarde")+ , (dec 6000, "millinillion")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nullte")+ , (1, "erste")+ , (2, "zweite")+ , (3, "dritte")+ , (4, "vierte")+ , (5, "fünfte")+ , (6, "sechste")+ , (7, "siebte")+ , (8, "achte")+ , (9, "neunte")+ , (10, "zehnte")+ , (11, "elfte")+ , (12, "zwölfte")+ , (13, "dreizehnte")+ , (14, "vierzehnte")+ , (15, "fünfzehnte")+ , (16, "sechzehnte")+ , (17, "siebzehnte")+ , (18, "achtzehnte")+ , (19, "neunzehnte")+ , (20, "zwanzigste")+ , (21, "einundzwanzigste")+ , (22, "zweiundzwanzigste")+ , (23, "dreiundzwanzigste")+ , (24, "vierundzwanzigste")+ , (25, "fünfundzwanzigste")+ , (26, "sechsundzwanzigste")+ , (27, "siebenundzwanzigste")+ , (28, "achtundzwanzigste")+ , (29, "neunundzwanzigste")+ , (30, "dreißigste")+ , (31, "einunddreißigste")+ , (32, "zweiunddreißigste")+ , (33, "dreiunddreißigste")+ , (34, "vierunddreißigste")+ , (35, "fünfunddreißigste")+ , (36, "sechsunddreißigste")+ , (37, "siebenunddreißigste")+ , (38, "achtunddreißigste")+ , (39, "neununddreißigste")+ , (40, "vierzigste")+ , (41, "einundvierzigste")+ , (42, "zweiundvierzigste")+ , (43, "dreiundvierzigste")+ , (44, "vierundvierzigste")+ , (45, "fünfundvierzigste")+ , (46, "sechsundvierzigste")+ , (47, "siebenundvierzigste")+ , (48, "achtundvierzigste")+ , (49, "neunundvierzigste")+ , (50, "fünfzigste")+ , (51, "einundfünfzigste")+ , (52, "zweiundfünfzigste")+ , (53, "dreiundfünfzigste")+ , (54, "vierundfünfzigste")+ , (55, "fünfundfünfzigste")+ , (56, "sechsundfünfzigste")+ , (57, "siebenundfünfzigste")+ , (58, "achtundfünfzigste")+ , (59, "neunundfünfzigste")+ , (60, "sechzigste")+ , (61, "einundsechzigste")+ , (62, "zweiundsechzigste")+ , (63, "dreiundsechzigste")+ , (64, "vierundsechzigste")+ , (65, "fünfundsechzigste")+ , (66, "sechsundsechzigste")+ , (67, "siebenundsechzigste")+ , (68, "achtundsechzigste")+ , (69, "neunundsechzigste")+ , (70, "siebzigste")+ , (71, "einundsiebzigste")+ , (72, "zweiundsiebzigste")+ , (73, "dreiundsiebzigste")+ , (74, "vierundsiebzigste")+ , (75, "fünfundsiebzigste")+ , (76, "sechsundsiebzigste")+ , (77, "siebenundsiebzigste")+ , (78, "achtundsiebzigste")+ , (79, "neunundsiebzigste")+ , (80, "achtzigste")+ , (81, "einundachtzigste")+ , (82, "zweiundachtzigste")+ , (83, "dreiundachtzigste")+ , (84, "vierundachtzigste")+ , (85, "fünfundachtzigste")+ , (86, "sechsundachtzigste")+ , (87, "siebenundachtzigste")+ , (88, "achtundachtzigste")+ , (89, "neunundachtzigste")+ , (90, "neunzigste")+ , (91, "einundneunzigste")+ , (92, "zweiundneunzigste")+ , (93, "dreiundneunzigste")+ , (94, "vierundneunzigste")+ , (95, "fünfundneunzigste")+ , (96, "sechsundneunzigste")+ , (97, "siebenundneunzigste")+ , (98, "achtundneunzigste")+ , (99, "neunundneunzigste")+ , (100, "hundertste")+ , (101, "hunderterste")+ , (102, "hundertzweite")+ , (103, "hundertdritte")+ , (200, "zweihundertste")+ , (201, "zweihunderterste")+ , (202, "zweihundertzweite")+ , (203, "zweihundertdritte")+ , (900, "neunhundertste")+ , (901, "neunhunderterste")+ , (998, "neunhundertachtundneunzigste")+ , (999, "neunhundertneunundneunzigste")+ , (1000, "tausendste")+ , (1001, "tausenderste")+ , (1002, "tausendzweite")+ , (2000, "zweitausendste")+ , (2001, "zweitausenderste")+ , (2002, "zweitausendzweite")+ , (2004, "zweitausendvierte")+ , (10000, "zehntausendste")+ , (20000, "zwanzigtausendste")+ , (dec 5, "hunderttausendste")+ , (dec 6, "millionste")+ , (2 * dec 6, "zwei millionste")+ , (dec 9, "milliardste")+ , (dec 12, "billionste")+ ]+ )+ ]
src-test/Text/Numeral/Language/DJK/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-aukan/en/djk/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/EKK/TestData.hs view
@@ -0,0 +1,214 @@+{-|+[@ISO639-1@] et++[@ISO639-2@] est++[@ISO639-3@] ekk++[@Native name@] eesti keel++[@English name@] Estonian+-}++module Text.Numeral.Language.EKK.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Prelude ( Integral )+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "null")+ , (1, "üks")+ , (2, "kaks")+ , (3, "kolm")+ , (4, "neli")+ , (5, "viis")+ , (6, "kuus")+ , (7, "seitse")+ , (8, "kaheksa")+ , (9, "üheksa")+ , (10, "kümme")+ , (11, "üksteist")+ , (12, "kaksteist")+ , (13, "kolmteist")+ , (14, "neliteist")+ , (15, "viisteist")+ , (16, "kuusteist")+ , (17, "seitseteist")+ , (18, "kaheksateist")+ , (19, "üheksateist")+ , (20, "kakskümmend")+ , (21, "kakskümmend üks")+ , (22, "kakskümmend kaks")+ , (23, "kakskümmend kolm")+ , (24, "kakskümmend neli")+ , (25, "kakskümmend viis")+ , (26, "kakskümmend kuus")+ , (27, "kakskümmend seitse")+ , (28, "kakskümmend kaheksa")+ , (29, "kakskümmend üheksa")+ , (30, "kolmkümmend")+ , (31, "kolmkümmend üks")+ , (32, "kolmkümmend kaks")+ , (33, "kolmkümmend kolm")+ , (34, "kolmkümmend neli")+ , (35, "kolmkümmend viis")+ , (36, "kolmkümmend kuus")+ , (37, "kolmkümmend seitse")+ , (38, "kolmkümmend kaheksa")+ , (39, "kolmkümmend üheksa")+ , (40, "nelikümmend")+ , (41, "nelikümmend üks")+ , (42, "nelikümmend kaks")+ , (43, "nelikümmend kolm")+ , (44, "nelikümmend neli")+ , (45, "nelikümmend viis")+ , (46, "nelikümmend kuus")+ , (47, "nelikümmend seitse")+ , (48, "nelikümmend kaheksa")+ , (49, "nelikümmend üheksa")+ , (50, "viiskümmend")+ , (51, "viiskümmend üks")+ , (52, "viiskümmend kaks")+ , (53, "viiskümmend kolm")+ , (54, "viiskümmend neli")+ , (55, "viiskümmend viis")+ , (56, "viiskümmend kuus")+ , (57, "viiskümmend seitse")+ , (58, "viiskümmend kaheksa")+ , (59, "viiskümmend üheksa")+ , (61, "kuuskümmend üks")+ , (62, "kuuskümmend kaks")+ , (63, "kuuskümmend kolm")+ , (64, "kuuskümmend neli")+ , (65, "kuuskümmend viis")+ , (66, "kuuskümmend kuus")+ , (67, "kuuskümmend seitse")+ , (68, "kuuskümmend kaheksa")+ , (69, "kuuskümmend üheksa")+ , (71, "seitsekümmend üks")+ , (72, "seitsekümmend kaks")+ , (73, "seitsekümmend kolm")+ , (74, "seitsekümmend neli")+ , (75, "seitsekümmend viis")+ , (76, "seitsekümmend kuus")+ , (77, "seitsekümmend seitse")+ , (78, "seitsekümmend kaheksa")+ , (79, "seitsekümmend üheksa")+ , (81, "kaheksakümmend üks")+ , (82, "kaheksakümmend kaks")+ , (83, "kaheksakümmend kolm")+ , (84, "kaheksakümmend neli")+ , (85, "kaheksakümmend viis")+ , (86, "kaheksakümmend kuus")+ , (87, "kaheksakümmend seitse")+ , (88, "kaheksakümmend kaheksa")+ , (89, "kaheksakümmend üheksa")+ , (91, "üheksakümmend üks")+ , (92, "üheksakümmend kaks")+ , (93, "üheksakümmend kolm")+ , (94, "üheksakümmend neli")+ , (95, "üheksakümmend viis")+ , (96, "üheksakümmend kuus")+ , (97, "üheksakümmend seitse")+ , (98, "üheksakümmend kaheksa")+ , (99, "üheksakümmend üheksa")+ , (100, "sada")+ , (101, "sadaüks")+ , (102, "sadakaks")+ , (103, "sadakolm")+ , (104, "sadaneli")+ , (105, "sadaviis")+ , (106, "sadakuus")+ , (107, "sadaseitse")+ , (108, "sadakaheksa")+ , (109, "sadaüheksa")+ , (110, "sadakümme")+ , (123, "sadakakskümmend kolm")+ , (200, "kakssada")+ , (300, "kolmsada")+ , (321, "kolmsadakakskümmend üks")+ , (400, "nelisada")+ , (500, "viissada")+ , (600, "kuussada")+ , (700, "seitsesada")+ , (800, "kaheksasada")+ , (900, "üheksasada")+ , (909, "üheksasadaüheksa")+ , (990, "üheksasadaüheksakümmend")+ , (999, "üheksasadaüheksakümmend üheksa")+ , (1000, "tuhat")+ , (1001, "tuhatüks")+ , (1008, "tuhatkaheksa")+ , (1234, "tuhatkakssadakolmkümmend neli")+ , (2000, "kaks tuhat")+ , (3000, "kolm tuhat")+ , (4000, "neli tuhat")+ , (4321, "neli tuhatkolmsadakakskümmend üks")+ , (5000, "viis tuhat")+ , (6000, "kuus tuhat")+ , (7000, "seitse tuhat")+ , (8000, "kaheksa tuhat")+ , (9000, "üheksa tuhat")+ , (10000, "kümme tuhat")+ , (12345, "kaksteist tuhatkolmsadanelikümmend viis")+ , (20000, "kakskümmend tuhat")+ , (30000, "kolmkümmend tuhat")+ , (40000, "nelikümmend tuhat")+ , (50000, "viiskümmend tuhat")+ , (54321, "viiskümmend neli tuhatkolmsadakakskümmend üks")+ , (60000, "kuuskümmend tuhat")+ , (70000, "seitsekümmend tuhat")+ , (80000, "kaheksakümmend tuhat")+ , (90000, "üheksakümmend tuhat")+ , (100000, "sada tuhat")+ , (123456, "sadakakskümmend kolm tuhatnelisadaviiskümmend kuus")+ , (200000, "kakssada tuhat")+ , (300000, "kolmsada tuhat")+ , (400000, "nelisada tuhat")+ , (500000, "viissada tuhat")+ , (600000, "kuussada tuhat")+ , (654321, "kuussadaviiskümmend neli tuhatkolmsadakakskümmend üks")+ , (700000, "seitsesada tuhat")+ , (800000, "kaheksasada tuhat")+ , (900000, "üheksasada tuhat")+ , (1000000, "miljon")+ , (1000001, "miljonüks")+ , (1234567, "miljonkakssadakolmkümmend neli tuhatviissadakuuskümmend seitse")+ , (2000000, "kaks miljonit")+ , (3000000, "kolm miljonit")+ , (4000000, "neli miljonit")+ , (5000000, "viis miljonit")+ , (6000000, "kuus miljonit")+ , (7000000, "seitse miljonit")+ , (7654321, "seitse miljonitkuussadaviiskümmend neli tuhatkolmsadakakskümmend üks")+ , (8000000, "kaheksa miljonit")+ , (9000000, "üheksa miljonit")+ , (1000000000, "miljard")+ , (1000000001, "miljardüks")+ , (2000000000, "kaks miljard")+ , (3000000000, "kolm miljard")+ , (4000000000, "neli miljard")+ , (5000000000, "viis miljard")+ , (6000000000, "kuus miljard")+ , (7000000000, "seitse miljard")+ , (8000000000, "kaheksa miljard")+ , (9000000000, "üheksa miljard")+ , (1000000000000, "triljon")+ , (1000000000001, "triljonüks")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/EMI/TestData.hs view
@@ -0,0 +1,174 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] emi++[@Native name@] -++[@English name@] Mussau-Emira+-}+module Text.Numeral.Language.EMI.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-mussau-emira/en/emi/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "sesa")+ , (2, "lua")+ , (3, "tolu")+ , (4, "ata")+ , (5, "lima")+ , (6, "nomo")+ , (7, "itu")+ , (8, "oalu")+ , (9, "sio")+ , (10, "sangaulu")+ , (11, "sangaulu sesa")+ , (12, "sangaulu lua")+ , (13, "sangaulu tolu")+ , (14, "sangaulu ata")+ , (15, "sangaulu lima")+ , (16, "sangaulu nomo")+ , (17, "sangaulu itu")+ , (18, "sangaulu oalu")+ , (19, "sangaulu sio")+ , (20, "luengaulu")+ , (21, "luengaulu sesa")+ , (22, "luengaulu lua")+ , (23, "luengaulu tolu")+ , (24, "luengaulu ata")+ , (25, "luengaulu lima")+ , (26, "luengaulu nomo")+ , (27, "luengaulu itu")+ , (28, "luengaulu oalu")+ , (29, "luengaulu sio")+ , (30, "tolungaulu")+ , (31, "tolungaulu sesa")+ , (32, "tolungaulu lua")+ , (33, "tolungaulu tolu")+ , (34, "tolungaulu ata")+ , (35, "tolungaulu lima")+ , (36, "tolungaulu nomo")+ , (37, "tolungaulu itu")+ , (38, "tolungaulu oalu")+ , (39, "tolungaulu sio")+ , (40, "atingaulu")+ , (41, "atingaulu sesa")+ , (42, "atingaulu lua")+ , (43, "atingaulu tolu")+ , (44, "atingaulu ata")+ , (45, "atingaulu lima")+ , (46, "atingaulu nomo")+ , (47, "atingaulu itu")+ , (48, "atingaulu oalu")+ , (49, "atingaulu sio")+ , (50, "limangaulu")+ , (51, "limangaulu sesa")+ , (52, "limangaulu lua")+ , (53, "limangaulu tolu")+ , (54, "limangaulu ata")+ , (55, "limangaulu lima")+ , (56, "limangaulu nomo")+ , (57, "limangaulu itu")+ , (58, "limangaulu oalu")+ , (59, "limangaulu sio")+ , (60, "nomongaulu")+ , (61, "nomongaulu sesa")+ , (62, "nomongaulu lua")+ , (63, "nomongaulu tolu")+ , (64, "nomongaulu ata")+ , (65, "nomongaulu lima")+ , (66, "nomongaulu nomo")+ , (67, "nomongaulu itu")+ , (68, "nomongaulu oalu")+ , (69, "nomongaulu sio")+ , (70, "itungaulu")+ , (71, "itungaulu sesa")+ , (72, "itungaulu lua")+ , (73, "itungaulu tolu")+ , (74, "itungaulu ata")+ , (75, "itungaulu lima")+ , (76, "itungaulu nomo")+ , (77, "itungaulu itu")+ , (78, "itungaulu oalu")+ , (79, "itungaulu sio")+ , (80, "oalungaulu")+ , (81, "oalungaulu sesa")+ , (82, "oalungaulu lua")+ , (83, "oalungaulu tolu")+ , (84, "oalungaulu ata")+ , (85, "oalungaulu lima")+ , (86, "oalungaulu nomo")+ , (87, "oalungaulu itu")+ , (88, "oalungaulu oalu")+ , (89, "oalungaulu sio")+ , (90, "siongaulu")+ , (91, "siongaulu sesa")+ , (92, "siongaulu lua")+ , (93, "siongaulu tolu")+ , (94, "siongaulu ata")+ , (95, "siongaulu lima")+ , (96, "siongaulu nomo")+ , (97, "siongaulu itu")+ , (98, "siongaulu oalu")+ , (99, "siongaulu sio")+ , (100, "ai")+ , (101, "ai sesa")+ , (102, "ai lua")+ , (103, "ai tolu")+ , (104, "ai ata")+ , (105, "ai lima")+ , (106, "ai nomo")+ , (107, "ai itu")+ , (108, "ai oalu")+ , (109, "ai sio")+ , (110, "ai sangaulu")+ , (123, "ai luengaulu tolu")+ , (200, "lua ai")+ , (300, "tolu ai")+ , (321, "tolu ai luengaulu sesa")+ , (400, "ata ai")+ , (500, "lima ai")+ , (600, "nomo ai")+ , (700, "itu ai")+ , (800, "oalu ai")+ , (900, "sio ai")+ , (909, "sio ai sio")+ , (990, "sio ai siongaulu")+ , (999, "sio ai siongaulu sio")+ , (1000, "airari")+ , (1001, "airari sesa")+ , (1008, "airari oalu")+ , (1234, "airari lua ai tolungaulu ata")+ , (2000, "lua airari")+ , (3000, "tolu airari")+ , (4000, "ata airari")+ , (4321, "ata airari tolu ai luengaulu sesa")+ , (5000, "lima airari")+ , (6000, "nomo airari")+ , (7000, "itu airari")+ , (8000, "oalu airari")+ , (9000, "sio airari")+ ]+ )+ ]
− src-test/Text/Numeral/Language/EN/TestData.hs
@@ -1,380 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] en--[@ISO639-2B@] eng--[@ISO639-3@] eng--[@Native name@] English--[@English name@] English--}--module Text.Numeral.Language.EN.TestData- ( gb_cardinals, gb_ordinals- , us_cardinals, us_ordinals- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources: http://en.wikipedia.org/wiki/List_of_numbers--en_cardinals ∷ (Num i) ⇒ [(i, Text)]-en_cardinals =- [ (0, "zero")- , (1, "one")- , (2, "two")- , (3, "three")- , (4, "four")- , (5, "five")- , (6, "six")- , (7, "seven")- , (8, "eight")- , (9, "nine")- , (10, "ten")- , (11, "eleven")- , (12, "twelve")- , (13, "thirteen")- , (14, "fourteen")- , (15, "fifteen")- , (16, "sixteen")- , (17, "seventeen")- , (18, "eighteen")- , (19, "nineteen")- , (20, "twenty")- , (21, "twenty-one")- , (22, "twenty-two")- , (23, "twenty-three")- , (24, "twenty-four")- , (25, "twenty-five")- , (26, "twenty-six")- , (27, "twenty-seven")- , (28, "twenty-eight")- , (29, "twenty-nine")- , (30, "thirty")- , (31, "thirty-one")- , (32, "thirty-two")- , (33, "thirty-three")- , (34, "thirty-four")- , (35, "thirty-five")- , (36, "thirty-six")- , (37, "thirty-seven")- , (38, "thirty-eight")- , (39, "thirty-nine")- , (40, "forty")- , (41, "forty-one")- , (42, "forty-two")- , (43, "forty-three")- , (44, "forty-four")- , (45, "forty-five")- , (46, "forty-six")- , (47, "forty-seven")- , (48, "forty-eight")- , (49, "forty-nine")- , (50, "fifty")- , (51, "fifty-one")- , (52, "fifty-two")- , (53, "fifty-three")- , (54, "fifty-four")- , (55, "fifty-five")- , (56, "fifty-six")- , (57, "fifty-seven")- , (58, "fifty-eight")- , (59, "fifty-nine")- , (60, "sixty")- , (61, "sixty-one")- , (62, "sixty-two")- , (63, "sixty-three")- , (64, "sixty-four")- , (65, "sixty-five")- , (66, "sixty-six")- , (67, "sixty-seven")- , (68, "sixty-eight")- , (69, "sixty-nine")- , (70, "seventy")- , (71, "seventy-one")- , (72, "seventy-two")- , (73, "seventy-three")- , (74, "seventy-four")- , (75, "seventy-five")- , (76, "seventy-six")- , (77, "seventy-seven")- , (78, "seventy-eight")- , (79, "seventy-nine")- , (80, "eighty")- , (81, "eighty-one")- , (82, "eighty-two")- , (83, "eighty-three")- , (84, "eighty-four")- , (85, "eighty-five")- , (86, "eighty-six")- , (87, "eighty-seven")- , (88, "eighty-eight")- , (89, "eighty-nine")- , (90, "ninety")- , (91, "ninety-one")- , (92, "ninety-two")- , (93, "ninety-three")- , (94, "ninety-four")- , (95, "ninety-five")- , (96, "ninety-six")- , (97, "ninety-seven")- , (98, "ninety-eight")- , (99, "ninety-nine")- , (100, "one hundred")- ]--en_ordinals ∷ (Num i) ⇒ [(i, Text)]-en_ordinals =- [ (0, "zeroth")- , (1, "first")- , (2, "second")- , (3, "third")- , (4, "fourth")- , (5, "fifth")- , (6, "sixth")- , (7, "seventh")- , (8, "eighth")- , (9, "ninth")- , (10, "tenth")- , (11, "eleventh")- , (12, "twelfth")- , (13, "thirteenth")- , (14, "fourteenth")- , (15, "fifteenth")- , (16, "sixteenth")- , (17, "seventeenth")- , (18, "eighteenth")- , (19, "nineteenth")- , (20, "twentieth")- , (21, "twenty-first")- , (22, "twenty-second")- , (23, "twenty-third")- , (24, "twenty-fourth")- , (25, "twenty-fifth")- , (26, "twenty-sixth")- , (27, "twenty-seventh")- , (28, "twenty-eighth")- , (29, "twenty-ninth")- , (30, "thirtieth")- , (31, "thirty-first")- , (32, "thirty-second")- , (33, "thirty-third")- , (34, "thirty-fourth")- , (35, "thirty-fifth")- , (36, "thirty-sixth")- , (37, "thirty-seventh")- , (38, "thirty-eighth")- , (39, "thirty-ninth")- , (40, "fortieth")- , (41, "forty-first")- , (42, "forty-second")- , (43, "forty-third")- , (44, "forty-fourth")- , (45, "forty-fifth")- , (46, "forty-sixth")- , (47, "forty-seventh")- , (48, "forty-eighth")- , (49, "forty-ninth")- , (50, "fiftieth")- , (51, "fifty-first")- , (52, "fifty-second")- , (53, "fifty-third")- , (54, "fifty-fourth")- , (55, "fifty-fifth")- , (56, "fifty-sixth")- , (57, "fifty-seventh")- , (58, "fifty-eighth")- , (59, "fifty-ninth")- , (60, "sixtieth")- , (61, "sixty-first")- , (62, "sixty-second")- , (63, "sixty-third")- , (64, "sixty-fourth")- , (65, "sixty-fifth")- , (66, "sixty-sixth")- , (67, "sixty-seventh")- , (68, "sixty-eighth")- , (69, "sixty-ninth")- , (70, "seventieth")- , (71, "seventy-first")- , (72, "seventy-second")- , (73, "seventy-third")- , (74, "seventy-fourth")- , (75, "seventy-fifth")- , (76, "seventy-sixth")- , (77, "seventy-seventh")- , (78, "seventy-eighth")- , (79, "seventy-ninth")- , (80, "eightieth")- , (81, "eighty-first")- , (82, "eighty-second")- , (83, "eighty-third")- , (84, "eighty-fourth")- , (85, "eighty-fifth")- , (86, "eighty-sixth")- , (87, "eighty-seventh")- , (88, "eighty-eighth")- , (89, "eighty-ninth")- , (90, "ninetieth")- , (91, "ninety-first")- , (92, "ninety-second")- , (93, "ninety-third")- , (94, "ninety-fourth")- , (95, "ninety-fifth")- , (96, "ninety-sixth")- , (97, "ninety-seventh")- , (98, "ninety-eighth")- , (99, "ninety-ninth")- , (100, "one hundreth")- ]--gb_cardinals ∷ (Num i) ⇒ TestData i-gb_cardinals =- [ ( "default"- , defaultInflection- , en_cardinals- ⊕ [ (-1, "minus one")- , (101, "one hundred and one")- , (110, "one hundred and ten")- , (111, "one hundred and eleven")- , (120, "one hundred and twenty")- , (121, "one hundred and twenty-one")- , (144, "one hundred and forty-four")- , (200, "two hundred")- , (300, "three hundred")- , (666, "six hundred and sixty-six")- , (1000, "one thousand")- , (1001, "one thousand and one")- , (1010, "one thousand and ten")- , (1011, "one thousand and eleven")- , (1024, "one thousand and twenty-four")- , (1100, "one thousand one hundred")- , (1728, "one thousand seven hundred and twenty-eight")- , (2000, "two thousand")- , (10000, "ten thousand")- , (100000, "one hundred thousand")- , (500000, "five hundred thousand")- , (1000000, "one million")- , (1048576, "one million forty-eight thousand five hundred and seventy-six")- , (10000000, "ten million")- ]- )- ]--gb_ordinals ∷ (Num i) ⇒ TestData i-gb_ordinals =- [ ( "default"- , defaultInflection- , en_ordinals- ⊕ [ (101, "one hundred and first")- , (110, "one hundred and tenth")- , (111, "one hundred and eleventh")- , (120, "one hundred and twentieth")- , (121, "one hundred and twenty-first")- , (144, "one hundred and forty-fourth")- , (200, "two hundreth")- , (300, "three hundreth")- , (666, "six hundred and sixty-sixth")- , (1000, "one thousandth")- , (1001, "one thousand and first")- , (1010, "one thousand and tenth")- , (1011, "one thousand and eleventh")- , (1024, "one thousand and twenty-fourth")- , (1100, "one thousand one hundreth")- , (1728, "one thousand seven hundred and twenty-eighth")- , (2000, "two thousandth")- , (10000, "ten thousandth")- , (100000, "one hundred thousandth")- , (500000, "five hundred thousandth")- , (1000000, "one millionth")- , (1048576, "one million forty-eight thousand five hundred and seventy-sixth")- , (10000000, "ten millionth")- ]- )- ]--us_cardinals ∷ (Num i) ⇒ TestData i-us_cardinals =- [ ( "default"- , defaultInflection- , en_cardinals- ⊕ [ (-1, "negative one")- , (101, "one hundred one")- , (110, "one hundred ten")- , (111, "one hundred eleven")- , (120, "one hundred twenty")- , (121, "one hundred twenty-one")- , (144, "one hundred forty-four")- , (200, "two hundred")- , (300, "three hundred")- , (666, "six hundred sixty-six")- , (1000, "one thousand")- , (1001, "one thousand one")- , (1010, "one thousand ten")- , (1011, "one thousand eleven")- , (1024, "one thousand twenty-four")- , (1100, "one thousand one hundred")- , (1728, "one thousand seven hundred twenty-eight")- , (2000, "two thousand")- , (10000, "ten thousand")- , (100000, "one hundred thousand")- , (500000, "five hundred thousand")- , (1000000, "one million")- , (1048576, "one million forty-eight thousand five hundred seventy-six")- , (10000000, "ten million")- ]- )- ]--us_ordinals ∷ (Num i) ⇒ TestData i-us_ordinals =- [ ( "default"- , defaultInflection- , en_ordinals- ⊕ [ (101, "one hundred first")- , (110, "one hundred tenth")- , (111, "one hundred eleventh")- , (120, "one hundred twentieth")- , (121, "one hundred twenty-first")- , (144, "one hundred forty-fourth")- , (200, "two hundreth")- , (300, "three hundreth")- , (666, "six hundred sixty-sixth")- , (1000, "one thousandth")- , (1001, "one thousand first")- , (1010, "one thousand tenth")- , (1011, "one thousand eleventh")- , (1024, "one thousand twenty-fourth")- , (1100, "one thousand one hundreth")- , (1728, "one thousand seven hundred twenty-eighth")- , (2000, "two thousandth")- , (10000, "ten thousandth")- , (100000, "one hundred thousandth")- , (500000, "five hundred thousandth")- , (1000000, "one millionth")- , (1048576, "one million forty-eight thousand five hundred seventy-sixth")- , (10000000, "ten millionth")- ]- )- ]
+ src-test/Text/Numeral/Language/ENG/TestData.hs view
@@ -0,0 +1,373 @@+{-|+[@ISO639-1@] en++[@ISO639-2B@] eng++[@ISO639-3@] eng++[@Native name@] English++[@English name@] English+-}++module Text.Numeral.Language.ENG.TestData+ ( gb_cardinals, gb_ordinals+ , us_cardinals, us_ordinals+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Monoid ( (<>) )+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources: http://en.wikipedia.org/wiki/List_of_numbers++en_cardinals :: (Num i) => [(i, Text)]+en_cardinals =+ [ (0, "zero")+ , (1, "one")+ , (2, "two")+ , (3, "three")+ , (4, "four")+ , (5, "five")+ , (6, "six")+ , (7, "seven")+ , (8, "eight")+ , (9, "nine")+ , (10, "ten")+ , (11, "eleven")+ , (12, "twelve")+ , (13, "thirteen")+ , (14, "fourteen")+ , (15, "fifteen")+ , (16, "sixteen")+ , (17, "seventeen")+ , (18, "eighteen")+ , (19, "nineteen")+ , (20, "twenty")+ , (21, "twenty-one")+ , (22, "twenty-two")+ , (23, "twenty-three")+ , (24, "twenty-four")+ , (25, "twenty-five")+ , (26, "twenty-six")+ , (27, "twenty-seven")+ , (28, "twenty-eight")+ , (29, "twenty-nine")+ , (30, "thirty")+ , (31, "thirty-one")+ , (32, "thirty-two")+ , (33, "thirty-three")+ , (34, "thirty-four")+ , (35, "thirty-five")+ , (36, "thirty-six")+ , (37, "thirty-seven")+ , (38, "thirty-eight")+ , (39, "thirty-nine")+ , (40, "forty")+ , (41, "forty-one")+ , (42, "forty-two")+ , (43, "forty-three")+ , (44, "forty-four")+ , (45, "forty-five")+ , (46, "forty-six")+ , (47, "forty-seven")+ , (48, "forty-eight")+ , (49, "forty-nine")+ , (50, "fifty")+ , (51, "fifty-one")+ , (52, "fifty-two")+ , (53, "fifty-three")+ , (54, "fifty-four")+ , (55, "fifty-five")+ , (56, "fifty-six")+ , (57, "fifty-seven")+ , (58, "fifty-eight")+ , (59, "fifty-nine")+ , (60, "sixty")+ , (61, "sixty-one")+ , (62, "sixty-two")+ , (63, "sixty-three")+ , (64, "sixty-four")+ , (65, "sixty-five")+ , (66, "sixty-six")+ , (67, "sixty-seven")+ , (68, "sixty-eight")+ , (69, "sixty-nine")+ , (70, "seventy")+ , (71, "seventy-one")+ , (72, "seventy-two")+ , (73, "seventy-three")+ , (74, "seventy-four")+ , (75, "seventy-five")+ , (76, "seventy-six")+ , (77, "seventy-seven")+ , (78, "seventy-eight")+ , (79, "seventy-nine")+ , (80, "eighty")+ , (81, "eighty-one")+ , (82, "eighty-two")+ , (83, "eighty-three")+ , (84, "eighty-four")+ , (85, "eighty-five")+ , (86, "eighty-six")+ , (87, "eighty-seven")+ , (88, "eighty-eight")+ , (89, "eighty-nine")+ , (90, "ninety")+ , (91, "ninety-one")+ , (92, "ninety-two")+ , (93, "ninety-three")+ , (94, "ninety-four")+ , (95, "ninety-five")+ , (96, "ninety-six")+ , (97, "ninety-seven")+ , (98, "ninety-eight")+ , (99, "ninety-nine")+ , (100, "one hundred")+ ]++en_ordinals :: (Num i) => [(i, Text)]+en_ordinals =+ [ (0, "zeroth")+ , (1, "first")+ , (2, "second")+ , (3, "third")+ , (4, "fourth")+ , (5, "fifth")+ , (6, "sixth")+ , (7, "seventh")+ , (8, "eighth")+ , (9, "ninth")+ , (10, "tenth")+ , (11, "eleventh")+ , (12, "twelfth")+ , (13, "thirteenth")+ , (14, "fourteenth")+ , (15, "fifteenth")+ , (16, "sixteenth")+ , (17, "seventeenth")+ , (18, "eighteenth")+ , (19, "nineteenth")+ , (20, "twentieth")+ , (21, "twenty-first")+ , (22, "twenty-second")+ , (23, "twenty-third")+ , (24, "twenty-fourth")+ , (25, "twenty-fifth")+ , (26, "twenty-sixth")+ , (27, "twenty-seventh")+ , (28, "twenty-eighth")+ , (29, "twenty-ninth")+ , (30, "thirtieth")+ , (31, "thirty-first")+ , (32, "thirty-second")+ , (33, "thirty-third")+ , (34, "thirty-fourth")+ , (35, "thirty-fifth")+ , (36, "thirty-sixth")+ , (37, "thirty-seventh")+ , (38, "thirty-eighth")+ , (39, "thirty-ninth")+ , (40, "fortieth")+ , (41, "forty-first")+ , (42, "forty-second")+ , (43, "forty-third")+ , (44, "forty-fourth")+ , (45, "forty-fifth")+ , (46, "forty-sixth")+ , (47, "forty-seventh")+ , (48, "forty-eighth")+ , (49, "forty-ninth")+ , (50, "fiftieth")+ , (51, "fifty-first")+ , (52, "fifty-second")+ , (53, "fifty-third")+ , (54, "fifty-fourth")+ , (55, "fifty-fifth")+ , (56, "fifty-sixth")+ , (57, "fifty-seventh")+ , (58, "fifty-eighth")+ , (59, "fifty-ninth")+ , (60, "sixtieth")+ , (61, "sixty-first")+ , (62, "sixty-second")+ , (63, "sixty-third")+ , (64, "sixty-fourth")+ , (65, "sixty-fifth")+ , (66, "sixty-sixth")+ , (67, "sixty-seventh")+ , (68, "sixty-eighth")+ , (69, "sixty-ninth")+ , (70, "seventieth")+ , (71, "seventy-first")+ , (72, "seventy-second")+ , (73, "seventy-third")+ , (74, "seventy-fourth")+ , (75, "seventy-fifth")+ , (76, "seventy-sixth")+ , (77, "seventy-seventh")+ , (78, "seventy-eighth")+ , (79, "seventy-ninth")+ , (80, "eightieth")+ , (81, "eighty-first")+ , (82, "eighty-second")+ , (83, "eighty-third")+ , (84, "eighty-fourth")+ , (85, "eighty-fifth")+ , (86, "eighty-sixth")+ , (87, "eighty-seventh")+ , (88, "eighty-eighth")+ , (89, "eighty-ninth")+ , (90, "ninetieth")+ , (91, "ninety-first")+ , (92, "ninety-second")+ , (93, "ninety-third")+ , (94, "ninety-fourth")+ , (95, "ninety-fifth")+ , (96, "ninety-sixth")+ , (97, "ninety-seventh")+ , (98, "ninety-eighth")+ , (99, "ninety-ninth")+ , (100, "one hundreth")+ ]++gb_cardinals :: (Num i) => TestData i+gb_cardinals =+ [ ( "default"+ , defaultInflection+ , en_cardinals+ <> [ (-1, "minus one")+ , (101, "one hundred and one")+ , (110, "one hundred and ten")+ , (111, "one hundred and eleven")+ , (120, "one hundred and twenty")+ , (121, "one hundred and twenty-one")+ , (144, "one hundred and forty-four")+ , (200, "two hundred")+ , (300, "three hundred")+ , (666, "six hundred and sixty-six")+ , (1000, "one thousand")+ , (1001, "one thousand and one")+ , (1010, "one thousand and ten")+ , (1011, "one thousand and eleven")+ , (1024, "one thousand and twenty-four")+ , (1100, "one thousand one hundred")+ , (1728, "one thousand seven hundred and twenty-eight")+ , (2000, "two thousand")+ , (10000, "ten thousand")+ , (100000, "one hundred thousand")+ , (500000, "five hundred thousand")+ , (1000000, "one million")+ , (1048576, "one million forty-eight thousand five hundred and seventy-six")+ , (10000000, "ten million")+ ]+ )+ ]++gb_ordinals :: (Num i) => TestData i+gb_ordinals =+ [ ( "default"+ , defaultInflection+ , en_ordinals+ <> [ (101, "one hundred and first")+ , (110, "one hundred and tenth")+ , (111, "one hundred and eleventh")+ , (120, "one hundred and twentieth")+ , (121, "one hundred and twenty-first")+ , (144, "one hundred and forty-fourth")+ , (200, "two hundreth")+ , (300, "three hundreth")+ , (666, "six hundred and sixty-sixth")+ , (1000, "one thousandth")+ , (1001, "one thousand and first")+ , (1010, "one thousand and tenth")+ , (1011, "one thousand and eleventh")+ , (1024, "one thousand and twenty-fourth")+ , (1100, "one thousand one hundreth")+ , (1728, "one thousand seven hundred and twenty-eighth")+ , (2000, "two thousandth")+ , (10000, "ten thousandth")+ , (100000, "one hundred thousandth")+ , (500000, "five hundred thousandth")+ , (1000000, "one millionth")+ , (1048576, "one million forty-eight thousand five hundred and seventy-sixth")+ , (10000000, "ten millionth")+ ]+ )+ ]++us_cardinals :: (Num i) => TestData i+us_cardinals =+ [ ( "default"+ , defaultInflection+ , en_cardinals+ <> [ (-1, "negative one")+ , (101, "one hundred one")+ , (110, "one hundred ten")+ , (111, "one hundred eleven")+ , (120, "one hundred twenty")+ , (121, "one hundred twenty-one")+ , (144, "one hundred forty-four")+ , (200, "two hundred")+ , (300, "three hundred")+ , (666, "six hundred sixty-six")+ , (1000, "one thousand")+ , (1001, "one thousand one")+ , (1010, "one thousand ten")+ , (1011, "one thousand eleven")+ , (1024, "one thousand twenty-four")+ , (1100, "one thousand one hundred")+ , (1728, "one thousand seven hundred twenty-eight")+ , (2000, "two thousand")+ , (10000, "ten thousand")+ , (100000, "one hundred thousand")+ , (500000, "five hundred thousand")+ , (1000000, "one million")+ , (1048576, "one million forty-eight thousand five hundred seventy-six")+ , (10000000, "ten million")+ ]+ )+ ]++us_ordinals :: (Num i) => TestData i+us_ordinals =+ [ ( "default"+ , defaultInflection+ , en_ordinals+ <> [ (101, "one hundred first")+ , (110, "one hundred tenth")+ , (111, "one hundred eleventh")+ , (120, "one hundred twentieth")+ , (121, "one hundred twenty-first")+ , (144, "one hundred forty-fourth")+ , (200, "two hundreth")+ , (300, "three hundreth")+ , (666, "six hundred sixty-sixth")+ , (1000, "one thousandth")+ , (1001, "one thousand first")+ , (1010, "one thousand tenth")+ , (1011, "one thousand eleventh")+ , (1024, "one thousand twenty-fourth")+ , (1100, "one thousand one hundreth")+ , (1728, "one thousand seven hundred twenty-eighth")+ , (2000, "two thousandth")+ , (10000, "ten thousandth")+ , (100000, "one hundred thousandth")+ , (500000, "five hundred thousandth")+ , (1000000, "one millionth")+ , (1048576, "one million forty-eight thousand five hundred seventy-sixth")+ , (10000000, "ten millionth")+ ]+ )+ ]
− src-test/Text/Numeral/Language/EO/TestData.hs
@@ -1,142 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] eo--[@ISO639-2B@] epo--[@ISO639-3@] epo--[@Native name@] Esperanto--[@English name@] Esperanto--}--module Text.Numeral.Language.EO.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "nul")- , (1, "unu")- , (2, "du")- , (3, "tri")- , (4, "kvar")- , (5, "kvin")- , (6, "ses")- , (7, "sep")- , (8, "ok")- , (9, "naŭ")- , (10, "dek")- , (11, "dek unu")- , (12, "dek du")- , (13, "dek tri")- , (14, "dek kvar")- , (15, "dek kvin")- , (16, "dek ses")- , (17, "dek sep")- , (18, "dek ok")- , (19, "dek naŭ")- , (20, "dudek")- , (21, "dudek unu")- , (22, "dudek du")- , (23, "dudek tri")- , (24, "dudek kvar")- , (25, "dudek kvin")- , (26, "dudek ses")- , (27, "dudek sep")- , (28, "dudek ok")- , (29, "dudek naŭ")- , (30, "tridek")- , (31, "tridek unu")- , (32, "tridek du")- , (33, "tridek tri")- , (34, "tridek kvar")- , (35, "tridek kvin")- , (36, "tridek ses")- , (37, "tridek sep")- , (38, "tridek ok")- , (39, "tridek naŭ")- , (40, "kvardek")- , (41, "kvardek unu")- , (42, "kvardek du")- , (43, "kvardek tri")- , (44, "kvardek kvar")- , (45, "kvardek kvin")- , (46, "kvardek ses")- , (47, "kvardek sep")- , (48, "kvardek ok")- , (49, "kvardek naŭ")- , (50, "kvindek")- , (51, "kvindek unu")- , (52, "kvindek du")- , (53, "kvindek tri")- , (54, "kvindek kvar")- , (55, "kvindek kvin")- , (56, "kvindek ses")- , (57, "kvindek sep")- , (58, "kvindek ok")- , (59, "kvindek naŭ")- , (60, "sesdek")- , (61, "sesdek unu")- , (62, "sesdek du")- , (63, "sesdek tri")- , (64, "sesdek kvar")- , (65, "sesdek kvin")- , (66, "sesdek ses")- , (67, "sesdek sep")- , (68, "sesdek ok")- , (69, "sesdek naŭ")- , (70, "sepdek")- , (71, "sepdek unu")- , (72, "sepdek du")- , (73, "sepdek tri")- , (74, "sepdek kvar")- , (75, "sepdek kvin")- , (76, "sepdek ses")- , (77, "sepdek sep")- , (78, "sepdek ok")- , (79, "sepdek naŭ")- , (80, "okdek")- , (81, "okdek unu")- , (82, "okdek du")- , (83, "okdek tri")- , (84, "okdek kvar")- , (85, "okdek kvin")- , (86, "okdek ses")- , (87, "okdek sep")- , (88, "okdek ok")- , (89, "okdek naŭ")- , (90, "naŭdek")- , (91, "naŭdek unu")- , (92, "naŭdek du")- , (93, "naŭdek tri")- , (94, "naŭdek kvar")- , (95, "naŭdek kvin")- , (96, "naŭdek ses")- , (97, "naŭdek sep")- , (98, "naŭdek ok")- , (99, "naŭdek naŭ")- , (100, "cent")- ]- )- ]
+ src-test/Text/Numeral/Language/EPO/TestData.hs view
@@ -0,0 +1,135 @@+{-|+[@ISO639-1@] eo++[@ISO639-2B@] epo++[@ISO639-3@] epo++[@Native name@] Esperanto++[@English name@] Esperanto+-}++module Text.Numeral.Language.EPO.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nul")+ , (1, "unu")+ , (2, "du")+ , (3, "tri")+ , (4, "kvar")+ , (5, "kvin")+ , (6, "ses")+ , (7, "sep")+ , (8, "ok")+ , (9, "naŭ")+ , (10, "dek")+ , (11, "dek unu")+ , (12, "dek du")+ , (13, "dek tri")+ , (14, "dek kvar")+ , (15, "dek kvin")+ , (16, "dek ses")+ , (17, "dek sep")+ , (18, "dek ok")+ , (19, "dek naŭ")+ , (20, "dudek")+ , (21, "dudek unu")+ , (22, "dudek du")+ , (23, "dudek tri")+ , (24, "dudek kvar")+ , (25, "dudek kvin")+ , (26, "dudek ses")+ , (27, "dudek sep")+ , (28, "dudek ok")+ , (29, "dudek naŭ")+ , (30, "tridek")+ , (31, "tridek unu")+ , (32, "tridek du")+ , (33, "tridek tri")+ , (34, "tridek kvar")+ , (35, "tridek kvin")+ , (36, "tridek ses")+ , (37, "tridek sep")+ , (38, "tridek ok")+ , (39, "tridek naŭ")+ , (40, "kvardek")+ , (41, "kvardek unu")+ , (42, "kvardek du")+ , (43, "kvardek tri")+ , (44, "kvardek kvar")+ , (45, "kvardek kvin")+ , (46, "kvardek ses")+ , (47, "kvardek sep")+ , (48, "kvardek ok")+ , (49, "kvardek naŭ")+ , (50, "kvindek")+ , (51, "kvindek unu")+ , (52, "kvindek du")+ , (53, "kvindek tri")+ , (54, "kvindek kvar")+ , (55, "kvindek kvin")+ , (56, "kvindek ses")+ , (57, "kvindek sep")+ , (58, "kvindek ok")+ , (59, "kvindek naŭ")+ , (60, "sesdek")+ , (61, "sesdek unu")+ , (62, "sesdek du")+ , (63, "sesdek tri")+ , (64, "sesdek kvar")+ , (65, "sesdek kvin")+ , (66, "sesdek ses")+ , (67, "sesdek sep")+ , (68, "sesdek ok")+ , (69, "sesdek naŭ")+ , (70, "sepdek")+ , (71, "sepdek unu")+ , (72, "sepdek du")+ , (73, "sepdek tri")+ , (74, "sepdek kvar")+ , (75, "sepdek kvin")+ , (76, "sepdek ses")+ , (77, "sepdek sep")+ , (78, "sepdek ok")+ , (79, "sepdek naŭ")+ , (80, "okdek")+ , (81, "okdek unu")+ , (82, "okdek du")+ , (83, "okdek tri")+ , (84, "okdek kvar")+ , (85, "okdek kvin")+ , (86, "okdek ses")+ , (87, "okdek sep")+ , (88, "okdek ok")+ , (89, "okdek naŭ")+ , (90, "naŭdek")+ , (91, "naŭdek unu")+ , (92, "naŭdek du")+ , (93, "naŭdek tri")+ , (94, "naŭdek kvar")+ , (95, "naŭdek kvin")+ , (96, "naŭdek ses")+ , (97, "naŭdek sep")+ , (98, "naŭdek ok")+ , (99, "naŭdek naŭ")+ , (100, "cent")+ ]+ )+ ]
− src-test/Text/Numeral/Language/ES/TestData.hs
@@ -1,280 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] es--[@ISO639-2B@] spa--[@ISO639-3@] spa--[@Native name@] Español--[@English name@] Spanish--}--module Text.Numeral.Language.ES.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num, (+), Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Misc ( dec )-import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources:--- http://www.sf.airnet.ne.jp/~ts/language/number/spanish.html--- http://spanish.about.com/cs/forbeginners/a/cardinalnum_beg.htm--- http://www.learn-spanish-help.com/count-in-spanish.html--- http://www.donquijote.org/spanishlanguage/numbers/numbers1.asp--- http://en.wiktionary.org/wiki/Appendix:Spanish_numerals--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "neuter"- , neuter defaultInflection- , [ (-3, "menos tres")- , (-2, "menos dos")- , (-1, "menos uno")- , (0, "cero")- , (1, "uno")- , (2, "dos")- , (3, "tres")- , (4, "cuatro")- , (5, "cinco")- , (6, "seis")- , (7, "siete")- , (8, "ocho")- , (9, "nueve")- , (10, "diez")- , (11, "once")- , (12, "doce")- , (13, "trece")- , (14, "catorce")- , (15, "quince")- , (16, "dieciséis")- , (17, "diecisiete")- , (18, "dieciocho")- , (19, "diecinueve")- , (20, "veinte")- , (21, "veintiuno")- , (22, "veintidós")- , (23, "veintitrés")- , (24, "veinticuatro")- , (25, "veinticinco")- , (26, "veintiséis")- , (27, "veintisiete")- , (28, "veintiocho")- , (29, "veintinueve")- , (30, "treinta")- , (31, "treinta y uno")- , (32, "treinta y dos")- , (33, "treinta y tres")- , (34, "treinta y cuatro")- , (35, "treinta y cinco")- , (36, "treinta y seis")- , (37, "treinta y siete")- , (38, "treinta y ocho")- , (39, "treinta y nueve")- , (40, "cuarenta")- , (41, "cuarenta y uno")- , (42, "cuarenta y dos")- , (43, "cuarenta y tres")- , (44, "cuarenta y cuatro")- , (45, "cuarenta y cinco")- , (46, "cuarenta y seis")- , (47, "cuarenta y siete")- , (48, "cuarenta y ocho")- , (49, "cuarenta y nueve")- , (50, "cincuenta")- , (51, "cincuenta y uno")- , (52, "cincuenta y dos")- , (53, "cincuenta y tres")- , (54, "cincuenta y cuatro")- , (55, "cincuenta y cinco")- , (56, "cincuenta y seis")- , (57, "cincuenta y siete")- , (58, "cincuenta y ocho")- , (59, "cincuenta y nueve")- , (60, "sesenta")- , (61, "sesenta y uno")- , (62, "sesenta y dos")- , (63, "sesenta y tres")- , (64, "sesenta y cuatro")- , (65, "sesenta y cinco")- , (66, "sesenta y seis")- , (67, "sesenta y siete")- , (68, "sesenta y ocho")- , (69, "sesenta y nueve")- , (70, "setenta")- , (71, "setenta y uno")- , (72, "setenta y dos")- , (73, "setenta y tres")- , (74, "setenta y cuatro")- , (75, "setenta y cinco")- , (76, "setenta y seis")- , (77, "setenta y siete")- , (78, "setenta y ocho")- , (79, "setenta y nueve")- , (80, "ochenta")- , (81, "ochenta y uno")- , (82, "ochenta y dos")- , (83, "ochenta y tres")- , (84, "ochenta y cuatro")- , (85, "ochenta y cinco")- , (86, "ochenta y seis")- , (87, "ochenta y siete")- , (88, "ochenta y ocho")- , (89, "ochenta y nueve")- , (90, "noventa")- , (91, "noventa y uno")- , (92, "noventa y dos")- , (93, "noventa y tres")- , (94, "noventa y cuatro")- , (95, "noventa y cinco")- , (96, "noventa y seis")- , (97, "noventa y siete")- , (98, "noventa y ocho")- , (99, "noventa y nueve")- , (100, "cien")- , (101, "ciento uno")- , (103, "ciento tres")- , (114, "ciento catorce")- , (127, "ciento veintisiete")- , (165, "ciento sesenta y cinco")- , (198, "ciento noventa y ocho")- , (199, "ciento noventa y nueve")- , (200, "doscientos")- , (221, "doscientos veintiuno")- , (256, "doscientos cincuenta y seis")- , (300, "trescientos")- , (400, "cuatrocientos")- , (496, "cuatrocientos noventa y seis")- , (500, "quinientos")- , (512, "quinientos doce")- , (600, "seiscientos")- , (666, "seiscientos sesenta y seis")- , (700, "setecientos")- , (800, "ochocientos")- , (900, "novecientos")- , (1000, "mil")- , (1002, "mil dos")- , (1024, "mil veinticuatro")- , (1729, "mil setecientos veintinueve")- , (2000, "dos mil")- , (2800, "dos mil ochocientos")- , (3000, "tres mil")- , (4000, "cuatro mil")- , (5000, "cinco mil")- , (6000, "seis mil")- , (7000, "siete mil")- , (8000, "ocho mil")- , (9000, "nueve mil")- , (dec 4, "diez mil")- , (15000, "quince mil")- , (18000, "dieciocho mil")- , (22000, "veintidós mil")- , (28000, "veintiocho mil")- , (37000, "treinta y siete mil")- , (85000, "ochenta y cinco mil")- , (dec 5, "cien mil")- , (108000, "ciento ocho mil")- , (160000, "ciento sesenta mil")- , (585000, "quinientos ochenta y cinco mil")- , (999000, "novecientos noventa y nueve mil")- , (dec 6, "un millón")- , (dec 6 + 1, "un millón uno")- , (21 ⋅ dec 6 + 21, "veintiún millones veintiuno")- , (500 ⋅ dec 6, "quinientos millones")- , (521 ⋅ dec 6 + 1, "quinientos veintiún millones uno")- , (dec 7, "diez millones")- , (dec 8, "cien millones")- , (dec 9, "mil millones")- , (dec 10, "diez mil millones")- , (dec 11, "cien mil millones")- , (dec 12, "un billón")- , (dec 18, "un trillón")- , (dec 24, "un cuatrillón")- , (15936535897932384626433832795, "quince mil novecientos treinta y seis cuatrillones quinientos treinta y cinco mil ochocientos noventa y siete trillones novecientos treinta y dos mil trescientos ochenta y cuatro billones seiscientos veintiséis mil cuatrocientos treinta y tres millones ochocientos treinta y dos mil setecientos noventa y cinco")- , (dec 30, "un quintillón")- , (31415926535897932384626433832795, "treinta y un quintillones cuatrocientos quince mil novecientos veintiséis cuatrillones quinientos treinta y cinco mil ochocientos noventa y siete trillones novecientos treinta y dos mil trescientos ochenta y cuatro billones seiscientos veintiséis mil cuatrocientos treinta y tres millones ochocientos treinta y dos mil setecientos noventa y cinco")- , (dec 36, "un sextillón")- , (dec 42, "un septillón")- , (dec 48, "un octillón")- , (dec 54, "un nonillón")- , (dec 60, "un decillón")- , (dec 66, "un undecillón")- , (dec 72, "un duodecillón")- , (dec 78, "un tredecillón")- , (dec 84, "un cuatordecillón")- , (dec 90, "un quindecillón")- , (dec 96, "un sexdecillón")- , (dec 102, "un septendecillón")- , (dec 108, "un octodecillón")- , (dec 114, "un novendecillón")- , (dec 120, "un vigintillón")- ]- )- , ( "feminine"- , feminine defaultInflection- , [ (1, "una")- , (11, "once")- , (21, "veintiuna")- , (31, "treinta y una")- , (41, "cuarenta y una")- , (51, "cincuenta y una")- , (61, "sesenta y una")- , (71, "setenta y una")- , (81, "ochenta y una")- , (91, "noventa y una")- , (100, "cien")- , (101, "ciento una")- , (200, "doscientas")- , (221, "doscientas veintiuna")- , (300, "trescientas")- , (400, "cuatrocientas")- , (500, "quinientas")- , (600, "seiscientas")- , (700, "setecientas")- , (800, "ochocientas")- , (900, "novecientas")- , (dec 6, "un millón")- , (dec 6 + 1, "un millón una")- , (21 ⋅ dec 6 + 21, "veintiún millones veintiuna")- ]- )- , ( "masculine"- , masculine defaultInflection- , [ (1, "un")- , (11, "once")- , (21, "veintiún")- , (31, "treinta y un")- , (41, "cuarenta y un")- , (51, "cincuenta y un")- , (61, "sesenta y un")- , (71, "setenta y un")- , (81, "ochenta y un")- , (91, "noventa y un")- , (100, "cien")- , (101, "ciento un")- , (200, "doscientos")- , (221, "doscientos veintiún")- , (dec 6, "un millón")- , (dec 6 + 1, "un millón un")- , (21 ⋅ dec 6 + 21, "veintiún millones veintiún")- ]- )- ]
− src-test/Text/Numeral/Language/ET/TestData.hs
@@ -1,220 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] et--[@ISO639-2@] est--[@ISO639-3@] est--[@Native name@] eesti keel--[@English name@] Estonian--}--module Text.Numeral.Language.ET.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "null")- , (1, "üks")- , (2, "kaks")- , (3, "kolm")- , (4, "neli")- , (5, "viis")- , (6, "kuus")- , (7, "seitse")- , (8, "kaheksa")- , (9, "üheksa")- , (10, "kümme")- , (11, "üksteist")- , (12, "kaksteist")- , (13, "kolmteist")- , (14, "neliteist")- , (15, "viisteist")- , (16, "kuusteist")- , (17, "seitseteist")- , (18, "kaheksateist")- , (19, "üheksateist")- , (20, "kakskümmend")- , (21, "kakskümmend üks")- , (22, "kakskümmend kaks")- , (23, "kakskümmend kolm")- , (24, "kakskümmend neli")- , (25, "kakskümmend viis")- , (26, "kakskümmend kuus")- , (27, "kakskümmend seitse")- , (28, "kakskümmend kaheksa")- , (29, "kakskümmend üheksa")- , (30, "kolmkümmend")- , (31, "kolmkümmend üks")- , (32, "kolmkümmend kaks")- , (33, "kolmkümmend kolm")- , (34, "kolmkümmend neli")- , (35, "kolmkümmend viis")- , (36, "kolmkümmend kuus")- , (37, "kolmkümmend seitse")- , (38, "kolmkümmend kaheksa")- , (39, "kolmkümmend üheksa")- , (40, "nelikümmend")- , (41, "nelikümmend üks")- , (42, "nelikümmend kaks")- , (43, "nelikümmend kolm")- , (44, "nelikümmend neli")- , (45, "nelikümmend viis")- , (46, "nelikümmend kuus")- , (47, "nelikümmend seitse")- , (48, "nelikümmend kaheksa")- , (49, "nelikümmend üheksa")- , (50, "viiskümmend")- , (51, "viiskümmend üks")- , (52, "viiskümmend kaks")- , (53, "viiskümmend kolm")- , (54, "viiskümmend neli")- , (55, "viiskümmend viis")- , (56, "viiskümmend kuus")- , (57, "viiskümmend seitse")- , (58, "viiskümmend kaheksa")- , (59, "viiskümmend üheksa")- , (61, "kuuskümmend üks")- , (62, "kuuskümmend kaks")- , (63, "kuuskümmend kolm")- , (64, "kuuskümmend neli")- , (65, "kuuskümmend viis")- , (66, "kuuskümmend kuus")- , (67, "kuuskümmend seitse")- , (68, "kuuskümmend kaheksa")- , (69, "kuuskümmend üheksa")- , (71, "seitsekümmend üks")- , (72, "seitsekümmend kaks")- , (73, "seitsekümmend kolm")- , (74, "seitsekümmend neli")- , (75, "seitsekümmend viis")- , (76, "seitsekümmend kuus")- , (77, "seitsekümmend seitse")- , (78, "seitsekümmend kaheksa")- , (79, "seitsekümmend üheksa")- , (81, "kaheksakümmend üks")- , (82, "kaheksakümmend kaks")- , (83, "kaheksakümmend kolm")- , (84, "kaheksakümmend neli")- , (85, "kaheksakümmend viis")- , (86, "kaheksakümmend kuus")- , (87, "kaheksakümmend seitse")- , (88, "kaheksakümmend kaheksa")- , (89, "kaheksakümmend üheksa")- , (91, "üheksakümmend üks")- , (92, "üheksakümmend kaks")- , (93, "üheksakümmend kolm")- , (94, "üheksakümmend neli")- , (95, "üheksakümmend viis")- , (96, "üheksakümmend kuus")- , (97, "üheksakümmend seitse")- , (98, "üheksakümmend kaheksa")- , (99, "üheksakümmend üheksa")- , (100, "sada")- , (101, "sadaüks")- , (102, "sadakaks")- , (103, "sadakolm")- , (104, "sadaneli")- , (105, "sadaviis")- , (106, "sadakuus")- , (107, "sadaseitse")- , (108, "sadakaheksa")- , (109, "sadaüheksa")- , (110, "sadakümme")- , (123, "sadakakskümmend kolm")- , (200, "kakssada")- , (300, "kolmsada")- , (321, "kolmsadakakskümmend üks")- , (400, "nelisada")- , (500, "viissada")- , (600, "kuussada")- , (700, "seitsesada")- , (800, "kaheksasada")- , (900, "üheksasada")- , (909, "üheksasadaüheksa")- , (990, "üheksasadaüheksakümmend")- , (999, "üheksasadaüheksakümmend üheksa")- , (1000, "tuhat")- , (1001, "tuhatüks")- , (1008, "tuhatkaheksa")- , (1234, "tuhatkakssadakolmkümmend neli")- , (2000, "kaks tuhat")- , (3000, "kolm tuhat")- , (4000, "neli tuhat")- , (4321, "neli tuhatkolmsadakakskümmend üks")- , (5000, "viis tuhat")- , (6000, "kuus tuhat")- , (7000, "seitse tuhat")- , (8000, "kaheksa tuhat")- , (9000, "üheksa tuhat")- , (10000, "kümme tuhat")- , (12345, "kaksteist tuhatkolmsadanelikümmend viis")- , (20000, "kakskümmend tuhat")- , (30000, "kolmkümmend tuhat")- , (40000, "nelikümmend tuhat")- , (50000, "viiskümmend tuhat")- , (54321, "viiskümmend neli tuhatkolmsadakakskümmend üks")- , (60000, "kuuskümmend tuhat")- , (70000, "seitsekümmend tuhat")- , (80000, "kaheksakümmend tuhat")- , (90000, "üheksakümmend tuhat")- , (100000, "sada tuhat")- , (123456, "sadakakskümmend kolm tuhatnelisadaviiskümmend kuus")- , (200000, "kakssada tuhat")- , (300000, "kolmsada tuhat")- , (400000, "nelisada tuhat")- , (500000, "viissada tuhat")- , (600000, "kuussada tuhat")- , (654321, "kuussadaviiskümmend neli tuhatkolmsadakakskümmend üks")- , (700000, "seitsesada tuhat")- , (800000, "kaheksasada tuhat")- , (900000, "üheksasada tuhat")- , (1000000, "miljon")- , (1000001, "miljonüks")- , (1234567, "miljonkakssadakolmkümmend neli tuhatviissadakuuskümmend seitse")- , (2000000, "kaks miljonit")- , (3000000, "kolm miljonit")- , (4000000, "neli miljonit")- , (5000000, "viis miljonit")- , (6000000, "kuus miljonit")- , (7000000, "seitse miljonit")- , (7654321, "seitse miljonitkuussadaviiskümmend neli tuhatkolmsadakakskümmend üks")- , (8000000, "kaheksa miljonit")- , (9000000, "üheksa miljonit")- , (1000000000, "miljard")- , (1000000001, "miljardüks")- , (2000000000, "kaks miljard")- , (3000000000, "kolm miljard")- , (4000000000, "neli miljard")- , (5000000000, "viis miljard")- , (6000000000, "kuus miljard")- , (7000000000, "seitse miljard")- , (8000000000, "kaheksa miljard")- , (9000000000, "üheksa miljard")- , (1000000000000, "triljon")- , (1000000000001, "triljonüks")- ]- )- ]
+ src-test/Text/Numeral/Language/FAO/TestData.hs view
@@ -0,0 +1,219 @@+{-|+[@ISO639-1@] fo++[@ISO639-2@] fao++[@ISO639-3@] fao++[@Native name@] føroyskt++[@English name@] Faroese+-}+module Text.Numeral.Language.FAO.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-faroese/en/fao/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "null")+ , (1, "ein")+ , (2, "tveir")+ , (3, "tríggir")+ , (4, "fýra")+ , (5, "fimm")+ , (6, "seks")+ , (7, "sjey")+ , (8, "átta")+ , (9, "níggju")+ , (10, "tíggju")+ , (11, "ellivu")+ , (12, "tólv")+ , (13, "trettan")+ , (14, "fjúrtan")+ , (15, "fimtan")+ , (16, "sekstan")+ , (17, "seytjan")+ , (18, "átjan")+ , (19, "nítjan")+ , (20, "tjúgu")+ , (21, "ein og tjúgu")+ , (22, "tveir og tjúgu")+ , (23, "tríggir og tjúgu")+ , (24, "fýra og tjúgu")+ , (25, "fimm og tjúgu")+ , (26, "seks og tjúgu")+ , (27, "sjey og tjúgu")+ , (28, "átta og tjúgu")+ , (29, "níggju og tjúgu")+ , (30, "tríati")+ , (31, "ein og tríati")+ , (32, "tveir og tríati")+ , (33, "tríggir og tríati")+ , (34, "fýra og tríati")+ , (35, "fimm og tríati")+ , (36, "seks og tríati")+ , (37, "sjey og tríati")+ , (38, "átta og tríati")+ , (39, "níggju og tríati")+ , (40, "fýrati")+ , (41, "ein og fýrati")+ , (42, "tveir og fýrati")+ , (43, "tríggir og fýrati")+ , (44, "fýra og fýrati")+ , (45, "fimm og fýrati")+ , (46, "seks og fýrati")+ , (47, "sjey og fýrati")+ , (48, "átta og fýrati")+ , (49, "níggju og fýrati")+ , (50, "fimmti")+ , (51, "ein og fimmti")+ , (52, "tveir og fimmti")+ , (53, "tríggir og fimmti")+ , (54, "fýra og fimmti")+ , (55, "fimm og fimmti")+ , (56, "seks og fimmti")+ , (57, "sjey og fimmti")+ , (58, "átta og fimmti")+ , (59, "níggju og fimmti")+ , (60, "seksti")+ , (61, "ein og seksti")+ , (62, "tveir og seksti")+ , (63, "tríggir og seksti")+ , (64, "fýra og seksti")+ , (65, "fimm og seksti")+ , (66, "seks og seksti")+ , (67, "sjey og seksti")+ , (68, "átta og seksti")+ , (69, "níggju og seksti")+ , (70, "sjeyti")+ , (71, "ein og sjeyti")+ , (72, "tveir og sjeyti")+ , (73, "tríggir og sjeyti")+ , (74, "fýra og sjeyti")+ , (75, "fimm og sjeyti")+ , (76, "seks og sjeyti")+ , (77, "sjey og sjeyti")+ , (78, "átta og sjeyti")+ , (79, "níggju og sjeyti")+ , (80, "áttati")+ , (81, "ein og áttati")+ , (82, "tveir og áttati")+ , (83, "tríggir og áttati")+ , (84, "fýra og áttati")+ , (85, "fimm og áttati")+ , (86, "seks og áttati")+ , (87, "sjey og áttati")+ , (88, "átta og áttati")+ , (89, "níggju og áttati")+ , (90, "níti")+ , (91, "ein og níti")+ , (92, "tveir og níti")+ , (93, "tríggir og níti")+ , (94, "fýra og níti")+ , (95, "fimm og níti")+ , (96, "seks og níti")+ , (97, "sjey og níti")+ , (98, "átta og níti")+ , (99, "níggju og níti")+ , (100, "hundrað")+ , (101, "hundrað og ein")+ , (102, "hundrað og tveir")+ , (103, "hundrað og tríggir")+ , (104, "hundrað og fýra")+ , (105, "hundrað og fimm")+ , (106, "hundrað og seks")+ , (107, "hundrað og sjey")+ , (108, "hundrað og átta")+ , (109, "hundrað og níggju")+ , (110, "hundrað og tíggju")+ , (123, "hundrað og tríggir og tjúgu")+ , (200, "tvey hundrað")+ , (300, "trý hundrað")+ , (321, "trý hundrað og ein og tjúgu")+ , (400, "fýra hundrað")+ , (500, "fimm hundrað")+ , (600, "seks hundrað")+ , (700, "sjey hundrað")+ , (800, "átta hundrað")+ , (900, "níggju hundrað")+ , (909, "níggju hundrað og níggju")+ , (990, "níggju hundrað og níti")+ , (999, "níggju hundrað og níggju og níti")+ , (1000, "túsund")+ , (1001, "eitt túsund og ein")+ , (1008, "eitt túsund og átta")+ , (1234, "eitt túsund tvey hundrað og fýra og tríati")+ , (2000, "tvey túsund")+ , (3000, "trý túsund")+ , (4000, "fýra túsund")+ , (4321, "fýra túsund trý hundrað og ein og tjúgu")+ , (5000, "fimm túsund")+ , (6000, "seks túsund")+ , (7000, "sjey túsund")+ , (8000, "átta túsund")+ , (9000, "níggju túsund")+ , (10000, "tíggju túsund")+ , (12345, "tólv túsund trý hundrað og fimm og fýrati")+ , (20000, "tjúgu túsund")+ , (30000, "tríati túsund")+ , (40000, "fýrati túsund")+ , (50000, "fimmti túsund")+ , (54321, "fýra og fimmti túsund trý hundrað og ein og tjúgu")+ , (60000, "seksti túsund")+ , (70000, "sjeyti túsund")+ , (80000, "áttati túsund")+ , (90000, "níti túsund")+ , (100000, "hundrað túsund")+ , (123456, "hundrað og tríggir og tjúgu túsund og fýra hundrað og seks og fimmti")+ , (200000, "tvey hundrað túsund")+ , (300000, "trý hundrað túsund")+ , (400000, "fýra hundrað túsund")+ , (500000, "fimm hundrað túsund")+ , (600000, "seks hundrað túsund")+ , (654321, "seks hundrað og fýra og fimmti túsund trý hundrað og ein og tjúgu")+ , (700000, "sjey hundrað túsund")+ , (800000, "átta hundrað túsund")+ , (900000, "níggju hundrað túsund")+ , (1000000, "ein millión")+ , (1000001, "ein millión og ein")+ , (1234567, "ein millión tvey hundrað og fýra og tríati túsund og fimm hundrað og sjey og seksti")+ , (2000000, "tvær milliónir")+ , (3000000, "tríggjar milliónir")+ , (4000000, "fýra milliónir")+ , (5000000, "fimm milliónir")+ , (6000000, "seks milliónir")+ , (7000000, "sjey milliónir")+ , (7654321, "sjey milliónir og seks hundrað og fýra og fimmti túsund trý hundrað og ein og tjúgu")+ , (8000000, "átta milliónir")+ , (9000000, "níggju milliónir")+ , (1000000000, "ein milliard")+ , (1000000001, "ein milliard og ein")+ , (2000000000, "tveir milliardir")+ , (3000000000, "tríggir milliardir")+ , (4000000000, "fýra milliardir")+ , (5000000000, "fimm milliardir")+ , (6000000000, "seks milliardir")+ , (7000000000, "sjey milliardir")+ , (8000000000, "átta milliardir")+ , (9000000000, "níggju milliardir")+ ]+ )+ ]
− src-test/Text/Numeral/Language/FI/TestData.hs
@@ -1,1827 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] fi--[@ISO639-2@] fin--[@ISO639-3@] fin--[@Native name@] suomi--[@English name@] Finnish--}--module Text.Numeral.Language.FI.TestData- ( cardinals- , ordinals- , multiplicatives- , multipliers- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Function ( ($) )-import "base" Prelude ( Integral, (+) )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources:--- http://www.marijn.org/everything-is-4/counting-0-to-100/finnish--- http://www.languagesandnumbers.com/how-to-count-in-finnish/en/fin/--- http://en.wikipedia.org/wiki/Finnish_numerals--- http://mylanguages.org/finnish_numbers.php--- http://users.jyu.fi/~pamakine/kieli/suomi/numeraalit/numeroten.html--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "singular nominative"- , singular $ nominative defaultInflection- , [ (0, "nolla")- , (1, "yksi")- , (2, "kaksi")- , (3, "kolme")- , (4, "neljä")- , (5, "viisi")- , (6, "kuusi")- , (7, "seitsemän")- , (8, "kahdeksan")- , (9, "yhdeksän")- , (10, "kymmenen")- , (11, "yksitoista")- , (12, "kaksitoista")- , (13, "kolmetoista")- , (14, "neljätoista")- , (15, "viisitoista")- , (16, "kuusitoista")- , (17, "seitsemäntoista")- , (18, "kahdeksantoista")- , (19, "yhdeksäntoista")- , (20, "kaksikymmentä")- , (21, "kaksikymmentäyksi")- , (22, "kaksikymmentäkaksi")- , (23, "kaksikymmentäkolme")- , (24, "kaksikymmentäneljä")- , (25, "kaksikymmentäviisi")- , (26, "kaksikymmentäkuusi")- , (27, "kaksikymmentäseitsemän")- , (28, "kaksikymmentäkahdeksan")- , (29, "kaksikymmentäyhdeksän")- , (30, "kolmekymmentä")- , (31, "kolmekymmentäyksi")- , (32, "kolmekymmentäkaksi")- , (33, "kolmekymmentäkolme")- , (34, "kolmekymmentäneljä")- , (35, "kolmekymmentäviisi")- , (36, "kolmekymmentäkuusi")- , (37, "kolmekymmentäseitsemän")- , (38, "kolmekymmentäkahdeksan")- , (39, "kolmekymmentäyhdeksän")- , (40, "neljäkymmentä")- , (41, "neljäkymmentäyksi")- , (42, "neljäkymmentäkaksi")- , (43, "neljäkymmentäkolme")- , (44, "neljäkymmentäneljä")- , (45, "neljäkymmentäviisi")- , (46, "neljäkymmentäkuusi")- , (47, "neljäkymmentäseitsemän")- , (48, "neljäkymmentäkahdeksan")- , (49, "neljäkymmentäyhdeksän")- , (50, "viisikymmentä")- , (51, "viisikymmentäyksi")- , (52, "viisikymmentäkaksi")- , (53, "viisikymmentäkolme")- , (54, "viisikymmentäneljä")- , (55, "viisikymmentäviisi")- , (56, "viisikymmentäkuusi")- , (57, "viisikymmentäseitsemän")- , (58, "viisikymmentäkahdeksan")- , (59, "viisikymmentäyhdeksän")- , (60, "kuusikymmentä")- , (61, "kuusikymmentäyksi")- , (62, "kuusikymmentäkaksi")- , (63, "kuusikymmentäkolme")- , (64, "kuusikymmentäneljä")- , (65, "kuusikymmentäviisi")- , (66, "kuusikymmentäkuusi")- , (67, "kuusikymmentäseitsemän")- , (68, "kuusikymmentäkahdeksan")- , (69, "kuusikymmentäyhdeksän")- , (70, "seitsemänkymmentä")- , (71, "seitsemänkymmentäyksi")- , (72, "seitsemänkymmentäkaksi")- , (73, "seitsemänkymmentäkolme")- , (74, "seitsemänkymmentäneljä")- , (75, "seitsemänkymmentäviisi")- , (76, "seitsemänkymmentäkuusi")- , (77, "seitsemänkymmentäseitsemän")- , (78, "seitsemänkymmentäkahdeksan")- , (79, "seitsemänkymmentäyhdeksän")- , (80, "kahdeksankymmentä")- , (81, "kahdeksankymmentäyksi")- , (82, "kahdeksankymmentäkaksi")- , (83, "kahdeksankymmentäkolme")- , (84, "kahdeksankymmentäneljä")- , (85, "kahdeksankymmentäviisi")- , (86, "kahdeksankymmentäkuusi")- , (87, "kahdeksankymmentäseitsemän")- , (88, "kahdeksankymmentäkahdeksan")- , (89, "kahdeksankymmentäyhdeksän")- , (90, "yhdeksänkymmentä")- , (91, "yhdeksänkymmentäyksi")- , (92, "yhdeksänkymmentäkaksi")- , (93, "yhdeksänkymmentäkolme")- , (94, "yhdeksänkymmentäneljä")- , (95, "yhdeksänkymmentäviisi")- , (96, "yhdeksänkymmentäkuusi")- , (97, "yhdeksänkymmentäseitsemän")- , (98, "yhdeksänkymmentäkahdeksan")- , (99, "yhdeksänkymmentäyhdeksän")- , (100, "sata")- , (101, "satayksi")- , (123, "satakaksikymmentäkolme")- , (200, "kaksisataa")- , (300, "kolmesataa")- , (357, "kolmesataaviisikymmentäseitsemän")- , (400, "neljäsataa")- , (500, "viisisataa")- , (567, "viisisataakuusikymmentäseitsemän")- , (600, "kuusisataa")- , (700, "seitsemänsataa")- , (800, "kahdeksansataa")- , (900, "yhdeksänsataa")- , (999, "yhdeksänsataayhdeksänkymmentäyhdeksän")- , (1000, "tuhat")- , (1001, "tuhatyksi")- , (2000, "kaksituhatta")- , (3000, "kolmetuhatta")- , (3456, "kolmetuhattaneljäsataaviisikymmentäkuusi")- , (3721, "kolmetuhattaseitsemänsataakaksikymmentäyksi")- , (4000, "neljätuhatta")- , (5000, "viisituhatta")- , (6000, "kuusituhatta")- , (7000, "seitsemäntuhatta")- , (8000, "kahdeksantuhatta")- , (9000, "yhdeksäntuhatta")- , (10000, "kymmenentuhatta")- , (11000, "toistatuhatta")- , (12000, "toistakaksituhatta")- , (13000, "toistakolmetuhatta")- , (dec 5, "satatuhatta")- , (2 ⋅ dec 5, "kaksisataatuhatta")- , (dec 6, "miljoona")- , (dec 6 + 1, "miljoonayksi")- , (2 ⋅ dec 6, "kaksimiljoonaa")- , (32534756, "kolmekymmentäkaksimiljoonaaviisisataakolmekymmentäneljätuhattaseitsemänsataaviisikymmentäkuusi")- , (dec 9, "miljardi")- , (2 ⋅ dec 9, "kaksimiljardia")- , (3 ⋅ dec 9, "kolmemiljardia")- , (dec 12, "biljoona")- , (3 ⋅ dec 12, "kolmebiljoonaa")- ]- )- , ( "singular accusative"- , singular $ accusative defaultInflection- , [ (0, "nolla")- , (1, "yksi")- , (2, "kaksi")- , (3, "kolme")- , (4, "neljä")- , (5, "viisi")- , (6, "kuusi")- , (7, "seitsemän")- , (8, "kahdeksan")- , (9, "yhdeksän")- , (10, "kymmenen")- , (11, "yksitoista")- , (12, "kaksitoista")- , (13, "kolmetoista")- , (14, "neljätoista")- , (15, "viisitoista")- , (16, "kuusitoista")- , (17, "seitsemäntoista")- , (18, "kahdeksantoista")- , (19, "yhdeksäntoista")- , (20, "kaksikymmentä")- , (21, "kaksikymmentäyksi")- , (100, "sata")- , (1000, "tuhat")- ]- )- , ( "singular genitive"- , singular $ genitive defaultInflection- , [ (0, "nollan")- , (1, "yhden")- , (2, "kahden")- , (3, "kolmen")- , (4, "neljän")- , (5, "viiden")- , (6, "kuuden")- , (7, "seitsemän")- , (8, "kahdeksan")- , (9, "yhdeksän")- , (10, "kymmenen")- , (11, "yhdentoista")- , (12, "kahdentoista")- , (13, "kolmentoista")- , (14, "neljäntoista")- , (15, "viidentoista")- , (16, "kuudentoista")- , (17, "seitsemäntoista")- , (18, "kahdeksantoista")- , (19, "yhdeksäntoista")- , (20, "kahdenkymmenen")- , (21, "kahdenkymmenenyhden")- , (100, "sadan")- , (357, "kolmensadanviidenkymmenenseitsemän")- , (1000, "tuhannen")- ]- )- , ( "singular partitive"- , singular $ partitive defaultInflection- , [ (0, "nollaa")- , (1, "yhtä")- , (2, "kahta")- , (3, "kolmea")- , (4, "neljää")- , (5, "viittä")- , (6, "kuutta")- , (7, "seitsemää")- , (8, "kahdeksaa")- , (9, "yhdeksää")- , (10, "kymmentä")- , (11, "yhtätoista")- , (12, "kahtatoista")- , (13, "kolmeatoista")- , (14, "neljäätoista")- , (15, "viittätoista")- , (16, "kuuttatoista")- , (17, "seitsemäätoista")- , (18, "kahdeksaatoista")- , (19, "yhdeksäätoista")- , (20, "kahtakymmentä")- , (21, "kahtakymmentäyhtä")- , (100, "sataa")- , (357, "kolmeasataaviittäkymmentäseitsemää")- , (1000, "tuhatta")- ]- )- , ( "singular essive"- , singular $ essive defaultInflection- , [ (0, "nollana")- , (1, "yhtenä")- , (2, "kahtena")- , (3, "kolmena")- , (4, "neljänä")- , (5, "viitenä")- , (6, "kuutena")- , (7, "seitsemänä")- , (8, "kahdeksana")- , (9, "yhdeksänä")- , (10, "kymmenenä")- , (11, "yhtenätoista")- , (12, "kahtenatoista")- , (13, "kolmenatoista")- , (14, "neljänätoista")- , (15, "viitenätoista")- , (16, "kuutenatoista")- , (17, "seitsemänätoista")- , (18, "kahdeksanatoista")- , (19, "yhdeksänätoista")- , (20, "kahtenakymmenenä")- , (21, "kahdessakymmenessäyhdessä")- , (100, "satana")- , (357, "kolmenasatanaviitenäkymmenenäseitsemänä")- , (1000, "tuhantena")- ]- )- , ( "singular translative"- , singular $ translative defaultInflection- , [ (0, "nollaksi")- , (1, "yhdeksi")- , (2, "kahdeksi")- , (3, "kolmeksi")- , (4, "neljäksi")- , (5, "viideksi")- , (6, "kuudeksi")- , (7, "seitsemäksi")- , (8, "kahdeksaksi")- , (9, "yhdeksäksi")- , (10, "kymmeneksi")- , (11, "yhdeksitoista")- , (12, "kahdeksitoista")- , (13, "kolmeksitoista")- , (14, "neljäksitoista")- , (15, "viideksitoista")- , (16, "kuudeksitoista")- , (17, "seitsemäksitoista")- , (18, "kahdeksaksitoista")- , (19, "yhdeksäksitoista")- , (20, "kahdeksikymmeneksi")- , (21, "kahdeksikymmeneksiyhdeksi")- , (100, "sadaksi")- , (1000, "tuhanneksi")- ]- )- , ( "singular locative inessive"- , singular $ locativeInessive defaultInflection- , [ (0, "nollassa")- , (1, "yhdessä")- , (2, "kahdessa")- , (3, "kolmessa")- , (4, "neljässä")- , (5, "viidessä")- , (6, "kuudessa")- , (7, "seitsemässä")- , (8, "kahdeksassa")- , (9, "yhdeksässä")- , (10, "kymmenessä")- , (11, "yhdessätoista")- , (12, "kahdessatoista")- , (13, "kolmessatoista")- , (14, "neljässätoista")- , (15, "viidessätoista")- , (16, "kuudessatoista")- , (17, "seitsemässätoista")- , (18, "kahdeksassatoista")- , (19, "yhdeksässätoista")- , (20, "kahdessakymmenessä")- , (21, "kahdessakymmenessäyhdessä")- , (100, "sadassa")- , (1000, "tuhannessa")- ]- )- , ( "singular locative elative"- , singular $ locativeElative defaultInflection- , [ (0, "nollasta")- , (1, "yhdestä")- , (2, "kahdesta")- , (3, "kolmesta")- , (4, "neljästä")- , (5, "viidestä")- , (6, "kuudesta")- , (7, "seitsemästä")- , (8, "kahdeksasta")- , (9, "yhdeksästä")- , (10, "kymmenestä")- , (11, "yhdestätoista")- , (12, "kahdestatoista")- , (13, "kolmestatoista")- , (14, "neljästätoista")- , (15, "viidestätoista")- , (16, "kuudestatoista")- , (17, "seitsemästätoista")- , (18, "kahdeksastatoista")- , (19, "yhdeksästätoista")- , (20, "kahdestakymmenestä")- , (21, "kahdestakymmenestäyhdestä")- , (100, "sadasta")- , (1000, "tuhannesta")- ]- )- , ( "singular locative illative"- , singular $ locativeIllative defaultInflection- , [ (0, "nollaan")- , (1, "yhteen")- , (2, "kahteen")- , (3, "kolmeen")- , (4, "neljään")- , (5, "viiteen")- , (6, "kuuteen")- , (7, "seitsemään")- , (8, "kahdeksaan")- , (9, "yhdeksään")- , (10, "kymmeneen")- , (11, "yhteentoista")- , (12, "kahteentoista")- , (13, "kolmeentoista")- , (14, "neljääntoista")- , (15, "viiteentoista")- , (16, "kuuteentoista")- , (17, "seitsemääntoista")- , (18, "kahdeksaantoista")- , (19, "yhdeksääntoista")- , (20, "kahteenkymmeneen")- , (21, "kahteenkymmeneenyhteen")- , (100, "sataan")- , (1000, "tuhanteen")- ]- )- , ( "singular locative adessive"- , singular $ locativeAdessive defaultInflection- , [ (0, "nollalla")- , (1, "yhdellä")- , (2, "kahdella")- , (3, "kolmella")- , (4, "neljällä")- , (5, "viidellä")- , (6, "kuudella")- , (7, "seitsemällä")- , (8, "kahdeksalla")- , (9, "yhdeksällä")- , (10, "kymmenellä")- , (11, "yhdellätoista")- , (12, "kahdellatoista")- , (13, "kolmellatoista")- , (14, "neljällätoista")- , (15, "viidellätoista")- , (16, "kuudellatoista")- , (17, "seitsemällätoista")- , (18, "kahdeksallatoista")- , (19, "yhdeksällätoista")- , (20, "kahdellakymmenellä")- , (21, "kahdellakymmenelläyhdellä")- , (100, "sadalla")- , (1000, "tuhannella")- ]- )- , ( "singular locative ablative"- , singular $ locativeAblative defaultInflection- , [ (0, "nollalta")- , (1, "yhdeltä")- , (2, "kahdelta")- , (3, "kolmelta")- , (4, "neljältä")- , (5, "viideltä")- , (6, "kuudelta")- , (7, "seitsemältä")- , (8, "kahdeksalta")- , (9, "yhdeksältä")- , (10, "kymmeneltä")- , (11, "yhdeltätoista")- , (12, "kahdeltatoista")- , (13, "kolmeltatoista")- , (14, "neljältätoista")- , (15, "viideltätoista")- , (16, "kuudeltatoista")- , (17, "seitsemältätoista")- , (18, "kahdeksaltatoista")- , (19, "yhdeksältätoista")- , (20, "kahdeltakymmeneltä")- , (21, "kahdeltakymmeneltäyhdeltä")- , (100, "sadalta")- , (1000, "tuhannelta")- ]- )- , ( "singular locative allative"- , singular $ locativeAllative defaultInflection- , [ (0, "nollalle")- , (1, "yhdelle")- , (2, "kahdelle")- , (3, "kolmelle")- , (4, "neljälle")- , (5, "viidelle")- , (6, "kuudelle")- , (7, "seitsemälle")- , (8, "kahdeksalle")- , (9, "yhdeksälle")- , (10, "kymmenelle")- , (11, "yhdelletoista")- , (12, "kahdelletoista")- , (13, "kolmelletoista")- , (14, "neljälletoista")- , (15, "viidelletoista")- , (16, "kuudelletoista")- , (17, "seitsemälletoista")- , (18, "kahdeksalletoista")- , (19, "yhdeksälletoista")- , (20, "kahdellekymmenelle")- , (21, "kahdellekymmenelleyhdelle")- , (100, "sadalle")- , (1000, "tuhannelle")- ]- )- , ( "singular abessive"- , singular $ abessive defaultInflection- , [ (0, "nollatta")- , (1, "yhdettä")- , (2, "kahdetta")- , (3, "kolmetta")- , (4, "neljättä")- , (5, "viidettä")- , (6, "kuudetta")- , (7, "seitsemättä")- , (8, "kahdeksatta")- , (9, "yhdeksättä")- , (10, "kymmenettä")- , (11, "yhdettätoista")- , (12, "kahdettatoista")- , (13, "kolmettatoista")- , (14, "neljättätoista")- , (15, "viidettätoista")- , (16, "kuudettatoista")- , (17, "seitsemättätoista")- , (18, "kahdeksattatoista")- , (19, "yhdeksättätoista")- , (20, "kahdettakymmenettä")- , (21, "kahdettakymmenettäyhdettä")- , (100, "sadatta")- , (1000, "tuhannetta")- ]- )- , ( "singular super essive"- , singular $ superEssive defaultInflection- , [ (1, "yhtäällä")- , (2, "kahtaalla")- ]- )- , ( "singular delative"- , singular $ delative defaultInflection- , [ (1, "yhtäältä")- , (2, "kahtaalta")- ]- )- , ( "singular sublative"- , singular $ sublative defaultInflection- , [ (1, "yhtäälle")- , (2, "kahtaalle")- ]- )- , ( "singular lative"- , singular $ lative defaultInflection- , [ (1, "yhä")- , (2, "kahtia")- , (3, "kolmia")- ]- )- , ( "singular multiplicative"- , singular $ multiplicative defaultInflection- , [ (1, "yhdesti")- , (2, "kahdesti")- , (3, "kolmesti")- ]- )- , ( "plural nominative"- , plural $ nominative defaultInflection- , [ (0, "nollat")- , (1, "yhdet")- , (2, "kahdet")- , (3, "kolmet")- , (4, "neljät")- , (5, "viidet")- , (6, "kuudet")- , (7, "seitsemät")- , (8, "kahdeksat")- , (9, "yhdeksät")- , (10, "kymmenet")- , (11, "yhdettoista")- , (12, "kahdettoista")- , (13, "kolmettoista")- , (14, "neljättoista")- , (15, "viidettoista")- , (16, "kuudettoista")- , (17, "seitsemättoista")- , (18, "kahdeksattoista")- , (19, "yhdeksättoista")- , (20, "kahdetkymmenet")- , (21, "kahdetkymmenetyhdet")- , (100, "sadat")- , (1000, "tuhannet")- ]- )- , ( "plural accusative"- , plural $ accusative defaultInflection- , [ (0, "nollat")- , (1, "yhdet")- , (2, "kahdet")- , (3, "kolmet")- , (4, "neljät")- , (5, "viidet")- , (6, "kuudet")- , (7, "seitsemät")- , (8, "kahdeksat")- , (9, "yhdeksät")- , (10, "kymmenet")- , (11, "yhdettoista")- , (12, "kahdettoista")- , (13, "kolmettoista")- , (14, "neljättoista")- , (15, "viidettoista")- , (16, "kuudettoista")- , (17, "seitsemättoista")- , (18, "kahdeksattoista")- , (19, "yhdeksättoista")- , (20, "kahdetkymmenet")- , (21, "kahdetkymmenetyhdet")- , (100, "sadat")- , (1000, "tuhannet")- ]- )- , ( "plural genitive"- , plural $ genitive defaultInflection- , [ (0, "nollien")- , (1, "yksien")- , (2, "kaksien")- , (3, "kolmien")- , (4, "neljien")- , (5, "viisien")- , (6, "kuusien")- , (7, "seitsemien")- , (8, "kahdeksien")- , (9, "yhdeksien")- , (10, "kymmenien")- , (11, "yksientoista")- , (12, "kaksientoista")- , (13, "kolmientoista")- , (14, "neljientoista")- , (15, "viisientoista")- , (16, "kuusientoista")- , (17, "seitsemientoista")- , (18, "kahdeksientoista")- , (19, "yhdeksientoista")- , (20, "kaksienkymmenien")- , (21, "kaksienkymmenienyksien")- , (100, "satojen")- , (1000, "tuhansien")- ]- )- , ( "plural partitive"- , plural $ partitive defaultInflection- , [ (0, "nollia")- , (1, "yksiä")- , (2, "kaksia")- , (3, "kolmia")- , (4, "neljiä")- , (5, "viisiä")- , (6, "kuusia")- , (7, "seitsemiä")- , (8, "kahdeksia")- , (9, "yhdeksiä")- , (10, "kymmeniä")- , (11, "yksiätoista")- , (12, "kaksiatoista")- , (13, "kolmiatoista")- , (14, "neljiätoista")- , (15, "viittätoista")- , (16, "kuuttatoista")- , (17, "seitsemiätoista")- , (18, "kahdeksiatoista")- , (19, "yhdeksiätoista")- , (20, "kaksiakymmeniä")- , (21, "kaksiakymmeniäyksiä")- , (100, "satoja")- , (1000, "tuhansia")- ]- )- , ( "plural essive"- , plural $ essive defaultInflection- , [ (0, "nollina")- , (1, "yksinä")- , (2, "kaksina")- , (3, "kolmina")- , (4, "neljinä")- , (5, "viisinä")- , (6, "kuusina")- , (7, "seitseminä")- , (8, "kahdeksina")- , (9, "yhdeksinä")- , (10, "kymmeninä")- , (11, "yksinätoista")- , (12, "kaksinatoista")- , (13, "kolminatoista")- , (14, "neljinätoista")- , (15, "viitenätoista")- , (16, "kuutenatoista")- , (17, "seitseminätoista")- , (18, "kahdeksinatoista")- , (19, "yhdeksinätoista")- , (20, "kaksinakymmeninä")- , (21, "kaksinakymmeninäyksinä")- , (100, "satoina")- , (1000, "tuhansina")- ]- )- , ( "plural translative"- , plural $ translative defaultInflection- , [ (0, "nolliksi")- , (1, "yksiksi")- , (2, "kaksiksi")- , (3, "kolmiksi")- , (4, "neljiksi")- , (5, "viisiksi")- , (6, "kuusiksi")- , (7, "seitsemiksi")- , (8, "kahdeksiksi")- , (9, "yhdeksiksi")- , (10, "kymmeniksi")- , (11, "yksiksitoista")- , (12, "kaksiksitoista")- , (13, "kolmiksitoista")- , (14, "neljiksitoista")- , (15, "viideksitoista")- , (16, "kuudeksitoista")- , (17, "seitsemiksitoista")- , (18, "kahdeksiksitoista")- , (19, "yhdeksiksitoista")- , (20, "kaksiksikymmeniksi")- , (21, "kaksiksikymmeniksiyksiksi")- , (100, "sadoiksi")- , (1000, "tuhansiksi")- ]- )- , ( "plural locative inessive"- , plural $ locativeInessive defaultInflection- , [ (0, "nollissa")- , (1, "yksissä")- , (2, "kaksissa")- , (3, "kolmissa")- , (4, "neljissä")- , (5, "viisissä")- , (6, "kuusissa")- , (7, "seitsemissä")- , (8, "kahdeksissa")- , (9, "yhdeksissä")- , (10, "kymmenissä")- , (11, "yksissätoista")- , (12, "kaksissatoista")- , (13, "kolmissatoista")- , (14, "neljissätoista")- , (15, "viidessätoista")- , (16, "kuudessatoista")- , (17, "seitsemissätoista")- , (18, "kahdeksissatoista")- , (19, "yhdeksissätoista")- , (20, "kaksissakymmenissä")- , (21, "kaksissakymmenissäyksissä")- , (100, "sadoissa")- , (1000, "tuhansissa")- ]- )- , ( "plural locative elative"- , plural $ locativeElative defaultInflection- , [ (0, "nollista")- , (1, "yksistä")- , (2, "kaksista")- , (3, "kolmista")- , (4, "neljistä")- , (5, "viisistä")- , (6, "kuusista")- , (7, "seitsemistä")- , (8, "kahdeksista")- , (9, "yhdeksistä")- , (10, "kymmenistä")- , (11, "yksistätoista")- , (12, "kaksistatoista")- , (13, "kolmistatoista")- , (14, "neljistätoista")- , (15, "viidestätoista")- , (16, "kuudestatoista")- , (17, "seitsemistätoista")- , (18, "kahdeksistatoista")- , (19, "yhdeksistätoista")- , (20, "kaksistakymmenistä")- , (21, "kaksistakymmenistäyksistä")- , (100, "sadoista")- , (1000, "tuhansista")- ]- )- , ( "plural locative illative"- , plural $ locativeIllative defaultInflection- , [ (0, "nolliin")- , (1, "yksiin")- , (2, "kaksiin")- , (3, "kolmiin")- , (4, "neljiin")- , (5, "viisiin")- , (6, "kuusiin")- , (7, "seitsemiin")- , (8, "kahdeksiin")- , (9, "yhdeksiin")- , (10, "kymmeniin")- , (11, "yksiintoista")- , (12, "kaksiintoista")- , (13, "kolmiintoista")- , (14, "neljiintoista")- , (15, "viiteentoista")- , (16, "kuuteentoista")- , (17, "seitsemiintoista")- , (18, "kahdeksiintoista")- , (19, "yhdeksiintoista")- , (20, "kaksiinkymmeniin")- , (21, "kaksiinkymmeniinyksiin")- , (100, "satoihin")- , (1000, "tuhansiin")- ]- )- , ( "plural locative adessive"- , plural $ locativeAdessive defaultInflection- , [ (0, "nollilla")- , (1, "yksillä")- , (2, "kaksilla")- , (3, "kolmilla")- , (4, "neljillä")- , (5, "viisillä")- , (6, "kuusilla")- , (7, "seitsemillä")- , (8, "kahdeksilla")- , (9, "yhdeksillä")- , (10, "kymmenillä")- , (11, "yksillätoista")- , (12, "kaksillatoista")- , (13, "kolmillatoista")- , (14, "neljillätoista")- , (15, "viidellätoista")- , (16, "kuudellatoista")- , (17, "seitsemillätoista")- , (18, "kahdeksillatoista")- , (19, "yhdeksillätoista")- , (20, "kaksillakymmenillä")- , (21, "kaksillakymmenilläyksillä")- , (100, "sadoilla")- , (1000, "tuhansilla")- ]- )- , ( "plural locative ablative"- , plural $ locativeAblative defaultInflection- , [ (0, "nollilta")- , (1, "yksiltä")- , (2, "kaksilta")- , (3, "kolmilta")- , (4, "neljiltä")- , (5, "viisiltä")- , (6, "kuusilta")- , (7, "seitsemiltä")- , (8, "kahdeksilta")- , (9, "yhdeksiltä")- , (10, "kymmeniltä")- , (11, "yksiltätoista")- , (12, "kaksiltatoista")- , (13, "kolmiltatoista")- , (14, "neljiltätoista")- , (15, "viideltätoista")- , (16, "kuudeltatoista")- , (17, "seitsemiltätoista")- , (18, "kahdeksiltatoista")- , (19, "yhdeksiltätoista")- , (20, "kaksiltakymmeniltä")- , (21, "kaksiltakymeniltäyksiltä")- , (100, "sadoilta")- , (1000, "tuhansilta")- ]- )- , ( "plural locative allative"- , plural $ locativeAllative defaultInflection- , [ (0, "nollille")- , (1, "yksille")- , (2, "kaksille")- , (3, "kolmille")- , (4, "neljille")- , (5, "viisille")- , (6, "kuusille")- , (7, "seitsemille")- , (8, "kahdeksille")- , (9, "yhdeksille")- , (10, "kymmenille")- , (11, "yksilletoista")- , (12, "kaksilletoista")- , (13, "kolmilletoista")- , (14, "neljilletoista")- , (15, "viidelletoista")- , (16, "kuudelletoista")- , (17, "seitsemilletoista")- , (18, "kahdeksilletoista")- , (19, "yhdeksilletoista")- , (20, "kaksillekymmenille")- , (21, "kaksillekymmenilleyksille")- , (100, "sadoille")- , (1000, "tuhansille")- ]- )- , ( "plural abessive"- , plural $ abessive defaultInflection- , [ (0, "nollitta")- , (1, "yksittä")- , (2, "kaksitta")- , (3, "kolmitta")- , (4, "neljittä")- , (5, "viisittä")- , (6, "kuusitta")- , (7, "seitsemittä")- , (8, "kahdeksitta")- , (9, "yhdeksittä")- , (10, "kymmenittä")- , (11, "yksittätoista")- , (12, "kaksittatoista")- , (13, "kolmittatoista")- , (14, "neljittätoista")- , (15, "viidettätoista")- , (16, "kuudettatoista")- , (17, "seitsemittätoista")- , (18, "kahdeksittatoista")- , (19, "yhdeksittätoista")- , (20, "kaksittakymmenittä")- , (21, "kaksittakymmenittäyksittä")- , (100, "sadoitta")- , (1000, "tuhansitta")- ]- )- , ( "plural comitative"- , plural $ comitative defaultInflection- , [ (0, "nolline")- , (1, "yksine")- , (2, "kaksine")- , (3, "kolmine")- , (4, "neljine")- , (5, "viisine")- , (6, "kuusine")- , (7, "seitsemine")- , (8, "kahdeksine")- , (9, "yhdeksine")- , (10, "kymmenine")- , (11, "yksinetoista")- , (12, "kaksinetoista")- , (13, "kolminetoista")- , (14, "neljinetoista")- , (15, "viisinetoista")- , (16, "kuusinetoista")- , (17, "seitseminetoista")- , (18, "kahdeksinetoista")- , (19, "yhdeksinetoista")- , (20, "kaksinekymmenine")- , (21, "kaksinekymmenineyksine")- , (100, "satoine")- , (1000, "tuhansine")- ]- )- , ( "plural instructive"- , plural $ instructive defaultInflection- , [ (0, "nollin")- , (1, "yksin")- , (2, "kaksin")- , (3, "kolmin")- , (4, "neljin")- , (5, "viisin")- , (6, "kuusin")- , (7, "seitsemin")- , (8, "kahdeksin")- , (9, "yhdeksin")- , (10, "kymmenin")- , (11, "yksintoista")- , (12, "kaksintoista")- , (13, "kolmintoista")- , (14, "neljintoista")- , (15, "viisintoista")- , (16, "kuusintoista")- , (17, "seitsemintoista")- , (18, "kahdeksintoista")- , (19, "yhdeksintoista")- , (20, "kaksinkymmenin")- , (21, "kaksinkymmeninyksin")- , (100, "sadoin")- , (1000, "tuhansin")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "singular nominative"- , singular $ nominative defaultInflection- , [ (0, "nollas")- , (1, "ensimmäinen")- , (2, "toinen")- , (3, "kolmas")- , (4, "neljäs")- , (5, "viides")- , (6, "kuudes")- , (7, "seitsemäs")- , (8, "kahdeksas")- , (9, "yhdeksäs")- , (10, "kymmenes")- , (11, "yhdestoista")- , (12, "kahdestoista")- , (13, "kolmastoista")- , (14, "neljästoista")- , (15, "viidestoista")- , (16, "kuudestoista")- , (17, "seitsemästoista")- , (18, "kahdeksastoista")- , (19, "yhdeksästoista")- , (20, "kahdeskymmenes")- , (21, "kahdeskymmenesensimmäinen") -- also kahdeskymmenesyhdes- , (22, "kahdeskymmenestoinen") -- also kahdeskymmeneskahdes- , (23, "kahdeskymmeneskolmas")- , (24, "kahdeskymmenesneljäs")- , (25, "kahdeskymmenesviides")- , (26, "kahdeskymmeneskuudes")- , (27, "kahdeskymmenesseitsemäs")- , (28, "kahdeskymmeneskahdeksas")- , (29, "kahdeskymmenesyhdeksäs")- , (30, "kolmaskymmenes")- , (40, "neljäskymmenes")- , (50, "viideskymmenes")- , (60, "kuudeskymmenes")- , (70, "seitsemäskymmenes")- , (80, "kahdeksaskymmenes")- , (90, "yhdeksäskymmenes")- , (100, "sadas")- , (101, "sadasensimmäinen")- , (357, "kolmassadasviideskymmenesseitsemäs")- , (1000, "tuhannes")- , (1001, "tuhannesensimmäinen")- , (3721, "kolmastuhannesseitsemässadaskahdeskymmenesensimmäinen")- ]- )- , ( "singular accusative"- , singular $ accusative defaultInflection- , [ (0, "nollas")- , (1, "ensimmäinen")- , (2, "toinen")- , (3, "kolmas")- , (4, "neljäs")- , (5, "viides")- , (6, "kuudes")- , (7, "seitsemäs")- , (8, "kahdeksas")- , (9, "yhdeksäs")- , (10, "kymmenes")- , (11, "yhdestoista")- , (12, "kahdestoista")- , (13, "kolmastoista")- , (14, "neljästoista")- , (15, "viidestoista")- , (16, "kuudestoista")- , (17, "seitsemästoista")- , (18, "kahdeksastoista")- , (19, "yhdeksästoista")- , (20, "kahdeskymmenes")- , (21, "kahdeskymmenesensimmäinen")- , (100, "sadas")- , (1000, "tuhannes")- ]- )- , ( "singular genitive"- , singular $ genitive defaultInflection- , [ (0, "nollannen")- , (1, "ensimmäisen")- , (2, "toisen")- , (3, "kolmannen")- , (4, "neljännen")- , (5, "viidennen")- , (6, "kuudennen")- , (7, "seitsemännen")- , (8, "kahdeksannen")- , (9, "yhdeksännen")- , (10, "kymmenennen")- , (11, "yhdennentoista")- , (12, "kahdennentoista")- , (13, "kolmannentoista")- , (14, "neljännentoista")- , (15, "viidennentoista")- , (16, "kuudennentoista")- , (17, "seitsemännentoista")- , (18, "kahdeksannentoista")- , (19, "yhdeksännentoista")- , (20, "kahdennenkymmenennen")- , (21, "kahdennenkymmenennenensimmäisen")- , (100, "sadannen")- , (357, "kolmannensadannenviidennenkymmenennenseitsemännen")- , (1000, "tuhannennen")- ]- )- , ( "singular partitive"- , singular $ partitive defaultInflection- , [ (0, "nollatta")- , (1, "ensimmäistä")- , (2, "toista")- , (3, "kolmatta")- , (4, "neljättä")- , (5, "viidettä")- , (6, "kuudetta")- , (7, "seitsemättä")- , (8, "kahdeksatta")- , (9, "yhdeksättä")- , (10, "kymmenettä")- , (11, "yhdettätoista")- , (12, "kahdettatoista")- , (13, "kolmattatoista")- , (14, "neljättätoista")- , (15, "viidettätoista")- , (16, "kuudettatoista")- , (17, "seitsemättätoista")- , (18, "kahdeksattatoista")- , (19, "yhdeksättätoista")- , (20, "kahdettakymmenettä")- , (21, "kahdettakymmenettäensimmäistä")- , (100, "sadatta")- , (357, "kolmattasadattaviidettäkymmenettäseitsemätta")- , (1000, "tuhannetta")- ]- )- , ( "singular essive"- , singular $ essive defaultInflection- , [ (0, "nollantena")- , (1, "ensimmmäisenä")- , (2, "toisena")- , (3, "kolmantena")- , (4, "neljäntenä")- , (5, "viidentenä")- , (6, "kuudentena")- , (7, "seitsemäntenä")- , (8, "kahdeksantena")- , (9, "yhdeksäntenä")- , (10, "kymmenentenä")- , (11, "yhdennessätoista")- , (12, "kahdentenatoista")- , (13, "kolmantenatoista")- , (14, "neljäntenätoista")- , (15, "viidentenätoista")- , (16, "kuudentenatoista")- , (17, "seitsemäntenätoista")- , (18, "kahdeksantenatoista")- , (19, "yhdeksäntenätoista")- , (20, "kahdentenakymmenentenä")- , (21, "kahdentenakymmenentenäensimmäisenä")- , (100, "sadantena")- , (357, "kolmantenasadantenaviidentenäkymmenentenäseitsemäntenä")- , (1000, "tuhannentena")- ]- )- , ( "singular translative"- , singular $ translative defaultInflection- , [ (0, "nollanneksi")- , (1, "ensimmäiseksi")- , (2, "toiseksi")- , (3, "kolmanneksi")- , (4, "neljänneksi")- , (5, "viidenneksi")- , (6, "kuudenneksi")- , (7, "seitsemänneksi")- , (8, "kahdeksanneksi")- , (9, "yhdeksänneksi")- , (10, "kymmenenneksi")- , (11, "yhdenneksitoista")- , (12, "kahdenneksitoista")- , (13, "kolmanneksitoista")- , (14, "neljänneksitoista")- , (15, "viidenneksitoista")- , (16, "kuudenneksitoista")- , (17, "seitsemänneksitoista")- , (18, "kahdenksanneksitoista")- , (19, "yhdeksänneksitoista")- , (20, "kahdenneksikymmenenneksi")- , (21, "kahdenneksikymmenenneksiensimmäiseksi")- , (100, "sadanneksi")- , (1000, "tuhannenneksi")- ]- )- , ( "singular locative inessive"- , singular $ locativeInessive defaultInflection- , [ (0, "nollannessa")- , (1, "ensimmäisessä")- , (2, "toisessa")- , (3, "kolmannessa")- , (4, "neljännessä")- , (5, "viidennessä")- , (6, "kuudennessa")- , (7, "seitsemännessä")- , (8, "kahdeksannessa")- , (9, "yhdeksännessä")- , (10, "kymmenennessä")- , (11, "yhdennessätoista")- , (12, "kahdennessatoista")- , (13, "kolmannessatoista")- , (14, "neljännessätoista")- , (15, "viidennessätoista")- , (16, "kuudennessatoista")- , (17, "seitsemännessätoista")- , (18, "kahdeksannessatoista")- , (19, "yhdeksännessätoista")- , (20, "kahdennessakymmenennessä")- , (21, "kahdennessakymmenennessäensimmäisessä")- , (100, "sadannessa")- , (1000, "tuhannennessa")- ]- )- , ( "singular locative elative"- , singular $ locativeElative defaultInflection- , [ (0, "nollannesta")- , (1, "ensimmäisestä")- , (2, "toisesta")- , (3, "kolmannesta")- , (4, "neljännestä")- , (5, "viidennestä")- , (6, "kuudennesta")- , (7, "seitsemännestä")- , (8, "kahdeksannesta")- , (9, "yhdeksännestä")- , (10, "kymmenennestä")- , (11, "yhdennestätoista")- , (12, "kahdennestatoista")- , (13, "kolmannestatoista")- , (14, "neljännestätoista")- , (15, "viidennestätoista")- , (16, "kuudennestatoista")- , (17, "seitsemännestätoista")- , (18, "kahdeksannestatoista")- , (19, "yhdeksännestätoista")- , (20, "kahdennestakymmenennestä")- , (21, "kahdennestakymmenennestäensimmäisestä")- , (100, "sadannesta")- , (1000, "tuhannennesta")- ]- )- , ( "singular locative illative"- , singular $ locativeIllative defaultInflection- , [ (0, "nollanteen")- , (1, "ensimmäiseen")- , (2, "toiseen")- , (3, "kolmanteen")- , (4, "neljänteen")- , (5, "viidenteen")- , (6, "kuudenteen")- , (7, "seitsemänteen")- , (8, "kahdeksanteen")- , (9, "yhdeksänteen")- , (10, "kymmenenteen")- , (11, "yhdenteentoista")- , (12, "kahdenteentoista")- , (13, "kolmanteentoista")- , (14, "neljänteentoista")- , (15, "viidenteentoista")- , (16, "kuudenteentoista")- , (17, "seitsemänteentoista")- , (18, "kahdeksanteentoista")- , (19, "yhdeksänteentoista")- , (20, "kahdenteenkymmenenteen")- , (21, "kahdenteenkymmenenteenensimmäiseen")- , (100, "sadanteen")- , (1000, "tuhannenteen")- ]- )- , ( "singular locative adessive"- , singular $ locativeAdessive defaultInflection- , [ (0, "nollannella")- , (1, "ensimmäisellä")- , (2, "toisella")- , (3, "kolmannella")- , (4, "neljännellä")- , (5, "viidennellä")- , (6, "kuudennella")- , (7, "seitsemännellä")- , (8, "kahdeksannella")- , (9, "yhdeksännellä")- , (10, "kymmenennellä")- , (11, "yhdennellätoista")- , (12, "kahdennellatoista")- , (13, "kolmannellatoista")- , (14, "neljännellätoista")- , (15, "viidennellätoista")- , (16, "kuudennellatoista")- , (17, "seitsemännellätoista")- , (18, "kahdeksannellatoista")- , (19, "yhdeksännellätoista")- , (20, "kahdennellakymmenennellä")- , (21, "kahdennellakymmenennelläensimmäisellä")- , (100, "sadannella")- , (1000, "tuhannennella")- ]- )- , ( "singular locative ablative"- , singular $ locativeAblative defaultInflection- , [ (0, "nollannelta")- , (1, "ensimmäiseltä")- , (2, "toiselta")- , (3, "kolmannelta")- , (4, "neljänneltä")- , (5, "viidenneltä")- , (6, "kuudennelta")- , (7, "seitsemänneltä")- , (8, "kahdeksannelta")- , (9, "yhdeksänneltä")- , (10, "kymmenenneltä")- , (11, "yhdenneltätoista")- , (12, "kahdenneltatoista")- , (13, "kolmanneltatoista")- , (14, "neljänneltätoista")- , (15, "viidenneltätoista")- , (16, "kuudenneltatoista")- , (17, "seitsemänneltätoista")- , (18, "kahdeksanneltatoista")- , (19, "yhdeksänneltätoista")- , (20, "kahdenneltakymmenenneltä")- , (21, "kahdenneltakymmenenneltäensimmäiseltä")- , (100, "sadannelta")- , (1000, "tuhannennelta")- ]- )- , ( "singular locative allative"- , singular $ locativeAllative defaultInflection- , [ (0, "nollannelle")- , (1, "ensimmäiselle")- , (2, "toiselle")- , (3, "kolmannelle")- , (4, "neljännelle")- , (5, "viidennelle")- , (6, "kuudennelle")- , (7, "seitsemännelle")- , (8, "kahdeksannelle")- , (9, "yhdeksännelle")- , (10, "kymmenennelle")- , (11, "yhdennelletoista")- , (12, "kahdennelletoista")- , (13, "kolmannelletoista")- , (14, "neljännelletoista")- , (15, "viidennelletoista")- , (16, "kuudennelletoista")- , (17, "seitsemännelletoista")- , (18, "kahdeksannelletoista")- , (19, "yhdeksännelletoista")- , (20, "kahdennellekymmenennelle")- , (21, "kahdennellekymmenennelleensimmäiselle")- , (100, "sadannelle")- , (1000, "tuhannennelle")- ]- )- , ( "singular abessive"- , singular $ abessive defaultInflection- , [ (0, "nollannetta")- , (1, "ensimmäisettä")- , (2, "toisetta")- , (3, "kolmannetta")- , (4, "neljännettä")- , (5, "viidennettä")- , (6, "kuudennetta")- , (7, "seitsemännettä")- , (8, "kahdeksannetta")- , (9, "yhdeksännettä")- , (10, "kymmenennettä")- , (11, "yhdennettätoista")- , (12, "kahdennettatoista")- , (13, "kolmannettatoista")- , (14, "neljännettätoista")- , (15, "viidennettätoista")- , (16, "kuudennettatoista")- , (17, "seitsemännettätoista")- , (18, "kahdeksannettatoista")- , (19, "yhdeksännettätoista")- , (20, "kahdennettakymmenennettä")- , (21, "kahdennettakymmenennettäensimmäisettä")- , (100, "sadannetta")- , (1000, "tuhannennetta")- ]- )- , ( "singular comitative"- , singular $ comitative defaultInflection- , [ (4, "neljänsine") ]- )- , ( "singular instructive"- , singular $ instructive defaultInflection- , [ (4, "neljänsin") ]- )- , ( "plural nominative"- , plural $ nominative defaultInflection- , [ (0, "nollannet")- , (1, "ensimmäiset")- , (2, "toiset")- , (3, "kolmannet")- , (4, "neljännet")- , (5, "viidennet")- , (6, "kuudennet")- , (7, "seitsemännet")- , (8, "kahdeksannet")- , (9, "yhdeksännet")- , (10, "kymmenennet")- , (11, "yhdennettoista")- , (12, "kahdennettoista")- , (13, "kolmannettoista")- , (14, "neljännettoista")- , (15, "viidennettoista")- , (16, "kuudennettoista")- , (17, "seitsemännettoista")- , (18, "kahdeksannettoista")- , (19, "yhdeksännettoista")- , (20, "kahdennetkymmenennet")- , (21, "kahdennetkymmenennetensimmäiset")- , (100, "sadannet")- , (1000, "tuhannennet")- ]- )- , ( "plural accusative"- , plural $ accusative defaultInflection- , [ (0, "nollannet")- , (1, "ensimmäiset")- , (2, "toiset")- , (3, "kolmannet")- , (4, "neljännet")- , (5, "viidennet")- , (6, "kuudennet")- , (7, "seitsemännet")- , (8, "kahdeksannet")- , (9, "yhdeksännet")- , (10, "kymmenennet")- , (11, "yhdennettoista")- , (12, "kahdennettoista")- , (13, "kolmannettoista")- , (14, "neljännettoista")- , (15, "viidennettoista")- , (16, "kuudennettoista")- , (17, "seitsemännettoista")- , (18, "kahdeksannettoista")- , (19, "yhdeksännettoista")- , (20, "kahdennetkymmenennet")- , (21, "kahdennetkymmenennetensimmäiset")- , (100, "sadannet")- , (1000, "tuhannennet")- ]- )- , ( "plural genitive"- , plural $ genitive defaultInflection- , [ (0, "nollansien")- , (1, "ensimmäisten")- , (2, "toisten")- , (3, "kolmansien")- , (4, "neljänsien")- , (5, "viidensien")- , (6, "kuudensien")- , (7, "seitsemänsien")- , (8, "kahdeksansien")- , (9, "yhdeksänsien")- , (10, "kymmenensien")- , (11, "yhdensientoista")- , (12, "kahdensientoista")- , (13, "kolmansientoista")- , (14, "neljänsientoista")- , (15, "viidensientoista")- , (16, "kuudensientoista")- , (17, "seitsemänsientoista")- , (18, "kahdeksansientoista")- , (19, "yhdeksänsientoista")- , (20, "kahdensienkymmenensien")- , (21, "kahdensienkymmenensienensimmäisten")- , (100, "sadansien")- , (1000, "tuhannensien")- ]- )- , ( "plural partitive"- , plural $ partitive defaultInflection- , [ (0, "nollansia")- , (1, "ensimmäisiä")- , (2, "toisia")- , (3, "kolmansia")- , (4, "neljänsiä")- , (5, "viidensiä")- , (6, "kuudensia")- , (7, "seitsemänsiä")- , (8, "kahdeksansia")- , (9, "yhdeksänsiä")- , (10, "kymmenensiä")- , (11, "yhdensiätoista")- , (12, "kahdensiatoista")- , (13, "kolmansiatoista")- , (14, "neljänsiätoista")- , (15, "viidensiätoista")- , (16, "kuudensiatoista")- , (17, "seitsemänsiätoista")- , (18, "kahdeksansiatoista")- , (19, "yhdeksänsiätoista")- , (20, "kahdensiakymmenensiä")- , (21, "kahdensiakymmenensiäensimmäisiä")- , (100, "sadansia")- , (1000, "tuhannensia")- ]- )- , ( "plural essive"- , plural $ essive defaultInflection- , [ (0, "nollansina")- , (1, "ensimmäisinä")- , (2, "toisina")- , (3, "kolmansina")- , (4, "neljänsinä")- , (5, "viidensinä")- , (6, "kuudensina")- , (7, "seitsemänsinä")- , (8, "kahdeksansina")- , (9, "yhdeksänsinä")- , (10, "kymmenensinä")- , (11, "yhdensinätoista")- , (12, "kahdensinatoista")- , (13, "kolmansinatoista")- , (14, "neljänsinätoista")- , (15, "viidensinätoista")- , (16, "kuudensinatoista")- , (17, "seitsemänsinätoista")- , (18, "kahdeksansinatoista")- , (19, "yhdeksänsinätoista")- , (20, "kahdensinakymmenensinä")- , (21, "kahdensinakymmenensinäensimmäisinä")- , (100, "sadansina")- , (1000, "tuhannensina")- ]- )- , ( "plural translative"- , plural $ translative defaultInflection- , [ (0, "nollansiksi")- , (1, "ensimmäisiksi")- , (2, "toisiksi")- , (3, "kolmansiksi")- , (4, "neljänsiksi")- , (5, "viidensiksi")- , (6, "kuudensiksi")- , (7, "seitsemänsiksi")- , (8, "kahdeksansiksi")- , (9, "yhdeksänsiksi")- , (10, "kymmenensiksi")- , (11, "yhdensiksitoista")- , (12, "kahdensiksitoista")- , (13, "kolmansiksitoista")- , (14, "neljänsiksitoista")- , (15, "viidensiksitoista")- , (16, "kuudensiksitoista")- , (17, "seitsemänsiksitoista")- , (18, "kahdeksansiksitoista")- , (19, "yhdeksänsissätoista")- , (20, "kahdensiksikymmenensiksi")- , (21, "kahdensiksikymmenensiksiensimmäisiksi")- , (100, "sadansiksi")- , (1000, "tuhannensiksi")- ]- )- , ( "plural locative inessive"- , plural $ locativeInessive defaultInflection- , [ (0, "nollansissa")- , (1, "ensimmäisissä")- , (2, "toisissa")- , (3, "kolmansissa")- , (4, "neljänsissä")- , (5, "viidensissä")- , (6, "kuudensissa")- , (7, "seitsemänsissä")- , (8, "kahdeksansissa")- , (9, "yhdeksänsissä")- , (10, "kymmenensissä")- , (11, "yhdensissätoista")- , (12, "kahdensissatoista")- , (13, "kolmansissatoista")- , (14, "neljänsissätoista")- , (15, "viidensissätoista")- , (16, "kuudensissatoista")- , (17, "seitsemänsissätoista")- , (18, "kahdeksansissatoista")- , (19, "yhdeksänsissätoista")- , (20, "kahdensissakymmenensissä")- , (21, "kahdensissakymmenensissäensimmäisissä")- , (100, "sadansissa")- , (1000, "tuhannensissa")- ]- )- , ( "plural locative elative"- , plural $ locativeElative defaultInflection- , [ (0, "nollansista")- , (1, "ensimmäisistä")- , (2, "toisista")- , (3, "kolmansista")- , (4, "neljänsistä")- , (5, "viidensistä")- , (6, "kuudensista")- , (7, "seitsemänsistä")- , (8, "kahdeksansista")- , (9, "yhdeksänsistä")- , (10, "kymmenensistä")- , (11, "yhdensistätoista")- , (12, "kahdensistatoista")- , (13, "kolmansistatoista")- , (14, "neljänsistätoista")- , (15, "viidensistätoista")- , (16, "kuudensistatoista")- , (17, "seitsemänsistätoista")- , (18, "kahdeksansistatoista")- , (19, "yhdeksänsistätoista")- , (20, "kahdensistakymmenensistä")- , (21, "kahdensistakymmenensistäensimmäisistä")- , (100, "sadansista")- , (1000, "tuhannensista")- ]- )- , ( "plural locative illative"- , plural $ locativeIllative defaultInflection- , [ (0, "nollansiin")- , (1, "ensimmäisiin")- , (2, "toisiin")- , (3, "kolmansiin")- , (4, "neljänsiin")- , (5, "viidensiin")- , (6, "kuudensiin")- , (7, "seitsemänsiin")- , (8, "kahdeksansiin")- , (9, "yhdeksänsiin")- , (10, "kymmenensiin")- , (11, "yhdensiintoista")- , (12, "kahdensiintoista")- , (13, "kolmansiintoista")- , (14, "neljänsiintoista")- , (15, "viidensiintoista")- , (16, "kuudensiintoista")- , (17, "seitsemänsiintoista")- , (18, "kahdeksansiintoista")- , (19, "yhdeksänsiintoista")- , (20, "kahdensiinkymmenensiin")- , (21, "kahdensiinkymmenensiinensimmäisiin")- , (100, "sadansiin")- , (1000, "tuhannensiin")- ]- )- , ( "plural locative adessive"- , plural $ locativeAdessive defaultInflection- , [ (0, "nollansilla")- , (1, "ensimmäisillä")- , (2, "toisilla")- , (3, "kolmansilla")- , (4, "neljänsillä")- , (5, "viidensillä")- , (6, "kuudensilla")- , (7, "seitsemänsillä")- , (8, "kahdeksansilla")- , (9, "yhdeksänsillä")- , (10, "kymmenensillä")- , (11, "yhdensillätoista")- , (12, "kahdensillatoista")- , (13, "kolmansillatoista")- , (14, "neljänsillätoista")- , (15, "viidensillätoista")- , (16, "kuudensillatoista")- , (17, "seitsemänsillätoista")- , (18, "kahdeksansillatoista")- , (19, "yhdeksänsillätoista")- , (20, "kahdensillakymmenensillä")- , (21, "kahdensillakymmenensilläensimmäisillä")- , (100, "sadansilla")- , (1000, "tuhannensilla")- ]- )- , ( "plural locative ablative"- , plural $ locativeAblative defaultInflection- , [ (0, "nollansilta")- , (1, "ensimmäisiltä")- , (2, "toisilta")- , (3, "kolmansilta")- , (4, "neljänsiltä")- , (5, "viidensiltä")- , (6, "kuudensilta")- , (7, "seitsemänsiltä")- , (8, "kahdeksansilta")- , (9, "yhdeksänsiltä")- , (10, "kymmenensiltä")- , (11, "yhdensitlätoista")- , (12, "kahdensiltatoista")- , (13, "kolmansiltatoista")- , (14, "neljänsiltätoista")- , (15, "viidensiltätoista")- , (16, "kuudensiltatoista")- , (17, "seitsemänsiltätoista")- , (18, "kahdeksansiltatoista")- , (19, "yhdeksänsiltätoista")- , (20, "kahdensiltakymmenensiltä")- , (21, "kahdensiltakymmenensiltäensimmäisiltä")- , (100, "sadansilta")- , (1000, "tuhannensilta")- ]- )- , ( "plural locative allative"- , plural $ locativeAllative defaultInflection- , [ (0, "nollansille")- , (1, "ensimmäisille")- , (2, "toisille")- , (3, "kolmansille")- , (4, "neljänsille")- , (5, "viidensille")- , (6, "kuudensille")- , (7, "seitsemänsille")- , (8, "kahdeksansille")- , (9, "yhdeksänsille")- , (10, "kymmenensille")- , (11, "yhdensiintoista")- , (12, "kahdensilletoista")- , (13, "kolmansilletoista")- , (14, "neljänsilletoista")- , (15, "viidensilletoista")- , (16, "kuudensilletoista")- , (17, "seitsemänsilletoista")- , (18, "kahdeksansilletoista")- , (19, "yhdeksänsilletoista")- , (20, "kahdensillekymmenensille")- , (21, "kahdensillekymmenensilleensimmäisille")- , (100, "sadansille")- , (1000, "tuhannensille")- ]- )- , ( "plural abessive"- , plural $ abessive defaultInflection- , [ (0, "nollansitta")- , (1, "ensimmäisittä")- , (2, "toisitta")- , (3, "kolmansitta")- , (4, "neljänsittä")- , (5, "viidensittä")- , (6, "kuudensitta")- , (7, "seitsemänsittä")- , (8, "kahdeksansitta")- , (9, "yhdeksänsittä")- , (10, "kymmenensittä")- , (11, "yhdensittätoista")- , (12, "kahdensittatoista")- , (13, "kolmansittatoista")- , (14, "neljänsittätoista")- , (15, "viidensittätoista")- , (16, "kuudensittatoista")- , (17, "seitsemänsittätoista")- , (18, "kahdeksansittatoista")- , (19, "yhdeksänsittätoista")- , (20, "kahdensittakymmenensittä")- , (21, "kahdensittakymmenensittäensimmäisittä")- , (100, "sadansitta")- , (1000, "tuhannensitta")- ]- )- , ( "plural comitative"- , plural $ comitative defaultInflection- , [ (0, "nollansine")- , (1, "ensimmäisine")- , (2, "toisine")- , (3, "kolmansine")- , (4, "neljänsine")- , (5, "viidensine")- , (6, "kuudensine")- , (7, "seitsemänsine")- , (8, "kahdeksansine")- , (9, "yhdeksänsine")- , (10, "kymmenensine")- , (11, "yhdensinetoista")- , (12, "kahdensinetoista")- , (13, "kolmansinetoista")- , (14, "neljänsinetoista")- , (15, "viidensinetoista")- , (16, "kuudensinetoista")- , (17, "seitsemänsinetoista")- , (18, "kahdeksansinetoista")- , (19, "yhdeksänsinetoista")- , (20, "kahdensinekymmenensine")- , (21, "kahdensinekymmenensineensimmäisine")- , (100, "sadansine")- , (1000, "tuhannensine")- ]- )- , ( "plural instructive"- , plural $ instructive defaultInflection- , [ (0, "nollansin")- , (1, "ensimmäisin")- , (2, "toisin")- , (3, "kolmansin")- , (4, "neljänsin")- , (5, "viidensin")- , (6, "kuudensin")- , (7, "seitsemänsin")- , (8, "kahdeksansin")- , (9, "yhdeksänsin")- , (10, "kymmenensin")- , (11, "yhdensintoista")- , (12, "kahdensintoista")- , (13, "kolmansintoista")- , (14, "neljänsintoista")- , (15, "viidensintoista")- , (16, "kuudensintoista")- , (17, "seitsemänsintoista")- , (18, "kahdeksansintoista")- , (19, "yhdeksänsintoista")- , (20, "kahdensinkymmenensin")- , (21, "kahdensinkymmenensinensimmäisin")- , (100, "sadansin")- , (1000, "tuhannensin")- ]- )- ]--multiplicatives ∷ (Integral i) ⇒ TestData i-multiplicatives =- [ ( "default"- , defaultInflection- , [ (1, "kerran")- , (2, "kahdesti")- , (6, "kuudesti")- ]- )- ]--multipliers ∷ (Integral i) ⇒ TestData i-multipliers =- [ ( "default"- , defaultInflection- , [ (6, "kuusinkertainen")- ]- )- ]
+ src-test/Text/Numeral/Language/FIN/TestData.hs view
@@ -0,0 +1,1820 @@+{-|+[@ISO639-1@] fi++[@ISO639-2@] fin++[@ISO639-3@] fin++[@Native name@] suomi++[@English name@] Finnish+-}++module Text.Numeral.Language.FIN.TestData+ ( cardinals+ , ordinals+ , multiplicatives+ , multipliers+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( ($) )+import "base" Prelude ( Integral, (+) )+import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources:+-- http://www.marijn.org/everything-is-4/counting-0-to-100/finnish+-- http://www.languagesandnumbers.com/how-to-count-in-finnish/en/fin/+-- http://en.wikipedia.org/wiki/Finnish_numerals+-- http://mylanguages.org/finnish_numbers.php+-- http://users.jyu.fi/~pamakine/kieli/suomi/numeraalit/numeroten.html++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "singular nominative"+ , singular $ nominative defaultInflection+ , [ (0, "nolla")+ , (1, "yksi")+ , (2, "kaksi")+ , (3, "kolme")+ , (4, "neljä")+ , (5, "viisi")+ , (6, "kuusi")+ , (7, "seitsemän")+ , (8, "kahdeksan")+ , (9, "yhdeksän")+ , (10, "kymmenen")+ , (11, "yksitoista")+ , (12, "kaksitoista")+ , (13, "kolmetoista")+ , (14, "neljätoista")+ , (15, "viisitoista")+ , (16, "kuusitoista")+ , (17, "seitsemäntoista")+ , (18, "kahdeksantoista")+ , (19, "yhdeksäntoista")+ , (20, "kaksikymmentä")+ , (21, "kaksikymmentäyksi")+ , (22, "kaksikymmentäkaksi")+ , (23, "kaksikymmentäkolme")+ , (24, "kaksikymmentäneljä")+ , (25, "kaksikymmentäviisi")+ , (26, "kaksikymmentäkuusi")+ , (27, "kaksikymmentäseitsemän")+ , (28, "kaksikymmentäkahdeksan")+ , (29, "kaksikymmentäyhdeksän")+ , (30, "kolmekymmentä")+ , (31, "kolmekymmentäyksi")+ , (32, "kolmekymmentäkaksi")+ , (33, "kolmekymmentäkolme")+ , (34, "kolmekymmentäneljä")+ , (35, "kolmekymmentäviisi")+ , (36, "kolmekymmentäkuusi")+ , (37, "kolmekymmentäseitsemän")+ , (38, "kolmekymmentäkahdeksan")+ , (39, "kolmekymmentäyhdeksän")+ , (40, "neljäkymmentä")+ , (41, "neljäkymmentäyksi")+ , (42, "neljäkymmentäkaksi")+ , (43, "neljäkymmentäkolme")+ , (44, "neljäkymmentäneljä")+ , (45, "neljäkymmentäviisi")+ , (46, "neljäkymmentäkuusi")+ , (47, "neljäkymmentäseitsemän")+ , (48, "neljäkymmentäkahdeksan")+ , (49, "neljäkymmentäyhdeksän")+ , (50, "viisikymmentä")+ , (51, "viisikymmentäyksi")+ , (52, "viisikymmentäkaksi")+ , (53, "viisikymmentäkolme")+ , (54, "viisikymmentäneljä")+ , (55, "viisikymmentäviisi")+ , (56, "viisikymmentäkuusi")+ , (57, "viisikymmentäseitsemän")+ , (58, "viisikymmentäkahdeksan")+ , (59, "viisikymmentäyhdeksän")+ , (60, "kuusikymmentä")+ , (61, "kuusikymmentäyksi")+ , (62, "kuusikymmentäkaksi")+ , (63, "kuusikymmentäkolme")+ , (64, "kuusikymmentäneljä")+ , (65, "kuusikymmentäviisi")+ , (66, "kuusikymmentäkuusi")+ , (67, "kuusikymmentäseitsemän")+ , (68, "kuusikymmentäkahdeksan")+ , (69, "kuusikymmentäyhdeksän")+ , (70, "seitsemänkymmentä")+ , (71, "seitsemänkymmentäyksi")+ , (72, "seitsemänkymmentäkaksi")+ , (73, "seitsemänkymmentäkolme")+ , (74, "seitsemänkymmentäneljä")+ , (75, "seitsemänkymmentäviisi")+ , (76, "seitsemänkymmentäkuusi")+ , (77, "seitsemänkymmentäseitsemän")+ , (78, "seitsemänkymmentäkahdeksan")+ , (79, "seitsemänkymmentäyhdeksän")+ , (80, "kahdeksankymmentä")+ , (81, "kahdeksankymmentäyksi")+ , (82, "kahdeksankymmentäkaksi")+ , (83, "kahdeksankymmentäkolme")+ , (84, "kahdeksankymmentäneljä")+ , (85, "kahdeksankymmentäviisi")+ , (86, "kahdeksankymmentäkuusi")+ , (87, "kahdeksankymmentäseitsemän")+ , (88, "kahdeksankymmentäkahdeksan")+ , (89, "kahdeksankymmentäyhdeksän")+ , (90, "yhdeksänkymmentä")+ , (91, "yhdeksänkymmentäyksi")+ , (92, "yhdeksänkymmentäkaksi")+ , (93, "yhdeksänkymmentäkolme")+ , (94, "yhdeksänkymmentäneljä")+ , (95, "yhdeksänkymmentäviisi")+ , (96, "yhdeksänkymmentäkuusi")+ , (97, "yhdeksänkymmentäseitsemän")+ , (98, "yhdeksänkymmentäkahdeksan")+ , (99, "yhdeksänkymmentäyhdeksän")+ , (100, "sata")+ , (101, "satayksi")+ , (123, "satakaksikymmentäkolme")+ , (200, "kaksisataa")+ , (300, "kolmesataa")+ , (357, "kolmesataaviisikymmentäseitsemän")+ , (400, "neljäsataa")+ , (500, "viisisataa")+ , (567, "viisisataakuusikymmentäseitsemän")+ , (600, "kuusisataa")+ , (700, "seitsemänsataa")+ , (800, "kahdeksansataa")+ , (900, "yhdeksänsataa")+ , (999, "yhdeksänsataayhdeksänkymmentäyhdeksän")+ , (1000, "tuhat")+ , (1001, "tuhatyksi")+ , (2000, "kaksituhatta")+ , (3000, "kolmetuhatta")+ , (3456, "kolmetuhattaneljäsataaviisikymmentäkuusi")+ , (3721, "kolmetuhattaseitsemänsataakaksikymmentäyksi")+ , (4000, "neljätuhatta")+ , (5000, "viisituhatta")+ , (6000, "kuusituhatta")+ , (7000, "seitsemäntuhatta")+ , (8000, "kahdeksantuhatta")+ , (9000, "yhdeksäntuhatta")+ , (10000, "kymmenentuhatta")+ , (11000, "toistatuhatta")+ , (12000, "toistakaksituhatta")+ , (13000, "toistakolmetuhatta")+ , (dec 5, "satatuhatta")+ , (2 * dec 5, "kaksisataatuhatta")+ , (dec 6, "miljoona")+ , (dec 6 + 1, "miljoonayksi")+ , (2 * dec 6, "kaksimiljoonaa")+ , (32534756, "kolmekymmentäkaksimiljoonaaviisisataakolmekymmentäneljätuhattaseitsemänsataaviisikymmentäkuusi")+ , (dec 9, "miljardi")+ , (2 * dec 9, "kaksimiljardia")+ , (3 * dec 9, "kolmemiljardia")+ , (dec 12, "biljoona")+ , (3 * dec 12, "kolmebiljoonaa")+ ]+ )+ , ( "singular accusative"+ , singular $ accusative defaultInflection+ , [ (0, "nolla")+ , (1, "yksi")+ , (2, "kaksi")+ , (3, "kolme")+ , (4, "neljä")+ , (5, "viisi")+ , (6, "kuusi")+ , (7, "seitsemän")+ , (8, "kahdeksan")+ , (9, "yhdeksän")+ , (10, "kymmenen")+ , (11, "yksitoista")+ , (12, "kaksitoista")+ , (13, "kolmetoista")+ , (14, "neljätoista")+ , (15, "viisitoista")+ , (16, "kuusitoista")+ , (17, "seitsemäntoista")+ , (18, "kahdeksantoista")+ , (19, "yhdeksäntoista")+ , (20, "kaksikymmentä")+ , (21, "kaksikymmentäyksi")+ , (100, "sata")+ , (1000, "tuhat")+ ]+ )+ , ( "singular genitive"+ , singular $ genitive defaultInflection+ , [ (0, "nollan")+ , (1, "yhden")+ , (2, "kahden")+ , (3, "kolmen")+ , (4, "neljän")+ , (5, "viiden")+ , (6, "kuuden")+ , (7, "seitsemän")+ , (8, "kahdeksan")+ , (9, "yhdeksän")+ , (10, "kymmenen")+ , (11, "yhdentoista")+ , (12, "kahdentoista")+ , (13, "kolmentoista")+ , (14, "neljäntoista")+ , (15, "viidentoista")+ , (16, "kuudentoista")+ , (17, "seitsemäntoista")+ , (18, "kahdeksantoista")+ , (19, "yhdeksäntoista")+ , (20, "kahdenkymmenen")+ , (21, "kahdenkymmenenyhden")+ , (100, "sadan")+ , (357, "kolmensadanviidenkymmenenseitsemän")+ , (1000, "tuhannen")+ ]+ )+ , ( "singular partitive"+ , singular $ partitive defaultInflection+ , [ (0, "nollaa")+ , (1, "yhtä")+ , (2, "kahta")+ , (3, "kolmea")+ , (4, "neljää")+ , (5, "viittä")+ , (6, "kuutta")+ , (7, "seitsemää")+ , (8, "kahdeksaa")+ , (9, "yhdeksää")+ , (10, "kymmentä")+ , (11, "yhtätoista")+ , (12, "kahtatoista")+ , (13, "kolmeatoista")+ , (14, "neljäätoista")+ , (15, "viittätoista")+ , (16, "kuuttatoista")+ , (17, "seitsemäätoista")+ , (18, "kahdeksaatoista")+ , (19, "yhdeksäätoista")+ , (20, "kahtakymmentä")+ , (21, "kahtakymmentäyhtä")+ , (100, "sataa")+ , (357, "kolmeasataaviittäkymmentäseitsemää")+ , (1000, "tuhatta")+ ]+ )+ , ( "singular essive"+ , singular $ essive defaultInflection+ , [ (0, "nollana")+ , (1, "yhtenä")+ , (2, "kahtena")+ , (3, "kolmena")+ , (4, "neljänä")+ , (5, "viitenä")+ , (6, "kuutena")+ , (7, "seitsemänä")+ , (8, "kahdeksana")+ , (9, "yhdeksänä")+ , (10, "kymmenenä")+ , (11, "yhtenätoista")+ , (12, "kahtenatoista")+ , (13, "kolmenatoista")+ , (14, "neljänätoista")+ , (15, "viitenätoista")+ , (16, "kuutenatoista")+ , (17, "seitsemänätoista")+ , (18, "kahdeksanatoista")+ , (19, "yhdeksänätoista")+ , (20, "kahtenakymmenenä")+ , (21, "kahdessakymmenessäyhdessä")+ , (100, "satana")+ , (357, "kolmenasatanaviitenäkymmenenäseitsemänä")+ , (1000, "tuhantena")+ ]+ )+ , ( "singular translative"+ , singular $ translative defaultInflection+ , [ (0, "nollaksi")+ , (1, "yhdeksi")+ , (2, "kahdeksi")+ , (3, "kolmeksi")+ , (4, "neljäksi")+ , (5, "viideksi")+ , (6, "kuudeksi")+ , (7, "seitsemäksi")+ , (8, "kahdeksaksi")+ , (9, "yhdeksäksi")+ , (10, "kymmeneksi")+ , (11, "yhdeksitoista")+ , (12, "kahdeksitoista")+ , (13, "kolmeksitoista")+ , (14, "neljäksitoista")+ , (15, "viideksitoista")+ , (16, "kuudeksitoista")+ , (17, "seitsemäksitoista")+ , (18, "kahdeksaksitoista")+ , (19, "yhdeksäksitoista")+ , (20, "kahdeksikymmeneksi")+ , (21, "kahdeksikymmeneksiyhdeksi")+ , (100, "sadaksi")+ , (1000, "tuhanneksi")+ ]+ )+ , ( "singular locative inessive"+ , singular $ locativeInessive defaultInflection+ , [ (0, "nollassa")+ , (1, "yhdessä")+ , (2, "kahdessa")+ , (3, "kolmessa")+ , (4, "neljässä")+ , (5, "viidessä")+ , (6, "kuudessa")+ , (7, "seitsemässä")+ , (8, "kahdeksassa")+ , (9, "yhdeksässä")+ , (10, "kymmenessä")+ , (11, "yhdessätoista")+ , (12, "kahdessatoista")+ , (13, "kolmessatoista")+ , (14, "neljässätoista")+ , (15, "viidessätoista")+ , (16, "kuudessatoista")+ , (17, "seitsemässätoista")+ , (18, "kahdeksassatoista")+ , (19, "yhdeksässätoista")+ , (20, "kahdessakymmenessä")+ , (21, "kahdessakymmenessäyhdessä")+ , (100, "sadassa")+ , (1000, "tuhannessa")+ ]+ )+ , ( "singular locative elative"+ , singular $ locativeElative defaultInflection+ , [ (0, "nollasta")+ , (1, "yhdestä")+ , (2, "kahdesta")+ , (3, "kolmesta")+ , (4, "neljästä")+ , (5, "viidestä")+ , (6, "kuudesta")+ , (7, "seitsemästä")+ , (8, "kahdeksasta")+ , (9, "yhdeksästä")+ , (10, "kymmenestä")+ , (11, "yhdestätoista")+ , (12, "kahdestatoista")+ , (13, "kolmestatoista")+ , (14, "neljästätoista")+ , (15, "viidestätoista")+ , (16, "kuudestatoista")+ , (17, "seitsemästätoista")+ , (18, "kahdeksastatoista")+ , (19, "yhdeksästätoista")+ , (20, "kahdestakymmenestä")+ , (21, "kahdestakymmenestäyhdestä")+ , (100, "sadasta")+ , (1000, "tuhannesta")+ ]+ )+ , ( "singular locative illative"+ , singular $ locativeIllative defaultInflection+ , [ (0, "nollaan")+ , (1, "yhteen")+ , (2, "kahteen")+ , (3, "kolmeen")+ , (4, "neljään")+ , (5, "viiteen")+ , (6, "kuuteen")+ , (7, "seitsemään")+ , (8, "kahdeksaan")+ , (9, "yhdeksään")+ , (10, "kymmeneen")+ , (11, "yhteentoista")+ , (12, "kahteentoista")+ , (13, "kolmeentoista")+ , (14, "neljääntoista")+ , (15, "viiteentoista")+ , (16, "kuuteentoista")+ , (17, "seitsemääntoista")+ , (18, "kahdeksaantoista")+ , (19, "yhdeksääntoista")+ , (20, "kahteenkymmeneen")+ , (21, "kahteenkymmeneenyhteen")+ , (100, "sataan")+ , (1000, "tuhanteen")+ ]+ )+ , ( "singular locative adessive"+ , singular $ locativeAdessive defaultInflection+ , [ (0, "nollalla")+ , (1, "yhdellä")+ , (2, "kahdella")+ , (3, "kolmella")+ , (4, "neljällä")+ , (5, "viidellä")+ , (6, "kuudella")+ , (7, "seitsemällä")+ , (8, "kahdeksalla")+ , (9, "yhdeksällä")+ , (10, "kymmenellä")+ , (11, "yhdellätoista")+ , (12, "kahdellatoista")+ , (13, "kolmellatoista")+ , (14, "neljällätoista")+ , (15, "viidellätoista")+ , (16, "kuudellatoista")+ , (17, "seitsemällätoista")+ , (18, "kahdeksallatoista")+ , (19, "yhdeksällätoista")+ , (20, "kahdellakymmenellä")+ , (21, "kahdellakymmenelläyhdellä")+ , (100, "sadalla")+ , (1000, "tuhannella")+ ]+ )+ , ( "singular locative ablative"+ , singular $ locativeAblative defaultInflection+ , [ (0, "nollalta")+ , (1, "yhdeltä")+ , (2, "kahdelta")+ , (3, "kolmelta")+ , (4, "neljältä")+ , (5, "viideltä")+ , (6, "kuudelta")+ , (7, "seitsemältä")+ , (8, "kahdeksalta")+ , (9, "yhdeksältä")+ , (10, "kymmeneltä")+ , (11, "yhdeltätoista")+ , (12, "kahdeltatoista")+ , (13, "kolmeltatoista")+ , (14, "neljältätoista")+ , (15, "viideltätoista")+ , (16, "kuudeltatoista")+ , (17, "seitsemältätoista")+ , (18, "kahdeksaltatoista")+ , (19, "yhdeksältätoista")+ , (20, "kahdeltakymmeneltä")+ , (21, "kahdeltakymmeneltäyhdeltä")+ , (100, "sadalta")+ , (1000, "tuhannelta")+ ]+ )+ , ( "singular locative allative"+ , singular $ locativeAllative defaultInflection+ , [ (0, "nollalle")+ , (1, "yhdelle")+ , (2, "kahdelle")+ , (3, "kolmelle")+ , (4, "neljälle")+ , (5, "viidelle")+ , (6, "kuudelle")+ , (7, "seitsemälle")+ , (8, "kahdeksalle")+ , (9, "yhdeksälle")+ , (10, "kymmenelle")+ , (11, "yhdelletoista")+ , (12, "kahdelletoista")+ , (13, "kolmelletoista")+ , (14, "neljälletoista")+ , (15, "viidelletoista")+ , (16, "kuudelletoista")+ , (17, "seitsemälletoista")+ , (18, "kahdeksalletoista")+ , (19, "yhdeksälletoista")+ , (20, "kahdellekymmenelle")+ , (21, "kahdellekymmenelleyhdelle")+ , (100, "sadalle")+ , (1000, "tuhannelle")+ ]+ )+ , ( "singular abessive"+ , singular $ abessive defaultInflection+ , [ (0, "nollatta")+ , (1, "yhdettä")+ , (2, "kahdetta")+ , (3, "kolmetta")+ , (4, "neljättä")+ , (5, "viidettä")+ , (6, "kuudetta")+ , (7, "seitsemättä")+ , (8, "kahdeksatta")+ , (9, "yhdeksättä")+ , (10, "kymmenettä")+ , (11, "yhdettätoista")+ , (12, "kahdettatoista")+ , (13, "kolmettatoista")+ , (14, "neljättätoista")+ , (15, "viidettätoista")+ , (16, "kuudettatoista")+ , (17, "seitsemättätoista")+ , (18, "kahdeksattatoista")+ , (19, "yhdeksättätoista")+ , (20, "kahdettakymmenettä")+ , (21, "kahdettakymmenettäyhdettä")+ , (100, "sadatta")+ , (1000, "tuhannetta")+ ]+ )+ , ( "singular super essive"+ , singular $ superEssive defaultInflection+ , [ (1, "yhtäällä")+ , (2, "kahtaalla")+ ]+ )+ , ( "singular delative"+ , singular $ delative defaultInflection+ , [ (1, "yhtäältä")+ , (2, "kahtaalta")+ ]+ )+ , ( "singular sublative"+ , singular $ sublative defaultInflection+ , [ (1, "yhtäälle")+ , (2, "kahtaalle")+ ]+ )+ , ( "singular lative"+ , singular $ lative defaultInflection+ , [ (1, "yhä")+ , (2, "kahtia")+ , (3, "kolmia")+ ]+ )+ , ( "singular multiplicative"+ , singular $ multiplicative defaultInflection+ , [ (1, "yhdesti")+ , (2, "kahdesti")+ , (3, "kolmesti")+ ]+ )+ , ( "plural nominative"+ , plural $ nominative defaultInflection+ , [ (0, "nollat")+ , (1, "yhdet")+ , (2, "kahdet")+ , (3, "kolmet")+ , (4, "neljät")+ , (5, "viidet")+ , (6, "kuudet")+ , (7, "seitsemät")+ , (8, "kahdeksat")+ , (9, "yhdeksät")+ , (10, "kymmenet")+ , (11, "yhdettoista")+ , (12, "kahdettoista")+ , (13, "kolmettoista")+ , (14, "neljättoista")+ , (15, "viidettoista")+ , (16, "kuudettoista")+ , (17, "seitsemättoista")+ , (18, "kahdeksattoista")+ , (19, "yhdeksättoista")+ , (20, "kahdetkymmenet")+ , (21, "kahdetkymmenetyhdet")+ , (100, "sadat")+ , (1000, "tuhannet")+ ]+ )+ , ( "plural accusative"+ , plural $ accusative defaultInflection+ , [ (0, "nollat")+ , (1, "yhdet")+ , (2, "kahdet")+ , (3, "kolmet")+ , (4, "neljät")+ , (5, "viidet")+ , (6, "kuudet")+ , (7, "seitsemät")+ , (8, "kahdeksat")+ , (9, "yhdeksät")+ , (10, "kymmenet")+ , (11, "yhdettoista")+ , (12, "kahdettoista")+ , (13, "kolmettoista")+ , (14, "neljättoista")+ , (15, "viidettoista")+ , (16, "kuudettoista")+ , (17, "seitsemättoista")+ , (18, "kahdeksattoista")+ , (19, "yhdeksättoista")+ , (20, "kahdetkymmenet")+ , (21, "kahdetkymmenetyhdet")+ , (100, "sadat")+ , (1000, "tuhannet")+ ]+ )+ , ( "plural genitive"+ , plural $ genitive defaultInflection+ , [ (0, "nollien")+ , (1, "yksien")+ , (2, "kaksien")+ , (3, "kolmien")+ , (4, "neljien")+ , (5, "viisien")+ , (6, "kuusien")+ , (7, "seitsemien")+ , (8, "kahdeksien")+ , (9, "yhdeksien")+ , (10, "kymmenien")+ , (11, "yksientoista")+ , (12, "kaksientoista")+ , (13, "kolmientoista")+ , (14, "neljientoista")+ , (15, "viisientoista")+ , (16, "kuusientoista")+ , (17, "seitsemientoista")+ , (18, "kahdeksientoista")+ , (19, "yhdeksientoista")+ , (20, "kaksienkymmenien")+ , (21, "kaksienkymmenienyksien")+ , (100, "satojen")+ , (1000, "tuhansien")+ ]+ )+ , ( "plural partitive"+ , plural $ partitive defaultInflection+ , [ (0, "nollia")+ , (1, "yksiä")+ , (2, "kaksia")+ , (3, "kolmia")+ , (4, "neljiä")+ , (5, "viisiä")+ , (6, "kuusia")+ , (7, "seitsemiä")+ , (8, "kahdeksia")+ , (9, "yhdeksiä")+ , (10, "kymmeniä")+ , (11, "yksiätoista")+ , (12, "kaksiatoista")+ , (13, "kolmiatoista")+ , (14, "neljiätoista")+ , (15, "viittätoista")+ , (16, "kuuttatoista")+ , (17, "seitsemiätoista")+ , (18, "kahdeksiatoista")+ , (19, "yhdeksiätoista")+ , (20, "kaksiakymmeniä")+ , (21, "kaksiakymmeniäyksiä")+ , (100, "satoja")+ , (1000, "tuhansia")+ ]+ )+ , ( "plural essive"+ , plural $ essive defaultInflection+ , [ (0, "nollina")+ , (1, "yksinä")+ , (2, "kaksina")+ , (3, "kolmina")+ , (4, "neljinä")+ , (5, "viisinä")+ , (6, "kuusina")+ , (7, "seitseminä")+ , (8, "kahdeksina")+ , (9, "yhdeksinä")+ , (10, "kymmeninä")+ , (11, "yksinätoista")+ , (12, "kaksinatoista")+ , (13, "kolminatoista")+ , (14, "neljinätoista")+ , (15, "viitenätoista")+ , (16, "kuutenatoista")+ , (17, "seitseminätoista")+ , (18, "kahdeksinatoista")+ , (19, "yhdeksinätoista")+ , (20, "kaksinakymmeninä")+ , (21, "kaksinakymmeninäyksinä")+ , (100, "satoina")+ , (1000, "tuhansina")+ ]+ )+ , ( "plural translative"+ , plural $ translative defaultInflection+ , [ (0, "nolliksi")+ , (1, "yksiksi")+ , (2, "kaksiksi")+ , (3, "kolmiksi")+ , (4, "neljiksi")+ , (5, "viisiksi")+ , (6, "kuusiksi")+ , (7, "seitsemiksi")+ , (8, "kahdeksiksi")+ , (9, "yhdeksiksi")+ , (10, "kymmeniksi")+ , (11, "yksiksitoista")+ , (12, "kaksiksitoista")+ , (13, "kolmiksitoista")+ , (14, "neljiksitoista")+ , (15, "viideksitoista")+ , (16, "kuudeksitoista")+ , (17, "seitsemiksitoista")+ , (18, "kahdeksiksitoista")+ , (19, "yhdeksiksitoista")+ , (20, "kaksiksikymmeniksi")+ , (21, "kaksiksikymmeniksiyksiksi")+ , (100, "sadoiksi")+ , (1000, "tuhansiksi")+ ]+ )+ , ( "plural locative inessive"+ , plural $ locativeInessive defaultInflection+ , [ (0, "nollissa")+ , (1, "yksissä")+ , (2, "kaksissa")+ , (3, "kolmissa")+ , (4, "neljissä")+ , (5, "viisissä")+ , (6, "kuusissa")+ , (7, "seitsemissä")+ , (8, "kahdeksissa")+ , (9, "yhdeksissä")+ , (10, "kymmenissä")+ , (11, "yksissätoista")+ , (12, "kaksissatoista")+ , (13, "kolmissatoista")+ , (14, "neljissätoista")+ , (15, "viidessätoista")+ , (16, "kuudessatoista")+ , (17, "seitsemissätoista")+ , (18, "kahdeksissatoista")+ , (19, "yhdeksissätoista")+ , (20, "kaksissakymmenissä")+ , (21, "kaksissakymmenissäyksissä")+ , (100, "sadoissa")+ , (1000, "tuhansissa")+ ]+ )+ , ( "plural locative elative"+ , plural $ locativeElative defaultInflection+ , [ (0, "nollista")+ , (1, "yksistä")+ , (2, "kaksista")+ , (3, "kolmista")+ , (4, "neljistä")+ , (5, "viisistä")+ , (6, "kuusista")+ , (7, "seitsemistä")+ , (8, "kahdeksista")+ , (9, "yhdeksistä")+ , (10, "kymmenistä")+ , (11, "yksistätoista")+ , (12, "kaksistatoista")+ , (13, "kolmistatoista")+ , (14, "neljistätoista")+ , (15, "viidestätoista")+ , (16, "kuudestatoista")+ , (17, "seitsemistätoista")+ , (18, "kahdeksistatoista")+ , (19, "yhdeksistätoista")+ , (20, "kaksistakymmenistä")+ , (21, "kaksistakymmenistäyksistä")+ , (100, "sadoista")+ , (1000, "tuhansista")+ ]+ )+ , ( "plural locative illative"+ , plural $ locativeIllative defaultInflection+ , [ (0, "nolliin")+ , (1, "yksiin")+ , (2, "kaksiin")+ , (3, "kolmiin")+ , (4, "neljiin")+ , (5, "viisiin")+ , (6, "kuusiin")+ , (7, "seitsemiin")+ , (8, "kahdeksiin")+ , (9, "yhdeksiin")+ , (10, "kymmeniin")+ , (11, "yksiintoista")+ , (12, "kaksiintoista")+ , (13, "kolmiintoista")+ , (14, "neljiintoista")+ , (15, "viiteentoista")+ , (16, "kuuteentoista")+ , (17, "seitsemiintoista")+ , (18, "kahdeksiintoista")+ , (19, "yhdeksiintoista")+ , (20, "kaksiinkymmeniin")+ , (21, "kaksiinkymmeniinyksiin")+ , (100, "satoihin")+ , (1000, "tuhansiin")+ ]+ )+ , ( "plural locative adessive"+ , plural $ locativeAdessive defaultInflection+ , [ (0, "nollilla")+ , (1, "yksillä")+ , (2, "kaksilla")+ , (3, "kolmilla")+ , (4, "neljillä")+ , (5, "viisillä")+ , (6, "kuusilla")+ , (7, "seitsemillä")+ , (8, "kahdeksilla")+ , (9, "yhdeksillä")+ , (10, "kymmenillä")+ , (11, "yksillätoista")+ , (12, "kaksillatoista")+ , (13, "kolmillatoista")+ , (14, "neljillätoista")+ , (15, "viidellätoista")+ , (16, "kuudellatoista")+ , (17, "seitsemillätoista")+ , (18, "kahdeksillatoista")+ , (19, "yhdeksillätoista")+ , (20, "kaksillakymmenillä")+ , (21, "kaksillakymmenilläyksillä")+ , (100, "sadoilla")+ , (1000, "tuhansilla")+ ]+ )+ , ( "plural locative ablative"+ , plural $ locativeAblative defaultInflection+ , [ (0, "nollilta")+ , (1, "yksiltä")+ , (2, "kaksilta")+ , (3, "kolmilta")+ , (4, "neljiltä")+ , (5, "viisiltä")+ , (6, "kuusilta")+ , (7, "seitsemiltä")+ , (8, "kahdeksilta")+ , (9, "yhdeksiltä")+ , (10, "kymmeniltä")+ , (11, "yksiltätoista")+ , (12, "kaksiltatoista")+ , (13, "kolmiltatoista")+ , (14, "neljiltätoista")+ , (15, "viideltätoista")+ , (16, "kuudeltatoista")+ , (17, "seitsemiltätoista")+ , (18, "kahdeksiltatoista")+ , (19, "yhdeksiltätoista")+ , (20, "kaksiltakymmeniltä")+ , (21, "kaksiltakymeniltäyksiltä")+ , (100, "sadoilta")+ , (1000, "tuhansilta")+ ]+ )+ , ( "plural locative allative"+ , plural $ locativeAllative defaultInflection+ , [ (0, "nollille")+ , (1, "yksille")+ , (2, "kaksille")+ , (3, "kolmille")+ , (4, "neljille")+ , (5, "viisille")+ , (6, "kuusille")+ , (7, "seitsemille")+ , (8, "kahdeksille")+ , (9, "yhdeksille")+ , (10, "kymmenille")+ , (11, "yksilletoista")+ , (12, "kaksilletoista")+ , (13, "kolmilletoista")+ , (14, "neljilletoista")+ , (15, "viidelletoista")+ , (16, "kuudelletoista")+ , (17, "seitsemilletoista")+ , (18, "kahdeksilletoista")+ , (19, "yhdeksilletoista")+ , (20, "kaksillekymmenille")+ , (21, "kaksillekymmenilleyksille")+ , (100, "sadoille")+ , (1000, "tuhansille")+ ]+ )+ , ( "plural abessive"+ , plural $ abessive defaultInflection+ , [ (0, "nollitta")+ , (1, "yksittä")+ , (2, "kaksitta")+ , (3, "kolmitta")+ , (4, "neljittä")+ , (5, "viisittä")+ , (6, "kuusitta")+ , (7, "seitsemittä")+ , (8, "kahdeksitta")+ , (9, "yhdeksittä")+ , (10, "kymmenittä")+ , (11, "yksittätoista")+ , (12, "kaksittatoista")+ , (13, "kolmittatoista")+ , (14, "neljittätoista")+ , (15, "viidettätoista")+ , (16, "kuudettatoista")+ , (17, "seitsemittätoista")+ , (18, "kahdeksittatoista")+ , (19, "yhdeksittätoista")+ , (20, "kaksittakymmenittä")+ , (21, "kaksittakymmenittäyksittä")+ , (100, "sadoitta")+ , (1000, "tuhansitta")+ ]+ )+ , ( "plural comitative"+ , plural $ comitative defaultInflection+ , [ (0, "nolline")+ , (1, "yksine")+ , (2, "kaksine")+ , (3, "kolmine")+ , (4, "neljine")+ , (5, "viisine")+ , (6, "kuusine")+ , (7, "seitsemine")+ , (8, "kahdeksine")+ , (9, "yhdeksine")+ , (10, "kymmenine")+ , (11, "yksinetoista")+ , (12, "kaksinetoista")+ , (13, "kolminetoista")+ , (14, "neljinetoista")+ , (15, "viisinetoista")+ , (16, "kuusinetoista")+ , (17, "seitseminetoista")+ , (18, "kahdeksinetoista")+ , (19, "yhdeksinetoista")+ , (20, "kaksinekymmenine")+ , (21, "kaksinekymmenineyksine")+ , (100, "satoine")+ , (1000, "tuhansine")+ ]+ )+ , ( "plural instructive"+ , plural $ instructive defaultInflection+ , [ (0, "nollin")+ , (1, "yksin")+ , (2, "kaksin")+ , (3, "kolmin")+ , (4, "neljin")+ , (5, "viisin")+ , (6, "kuusin")+ , (7, "seitsemin")+ , (8, "kahdeksin")+ , (9, "yhdeksin")+ , (10, "kymmenin")+ , (11, "yksintoista")+ , (12, "kaksintoista")+ , (13, "kolmintoista")+ , (14, "neljintoista")+ , (15, "viisintoista")+ , (16, "kuusintoista")+ , (17, "seitsemintoista")+ , (18, "kahdeksintoista")+ , (19, "yhdeksintoista")+ , (20, "kaksinkymmenin")+ , (21, "kaksinkymmeninyksin")+ , (100, "sadoin")+ , (1000, "tuhansin")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "singular nominative"+ , singular $ nominative defaultInflection+ , [ (0, "nollas")+ , (1, "ensimmäinen")+ , (2, "toinen")+ , (3, "kolmas")+ , (4, "neljäs")+ , (5, "viides")+ , (6, "kuudes")+ , (7, "seitsemäs")+ , (8, "kahdeksas")+ , (9, "yhdeksäs")+ , (10, "kymmenes")+ , (11, "yhdestoista")+ , (12, "kahdestoista")+ , (13, "kolmastoista")+ , (14, "neljästoista")+ , (15, "viidestoista")+ , (16, "kuudestoista")+ , (17, "seitsemästoista")+ , (18, "kahdeksastoista")+ , (19, "yhdeksästoista")+ , (20, "kahdeskymmenes")+ , (21, "kahdeskymmenesensimmäinen") -- also kahdeskymmenesyhdes+ , (22, "kahdeskymmenestoinen") -- also kahdeskymmeneskahdes+ , (23, "kahdeskymmeneskolmas")+ , (24, "kahdeskymmenesneljäs")+ , (25, "kahdeskymmenesviides")+ , (26, "kahdeskymmeneskuudes")+ , (27, "kahdeskymmenesseitsemäs")+ , (28, "kahdeskymmeneskahdeksas")+ , (29, "kahdeskymmenesyhdeksäs")+ , (30, "kolmaskymmenes")+ , (40, "neljäskymmenes")+ , (50, "viideskymmenes")+ , (60, "kuudeskymmenes")+ , (70, "seitsemäskymmenes")+ , (80, "kahdeksaskymmenes")+ , (90, "yhdeksäskymmenes")+ , (100, "sadas")+ , (101, "sadasensimmäinen")+ , (357, "kolmassadasviideskymmenesseitsemäs")+ , (1000, "tuhannes")+ , (1001, "tuhannesensimmäinen")+ , (3721, "kolmastuhannesseitsemässadaskahdeskymmenesensimmäinen")+ ]+ )+ , ( "singular accusative"+ , singular $ accusative defaultInflection+ , [ (0, "nollas")+ , (1, "ensimmäinen")+ , (2, "toinen")+ , (3, "kolmas")+ , (4, "neljäs")+ , (5, "viides")+ , (6, "kuudes")+ , (7, "seitsemäs")+ , (8, "kahdeksas")+ , (9, "yhdeksäs")+ , (10, "kymmenes")+ , (11, "yhdestoista")+ , (12, "kahdestoista")+ , (13, "kolmastoista")+ , (14, "neljästoista")+ , (15, "viidestoista")+ , (16, "kuudestoista")+ , (17, "seitsemästoista")+ , (18, "kahdeksastoista")+ , (19, "yhdeksästoista")+ , (20, "kahdeskymmenes")+ , (21, "kahdeskymmenesensimmäinen")+ , (100, "sadas")+ , (1000, "tuhannes")+ ]+ )+ , ( "singular genitive"+ , singular $ genitive defaultInflection+ , [ (0, "nollannen")+ , (1, "ensimmäisen")+ , (2, "toisen")+ , (3, "kolmannen")+ , (4, "neljännen")+ , (5, "viidennen")+ , (6, "kuudennen")+ , (7, "seitsemännen")+ , (8, "kahdeksannen")+ , (9, "yhdeksännen")+ , (10, "kymmenennen")+ , (11, "yhdennentoista")+ , (12, "kahdennentoista")+ , (13, "kolmannentoista")+ , (14, "neljännentoista")+ , (15, "viidennentoista")+ , (16, "kuudennentoista")+ , (17, "seitsemännentoista")+ , (18, "kahdeksannentoista")+ , (19, "yhdeksännentoista")+ , (20, "kahdennenkymmenennen")+ , (21, "kahdennenkymmenennenensimmäisen")+ , (100, "sadannen")+ , (357, "kolmannensadannenviidennenkymmenennenseitsemännen")+ , (1000, "tuhannennen")+ ]+ )+ , ( "singular partitive"+ , singular $ partitive defaultInflection+ , [ (0, "nollatta")+ , (1, "ensimmäistä")+ , (2, "toista")+ , (3, "kolmatta")+ , (4, "neljättä")+ , (5, "viidettä")+ , (6, "kuudetta")+ , (7, "seitsemättä")+ , (8, "kahdeksatta")+ , (9, "yhdeksättä")+ , (10, "kymmenettä")+ , (11, "yhdettätoista")+ , (12, "kahdettatoista")+ , (13, "kolmattatoista")+ , (14, "neljättätoista")+ , (15, "viidettätoista")+ , (16, "kuudettatoista")+ , (17, "seitsemättätoista")+ , (18, "kahdeksattatoista")+ , (19, "yhdeksättätoista")+ , (20, "kahdettakymmenettä")+ , (21, "kahdettakymmenettäensimmäistä")+ , (100, "sadatta")+ , (357, "kolmattasadattaviidettäkymmenettäseitsemätta")+ , (1000, "tuhannetta")+ ]+ )+ , ( "singular essive"+ , singular $ essive defaultInflection+ , [ (0, "nollantena")+ , (1, "ensimmmäisenä")+ , (2, "toisena")+ , (3, "kolmantena")+ , (4, "neljäntenä")+ , (5, "viidentenä")+ , (6, "kuudentena")+ , (7, "seitsemäntenä")+ , (8, "kahdeksantena")+ , (9, "yhdeksäntenä")+ , (10, "kymmenentenä")+ , (11, "yhdennessätoista")+ , (12, "kahdentenatoista")+ , (13, "kolmantenatoista")+ , (14, "neljäntenätoista")+ , (15, "viidentenätoista")+ , (16, "kuudentenatoista")+ , (17, "seitsemäntenätoista")+ , (18, "kahdeksantenatoista")+ , (19, "yhdeksäntenätoista")+ , (20, "kahdentenakymmenentenä")+ , (21, "kahdentenakymmenentenäensimmäisenä")+ , (100, "sadantena")+ , (357, "kolmantenasadantenaviidentenäkymmenentenäseitsemäntenä")+ , (1000, "tuhannentena")+ ]+ )+ , ( "singular translative"+ , singular $ translative defaultInflection+ , [ (0, "nollanneksi")+ , (1, "ensimmäiseksi")+ , (2, "toiseksi")+ , (3, "kolmanneksi")+ , (4, "neljänneksi")+ , (5, "viidenneksi")+ , (6, "kuudenneksi")+ , (7, "seitsemänneksi")+ , (8, "kahdeksanneksi")+ , (9, "yhdeksänneksi")+ , (10, "kymmenenneksi")+ , (11, "yhdenneksitoista")+ , (12, "kahdenneksitoista")+ , (13, "kolmanneksitoista")+ , (14, "neljänneksitoista")+ , (15, "viidenneksitoista")+ , (16, "kuudenneksitoista")+ , (17, "seitsemänneksitoista")+ , (18, "kahdenksanneksitoista")+ , (19, "yhdeksänneksitoista")+ , (20, "kahdenneksikymmenenneksi")+ , (21, "kahdenneksikymmenenneksiensimmäiseksi")+ , (100, "sadanneksi")+ , (1000, "tuhannenneksi")+ ]+ )+ , ( "singular locative inessive"+ , singular $ locativeInessive defaultInflection+ , [ (0, "nollannessa")+ , (1, "ensimmäisessä")+ , (2, "toisessa")+ , (3, "kolmannessa")+ , (4, "neljännessä")+ , (5, "viidennessä")+ , (6, "kuudennessa")+ , (7, "seitsemännessä")+ , (8, "kahdeksannessa")+ , (9, "yhdeksännessä")+ , (10, "kymmenennessä")+ , (11, "yhdennessätoista")+ , (12, "kahdennessatoista")+ , (13, "kolmannessatoista")+ , (14, "neljännessätoista")+ , (15, "viidennessätoista")+ , (16, "kuudennessatoista")+ , (17, "seitsemännessätoista")+ , (18, "kahdeksannessatoista")+ , (19, "yhdeksännessätoista")+ , (20, "kahdennessakymmenennessä")+ , (21, "kahdennessakymmenennessäensimmäisessä")+ , (100, "sadannessa")+ , (1000, "tuhannennessa")+ ]+ )+ , ( "singular locative elative"+ , singular $ locativeElative defaultInflection+ , [ (0, "nollannesta")+ , (1, "ensimmäisestä")+ , (2, "toisesta")+ , (3, "kolmannesta")+ , (4, "neljännestä")+ , (5, "viidennestä")+ , (6, "kuudennesta")+ , (7, "seitsemännestä")+ , (8, "kahdeksannesta")+ , (9, "yhdeksännestä")+ , (10, "kymmenennestä")+ , (11, "yhdennestätoista")+ , (12, "kahdennestatoista")+ , (13, "kolmannestatoista")+ , (14, "neljännestätoista")+ , (15, "viidennestätoista")+ , (16, "kuudennestatoista")+ , (17, "seitsemännestätoista")+ , (18, "kahdeksannestatoista")+ , (19, "yhdeksännestätoista")+ , (20, "kahdennestakymmenennestä")+ , (21, "kahdennestakymmenennestäensimmäisestä")+ , (100, "sadannesta")+ , (1000, "tuhannennesta")+ ]+ )+ , ( "singular locative illative"+ , singular $ locativeIllative defaultInflection+ , [ (0, "nollanteen")+ , (1, "ensimmäiseen")+ , (2, "toiseen")+ , (3, "kolmanteen")+ , (4, "neljänteen")+ , (5, "viidenteen")+ , (6, "kuudenteen")+ , (7, "seitsemänteen")+ , (8, "kahdeksanteen")+ , (9, "yhdeksänteen")+ , (10, "kymmenenteen")+ , (11, "yhdenteentoista")+ , (12, "kahdenteentoista")+ , (13, "kolmanteentoista")+ , (14, "neljänteentoista")+ , (15, "viidenteentoista")+ , (16, "kuudenteentoista")+ , (17, "seitsemänteentoista")+ , (18, "kahdeksanteentoista")+ , (19, "yhdeksänteentoista")+ , (20, "kahdenteenkymmenenteen")+ , (21, "kahdenteenkymmenenteenensimmäiseen")+ , (100, "sadanteen")+ , (1000, "tuhannenteen")+ ]+ )+ , ( "singular locative adessive"+ , singular $ locativeAdessive defaultInflection+ , [ (0, "nollannella")+ , (1, "ensimmäisellä")+ , (2, "toisella")+ , (3, "kolmannella")+ , (4, "neljännellä")+ , (5, "viidennellä")+ , (6, "kuudennella")+ , (7, "seitsemännellä")+ , (8, "kahdeksannella")+ , (9, "yhdeksännellä")+ , (10, "kymmenennellä")+ , (11, "yhdennellätoista")+ , (12, "kahdennellatoista")+ , (13, "kolmannellatoista")+ , (14, "neljännellätoista")+ , (15, "viidennellätoista")+ , (16, "kuudennellatoista")+ , (17, "seitsemännellätoista")+ , (18, "kahdeksannellatoista")+ , (19, "yhdeksännellätoista")+ , (20, "kahdennellakymmenennellä")+ , (21, "kahdennellakymmenennelläensimmäisellä")+ , (100, "sadannella")+ , (1000, "tuhannennella")+ ]+ )+ , ( "singular locative ablative"+ , singular $ locativeAblative defaultInflection+ , [ (0, "nollannelta")+ , (1, "ensimmäiseltä")+ , (2, "toiselta")+ , (3, "kolmannelta")+ , (4, "neljänneltä")+ , (5, "viidenneltä")+ , (6, "kuudennelta")+ , (7, "seitsemänneltä")+ , (8, "kahdeksannelta")+ , (9, "yhdeksänneltä")+ , (10, "kymmenenneltä")+ , (11, "yhdenneltätoista")+ , (12, "kahdenneltatoista")+ , (13, "kolmanneltatoista")+ , (14, "neljänneltätoista")+ , (15, "viidenneltätoista")+ , (16, "kuudenneltatoista")+ , (17, "seitsemänneltätoista")+ , (18, "kahdeksanneltatoista")+ , (19, "yhdeksänneltätoista")+ , (20, "kahdenneltakymmenenneltä")+ , (21, "kahdenneltakymmenenneltäensimmäiseltä")+ , (100, "sadannelta")+ , (1000, "tuhannennelta")+ ]+ )+ , ( "singular locative allative"+ , singular $ locativeAllative defaultInflection+ , [ (0, "nollannelle")+ , (1, "ensimmäiselle")+ , (2, "toiselle")+ , (3, "kolmannelle")+ , (4, "neljännelle")+ , (5, "viidennelle")+ , (6, "kuudennelle")+ , (7, "seitsemännelle")+ , (8, "kahdeksannelle")+ , (9, "yhdeksännelle")+ , (10, "kymmenennelle")+ , (11, "yhdennelletoista")+ , (12, "kahdennelletoista")+ , (13, "kolmannelletoista")+ , (14, "neljännelletoista")+ , (15, "viidennelletoista")+ , (16, "kuudennelletoista")+ , (17, "seitsemännelletoista")+ , (18, "kahdeksannelletoista")+ , (19, "yhdeksännelletoista")+ , (20, "kahdennellekymmenennelle")+ , (21, "kahdennellekymmenennelleensimmäiselle")+ , (100, "sadannelle")+ , (1000, "tuhannennelle")+ ]+ )+ , ( "singular abessive"+ , singular $ abessive defaultInflection+ , [ (0, "nollannetta")+ , (1, "ensimmäisettä")+ , (2, "toisetta")+ , (3, "kolmannetta")+ , (4, "neljännettä")+ , (5, "viidennettä")+ , (6, "kuudennetta")+ , (7, "seitsemännettä")+ , (8, "kahdeksannetta")+ , (9, "yhdeksännettä")+ , (10, "kymmenennettä")+ , (11, "yhdennettätoista")+ , (12, "kahdennettatoista")+ , (13, "kolmannettatoista")+ , (14, "neljännettätoista")+ , (15, "viidennettätoista")+ , (16, "kuudennettatoista")+ , (17, "seitsemännettätoista")+ , (18, "kahdeksannettatoista")+ , (19, "yhdeksännettätoista")+ , (20, "kahdennettakymmenennettä")+ , (21, "kahdennettakymmenennettäensimmäisettä")+ , (100, "sadannetta")+ , (1000, "tuhannennetta")+ ]+ )+ , ( "singular comitative"+ , singular $ comitative defaultInflection+ , [ (4, "neljänsine") ]+ )+ , ( "singular instructive"+ , singular $ instructive defaultInflection+ , [ (4, "neljänsin") ]+ )+ , ( "plural nominative"+ , plural $ nominative defaultInflection+ , [ (0, "nollannet")+ , (1, "ensimmäiset")+ , (2, "toiset")+ , (3, "kolmannet")+ , (4, "neljännet")+ , (5, "viidennet")+ , (6, "kuudennet")+ , (7, "seitsemännet")+ , (8, "kahdeksannet")+ , (9, "yhdeksännet")+ , (10, "kymmenennet")+ , (11, "yhdennettoista")+ , (12, "kahdennettoista")+ , (13, "kolmannettoista")+ , (14, "neljännettoista")+ , (15, "viidennettoista")+ , (16, "kuudennettoista")+ , (17, "seitsemännettoista")+ , (18, "kahdeksannettoista")+ , (19, "yhdeksännettoista")+ , (20, "kahdennetkymmenennet")+ , (21, "kahdennetkymmenennetensimmäiset")+ , (100, "sadannet")+ , (1000, "tuhannennet")+ ]+ )+ , ( "plural accusative"+ , plural $ accusative defaultInflection+ , [ (0, "nollannet")+ , (1, "ensimmäiset")+ , (2, "toiset")+ , (3, "kolmannet")+ , (4, "neljännet")+ , (5, "viidennet")+ , (6, "kuudennet")+ , (7, "seitsemännet")+ , (8, "kahdeksannet")+ , (9, "yhdeksännet")+ , (10, "kymmenennet")+ , (11, "yhdennettoista")+ , (12, "kahdennettoista")+ , (13, "kolmannettoista")+ , (14, "neljännettoista")+ , (15, "viidennettoista")+ , (16, "kuudennettoista")+ , (17, "seitsemännettoista")+ , (18, "kahdeksannettoista")+ , (19, "yhdeksännettoista")+ , (20, "kahdennetkymmenennet")+ , (21, "kahdennetkymmenennetensimmäiset")+ , (100, "sadannet")+ , (1000, "tuhannennet")+ ]+ )+ , ( "plural genitive"+ , plural $ genitive defaultInflection+ , [ (0, "nollansien")+ , (1, "ensimmäisten")+ , (2, "toisten")+ , (3, "kolmansien")+ , (4, "neljänsien")+ , (5, "viidensien")+ , (6, "kuudensien")+ , (7, "seitsemänsien")+ , (8, "kahdeksansien")+ , (9, "yhdeksänsien")+ , (10, "kymmenensien")+ , (11, "yhdensientoista")+ , (12, "kahdensientoista")+ , (13, "kolmansientoista")+ , (14, "neljänsientoista")+ , (15, "viidensientoista")+ , (16, "kuudensientoista")+ , (17, "seitsemänsientoista")+ , (18, "kahdeksansientoista")+ , (19, "yhdeksänsientoista")+ , (20, "kahdensienkymmenensien")+ , (21, "kahdensienkymmenensienensimmäisten")+ , (100, "sadansien")+ , (1000, "tuhannensien")+ ]+ )+ , ( "plural partitive"+ , plural $ partitive defaultInflection+ , [ (0, "nollansia")+ , (1, "ensimmäisiä")+ , (2, "toisia")+ , (3, "kolmansia")+ , (4, "neljänsiä")+ , (5, "viidensiä")+ , (6, "kuudensia")+ , (7, "seitsemänsiä")+ , (8, "kahdeksansia")+ , (9, "yhdeksänsiä")+ , (10, "kymmenensiä")+ , (11, "yhdensiätoista")+ , (12, "kahdensiatoista")+ , (13, "kolmansiatoista")+ , (14, "neljänsiätoista")+ , (15, "viidensiätoista")+ , (16, "kuudensiatoista")+ , (17, "seitsemänsiätoista")+ , (18, "kahdeksansiatoista")+ , (19, "yhdeksänsiätoista")+ , (20, "kahdensiakymmenensiä")+ , (21, "kahdensiakymmenensiäensimmäisiä")+ , (100, "sadansia")+ , (1000, "tuhannensia")+ ]+ )+ , ( "plural essive"+ , plural $ essive defaultInflection+ , [ (0, "nollansina")+ , (1, "ensimmäisinä")+ , (2, "toisina")+ , (3, "kolmansina")+ , (4, "neljänsinä")+ , (5, "viidensinä")+ , (6, "kuudensina")+ , (7, "seitsemänsinä")+ , (8, "kahdeksansina")+ , (9, "yhdeksänsinä")+ , (10, "kymmenensinä")+ , (11, "yhdensinätoista")+ , (12, "kahdensinatoista")+ , (13, "kolmansinatoista")+ , (14, "neljänsinätoista")+ , (15, "viidensinätoista")+ , (16, "kuudensinatoista")+ , (17, "seitsemänsinätoista")+ , (18, "kahdeksansinatoista")+ , (19, "yhdeksänsinätoista")+ , (20, "kahdensinakymmenensinä")+ , (21, "kahdensinakymmenensinäensimmäisinä")+ , (100, "sadansina")+ , (1000, "tuhannensina")+ ]+ )+ , ( "plural translative"+ , plural $ translative defaultInflection+ , [ (0, "nollansiksi")+ , (1, "ensimmäisiksi")+ , (2, "toisiksi")+ , (3, "kolmansiksi")+ , (4, "neljänsiksi")+ , (5, "viidensiksi")+ , (6, "kuudensiksi")+ , (7, "seitsemänsiksi")+ , (8, "kahdeksansiksi")+ , (9, "yhdeksänsiksi")+ , (10, "kymmenensiksi")+ , (11, "yhdensiksitoista")+ , (12, "kahdensiksitoista")+ , (13, "kolmansiksitoista")+ , (14, "neljänsiksitoista")+ , (15, "viidensiksitoista")+ , (16, "kuudensiksitoista")+ , (17, "seitsemänsiksitoista")+ , (18, "kahdeksansiksitoista")+ , (19, "yhdeksänsissätoista")+ , (20, "kahdensiksikymmenensiksi")+ , (21, "kahdensiksikymmenensiksiensimmäisiksi")+ , (100, "sadansiksi")+ , (1000, "tuhannensiksi")+ ]+ )+ , ( "plural locative inessive"+ , plural $ locativeInessive defaultInflection+ , [ (0, "nollansissa")+ , (1, "ensimmäisissä")+ , (2, "toisissa")+ , (3, "kolmansissa")+ , (4, "neljänsissä")+ , (5, "viidensissä")+ , (6, "kuudensissa")+ , (7, "seitsemänsissä")+ , (8, "kahdeksansissa")+ , (9, "yhdeksänsissä")+ , (10, "kymmenensissä")+ , (11, "yhdensissätoista")+ , (12, "kahdensissatoista")+ , (13, "kolmansissatoista")+ , (14, "neljänsissätoista")+ , (15, "viidensissätoista")+ , (16, "kuudensissatoista")+ , (17, "seitsemänsissätoista")+ , (18, "kahdeksansissatoista")+ , (19, "yhdeksänsissätoista")+ , (20, "kahdensissakymmenensissä")+ , (21, "kahdensissakymmenensissäensimmäisissä")+ , (100, "sadansissa")+ , (1000, "tuhannensissa")+ ]+ )+ , ( "plural locative elative"+ , plural $ locativeElative defaultInflection+ , [ (0, "nollansista")+ , (1, "ensimmäisistä")+ , (2, "toisista")+ , (3, "kolmansista")+ , (4, "neljänsistä")+ , (5, "viidensistä")+ , (6, "kuudensista")+ , (7, "seitsemänsistä")+ , (8, "kahdeksansista")+ , (9, "yhdeksänsistä")+ , (10, "kymmenensistä")+ , (11, "yhdensistätoista")+ , (12, "kahdensistatoista")+ , (13, "kolmansistatoista")+ , (14, "neljänsistätoista")+ , (15, "viidensistätoista")+ , (16, "kuudensistatoista")+ , (17, "seitsemänsistätoista")+ , (18, "kahdeksansistatoista")+ , (19, "yhdeksänsistätoista")+ , (20, "kahdensistakymmenensistä")+ , (21, "kahdensistakymmenensistäensimmäisistä")+ , (100, "sadansista")+ , (1000, "tuhannensista")+ ]+ )+ , ( "plural locative illative"+ , plural $ locativeIllative defaultInflection+ , [ (0, "nollansiin")+ , (1, "ensimmäisiin")+ , (2, "toisiin")+ , (3, "kolmansiin")+ , (4, "neljänsiin")+ , (5, "viidensiin")+ , (6, "kuudensiin")+ , (7, "seitsemänsiin")+ , (8, "kahdeksansiin")+ , (9, "yhdeksänsiin")+ , (10, "kymmenensiin")+ , (11, "yhdensiintoista")+ , (12, "kahdensiintoista")+ , (13, "kolmansiintoista")+ , (14, "neljänsiintoista")+ , (15, "viidensiintoista")+ , (16, "kuudensiintoista")+ , (17, "seitsemänsiintoista")+ , (18, "kahdeksansiintoista")+ , (19, "yhdeksänsiintoista")+ , (20, "kahdensiinkymmenensiin")+ , (21, "kahdensiinkymmenensiinensimmäisiin")+ , (100, "sadansiin")+ , (1000, "tuhannensiin")+ ]+ )+ , ( "plural locative adessive"+ , plural $ locativeAdessive defaultInflection+ , [ (0, "nollansilla")+ , (1, "ensimmäisillä")+ , (2, "toisilla")+ , (3, "kolmansilla")+ , (4, "neljänsillä")+ , (5, "viidensillä")+ , (6, "kuudensilla")+ , (7, "seitsemänsillä")+ , (8, "kahdeksansilla")+ , (9, "yhdeksänsillä")+ , (10, "kymmenensillä")+ , (11, "yhdensillätoista")+ , (12, "kahdensillatoista")+ , (13, "kolmansillatoista")+ , (14, "neljänsillätoista")+ , (15, "viidensillätoista")+ , (16, "kuudensillatoista")+ , (17, "seitsemänsillätoista")+ , (18, "kahdeksansillatoista")+ , (19, "yhdeksänsillätoista")+ , (20, "kahdensillakymmenensillä")+ , (21, "kahdensillakymmenensilläensimmäisillä")+ , (100, "sadansilla")+ , (1000, "tuhannensilla")+ ]+ )+ , ( "plural locative ablative"+ , plural $ locativeAblative defaultInflection+ , [ (0, "nollansilta")+ , (1, "ensimmäisiltä")+ , (2, "toisilta")+ , (3, "kolmansilta")+ , (4, "neljänsiltä")+ , (5, "viidensiltä")+ , (6, "kuudensilta")+ , (7, "seitsemänsiltä")+ , (8, "kahdeksansilta")+ , (9, "yhdeksänsiltä")+ , (10, "kymmenensiltä")+ , (11, "yhdensitlätoista")+ , (12, "kahdensiltatoista")+ , (13, "kolmansiltatoista")+ , (14, "neljänsiltätoista")+ , (15, "viidensiltätoista")+ , (16, "kuudensiltatoista")+ , (17, "seitsemänsiltätoista")+ , (18, "kahdeksansiltatoista")+ , (19, "yhdeksänsiltätoista")+ , (20, "kahdensiltakymmenensiltä")+ , (21, "kahdensiltakymmenensiltäensimmäisiltä")+ , (100, "sadansilta")+ , (1000, "tuhannensilta")+ ]+ )+ , ( "plural locative allative"+ , plural $ locativeAllative defaultInflection+ , [ (0, "nollansille")+ , (1, "ensimmäisille")+ , (2, "toisille")+ , (3, "kolmansille")+ , (4, "neljänsille")+ , (5, "viidensille")+ , (6, "kuudensille")+ , (7, "seitsemänsille")+ , (8, "kahdeksansille")+ , (9, "yhdeksänsille")+ , (10, "kymmenensille")+ , (11, "yhdensiintoista")+ , (12, "kahdensilletoista")+ , (13, "kolmansilletoista")+ , (14, "neljänsilletoista")+ , (15, "viidensilletoista")+ , (16, "kuudensilletoista")+ , (17, "seitsemänsilletoista")+ , (18, "kahdeksansilletoista")+ , (19, "yhdeksänsilletoista")+ , (20, "kahdensillekymmenensille")+ , (21, "kahdensillekymmenensilleensimmäisille")+ , (100, "sadansille")+ , (1000, "tuhannensille")+ ]+ )+ , ( "plural abessive"+ , plural $ abessive defaultInflection+ , [ (0, "nollansitta")+ , (1, "ensimmäisittä")+ , (2, "toisitta")+ , (3, "kolmansitta")+ , (4, "neljänsittä")+ , (5, "viidensittä")+ , (6, "kuudensitta")+ , (7, "seitsemänsittä")+ , (8, "kahdeksansitta")+ , (9, "yhdeksänsittä")+ , (10, "kymmenensittä")+ , (11, "yhdensittätoista")+ , (12, "kahdensittatoista")+ , (13, "kolmansittatoista")+ , (14, "neljänsittätoista")+ , (15, "viidensittätoista")+ , (16, "kuudensittatoista")+ , (17, "seitsemänsittätoista")+ , (18, "kahdeksansittatoista")+ , (19, "yhdeksänsittätoista")+ , (20, "kahdensittakymmenensittä")+ , (21, "kahdensittakymmenensittäensimmäisittä")+ , (100, "sadansitta")+ , (1000, "tuhannensitta")+ ]+ )+ , ( "plural comitative"+ , plural $ comitative defaultInflection+ , [ (0, "nollansine")+ , (1, "ensimmäisine")+ , (2, "toisine")+ , (3, "kolmansine")+ , (4, "neljänsine")+ , (5, "viidensine")+ , (6, "kuudensine")+ , (7, "seitsemänsine")+ , (8, "kahdeksansine")+ , (9, "yhdeksänsine")+ , (10, "kymmenensine")+ , (11, "yhdensinetoista")+ , (12, "kahdensinetoista")+ , (13, "kolmansinetoista")+ , (14, "neljänsinetoista")+ , (15, "viidensinetoista")+ , (16, "kuudensinetoista")+ , (17, "seitsemänsinetoista")+ , (18, "kahdeksansinetoista")+ , (19, "yhdeksänsinetoista")+ , (20, "kahdensinekymmenensine")+ , (21, "kahdensinekymmenensineensimmäisine")+ , (100, "sadansine")+ , (1000, "tuhannensine")+ ]+ )+ , ( "plural instructive"+ , plural $ instructive defaultInflection+ , [ (0, "nollansin")+ , (1, "ensimmäisin")+ , (2, "toisin")+ , (3, "kolmansin")+ , (4, "neljänsin")+ , (5, "viidensin")+ , (6, "kuudensin")+ , (7, "seitsemänsin")+ , (8, "kahdeksansin")+ , (9, "yhdeksänsin")+ , (10, "kymmenensin")+ , (11, "yhdensintoista")+ , (12, "kahdensintoista")+ , (13, "kolmansintoista")+ , (14, "neljänsintoista")+ , (15, "viidensintoista")+ , (16, "kuudensintoista")+ , (17, "seitsemänsintoista")+ , (18, "kahdeksansintoista")+ , (19, "yhdeksänsintoista")+ , (20, "kahdensinkymmenensin")+ , (21, "kahdensinkymmenensinensimmäisin")+ , (100, "sadansin")+ , (1000, "tuhannensin")+ ]+ )+ ]++multiplicatives :: (Integral i) => TestData i+multiplicatives =+ [ ( "default"+ , defaultInflection+ , [ (1, "kerran")+ , (2, "kahdesti")+ , (6, "kuudesti")+ ]+ )+ ]++multipliers :: (Integral i) => TestData i+multipliers =+ [ ( "default"+ , defaultInflection+ , [ (6, "kuusinkertainen")+ ]+ )+ ]
− src-test/Text/Numeral/Language/FO/TestData.hs
@@ -1,225 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] fo--[@ISO639-2@] fao--[@ISO639-3@] fao--[@Native name@] føroyskt--[@English name@] Faroese--}-module Text.Numeral.Language.FO.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-faroese/en/fao/--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "null")- , (1, "ein")- , (2, "tveir")- , (3, "tríggir")- , (4, "fýra")- , (5, "fimm")- , (6, "seks")- , (7, "sjey")- , (8, "átta")- , (9, "níggju")- , (10, "tíggju")- , (11, "ellivu")- , (12, "tólv")- , (13, "trettan")- , (14, "fjúrtan")- , (15, "fimtan")- , (16, "sekstan")- , (17, "seytjan")- , (18, "átjan")- , (19, "nítjan")- , (20, "tjúgu")- , (21, "ein og tjúgu")- , (22, "tveir og tjúgu")- , (23, "tríggir og tjúgu")- , (24, "fýra og tjúgu")- , (25, "fimm og tjúgu")- , (26, "seks og tjúgu")- , (27, "sjey og tjúgu")- , (28, "átta og tjúgu")- , (29, "níggju og tjúgu")- , (30, "tríati")- , (31, "ein og tríati")- , (32, "tveir og tríati")- , (33, "tríggir og tríati")- , (34, "fýra og tríati")- , (35, "fimm og tríati")- , (36, "seks og tríati")- , (37, "sjey og tríati")- , (38, "átta og tríati")- , (39, "níggju og tríati")- , (40, "fýrati")- , (41, "ein og fýrati")- , (42, "tveir og fýrati")- , (43, "tríggir og fýrati")- , (44, "fýra og fýrati")- , (45, "fimm og fýrati")- , (46, "seks og fýrati")- , (47, "sjey og fýrati")- , (48, "átta og fýrati")- , (49, "níggju og fýrati")- , (50, "fimmti")- , (51, "ein og fimmti")- , (52, "tveir og fimmti")- , (53, "tríggir og fimmti")- , (54, "fýra og fimmti")- , (55, "fimm og fimmti")- , (56, "seks og fimmti")- , (57, "sjey og fimmti")- , (58, "átta og fimmti")- , (59, "níggju og fimmti")- , (60, "seksti")- , (61, "ein og seksti")- , (62, "tveir og seksti")- , (63, "tríggir og seksti")- , (64, "fýra og seksti")- , (65, "fimm og seksti")- , (66, "seks og seksti")- , (67, "sjey og seksti")- , (68, "átta og seksti")- , (69, "níggju og seksti")- , (70, "sjeyti")- , (71, "ein og sjeyti")- , (72, "tveir og sjeyti")- , (73, "tríggir og sjeyti")- , (74, "fýra og sjeyti")- , (75, "fimm og sjeyti")- , (76, "seks og sjeyti")- , (77, "sjey og sjeyti")- , (78, "átta og sjeyti")- , (79, "níggju og sjeyti")- , (80, "áttati")- , (81, "ein og áttati")- , (82, "tveir og áttati")- , (83, "tríggir og áttati")- , (84, "fýra og áttati")- , (85, "fimm og áttati")- , (86, "seks og áttati")- , (87, "sjey og áttati")- , (88, "átta og áttati")- , (89, "níggju og áttati")- , (90, "níti")- , (91, "ein og níti")- , (92, "tveir og níti")- , (93, "tríggir og níti")- , (94, "fýra og níti")- , (95, "fimm og níti")- , (96, "seks og níti")- , (97, "sjey og níti")- , (98, "átta og níti")- , (99, "níggju og níti")- , (100, "hundrað")- , (101, "hundrað og ein")- , (102, "hundrað og tveir")- , (103, "hundrað og tríggir")- , (104, "hundrað og fýra")- , (105, "hundrað og fimm")- , (106, "hundrað og seks")- , (107, "hundrað og sjey")- , (108, "hundrað og átta")- , (109, "hundrað og níggju")- , (110, "hundrað og tíggju")- , (123, "hundrað og tríggir og tjúgu")- , (200, "tvey hundrað")- , (300, "trý hundrað")- , (321, "trý hundrað og ein og tjúgu")- , (400, "fýra hundrað")- , (500, "fimm hundrað")- , (600, "seks hundrað")- , (700, "sjey hundrað")- , (800, "átta hundrað")- , (900, "níggju hundrað")- , (909, "níggju hundrað og níggju")- , (990, "níggju hundrað og níti")- , (999, "níggju hundrað og níggju og níti")- , (1000, "túsund")- , (1001, "eitt túsund og ein")- , (1008, "eitt túsund og átta")- , (1234, "eitt túsund tvey hundrað og fýra og tríati")- , (2000, "tvey túsund")- , (3000, "trý túsund")- , (4000, "fýra túsund")- , (4321, "fýra túsund trý hundrað og ein og tjúgu")- , (5000, "fimm túsund")- , (6000, "seks túsund")- , (7000, "sjey túsund")- , (8000, "átta túsund")- , (9000, "níggju túsund")- , (10000, "tíggju túsund")- , (12345, "tólv túsund trý hundrað og fimm og fýrati")- , (20000, "tjúgu túsund")- , (30000, "tríati túsund")- , (40000, "fýrati túsund")- , (50000, "fimmti túsund")- , (54321, "fýra og fimmti túsund trý hundrað og ein og tjúgu")- , (60000, "seksti túsund")- , (70000, "sjeyti túsund")- , (80000, "áttati túsund")- , (90000, "níti túsund")- , (100000, "hundrað túsund")- , (123456, "hundrað og tríggir og tjúgu túsund og fýra hundrað og seks og fimmti")- , (200000, "tvey hundrað túsund")- , (300000, "trý hundrað túsund")- , (400000, "fýra hundrað túsund")- , (500000, "fimm hundrað túsund")- , (600000, "seks hundrað túsund")- , (654321, "seks hundrað og fýra og fimmti túsund trý hundrað og ein og tjúgu")- , (700000, "sjey hundrað túsund")- , (800000, "átta hundrað túsund")- , (900000, "níggju hundrað túsund")- , (1000000, "ein millión")- , (1000001, "ein millión og ein")- , (1234567, "ein millión tvey hundrað og fýra og tríati túsund og fimm hundrað og sjey og seksti")- , (2000000, "tvær milliónir")- , (3000000, "tríggjar milliónir")- , (4000000, "fýra milliónir")- , (5000000, "fimm milliónir")- , (6000000, "seks milliónir")- , (7000000, "sjey milliónir")- , (7654321, "sjey milliónir og seks hundrað og fýra og fimmti túsund trý hundrað og ein og tjúgu")- , (8000000, "átta milliónir")- , (9000000, "níggju milliónir")- , (1000000000, "ein milliard")- , (1000000001, "ein milliard og ein")- , (2000000000, "tveir milliardir")- , (3000000000, "tríggir milliardir")- , (4000000000, "fýra milliardir")- , (5000000000, "fimm milliardir")- , (6000000000, "seks milliardir")- , (7000000000, "sjey milliardir")- , (8000000000, "átta milliardir")- , (9000000000, "níggju milliardir")- ]- )- ]
− src-test/Text/Numeral/Language/FR/TestData.hs
@@ -1,371 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] fr--[@ISO639-2B@] fre--[@ISO639-3@] fra--[@Native name@] Français--[@English name@] French--}--module Text.Numeral.Language.FR.TestData (cardinals, ordinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.sf.airnet.ne.jp/~ts/language/number/french.html- http://www.french-linguistics.co.uk/tutorials/numbers/- http://www.parisbypod.com/2007/10/23/french-ordinal-numbers/--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "masculine"- , masculine defaultInflection- , [ (0, "zéro")- , (1, "un")- , (2, "deux")- , (3, "trois")- , (4, "quatre")- , (5, "cinq")- , (6, "six")- , (7, "sept")- , (8, "huit")- , (9, "neuf")- , (10, "dix")- , (11, "onze")- , (12, "douze")- , (13, "treize")- , (14, "quatorze")- , (15, "quinze")- , (16, "seize")- , (17, "dix-sept")- , (18, "dix-huit")- , (19, "dix-neuf")- , (20, "vingt")- , (21, "vingt et un")- , (22, "vingt-deux")- , (23, "vingt-trois")- , (24, "vingt-quatre")- , (25, "vingt-cinq")- , (26, "vingt-six")- , (27, "vingt-sept")- , (28, "vingt-huit")- , (29, "vingt-neuf")- , (30, "trente")- , (31, "trente et un")- , (32, "trente-deux")- , (33, "trente-trois")- , (34, "trente-quatre")- , (35, "trente-cinq")- , (36, "trente-six")- , (37, "trente-sept")- , (38, "trente-huit")- , (39, "trente-neuf")- , (40, "quarante")- , (41, "quarante et un")- , (42, "quarante-deux")- , (43, "quarante-trois")- , (44, "quarante-quatre")- , (45, "quarante-cinq")- , (46, "quarante-six")- , (47, "quarante-sept")- , (48, "quarante-huit")- , (49, "quarante-neuf")- , (50, "cinquante")- , (51, "cinquante et un")- , (52, "cinquante-deux")- , (53, "cinquante-trois")- , (54, "cinquante-quatre")- , (55, "cinquante-cinq")- , (56, "cinquante-six")- , (57, "cinquante-sept")- , (58, "cinquante-huit")- , (59, "cinquante-neuf")- , (60, "soixante")- , (61, "soixante et un")- , (62, "soixante-deux")- , (63, "soixante-trois")- , (64, "soixante-quatre")- , (65, "soixante-cinq")- , (66, "soixante-six")- , (67, "soixante-sept")- , (68, "soixante-huit")- , (69, "soixante-neuf")- , (70, "soixante-dix")- , (71, "soixante et onze")- , (72, "soixante-douze")- , (73, "soixante-treize")- , (74, "soixante-quatorze")- , (75, "soixante-quinze")- , (76, "soixante-seize")- , (77, "soixante-dix-sept")- , (78, "soixante-dix-huit")- , (79, "soixante-dix-neuf")- , (80, "quatre-vingts")- , (81, "quatre-vingt-un")- , (82, "quatre-vingt-deux")- , (83, "quatre-vingt-trois")- , (84, "quatre-vingt-quatre")- , (85, "quatre-vingt-cinq")- , (86, "quatre-vingt-six")- , (87, "quatre-vingt-sept")- , (88, "quatre-vingt-huit")- , (89, "quatre-vingt-neuf")- , (90, "quatre-vingt-dix")- , (91, "quatre-vingt-onze")- , (92, "quatre-vingt-douze")- , (93, "quatre-vingt-treize")- , (94, "quatre-vingt-quatorze")- , (95, "quatre-vingt-quinze")- , (96, "quatre-vingt-seize")- , (97, "quatre-vingt-dix-sept")- , (98, "quatre-vingt-dix-huit")- , (99, "quatre-vingt-dix-neuf")- , (100, "cent")- , (101, "cent et un")- , (102, "cent deux")- , (103, "cent trois")- , (104, "cent quatre")- , (105, "cent cinq")- , (111, "cent et onze")- , (122, "cent vingt-deux")- , (123, "cent vingt-trois")- , (144, "cent quarante-quatre")- , (196, "cent quatre-vingt-seize")- , (199, "cent quatre-vingt-dix-neuf")- , (200, "deux cents")- , (300, "trois cents")- , (400, "quatre cents")- , (500, "cinq cents")- , (600, "six cents")- , (700, "sept cents")- , (800, "huit cents")- , (900, "neuf cents")- , (1000, "mille")- , (1999, "mille neuf cent quatre-vingt-dix-neuf")- , (2000, "deux mille")- , (2999, "deux mille neuf cent quatre-vingt-dix-neuf")- , (dec 4, "dix mille")- , (dec 5, "cent mille")- , (dec 6, "un million")- , (dec 9, "un milliard")- , (dec 12, "un billion")- , (dec 15, "un billiard")- , (dec 18, "un trillion")- , (dec 21, "un trilliard")- , (dec 24, "un quadrillion")- , (dec 27, "un quadrilliard")- , (dec 30, "un quintillion")- , (dec 33, "un quintilliard")- , (dec 36, "un sextillion")- , (dec 39, "un sextilliard")- , (dec 42, "un septillion")- , (dec 45, "un septilliard")- , (dec 48, "un octillion")- , (dec 51, "un octilliard")- , (dec 54, "un nonillion")- , (dec 57, "un nonilliard")- , (dec 60, "un décillion")- , (dec 63, "un décilliard")- , (dec 66, "un unodécillion")- , (dec 69, "un unodécilliard")- , (dec 72, "un duodécillion")- , (dec 75, "un duodécilliard")- , (dec 78, "un trédécillion")- , (dec 81, "un trédécilliard")- , (dec 84, "un quattuordécillion")- , (dec 87, "un quattuordécilliard")- , (dec 90, "un quindécillion")- , (dec 93, "un quindécilliard")- , (dec 96, "un sexdécillion")- , (dec 99, "un sexdécilliard")- , (dec 102, "un septendécillion")- , (dec 105, "un septendécilliard")- , (dec 108, "un octodécillion")- , (dec 111, "un octodécilliard")- , (dec 114, "un novemdécillion")- , (dec 117, "un novemdécilliard")- , (dec 120, "un vigintillion")- , (dec 123, "un vigintilliard")- , (dec 150, "un quinquavigintillion")- , (dec 153, "un quinquavigintilliard")- , (dec 180, "un trigintillion")- , (dec 183, "un trigintilliard")- , (dec 210, "un quinquatrigintillion")- , (dec 213, "un quinquatrigintilliard")- , (dec 240, "un quadragintillion")- , (dec 243, "un quadragintilliard")- , (dec 270, "un quinquaquadragintillion")- , (dec 273, "un quinquaquadragintilliard")- , (dec 300, "un quinquagintillion")- , (dec 303, "un quinquagintilliard")- , (dec 306, "un unoquinquagintillion")- , (dec 309, "un unoquinquagintilliard")- , (dec 360, "un sexagintillion")- , (dec 363, "un sexagintilliard")- , (dec 420, "un septuagintillion")- , (dec 423, "un septuagintilliard")- , (dec 480, "un octogintillion")- , (dec 483, "un octogintilliard")- , (dec 540, "un nonagintillion")- , (dec 543, "un nonagintilliard")- , (dec 600, "un centillion")- , (dec 603, "un centilliard")- ]- )- , ( "feminine"- , feminine defaultInflection- , [ (1, "une")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "masculine"- , masculine defaultInflection- , [ (0, "zéroth")- , (1, "premier")- , (2, "deuxième")- , (3, "troisième")- , (4, "quatrième")- , (5, "cinquième")- , (6, "sixième")- , (7, "septième")- , (8, "huitième")- , (9, "neuvième")- , (10, "dixième")- , (11, "onzième")- , (12, "douzième")- , (13, "treizième")- , (14, "quatorzième")- , (15, "quinzième")- , (16, "seizième")- , (17, "dix-septième")- , (18, "dix-huitième")- , (19, "dix-neuvième")- , (20, "vingtième")- , (21, "vingt et unième")- , (22, "vingt-deuxième")- , (23, "vingt-troisième")- , (24, "vingt-quatrième")- , (25, "vingt-cinquième")- , (26, "vingt-sixième")- , (27, "vingt-septième")- , (28, "vingt-huitième")- , (29, "vingt-neuvième")- , (30, "trentième")- , (31, "trente et unième")- , (32, "trente-deuxième")- , (33, "trente-troisième")- , (34, "trente-quatrième")- , (35, "trente-cinquième")- , (36, "trente-sixième")- , (37, "trente-septième")- , (38, "trente-huitième")- , (39, "trente-neuvième")- , (40, "quarantième")- , (41, "quarante et unième")- , (42, "quarante-deuxième")- , (43, "quarante-troisième")- , (44, "quarante-quatrième")- , (45, "quarante-cinquième")- , (46, "quarante-sixième")- , (47, "quarante-septième")- , (48, "quarante-huitième")- , (49, "quarante-neuvième")- , (50, "cinquantième")- , (51, "cinquante et unième")- , (52, "cinquante-deuxième")- , (53, "cinquante-troisième")- , (54, "cinquante-quatrième")- , (55, "cinquante-cinquième")- , (56, "cinquante-sixième")- , (57, "cinquante-septième")- , (58, "cinquante-huitième")- , (59, "cinquante-neuvième")- , (60, "soixantième")- , (61, "soixante et unième")- , (62, "soixante-deuxième")- , (63, "soixante-troisième")- , (64, "soixante-quatrième")- , (65, "soixante-cinquième")- , (66, "soixante-sixième")- , (67, "soixante-septième")- , (68, "soixante-huitième")- , (69, "soixante-neuvième")- , (70, "soixante-dixième")- , (71, "soixante et onzième")- , (72, "soixante-douzième")- , (73, "soixante-treizième")- , (74, "soixante-quatorzième")- , (75, "soixante-quinzième")- , (76, "soixante-seizième")- , (77, "soixante-dix-septième")- , (78, "soixante-dix-huitième")- , (79, "soixante-dix-neuvième")- , (80, "quatre-vingtième")- , (81, "quatre-vingt-unième")- , (82, "quatre-vingt-deuxième")- , (83, "quatre-vingt-troisième")- , (84, "quatre-vingt-quatrième")- , (85, "quatre-vingt-cinquième")- , (86, "quatre-vingt-sixième")- , (87, "quatre-vingt-septième")- , (88, "quatre-vingt-huitième")- , (89, "quatre-vingt-neuvième")- , (90, "quatre-vingt-dixième")- , (91, "quatre-vingt-onzième")- , (92, "quatre-vingt-douzième")- , (93, "quatre-vingt-treizième")- , (94, "quatre-vingt-quatorzième")- , (95, "quatre-vingt-quinzième")- , (96, "quatre-vingt-seizième")- , (97, "quatre-vingt-dix-septième")- , (98, "quatre-vingt-dix-huitième")- , (99, "quatre-vingt-dix-neuvième")- , (100, "centième")- , (200, "deux centième")- , (300, "trois centième")- , (400, "quatre centième")- , (500, "cinq centième")- , (600, "six centième")- , (700, "sept centième")- , (800, "huit centième")- , (900, "neuf centième")- , (1000, "millième")- , (dec 6, "millionième")- , (dec 9, "milliardième")- ]- )- , ( "feminine"- , feminine defaultInflection- , [ (1, "première")- , (41, "quarante et uneième")- ]- )- ]
+ src-test/Text/Numeral/Language/FRA/TestData.hs view
@@ -0,0 +1,364 @@+{-|+[@ISO639-1@] fr++[@ISO639-2B@] fre++[@ISO639-3@] fra++[@Native name@] Français++[@English name@] French+-}++module Text.Numeral.Language.FRA.TestData (cardinals, ordinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.sf.airnet.ne.jp/~ts/language/number/french.html+ http://www.french-linguistics.co.uk/tutorials/numbers/+ http://www.parisbypod.com/2007/10/23/french-ordinal-numbers/+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "masculine"+ , masculine defaultInflection+ , [ (0, "zéro")+ , (1, "un")+ , (2, "deux")+ , (3, "trois")+ , (4, "quatre")+ , (5, "cinq")+ , (6, "six")+ , (7, "sept")+ , (8, "huit")+ , (9, "neuf")+ , (10, "dix")+ , (11, "onze")+ , (12, "douze")+ , (13, "treize")+ , (14, "quatorze")+ , (15, "quinze")+ , (16, "seize")+ , (17, "dix-sept")+ , (18, "dix-huit")+ , (19, "dix-neuf")+ , (20, "vingt")+ , (21, "vingt et un")+ , (22, "vingt-deux")+ , (23, "vingt-trois")+ , (24, "vingt-quatre")+ , (25, "vingt-cinq")+ , (26, "vingt-six")+ , (27, "vingt-sept")+ , (28, "vingt-huit")+ , (29, "vingt-neuf")+ , (30, "trente")+ , (31, "trente et un")+ , (32, "trente-deux")+ , (33, "trente-trois")+ , (34, "trente-quatre")+ , (35, "trente-cinq")+ , (36, "trente-six")+ , (37, "trente-sept")+ , (38, "trente-huit")+ , (39, "trente-neuf")+ , (40, "quarante")+ , (41, "quarante et un")+ , (42, "quarante-deux")+ , (43, "quarante-trois")+ , (44, "quarante-quatre")+ , (45, "quarante-cinq")+ , (46, "quarante-six")+ , (47, "quarante-sept")+ , (48, "quarante-huit")+ , (49, "quarante-neuf")+ , (50, "cinquante")+ , (51, "cinquante et un")+ , (52, "cinquante-deux")+ , (53, "cinquante-trois")+ , (54, "cinquante-quatre")+ , (55, "cinquante-cinq")+ , (56, "cinquante-six")+ , (57, "cinquante-sept")+ , (58, "cinquante-huit")+ , (59, "cinquante-neuf")+ , (60, "soixante")+ , (61, "soixante et un")+ , (62, "soixante-deux")+ , (63, "soixante-trois")+ , (64, "soixante-quatre")+ , (65, "soixante-cinq")+ , (66, "soixante-six")+ , (67, "soixante-sept")+ , (68, "soixante-huit")+ , (69, "soixante-neuf")+ , (70, "soixante-dix")+ , (71, "soixante et onze")+ , (72, "soixante-douze")+ , (73, "soixante-treize")+ , (74, "soixante-quatorze")+ , (75, "soixante-quinze")+ , (76, "soixante-seize")+ , (77, "soixante-dix-sept")+ , (78, "soixante-dix-huit")+ , (79, "soixante-dix-neuf")+ , (80, "quatre-vingts")+ , (81, "quatre-vingt-un")+ , (82, "quatre-vingt-deux")+ , (83, "quatre-vingt-trois")+ , (84, "quatre-vingt-quatre")+ , (85, "quatre-vingt-cinq")+ , (86, "quatre-vingt-six")+ , (87, "quatre-vingt-sept")+ , (88, "quatre-vingt-huit")+ , (89, "quatre-vingt-neuf")+ , (90, "quatre-vingt-dix")+ , (91, "quatre-vingt-onze")+ , (92, "quatre-vingt-douze")+ , (93, "quatre-vingt-treize")+ , (94, "quatre-vingt-quatorze")+ , (95, "quatre-vingt-quinze")+ , (96, "quatre-vingt-seize")+ , (97, "quatre-vingt-dix-sept")+ , (98, "quatre-vingt-dix-huit")+ , (99, "quatre-vingt-dix-neuf")+ , (100, "cent")+ , (101, "cent et un")+ , (102, "cent deux")+ , (103, "cent trois")+ , (104, "cent quatre")+ , (105, "cent cinq")+ , (111, "cent et onze")+ , (122, "cent vingt-deux")+ , (123, "cent vingt-trois")+ , (144, "cent quarante-quatre")+ , (196, "cent quatre-vingt-seize")+ , (199, "cent quatre-vingt-dix-neuf")+ , (200, "deux cents")+ , (300, "trois cents")+ , (400, "quatre cents")+ , (500, "cinq cents")+ , (600, "six cents")+ , (700, "sept cents")+ , (800, "huit cents")+ , (900, "neuf cents")+ , (1000, "mille")+ , (1999, "mille neuf cent quatre-vingt-dix-neuf")+ , (2000, "deux mille")+ , (2999, "deux mille neuf cent quatre-vingt-dix-neuf")+ , (dec 4, "dix mille")+ , (dec 5, "cent mille")+ , (dec 6, "un million")+ , (dec 9, "un milliard")+ , (dec 12, "un billion")+ , (dec 15, "un billiard")+ , (dec 18, "un trillion")+ , (dec 21, "un trilliard")+ , (dec 24, "un quadrillion")+ , (dec 27, "un quadrilliard")+ , (dec 30, "un quintillion")+ , (dec 33, "un quintilliard")+ , (dec 36, "un sextillion")+ , (dec 39, "un sextilliard")+ , (dec 42, "un septillion")+ , (dec 45, "un septilliard")+ , (dec 48, "un octillion")+ , (dec 51, "un octilliard")+ , (dec 54, "un nonillion")+ , (dec 57, "un nonilliard")+ , (dec 60, "un décillion")+ , (dec 63, "un décilliard")+ , (dec 66, "un unodécillion")+ , (dec 69, "un unodécilliard")+ , (dec 72, "un duodécillion")+ , (dec 75, "un duodécilliard")+ , (dec 78, "un trédécillion")+ , (dec 81, "un trédécilliard")+ , (dec 84, "un quattuordécillion")+ , (dec 87, "un quattuordécilliard")+ , (dec 90, "un quindécillion")+ , (dec 93, "un quindécilliard")+ , (dec 96, "un sexdécillion")+ , (dec 99, "un sexdécilliard")+ , (dec 102, "un septendécillion")+ , (dec 105, "un septendécilliard")+ , (dec 108, "un octodécillion")+ , (dec 111, "un octodécilliard")+ , (dec 114, "un novemdécillion")+ , (dec 117, "un novemdécilliard")+ , (dec 120, "un vigintillion")+ , (dec 123, "un vigintilliard")+ , (dec 150, "un quinquavigintillion")+ , (dec 153, "un quinquavigintilliard")+ , (dec 180, "un trigintillion")+ , (dec 183, "un trigintilliard")+ , (dec 210, "un quinquatrigintillion")+ , (dec 213, "un quinquatrigintilliard")+ , (dec 240, "un quadragintillion")+ , (dec 243, "un quadragintilliard")+ , (dec 270, "un quinquaquadragintillion")+ , (dec 273, "un quinquaquadragintilliard")+ , (dec 300, "un quinquagintillion")+ , (dec 303, "un quinquagintilliard")+ , (dec 306, "un unoquinquagintillion")+ , (dec 309, "un unoquinquagintilliard")+ , (dec 360, "un sexagintillion")+ , (dec 363, "un sexagintilliard")+ , (dec 420, "un septuagintillion")+ , (dec 423, "un septuagintilliard")+ , (dec 480, "un octogintillion")+ , (dec 483, "un octogintilliard")+ , (dec 540, "un nonagintillion")+ , (dec 543, "un nonagintilliard")+ , (dec 600, "un centillion")+ , (dec 603, "un centilliard")+ ]+ )+ , ( "feminine"+ , feminine defaultInflection+ , [ (1, "une")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "masculine"+ , masculine defaultInflection+ , [ (0, "zéroth")+ , (1, "premier")+ , (2, "deuxième")+ , (3, "troisième")+ , (4, "quatrième")+ , (5, "cinquième")+ , (6, "sixième")+ , (7, "septième")+ , (8, "huitième")+ , (9, "neuvième")+ , (10, "dixième")+ , (11, "onzième")+ , (12, "douzième")+ , (13, "treizième")+ , (14, "quatorzième")+ , (15, "quinzième")+ , (16, "seizième")+ , (17, "dix-septième")+ , (18, "dix-huitième")+ , (19, "dix-neuvième")+ , (20, "vingtième")+ , (21, "vingt et unième")+ , (22, "vingt-deuxième")+ , (23, "vingt-troisième")+ , (24, "vingt-quatrième")+ , (25, "vingt-cinquième")+ , (26, "vingt-sixième")+ , (27, "vingt-septième")+ , (28, "vingt-huitième")+ , (29, "vingt-neuvième")+ , (30, "trentième")+ , (31, "trente et unième")+ , (32, "trente-deuxième")+ , (33, "trente-troisième")+ , (34, "trente-quatrième")+ , (35, "trente-cinquième")+ , (36, "trente-sixième")+ , (37, "trente-septième")+ , (38, "trente-huitième")+ , (39, "trente-neuvième")+ , (40, "quarantième")+ , (41, "quarante et unième")+ , (42, "quarante-deuxième")+ , (43, "quarante-troisième")+ , (44, "quarante-quatrième")+ , (45, "quarante-cinquième")+ , (46, "quarante-sixième")+ , (47, "quarante-septième")+ , (48, "quarante-huitième")+ , (49, "quarante-neuvième")+ , (50, "cinquantième")+ , (51, "cinquante et unième")+ , (52, "cinquante-deuxième")+ , (53, "cinquante-troisième")+ , (54, "cinquante-quatrième")+ , (55, "cinquante-cinquième")+ , (56, "cinquante-sixième")+ , (57, "cinquante-septième")+ , (58, "cinquante-huitième")+ , (59, "cinquante-neuvième")+ , (60, "soixantième")+ , (61, "soixante et unième")+ , (62, "soixante-deuxième")+ , (63, "soixante-troisième")+ , (64, "soixante-quatrième")+ , (65, "soixante-cinquième")+ , (66, "soixante-sixième")+ , (67, "soixante-septième")+ , (68, "soixante-huitième")+ , (69, "soixante-neuvième")+ , (70, "soixante-dixième")+ , (71, "soixante et onzième")+ , (72, "soixante-douzième")+ , (73, "soixante-treizième")+ , (74, "soixante-quatorzième")+ , (75, "soixante-quinzième")+ , (76, "soixante-seizième")+ , (77, "soixante-dix-septième")+ , (78, "soixante-dix-huitième")+ , (79, "soixante-dix-neuvième")+ , (80, "quatre-vingtième")+ , (81, "quatre-vingt-unième")+ , (82, "quatre-vingt-deuxième")+ , (83, "quatre-vingt-troisième")+ , (84, "quatre-vingt-quatrième")+ , (85, "quatre-vingt-cinquième")+ , (86, "quatre-vingt-sixième")+ , (87, "quatre-vingt-septième")+ , (88, "quatre-vingt-huitième")+ , (89, "quatre-vingt-neuvième")+ , (90, "quatre-vingt-dixième")+ , (91, "quatre-vingt-onzième")+ , (92, "quatre-vingt-douzième")+ , (93, "quatre-vingt-treizième")+ , (94, "quatre-vingt-quatorzième")+ , (95, "quatre-vingt-quinzième")+ , (96, "quatre-vingt-seizième")+ , (97, "quatre-vingt-dix-septième")+ , (98, "quatre-vingt-dix-huitième")+ , (99, "quatre-vingt-dix-neuvième")+ , (100, "centième")+ , (200, "deux centième")+ , (300, "trois centième")+ , (400, "quatre centième")+ , (500, "cinq centième")+ , (600, "six centième")+ , (700, "sept centième")+ , (800, "huit centième")+ , (900, "neuf centième")+ , (1000, "millième")+ , (dec 6, "millionième")+ , (dec 9, "milliardième")+ ]+ )+ , ( "feminine"+ , feminine defaultInflection+ , [ (1, "première")+ , (41, "quarante et uneième")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/FRA_JER/TestData.hs view
@@ -0,0 +1,162 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] -++[@Native name@] -++[@English name@] Jèrriais+-}+module Text.Numeral.Language.FRA_JER.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-jerriais/en/fra-jer/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "ieune")+ , (2, "deux")+ , (3, "trais")+ , (4, "quat’")+ , (5, "chîn")+ , (6, "six")+ , (7, "sept")+ , (8, "huit")+ , (9, "neuf")+ , (10, "dgix")+ , (11, "onze")+ , (12, "douze")+ , (13, "treize")+ , (14, "quatorze")+ , (15, "tchînze")+ , (16, "seize")+ , (17, "dgiêx-sept")+ , (18, "dgiêx-huit")+ , (19, "dgiêx-neuf")+ , (20, "vîngt")+ , (21, "vîngt’tch’ieune")+ , (22, "vîngt-deux")+ , (23, "vîngt-trais")+ , (24, "vîngt-quat’")+ , (25, "vîngt-chîn")+ , (26, "vîngt-six")+ , (27, "vîngt-sept")+ , (28, "vîngt-huit")+ , (29, "vîngt-neuf")+ , (30, "trente")+ , (31, "trente’tch’ieune")+ , (32, "trente-deux")+ , (33, "trente-trais")+ , (34, "trente-quat’")+ , (35, "trente-chîn")+ , (36, "trente-six")+ , (37, "trente-sept")+ , (38, "trente-huit")+ , (39, "trente-neuf")+ , (40, "quarante")+ , (41, "quarante’tch’ieune")+ , (42, "quarante-deux")+ , (43, "quarante-trais")+ , (44, "quarante-quat’")+ , (45, "quarante-chîn")+ , (46, "quarante-six")+ , (47, "quarante-sept")+ , (48, "quarante-huit")+ , (49, "quarante-neuf")+ , (50, "chînquante")+ , (51, "chînquante tch’ieune")+ , (52, "chînquante-deux")+ , (53, "chînquante-trais")+ , (54, "chînquante-quat’")+ , (55, "chînquante-chîn")+ , (56, "chînquante-six")+ , (57, "chînquante-sept")+ , (58, "chînquante-huit")+ , (59, "chînquante-neuf")+ , (60, "souaixante")+ , (61, "souaixante tch’ieune")+ , (62, "souaixante-deux")+ , (63, "souaixante-trais")+ , (64, "souaixante-quat’")+ , (65, "souaixante-chîn")+ , (66, "souaixante-six")+ , (67, "souaixante-sept")+ , (68, "souaixante-huit")+ , (69, "souaixante-neuf")+ , (70, "septante")+ , (71, "septante tch’ieune")+ , (72, "septante-deux")+ , (73, "septante-trais")+ , (74, "septante-quat’")+ , (75, "septante-chîn")+ , (76, "septante-six")+ , (77, "septante-sept")+ , (78, "septante-huit")+ , (79, "septante-neuf")+ , (80, "quatre-vîngts")+ , (81, "quatre-vîngt-ieune")+ , (82, "quatre-vîngt-deux")+ , (83, "quatre-vîngt-trais")+ , (84, "quatre-vîngt-quat’")+ , (85, "quatre-vîngt-chîn")+ , (86, "quatre-vîngt-six")+ , (87, "quatre-vîngt-sept")+ , (88, "quatre-vîngt-huit")+ , (89, "quatre-vîngt-neuf")+ , (90, "nénante")+ , (91, "nénante tch’ieune")+ , (92, "nénante-deux")+ , (93, "nénante-trais")+ , (94, "nénante-quat’")+ , (95, "nénante-chîn")+ , (96, "nénante-six")+ , (97, "nénante-sept")+ , (98, "nénante-huit")+ , (99, "nénante-neuf")+ , (100, "chent")+ , (101, "chent ieune")+ , (102, "chent deux")+ , (103, "chent trais")+ , (104, "chent quat’")+ , (105, "chent chîn")+ , (106, "chent six")+ , (107, "chent sept")+ , (108, "chent huit")+ , (109, "chent neuf")+ , (110, "chent dgix")+ , (123, "chent vîngt-trais")+ , (200, "deux chents")+ , (300, "trais chents")+ , (321, "trais chents vîngt’tch’ieune")+ , (400, "quat’ chents")+ , (500, "chîn chents")+ , (600, "siêx chents")+ , (700, "sept chents")+ , (800, "huit chents")+ , (900, "neu chents")+ , (909, "neu chents neuf")+ , (990, "neu chents nénante")+ , (999, "neu chents nénante-neuf")+ , (1000, "mille")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/FRR/TestData.hs view
@@ -0,0 +1,196 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] frr++[@ISO639-3@] frr++[@Native name@] Frasch, Fresk, Freesk, Friisk++[@English name@] North Frisian+-}+module Text.Numeral.Language.FRR.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-north-frisian/en/frr/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "iinj")+ , (2, "tou")+ , (3, "tri")+ , (4, "fjouer")+ , (5, "fiiw")+ , (6, "seeks")+ , (7, "soowen")+ , (8, "oocht")+ , (9, "nüügen")+ , (10, "tiin")+ , (11, "alwen")+ , (12, "tweelwen")+ , (13, "tratäin")+ , (14, "fjouertäin")+ , (15, "füftäin")+ , (16, "seekstäin")+ , (17, "soowentäin")+ , (18, "oochttäin")+ , (19, "nüügentäin")+ , (20, "twunti")+ , (21, "iinjäntwunti")+ , (22, "touäntwunti")+ , (23, "triäntwunti")+ , (24, "fjoueräntwunti")+ , (25, "fiiwäntwunti")+ , (26, "seeksäntwunti")+ , (27, "soowenäntwunti")+ , (28, "oochtäntwunti")+ , (29, "nüügenäntwunti")+ , (30, "dörti")+ , (31, "iinjändörti")+ , (32, "touändörti")+ , (33, "triändörti")+ , (34, "fjouerändörti")+ , (35, "fiiwändörti")+ , (36, "seeksändörti")+ , (37, "soowenändörti")+ , (38, "oochtändörti")+ , (39, "nüügenändörti")+ , (40, "fäärti")+ , (41, "iinjänfäärti")+ , (42, "touänfäärti")+ , (43, "triänfäärti")+ , (44, "fjoueränfäärti")+ , (45, "fiiwänfäärti")+ , (46, "seeksänfäärti")+ , (47, "soowenänfäärti")+ , (48, "oochtänfäärti")+ , (49, "nüügenänfäärti")+ , (50, "füfti")+ , (51, "iinjänfüfti")+ , (52, "touänfüfti")+ , (53, "triänfüfti")+ , (54, "fjoueränfüfti")+ , (55, "fiiwänfüfti")+ , (56, "seeksänfüfti")+ , (57, "soowenänfüfti")+ , (58, "oochtänfüfti")+ , (59, "nüügenänfüfti")+ , (60, "süsti")+ , (61, "iinjänsüsti")+ , (62, "touänsüsti")+ , (63, "triänsüsti")+ , (64, "fjoueränsüsti")+ , (65, "fiiwänsüsti")+ , (66, "seeksänsüsti")+ , (67, "soowenänsüsti")+ , (68, "oochtänsüsti")+ , (69, "nüügenänsüsti")+ , (70, "sööwenti")+ , (71, "iinjänsööwenti")+ , (72, "touänsööwenti")+ , (73, "triänsööwenti")+ , (74, "fjoueränsööwenti")+ , (75, "fiiwänsööwenti")+ , (76, "seeksänsööwenti")+ , (77, "soowenänsööwenti")+ , (78, "oochtänsööwenti")+ , (79, "nüügenänsööwenti")+ , (80, "tachenti")+ , (81, "iinjäntachenti")+ , (82, "touäntachenti")+ , (83, "triäntachenti")+ , (84, "fjoueräntachenti")+ , (85, "fiiwäntachenti")+ , (86, "seeksäntachenti")+ , (87, "soowenäntachenti")+ , (88, "oochtäntachenti")+ , (89, "nüügenäntachenti")+ , (90, "näägenti")+ , (91, "iinjännäägenti")+ , (92, "touännäägenti")+ , (93, "triännäägenti")+ , (94, "fjouerännäägenti")+ , (95, "fiiwännäägenti")+ , (96, "seeksännäägenti")+ , (97, "soowenännäägenti")+ , (98, "oochtännäägenti")+ , (99, "nüügenännäägenti")+ , (100, "hunert")+ , (101, "hunert iinj")+ , (102, "hunert tou")+ , (103, "hunert tri")+ , (104, "hunert fjouer")+ , (105, "hunert fiiw")+ , (106, "hunert seeks")+ , (107, "hunert soowen")+ , (108, "hunert oocht")+ , (109, "hunert nüügen")+ , (110, "hunert tiin")+ , (123, "hunert triäntwunti")+ , (200, "touhunert")+ , (300, "trihunert")+ , (321, "trihunert iinjäntwunti")+ , (400, "fjouerhunert")+ , (500, "fiiwhunert")+ , (600, "seekshunert")+ , (700, "soowenhunert")+ , (800, "oochthunert")+ , (900, "nüügenhunert")+ , (909, "nüügenhunert nüügen")+ , (990, "nüügenhunert näägenti")+ , (999, "nüügenhunert nüügenännäägenti")+ , (1000, "duusend")+ , (1001, "duusend iinj")+ , (1008, "duusend oocht")+ , (1234, "duusend touhunert fjouerändörti")+ , (2000, "touduusend")+ , (3000, "triduusend")+ , (4000, "fjouerduusend")+ , (4321, "fjouerduusend trihunert iinjäntwunti")+ , (5000, "fiiwduusend")+ , (6000, "seeksduusend")+ , (7000, "soowenduusend")+ , (8000, "oochtduusend")+ , (9000, "nüügenduusend")+ , (10000, "tiinduusend")+ , (12345, "tweelwen duusend trihunert fiiwänfäärti")+ , (20000, "twunti duusend")+ , (30000, "dörti duusend")+ , (40000, "fäärti duusend")+ , (50000, "füfti duusend")+ , (54321, "fjoueränfüfti duusend trihunert iinjäntwunti")+ , (60000, "süsti duusend")+ , (70000, "sööwenti duusend")+ , (80000, "tachenti duusend")+ , (90000, "näägenti duusend")+ , (100000, "hunertduusend")+ , (123456, "hunert triäntwunti duusend fjouerhunert seeksänfüfti")+ , (200000, "touhunertduusend")+ , (300000, "trihunertduusend")+ , (400000, "fjouerhunertduusend")+ , (500000, "fiiwhunertduusend")+ , (600000, "seekshunertduusend")+ , (654321, "seekshunert fjoueränfüfti duusend trihunert iinjäntwunti")+ , (700000, "soowenhunertduusend")+ , (800000, "oochthunertduusend")+ , (900000, "nüügenhunertduusend")+ ]+ )+ ]
src-test/Text/Numeral/Language/FUR/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -23,10 +17,8 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) ) import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "numerals" Text.Numeral.Misc ( dec ) import "this" Text.Numeral.Test ( TestData ) @@ -37,7 +29,7 @@ -- Sources: -- http://www.languagesandnumbers.com/how-to-count-in-friulian/en/fur/-cardinals ∷ (Integral i) ⇒ TestData i+cardinals :: (Integral i) => TestData i cardinals = [ ( "masculine" , masculine defaultInflection@@ -180,20 +172,20 @@ , (110010, "cent e dîs mil e dîs") , (123456, "cent e vincjetrê mil cuatricent e cincuantesîs") , (dec 6, "un milion")- , (2 ⋅ dec 6, "doi milions")- , (3 ⋅ dec 6, "trê milions")- , (10 ⋅ dec 6, "dîs milions")+ , (2 * dec 6, "doi milions")+ , (3 * dec 6, "trê milions")+ , (10 * dec 6, "dîs milions") , (dec 9, "un miliart")- , (2 ⋅ dec 9, "doi miliarts")- , (3 ⋅ dec 9, "trê miliarts")+ , (2 * dec 9, "doi miliarts")+ , (3 * dec 9, "trê miliarts") ] ) , ( "feminine" , feminine defaultInflection , [ (1, "une") , (2, "dôs")- , (2 ⋅ dec 6, "dôs milions")- , (2 ⋅ dec 9, "dôs miliarts")+ , (2 * dec 6, "dôs milions")+ , (2 * dec 9, "dôs miliarts") ] ) ]
src-test/Text/Numeral/Language/GCF_MTQ/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-antillean-creole-of-martinique/en/gcf-mtq/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
src-test/Text/Numeral/Language/GIL/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-gilbertese/en/gil/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
− src-test/Text/Numeral/Language/GL/TestData.hs
@@ -1,235 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] gl--[@ISO639-2@] glg--[@ISO639-3@] glg--[@Native name@] Galego--[@English name@] Galician--}-module Text.Numeral.Language.GL.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-galician/en/glg/--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "cero")- , (1, "un")- , (2, "dous")- , (3, "tres")- , (4, "catro")- , (5, "cinco")- , (6, "seis")- , (7, "sete")- , (8, "oito")- , (9, "nove")- , (10, "dez")- , (11, "once")- , (12, "doce")- , (13, "trece")- , (14, "catorce")- , (15, "quince")- , (16, "dezaseis")- , (17, "dezasete")- , (18, "dezoito")- , (19, "dezanove")- , (20, "vinte")- , (21, "vinte e un")- , (22, "vinte e dous")- , (23, "vinte e tres")- , (24, "vinte e catro")- , (25, "vinte e cinco")- , (26, "vinte e seis")- , (27, "vinte e sete")- , (28, "vinte e oito")- , (29, "vinte e nove")- , (30, "trinta")- , (31, "trinta e un")- , (32, "trinta e dous")- , (33, "trinta e tres")- , (34, "trinta e catro")- , (35, "trinta e cinco")- , (36, "trinta e seis")- , (37, "trinta e sete")- , (38, "trinta e oito")- , (39, "trinta e nove")- , (40, "corenta")- , (41, "corenta e un")- , (42, "corenta e dous")- , (43, "corenta e tres")- , (44, "corenta e catro")- , (45, "corenta e cinco")- , (46, "corenta e seis")- , (47, "corenta e sete")- , (48, "corenta e oito")- , (49, "corenta e nove")- , (50, "cincuenta")- , (51, "cincuenta e un")- , (52, "cincuenta e dous")- , (53, "cincuenta e tres")- , (54, "cincuenta e catro")- , (55, "cincuenta e cinco")- , (56, "cincuenta e seis")- , (57, "cincuenta e sete")- , (58, "cincuenta e oito")- , (59, "cincuenta e nove")- , (60, "sesenta")- , (61, "sesenta e un")- , (62, "sesenta e dous")- , (63, "sesenta e tres")- , (64, "sesenta e catro")- , (65, "sesenta e cinco")- , (66, "sesenta e seis")- , (67, "sesenta e sete")- , (68, "sesenta e oito")- , (69, "sesenta e nove")- , (70, "setenta")- , (71, "setenta e un")- , (72, "setenta e dous")- , (73, "setenta e tres")- , (74, "setenta e catro")- , (75, "setenta e cinco")- , (76, "setenta e seis")- , (77, "setenta e sete")- , (78, "setenta e oito")- , (79, "setenta e nove")- , (80, "oitenta")- , (81, "oitenta e un")- , (82, "oitenta e dous")- , (83, "oitenta e tres")- , (84, "oitenta e catro")- , (85, "oitenta e cinco")- , (86, "oitenta e seis")- , (87, "oitenta e sete")- , (88, "oitenta e oito")- , (89, "oitenta e nove")- , (90, "noventa")- , (91, "noventa e un")- , (92, "noventa e dous")- , (93, "noventa e tres")- , (94, "noventa e catro")- , (95, "noventa e cinco")- , (96, "noventa e seis")- , (97, "noventa e sete")- , (98, "noventa e oito")- , (99, "noventa e nove")- , (100, "cen")- , (101, "cento un")- , (102, "cento dous")- , (103, "cento tres")- , (104, "cento catro")- , (105, "cento cinco")- , (106, "cento seis")- , (107, "cento sete")- , (108, "cento oito")- , (109, "cento nove")- , (110, "cento dez")- , (123, "cento vinte e tres")- , (200, "douscentos")- , (300, "trescentos")- , (321, "trescentos e vinte e un")- , (400, "catrocentos")- , (500, "cincocentos")- , (600, "seiscentos")- , (700, "setecentos")- , (800, "oitocentos")- , (900, "novecentos")- , (909, "novecentos e nove")- , (990, "novecentos e noventa")- , (999, "novecentos e noventa e nove")- , (1000, "mil")- , (1001, "mil e un")- , (1008, "mil e oito")- , (1234, "mil douscentos e trinta e catro")- , (2000, "dous mil")- , (3000, "tres mil")- , (4000, "catro mil")- , (4321, "catro mil trescentos e vinte e un")- , (5000, "cinco mil")- , (6000, "seis mil")- , (7000, "sete mil")- , (8000, "oito mil")- , (9000, "nove mil")- , (10000, "dez mil")- , (12345, "doce mil trescentos e corenta e cinco")- , (20000, "vinte mil")- , (30000, "trinta mil")- , (40000, "corenta mil")- , (50000, "cincuenta mil")- , (54321, "cincuenta e catro mil trescentos e vinte e un")- , (60000, "sesenta mil")- , (70000, "setenta mil")- , (80000, "oitenta mil")- , (90000, "noventa mil")- , (100000, "cen mil")- , (123456, "cento vinte e tres mil catrocentos e cincuenta e seis")- , (200000, "douscentos mil")- , (300000, "trescentos mil")- , (400000, "catrocentos mil")- , (500000, "cincocentos mil")- , (600000, "seiscentos mil")- , (654321, "seiscentos e cincuenta e catro mil trescentos e vinte e un")- , (700000, "setecentos mil")- , (800000, "oitocentos mil")- , (900000, "novecentos mil")- , (1000000, "un milhom")- , (1000001, "un milhom e un")- , (1234567, "un milhom douscentos e trinta e catro mil cincocentos e sesenta e sete")- , (2000000, "dous milhom")- , (3000000, "tres milhom")- , (4000000, "catro milhom")- , (5000000, "cinco milhom")- , (6000000, "seis milhom")- , (7000000, "sete milhom")- , (7654321, "sete milhom seiscentos e cincuenta e catro mil trescentos e vinte e un")- , (8000000, "oito milhom")- , (9000000, "nove milhom")- , (1000000000, "un bilhom")- , (1000000001, "un bilhom e un")- , (2000000000, "dous bilhom")- , (3000000000, "tres bilhom")- , (4000000000, "catro bilhom")- , (5000000000, "cinco bilhom")- , (6000000000, "seis bilhom")- , (7000000000, "sete bilhom")- , (8000000000, "oito bilhom")- , (9000000000, "nove bilhom")- , (1000000000000, "un trilhom")- , (1000000000001, "un trilhom e un")- , (2000000000000, "dous trilhom")- , (3000000000000, "tres trilhom")- , (4000000000000, "catro trilhom")- , (5000000000000, "cinco trilhom")- , (6000000000000, "seis trilhom")- , (7000000000000, "sete trilhom")- , (8000000000000, "oito trilhom")- , (9000000000000, "nove trilhom")- ]- )- ]
+ src-test/Text/Numeral/Language/GLG/TestData.hs view
@@ -0,0 +1,229 @@+{-|+[@ISO639-1@] gl++[@ISO639-2@] glg++[@ISO639-3@] glg++[@Native name@] Galego++[@English name@] Galician+-}+module Text.Numeral.Language.GLG.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-galician/en/glg/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "cero")+ , (1, "un")+ , (2, "dous")+ , (3, "tres")+ , (4, "catro")+ , (5, "cinco")+ , (6, "seis")+ , (7, "sete")+ , (8, "oito")+ , (9, "nove")+ , (10, "dez")+ , (11, "once")+ , (12, "doce")+ , (13, "trece")+ , (14, "catorce")+ , (15, "quince")+ , (16, "dezaseis")+ , (17, "dezasete")+ , (18, "dezoito")+ , (19, "dezanove")+ , (20, "vinte")+ , (21, "vinte e un")+ , (22, "vinte e dous")+ , (23, "vinte e tres")+ , (24, "vinte e catro")+ , (25, "vinte e cinco")+ , (26, "vinte e seis")+ , (27, "vinte e sete")+ , (28, "vinte e oito")+ , (29, "vinte e nove")+ , (30, "trinta")+ , (31, "trinta e un")+ , (32, "trinta e dous")+ , (33, "trinta e tres")+ , (34, "trinta e catro")+ , (35, "trinta e cinco")+ , (36, "trinta e seis")+ , (37, "trinta e sete")+ , (38, "trinta e oito")+ , (39, "trinta e nove")+ , (40, "corenta")+ , (41, "corenta e un")+ , (42, "corenta e dous")+ , (43, "corenta e tres")+ , (44, "corenta e catro")+ , (45, "corenta e cinco")+ , (46, "corenta e seis")+ , (47, "corenta e sete")+ , (48, "corenta e oito")+ , (49, "corenta e nove")+ , (50, "cincuenta")+ , (51, "cincuenta e un")+ , (52, "cincuenta e dous")+ , (53, "cincuenta e tres")+ , (54, "cincuenta e catro")+ , (55, "cincuenta e cinco")+ , (56, "cincuenta e seis")+ , (57, "cincuenta e sete")+ , (58, "cincuenta e oito")+ , (59, "cincuenta e nove")+ , (60, "sesenta")+ , (61, "sesenta e un")+ , (62, "sesenta e dous")+ , (63, "sesenta e tres")+ , (64, "sesenta e catro")+ , (65, "sesenta e cinco")+ , (66, "sesenta e seis")+ , (67, "sesenta e sete")+ , (68, "sesenta e oito")+ , (69, "sesenta e nove")+ , (70, "setenta")+ , (71, "setenta e un")+ , (72, "setenta e dous")+ , (73, "setenta e tres")+ , (74, "setenta e catro")+ , (75, "setenta e cinco")+ , (76, "setenta e seis")+ , (77, "setenta e sete")+ , (78, "setenta e oito")+ , (79, "setenta e nove")+ , (80, "oitenta")+ , (81, "oitenta e un")+ , (82, "oitenta e dous")+ , (83, "oitenta e tres")+ , (84, "oitenta e catro")+ , (85, "oitenta e cinco")+ , (86, "oitenta e seis")+ , (87, "oitenta e sete")+ , (88, "oitenta e oito")+ , (89, "oitenta e nove")+ , (90, "noventa")+ , (91, "noventa e un")+ , (92, "noventa e dous")+ , (93, "noventa e tres")+ , (94, "noventa e catro")+ , (95, "noventa e cinco")+ , (96, "noventa e seis")+ , (97, "noventa e sete")+ , (98, "noventa e oito")+ , (99, "noventa e nove")+ , (100, "cen")+ , (101, "cento un")+ , (102, "cento dous")+ , (103, "cento tres")+ , (104, "cento catro")+ , (105, "cento cinco")+ , (106, "cento seis")+ , (107, "cento sete")+ , (108, "cento oito")+ , (109, "cento nove")+ , (110, "cento dez")+ , (123, "cento vinte e tres")+ , (200, "douscentos")+ , (300, "trescentos")+ , (321, "trescentos e vinte e un")+ , (400, "catrocentos")+ , (500, "cincocentos")+ , (600, "seiscentos")+ , (700, "setecentos")+ , (800, "oitocentos")+ , (900, "novecentos")+ , (909, "novecentos e nove")+ , (990, "novecentos e noventa")+ , (999, "novecentos e noventa e nove")+ , (1000, "mil")+ , (1001, "mil e un")+ , (1008, "mil e oito")+ , (1234, "mil douscentos e trinta e catro")+ , (2000, "dous mil")+ , (3000, "tres mil")+ , (4000, "catro mil")+ , (4321, "catro mil trescentos e vinte e un")+ , (5000, "cinco mil")+ , (6000, "seis mil")+ , (7000, "sete mil")+ , (8000, "oito mil")+ , (9000, "nove mil")+ , (10000, "dez mil")+ , (12345, "doce mil trescentos e corenta e cinco")+ , (20000, "vinte mil")+ , (30000, "trinta mil")+ , (40000, "corenta mil")+ , (50000, "cincuenta mil")+ , (54321, "cincuenta e catro mil trescentos e vinte e un")+ , (60000, "sesenta mil")+ , (70000, "setenta mil")+ , (80000, "oitenta mil")+ , (90000, "noventa mil")+ , (100000, "cen mil")+ , (123456, "cento vinte e tres mil catrocentos e cincuenta e seis")+ , (200000, "douscentos mil")+ , (300000, "trescentos mil")+ , (400000, "catrocentos mil")+ , (500000, "cincocentos mil")+ , (600000, "seiscentos mil")+ , (654321, "seiscentos e cincuenta e catro mil trescentos e vinte e un")+ , (700000, "setecentos mil")+ , (800000, "oitocentos mil")+ , (900000, "novecentos mil")+ , (1000000, "un milhom")+ , (1000001, "un milhom e un")+ , (1234567, "un milhom douscentos e trinta e catro mil cincocentos e sesenta e sete")+ , (2000000, "dous milhom")+ , (3000000, "tres milhom")+ , (4000000, "catro milhom")+ , (5000000, "cinco milhom")+ , (6000000, "seis milhom")+ , (7000000, "sete milhom")+ , (7654321, "sete milhom seiscentos e cincuenta e catro mil trescentos e vinte e un")+ , (8000000, "oito milhom")+ , (9000000, "nove milhom")+ , (1000000000, "un bilhom")+ , (1000000001, "un bilhom e un")+ , (2000000000, "dous bilhom")+ , (3000000000, "tres bilhom")+ , (4000000000, "catro bilhom")+ , (5000000000, "cinco bilhom")+ , (6000000000, "seis bilhom")+ , (7000000000, "sete bilhom")+ , (8000000000, "oito bilhom")+ , (9000000000, "nove bilhom")+ , (1000000000000, "un trilhom")+ , (1000000000001, "un trilhom e un")+ , (2000000000000, "dous trilhom")+ , (3000000000000, "tres trilhom")+ , (4000000000000, "catro trilhom")+ , (5000000000000, "cinco trilhom")+ , (6000000000000, "seis trilhom")+ , (7000000000000, "sete trilhom")+ , (8000000000000, "oito trilhom")+ , (9000000000000, "nove trilhom")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/GLV/TestData.hs view
@@ -0,0 +1,151 @@+{-|+[@ISO639-1@] gv++[@ISO639-2@] glv++[@ISO639-3@] glv++[@Native name@] Gaelg++[@English name@] Manx+-}++module Text.Numeral.Language.GLV.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.sf.airnet.ne.jp/~ts/language/number/manx.html+ http://www.gaelg.iofm.net/LESSONS/P/P19.html+ http://www.gaelg.iofm.net/LESSONS/mona/Lessons.pdf+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "nane")+ , (2, "jees")+ , (3, "tree")+ , (4, "kiare")+ , (5, "queig")+ , (6, "shey")+ , (7, "shiaght")+ , (8, "hoght")+ , (9, "nuy")+ , (10, "jeih")+ , (11, "nane-jeig")+ , (12, "daa-yeig")+ , (13, "tree-jeig")+ , (14, "kiare-jeig")+ , (15, "queig-jeig")+ , (16, "shey-jeig")+ , (17, "shiaght-jeig")+ , (18, "hoght-jeig")+ , (19, "nuy-jeig")+ , (20, "feed")+ , (21, "nane as feed")+ , (22, "jees as feed")+ , (23, "tree as feed")+ , (24, "kiare as feed")+ , (25, "queig as feed")+ , (26, "shey as feed")+ , (27, "shiaght as feed")+ , (28, "hoght as feed")+ , (29, "nuy as feed")+ , (30, "jeih as feed")+ , (31, "nane-jeig as feed")+ , (32, "daa-yeig as feed")+ , (33, "tree-jeig as feed")+ , (34, "kiare-jeig as feed")+ , (35, "queig-jeig as feed")+ , (36, "shey-jeig as feed")+ , (37, "shiaght-jeig as feed")+ , (38, "hoght-jeig as feed")+ , (39, "nuy-jeig as feed")+ , (40, "daeed")+ , (41, "nane as daeed")+ , (42, "jees as daeed")+ , (43, "tree as daeed")+ , (44, "kiare as daeed")+ , (45, "queig as daeed")+ , (46, "shey as daeed")+ , (47, "shiaght as daeed")+ , (48, "hoght as daeed")+ , (49, "nuy as daeed")+ , (50, "jeih as daeed")+ , (51, "nane-jeig as daeed")+ , (52, "daa-yeig as daeed")+ , (53, "tree-jeig as daeed")+ , (54, "kiare-jeig as daeed")+ , (55, "queig-jeig as daeed")+ , (56, "shey-jeig as daeed")+ , (57, "shiaght-jeig as daeed")+ , (58, "hoght-jeig as daeed")+ , (59, "nuy-jeig as daeed")+ , (60, "tree feed")+ , (61, "tree feed as nane")+ , (62, "tree feed as jees")+ , (63, "tree feed as tree")+ , (64, "tree feed as kiare")+ , (65, "tree feed as queig")+ , (66, "tree feed as shey")+ , (67, "tree feed as shiaght")+ , (68, "tree feed as hoght")+ , (69, "tree feed as nuy")+ , (70, "tree feed as jeih")+ , (71, "tree feed as nane-jeig")+ , (72, "tree feed as daa-yeig")+ , (73, "tree feed as tree-jeig")+ , (74, "tree feed as kiare-jeig")+ , (75, "tree feed as queig-jeig")+ , (76, "tree feed as shey-jeig")+ , (77, "tree feed as shiaght-jeig")+ , (78, "tree feed as hoght-jeig")+ , (79, "tree feed as nuy-jeig")+ , (80, "kiare feed")+ , (81, "kiare feed as nane")+ , (82, "kiare feed as jees")+ , (83, "kiare feed as tree")+ , (84, "kiare feed as kiare")+ , (85, "kiare feed as queig")+ , (86, "kiare feed as shey")+ , (87, "kiare feed as shiaght")+ , (88, "kiare feed as hoght")+ , (89, "kiare feed as nuy")+ , (90, "kiare feed as jeih")+ , (91, "kiare feed as nane-jeig")+ , (92, "kiare feed as daa-yeig")+ , (93, "kiare feed as tree-jeig")+ , (94, "kiare feed as kiare-jeig")+ , (95, "kiare feed as queig-jeig")+ , (96, "kiare feed as shey-jeig")+ , (97, "kiare feed as shiaght-jeig")+ , (98, "kiare feed as hoght-jeig")+ , (99, "kiare feed as nuy-jeig")+ , (100, "keead")+ , (200, "daa cheead")+ , (300, "tree cheead")+ , (400, "kiare cheead")+ , (500, "queig cheead")+ , (600, "shey cheead")+ , (700, "shiaght cheead")+ , (800, "hoght cheead")+ , (900, "nuy cheead")+ , (1000, "thousane")+ -- , (dec 6, "jeih cheead thousane")+ ]+ )+ ]
src-test/Text/Numeral/Language/GSW/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -23,8 +17,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -37,7 +30,7 @@ http://www.languagesandnumbers.com/how-to-count-in-swiss-german/en/gsw-che/ -} -cardinals ∷ (Integral i) ⇒ TestData i+cardinals :: (Integral i) => TestData i cardinals = [ ( "default" , defaultInflection
− src-test/Text/Numeral/Language/GV/TestData.hs
@@ -1,158 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] gv--[@ISO639-2@] glv--[@ISO639-3@] glv--[@Native name@] Gaelg--[@English name@] Manx--}--module Text.Numeral.Language.GV.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.sf.airnet.ne.jp/~ts/language/number/manx.html- http://www.gaelg.iofm.net/LESSONS/P/P19.html- http://www.gaelg.iofm.net/LESSONS/mona/Lessons.pdf--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (1, "nane")- , (2, "jees")- , (3, "tree")- , (4, "kiare")- , (5, "queig")- , (6, "shey")- , (7, "shiaght")- , (8, "hoght")- , (9, "nuy")- , (10, "jeih")- , (11, "nane-jeig")- , (12, "daa-yeig")- , (13, "tree-jeig")- , (14, "kiare-jeig")- , (15, "queig-jeig")- , (16, "shey-jeig")- , (17, "shiaght-jeig")- , (18, "hoght-jeig")- , (19, "nuy-jeig")- , (20, "feed")- , (21, "nane as feed")- , (22, "jees as feed")- , (23, "tree as feed")- , (24, "kiare as feed")- , (25, "queig as feed")- , (26, "shey as feed")- , (27, "shiaght as feed")- , (28, "hoght as feed")- , (29, "nuy as feed")- , (30, "jeih as feed")- , (31, "nane-jeig as feed")- , (32, "daa-yeig as feed")- , (33, "tree-jeig as feed")- , (34, "kiare-jeig as feed")- , (35, "queig-jeig as feed")- , (36, "shey-jeig as feed")- , (37, "shiaght-jeig as feed")- , (38, "hoght-jeig as feed")- , (39, "nuy-jeig as feed")- , (40, "daeed")- , (41, "nane as daeed")- , (42, "jees as daeed")- , (43, "tree as daeed")- , (44, "kiare as daeed")- , (45, "queig as daeed")- , (46, "shey as daeed")- , (47, "shiaght as daeed")- , (48, "hoght as daeed")- , (49, "nuy as daeed")- , (50, "jeih as daeed")- , (51, "nane-jeig as daeed")- , (52, "daa-yeig as daeed")- , (53, "tree-jeig as daeed")- , (54, "kiare-jeig as daeed")- , (55, "queig-jeig as daeed")- , (56, "shey-jeig as daeed")- , (57, "shiaght-jeig as daeed")- , (58, "hoght-jeig as daeed")- , (59, "nuy-jeig as daeed")- , (60, "tree feed")- , (61, "tree feed as nane")- , (62, "tree feed as jees")- , (63, "tree feed as tree")- , (64, "tree feed as kiare")- , (65, "tree feed as queig")- , (66, "tree feed as shey")- , (67, "tree feed as shiaght")- , (68, "tree feed as hoght")- , (69, "tree feed as nuy")- , (70, "tree feed as jeih")- , (71, "tree feed as nane-jeig")- , (72, "tree feed as daa-yeig")- , (73, "tree feed as tree-jeig")- , (74, "tree feed as kiare-jeig")- , (75, "tree feed as queig-jeig")- , (76, "tree feed as shey-jeig")- , (77, "tree feed as shiaght-jeig")- , (78, "tree feed as hoght-jeig")- , (79, "tree feed as nuy-jeig")- , (80, "kiare feed")- , (81, "kiare feed as nane")- , (82, "kiare feed as jees")- , (83, "kiare feed as tree")- , (84, "kiare feed as kiare")- , (85, "kiare feed as queig")- , (86, "kiare feed as shey")- , (87, "kiare feed as shiaght")- , (88, "kiare feed as hoght")- , (89, "kiare feed as nuy")- , (90, "kiare feed as jeih")- , (91, "kiare feed as nane-jeig")- , (92, "kiare feed as daa-yeig")- , (93, "kiare feed as tree-jeig")- , (94, "kiare feed as kiare-jeig")- , (95, "kiare feed as queig-jeig")- , (96, "kiare feed as shey-jeig")- , (97, "kiare feed as shiaght-jeig")- , (98, "kiare feed as hoght-jeig")- , (99, "kiare feed as nuy-jeig")- , (100, "keead")- , (200, "daa cheead")- , (300, "tree cheead")- , (400, "kiare cheead")- , (500, "queig cheead")- , (600, "shey cheead")- , (700, "shiaght cheead")- , (800, "hoght cheead")- , (900, "nuy cheead")- , (1000, "thousane")- -- , (dec 6, "jeih cheead thousane")- ]- )- ]
src-test/Text/Numeral/Language/HAI/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -39,7 +33,7 @@ 'waak' means 'add on' -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection@@ -159,7 +153,7 @@ , (321, "lagwa uu tláahl wáak lagwa uu tléihl lagwa uu sgwáansang wáak sgwáansang") , (400, "lagwa uu tlaalee sdáng") , (500, "lagwa uu tlaalee sdáng wáak lagwa uu tléihl")- , (600, "lagwa uu tlaalee tléihl")+ , (600, "lagwa uu tlaalee hlgúnahl") , (700, "lagwa uu tlaalee wáak lagwa uu tléihl") , (800, "lagwa uu tlaalee sdáansaangaa") , (900, "lagwa uu tlaalee sdáansaangaa wáak lagwa uu tléihl")
+ src-test/Text/Numeral/Language/HAT/TestData.hs view
@@ -0,0 +1,219 @@+{-|+[@ISO639-1@] ht++[@ISO639-2@] hat++[@ISO639-3@] hat++[@Native name@] -++[@English name@] Haitian Creole+-}+module Text.Numeral.Language.HAT.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-haitian-creole/en/hat/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "zero")+ , (1, "youn")+ , (2, "de")+ , (3, "twa")+ , (4, "kat")+ , (5, "senk")+ , (6, "sis")+ , (7, "sèt")+ , (8, "uit")+ , (9, "nèf")+ , (10, "dis")+ , (11, "onz")+ , (12, "douz")+ , (13, "trèz")+ , (14, "katòz")+ , (15, "kenz")+ , (16, "sèz")+ , (17, "disèt")+ , (18, "dizuit")+ , (19, "diznèf")+ , (20, "ven")+ , (21, "venteyen")+ , (22, "vennde")+ , (23, "venntwa")+ , (24, "vennkat")+ , (25, "vennsenk")+ , (26, "vennsis")+ , (27, "vennsèt")+ , (28, "ventuit")+ , (29, "ventnèf")+ , (30, "trant")+ , (31, "tranteyen")+ , (32, "trannde")+ , (33, "tranntwa")+ , (34, "trannkat")+ , (35, "trannsenk")+ , (36, "trannsis")+ , (37, "trannsèt")+ , (38, "trantuit")+ , (39, "trantnèf")+ , (40, "karant")+ , (41, "karanteyen")+ , (42, "karannde")+ , (43, "karanntwa")+ , (44, "karannkat")+ , (45, "karannsenk")+ , (46, "karannsis")+ , (47, "karannsèt")+ , (48, "karantuit")+ , (49, "karantnèf")+ , (50, "senkant")+ , (51, "senkanteyen")+ , (52, "senkannde")+ , (53, "senkanntwa")+ , (54, "senkannkat")+ , (55, "senkannsenk")+ , (56, "senkannsis")+ , (57, "senkannsèt")+ , (58, "senkantuit")+ , (59, "senkantnèf")+ , (60, "swasann")+ , (61, "swasannyoun")+ , (62, "swasannde")+ , (63, "swasanntwa")+ , (64, "swasannkat")+ , (65, "swasannsenk")+ , (66, "swasannsis")+ , (67, "swasannsèt")+ , (68, "swasannuit")+ , (69, "swasannnèf")+ , (70, "swasanndis")+ , (71, "swasannonz")+ , (72, "swasanndisde")+ , (73, "swasanntrèz")+ , (74, "swasannkatòz")+ , (75, "swasannkenz")+ , (76, "swasannsèz")+ , (77, "swasanndissèt")+ , (78, "swasanndizuit")+ , (79, "swasanndiznèf")+ , (80, "katreven")+ , (81, "katreventeyen")+ , (82, "katrevennde")+ , (83, "katrevenntwa")+ , (84, "katrevennkat")+ , (85, "katrevennsenk")+ , (86, "katrevennsis")+ , (87, "katrevennsèt")+ , (88, "katreventuit")+ , (89, "katreventnèf")+ , (90, "katrevendis")+ , (91, "katrevenonz")+ , (92, "katrevendisde")+ , (93, "katreventrèz")+ , (94, "katrevenkatòz")+ , (95, "katrevenkenz")+ , (96, "katrevensèz")+ , (97, "katrevendissèt")+ , (98, "katrevendizuit")+ , (99, "katrevendiznèf")+ , (100, "san")+ , (101, "san en")+ , (102, "san de")+ , (103, "san twa")+ , (104, "san kat")+ , (105, "san senk")+ , (106, "san sis")+ , (107, "san sèt")+ , (108, "san uit")+ , (109, "san nèf")+ , (110, "san dis")+ , (123, "san venntwa")+ , (200, "de san")+ , (300, "twa san")+ , (321, "twa san venteyen")+ , (400, "kat san")+ , (500, "sen san")+ , (600, "si san")+ , (700, "sèt san")+ , (800, "ui san")+ , (900, "nèf san")+ , (909, "nèf san nèf")+ , (990, "nèf san katrevendis")+ , (999, "nèf san katrevendiznèf")+ , (1000, "mil")+ , (1001, "mil youn")+ , (1008, "mil uit")+ , (1234, "mil de san trannkat")+ , (2000, "de mil")+ , (3000, "twa mil")+ , (4000, "kat mil")+ , (4321, "kat mil twa san venteyen")+ , (5000, "senk mil")+ , (6000, "sis mil")+ , (7000, "sèt mil")+ , (8000, "uit mil")+ , (9000, "nèf mil")+ , (10000, "di mil")+ , (12345, "douz mil twa san karannsenk")+ , (20000, "ven mil")+ , (30000, "trant mil")+ , (40000, "karant mil")+ , (50000, "senkant mil")+ , (54321, "senkannkat mil twa san venteyen")+ , (60000, "swasann mil")+ , (70000, "swasanndi mil")+ , (80000, "katreven mil")+ , (90000, "katrevendi mil")+ , (100000, "san mil")+ , (123456, "san venntwa mil kat san senkannsis")+ , (200000, "de san mil")+ , (300000, "twa san mil")+ , (400000, "kat san mil")+ , (500000, "sen san mil")+ , (600000, "si san mil")+ , (654321, "si san senkannkat mil twa san venteyen")+ , (700000, "sèt san mil")+ , (800000, "ui san mil")+ , (900000, "nèf san mil")+ , (1000000, "yon milyon")+ , (1000001, "yon milyon youn")+ , (1234567, "yon milyon de san trannkat mil sen san swasannsèt")+ , (2000000, "de milyon")+ , (3000000, "twa milyon")+ , (4000000, "kat milyon")+ , (5000000, "senk milyon")+ , (6000000, "sis milyon")+ , (7000000, "sèt milyon")+ , (7654321, "sèt milyon si san senkannkat mil twa san venteyen")+ , (8000000, "uit milyon")+ , (9000000, "nèf milyon")+ , (1000000000, "yon milya")+ , (1000000001, "yon milya youn")+ , (2000000000, "de milya")+ , (3000000000, "twa milya")+ , (4000000000, "kat milya")+ , (5000000000, "senk milya")+ , (6000000000, "sis milya")+ , (7000000000, "sèt milya")+ , (8000000000, "uit milya")+ , (9000000000, "nèf milya")+ ]+ )+ ]
− src-test/Text/Numeral/Language/HE/TestData.hs
@@ -1,315 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] he--[@ISO639-2@] heb--[@ISO639-3@] heb--[@Native name@] עִבְרִית--[@English name@] Modern Hebrew--}--module Text.Numeral.Language.HE.TestData- ( cardinals- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- E-mail by Yitzchak Gale.- http://www.hebrew4christians.com/Grammar/Unit_Eight/Cardinal_Numbers/cardinal_numbers.html--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "feminine"- , feminine defaultInflection- , [ (0, "אפס")- , (1, "אחת")- , (2, "שתיים") -- Connecting form: "שתי"- , (3, "שלוש")- , (4, "ארבע")- , (5, "חמש")- , (6, "שש")- , (7, "שבע")- , (8, "שמונה")- , (9, "תשע")- , (10, "עשר")- , (11, "אחת עשרה")- , (12, "שתים עשרה")- , (13, "שלוש עשרה")- , (14, "ארבע עשרה")- , (15, "חמש עשרה")- , (16, "שש עשרה")- , (17, "שבע עשרה")- , (18, "שמונה עשרה")- , (19, "תשע עשרה")- , (20, "עשרים")- , (21, "עשרים ואחת")- , (22, "עשרים ושתיים")- , (23, "עשרים ושלוש")- , (24, "עשרים וארבע")- , (25, "עשרים וחמש")- , (26, "עשרים ושש")- , (27, "עשרים ושבע")- , (28, "עשרים ושמונה")- , (29, "עשרים ותשע")- , (30, "שלושים")- , (31, "שלושים ואחת")- , (32, "שלושים ושתיים")- , (33, "שלושים ושלוש")- , (34, "שלושים וארבע")- , (35, "שלושים וחמש")- , (36, "שלושים ושש")- , (37, "שלושים ושבע")- , (38, "שלושים ושמונה")- , (39, "שלושים ותשע")- , (40, "ארבעים")- , (41, "ארבעים ואחת")- , (42, "ארבעים ושתיים")- , (43, "ארבעים ושלוש")- , (44, "ארבעים וארבע")- , (45, "ארבעים וחמש")- , (46, "ארבעים ושש")- , (47, "ארבעים ושבע")- , (48, "ארבעים ושמונה")- , (49, "ארבעים ותשע")- , (50, "חמישים")- , (51, "חמישים ואחת")- , (52, "חמישים ושתיים")- , (53, "חמישים ושלוש")- , (54, "חמישים וארבע")- , (55, "חמישים וחמש")- , (56, "חמישים ושש")- , (57, "חמישים ושבע")- , (58, "חמישים ושמונה")- , (59, "חמישים ותשע")- , (60, "ששים")- , (61, "ששים ואחת")- , (62, "ששים ושתיים")- , (63, "ששים ושלוש")- , (64, "ששים וארבע")- , (65, "ששים וחמש")- , (66, "ששים ושש")- , (67, "ששים ושבע")- , (68, "ששים ושמונה")- , (69, "ששים ותשע")- , (70, "שבעים")- , (71, "שבעים ואחת")- , (72, "שבעים ושתיים")- , (73, "שבעים ושלוש")- , (74, "שבעים וארבע")- , (75, "שבעים וחמש")- , (76, "שבעים ושש")- , (77, "שבעים ושבע")- , (78, "שבעים ושמונה")- , (79, "שבעים ותשע")- , (80, "שמונים")- , (81, "שמונים ואחת")- , (82, "שמונים ושתיים")- , (83, "שמונים ושלוש")- , (84, "שמונים וארבע")- , (85, "שמונים וחמש")- , (86, "שמונים ושש")- , (87, "שמונים ושבע")- , (88, "שמונים ושמונה")- , (89, "שמונים ותשע")- , (90, "תשעים")- , (91, "תשעים ואחת")- , (92, "תשעים ושתיים")- , (93, "תשעים ושלוש")- , (94, "תשעים וארבע")- , (95, "תשעים וחמש")- , (96, "תשעים ושש")- , (97, "תשעים ושבע")- , (98, "תשעים ושמונה")- , (99, "תשעים ותשע")- , (100, "מאה")- , (101, "מאה ואחת")- , (110, "מאה ועשר")- , (111, "מאה אחת עשרה")- , (123, "מאה עשרים ושלוש")- , (144, "מאה ארבעים וארבע")- , (199, "מאה תשעים ותשע")- , (200, "מאתיים")- , (299, "מאתיים תשעים ותשע")- , (300, "שלוש מאות")- , (400, "ארבע מאות")- , (900, "תשע מאות")- , (1000, "אלף")- , (1999, "אלף תשע מאות תשעים ותשע")- , (2000, "אלפיים")- , (2999, "אלפיים תשע מאות תשעים ותשע")- , (3000, "שלושת אלפים")- , (3110, "שלושת אלפים מאה ועשר")- , (4000, "ארבעת אלפים")- , (5000, "חמשת אלפים")- , (6000, "ששת אלפים")- , (7000, "שבעת אלפים")- , (8000, "שמונת אלפים")- , (9000, "תשעת אלפים")- , (10000, "עשרת אלפים")- , (11000, "אחד עשר אלף")- , (12000, "שנים עשר אלף")- , (dec 5, "מאה אלף")- , (dec 6, "מיליון")- , (dec 9, "מיליארד")- ]- )- , ( "masculine"- , masculine defaultInflection- , [ (0, "אפס")- , (1, "אחד")- , (2, "שניים") -- Connecting form: "שני"- , (3, "שלושה")- , (4, "ארבעה")- , (5, "חמישה")- , (6, "שישה")- , (7, "שבעה")- , (8, "שמונה")- , (9, "תשעה")- , (10, "עשרה")- , (11, "אחד עשר")- , (12, "שנים עשר")- , (13, "שלושה עשר")- , (14, "ארבעה עשר")- , (15, "חמישה עשר")- , (16, "שישה עשר")- , (17, "שבעה עשר")- , (18, "שמונה עשר")- , (19, "תשעה עשר")- , (20, "עשרים")- , (21, "עשרים ואחד")- , (22, "עשרים ושניים")- , (23, "עשרים ושלושה")- , (24, "עשרים וארבעה")- , (25, "עשרים וחמישה")- , (26, "עשרים ושישה")- , (27, "עשרים ושבעה")- , (28, "עשרים ושמונה")- , (29, "עשרים ותשעה")- , (30, "שלושים")- , (31, "שלושים ואחד")- , (32, "שלושים ושניים")- , (33, "שלושים ושלושה")- , (34, "שלושים וארבעה")- , (35, "שלושים וחמישה")- , (36, "שלושים ושישה")- , (37, "שלושים ושבעה")- , (38, "שלושים ושמונה")- , (39, "שלושים ותשעה")- , (40, "ארבעים")- , (41, "ארבעים ואחד")- , (42, "ארבעים ושניים")- , (43, "ארבעים ושלושה")- , (44, "ארבעים וארבעה")- , (45, "ארבעים וחמישה")- , (46, "ארבעים ושישה")- , (47, "ארבעים ושבעה")- , (48, "ארבעים ושמונה")- , (49, "ארבעים ותשעה")- , (50, "חמישים")- , (51, "חמישים ואחד")- , (52, "חמישים ושניים")- , (53, "חמישים ושלושה")- , (54, "חמישים וארבעה")- , (55, "חמישים וחמישה")- , (56, "חמישים ושישה")- , (57, "חמישים ושבעה")- , (58, "חמישים ושמונה")- , (59, "חמישים ותשעה")- , (60, "ששים")- , (61, "ששים ואחד")- , (62, "ששים ושניים")- , (63, "ששים ושלושה")- , (64, "ששים וארבעה")- , (65, "ששים וחמישה")- , (66, "ששים ושישה")- , (67, "ששים ושבעה")- , (68, "ששים ושמונה")- , (69, "ששים ותשעה")- , (70, "שבעים")- , (71, "שבעים ואחד")- , (72, "שבעים ושניים")- , (73, "שבעים ושלושה")- , (74, "שבעים וארבעה")- , (75, "שבעים וחמישה")- , (76, "שבעים ושישה")- , (77, "שבעים ושבעה")- , (78, "שבעים ושמונה")- , (79, "שבעים ותשעה")- , (80, "שמונים")- , (81, "שמונים ואחד")- , (82, "שמונים ושניים")- , (83, "שמונים ושלושה")- , (84, "שמונים וארבעה")- , (85, "שמונים וחמישה")- , (86, "שמונים ושישה")- , (87, "שמונים ושבעה")- , (88, "שמונים ושמונה")- , (89, "שמונים ותשעה")- , (90, "תשעים")- , (91, "תשעים ואחד")- , (92, "תשעים ושניים")- , (93, "תשעים ושלושה")- , (94, "תשעים וארבעה")- , (95, "תשעים וחמישה")- , (96, "תשעים ושישה")- , (97, "תשעים ושבעה")- , (98, "תשעים ושמונה")- , (99, "תשעים ותשעה")- , (100, "מאה")- , (101, "מאה ואחד")- , (110, "מאה ועשרה")- , (111, "מאה אחד עשרה")- , (123, "מאה עשרים ושלושה")- , (144, "מאה ארבעים וארבעה")- , (199, "מאה תשעים ותשעה")- , (200, "מאתיים")- , (299, "מאתיים תשעים ותשעה")- , (300, "שלוש מאות")- , (400, "ארבע מאות")- , (900, "תשע מאות")- , (1000, "אלף")- , (1999, "אלף תשע מאות תשעים ותשעה")- , (2000, "אלפיים")- , (2999, "אלפיים תשע מאות תשעים ותשעה")- , (3000, "שלושת אלפים")- , (3110, "שלושת אלפים מאה ועשרה")- , (4000, "ארבעת אלפים")- , (5000, "חמשת אלפים")- , (6000, "ששת אלפים")- , (7000, "שבעת אלפים")- , (8000, "שמונת אלפים")- , (9000, "תשעת אלפים")- , (10000, "עשרת אלפים")- , (11000, "אחד עשר אלף")- , (12000, "שנים עשר אלף")- , (dec 5, "מאה אלף")- , (dec 6, "מיליון")- , (dec 9, "מיליארד")- ]- )- ]
+ src-test/Text/Numeral/Language/HEB/TestData.hs view
@@ -0,0 +1,308 @@+{-|+[@ISO639-1@] he++[@ISO639-2@] heb++[@ISO639-3@] heb++[@Native name@] עִבְרִית++[@English name@] Modern Hebrew+-}++module Text.Numeral.Language.HEB.TestData+ ( cardinals+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ E-mail by Yitzchak Gale.+ http://www.hebrew4christians.com/Grammar/Unit_Eight/Cardinal_Numbers/cardinal_numbers.html+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "feminine"+ , feminine defaultInflection+ , [ (0, "אפס")+ , (1, "אחת")+ , (2, "שתיים") -- Connecting form: "שתי"+ , (3, "שלוש")+ , (4, "ארבע")+ , (5, "חמש")+ , (6, "שש")+ , (7, "שבע")+ , (8, "שמונה")+ , (9, "תשע")+ , (10, "עשר")+ , (11, "אחת עשרה")+ , (12, "שתים עשרה")+ , (13, "שלוש עשרה")+ , (14, "ארבע עשרה")+ , (15, "חמש עשרה")+ , (16, "שש עשרה")+ , (17, "שבע עשרה")+ , (18, "שמונה עשרה")+ , (19, "תשע עשרה")+ , (20, "עשרים")+ , (21, "עשרים ואחת")+ , (22, "עשרים ושתיים")+ , (23, "עשרים ושלוש")+ , (24, "עשרים וארבע")+ , (25, "עשרים וחמש")+ , (26, "עשרים ושש")+ , (27, "עשרים ושבע")+ , (28, "עשרים ושמונה")+ , (29, "עשרים ותשע")+ , (30, "שלושים")+ , (31, "שלושים ואחת")+ , (32, "שלושים ושתיים")+ , (33, "שלושים ושלוש")+ , (34, "שלושים וארבע")+ , (35, "שלושים וחמש")+ , (36, "שלושים ושש")+ , (37, "שלושים ושבע")+ , (38, "שלושים ושמונה")+ , (39, "שלושים ותשע")+ , (40, "ארבעים")+ , (41, "ארבעים ואחת")+ , (42, "ארבעים ושתיים")+ , (43, "ארבעים ושלוש")+ , (44, "ארבעים וארבע")+ , (45, "ארבעים וחמש")+ , (46, "ארבעים ושש")+ , (47, "ארבעים ושבע")+ , (48, "ארבעים ושמונה")+ , (49, "ארבעים ותשע")+ , (50, "חמישים")+ , (51, "חמישים ואחת")+ , (52, "חמישים ושתיים")+ , (53, "חמישים ושלוש")+ , (54, "חמישים וארבע")+ , (55, "חמישים וחמש")+ , (56, "חמישים ושש")+ , (57, "חמישים ושבע")+ , (58, "חמישים ושמונה")+ , (59, "חמישים ותשע")+ , (60, "ששים")+ , (61, "ששים ואחת")+ , (62, "ששים ושתיים")+ , (63, "ששים ושלוש")+ , (64, "ששים וארבע")+ , (65, "ששים וחמש")+ , (66, "ששים ושש")+ , (67, "ששים ושבע")+ , (68, "ששים ושמונה")+ , (69, "ששים ותשע")+ , (70, "שבעים")+ , (71, "שבעים ואחת")+ , (72, "שבעים ושתיים")+ , (73, "שבעים ושלוש")+ , (74, "שבעים וארבע")+ , (75, "שבעים וחמש")+ , (76, "שבעים ושש")+ , (77, "שבעים ושבע")+ , (78, "שבעים ושמונה")+ , (79, "שבעים ותשע")+ , (80, "שמונים")+ , (81, "שמונים ואחת")+ , (82, "שמונים ושתיים")+ , (83, "שמונים ושלוש")+ , (84, "שמונים וארבע")+ , (85, "שמונים וחמש")+ , (86, "שמונים ושש")+ , (87, "שמונים ושבע")+ , (88, "שמונים ושמונה")+ , (89, "שמונים ותשע")+ , (90, "תשעים")+ , (91, "תשעים ואחת")+ , (92, "תשעים ושתיים")+ , (93, "תשעים ושלוש")+ , (94, "תשעים וארבע")+ , (95, "תשעים וחמש")+ , (96, "תשעים ושש")+ , (97, "תשעים ושבע")+ , (98, "תשעים ושמונה")+ , (99, "תשעים ותשע")+ , (100, "מאה")+ , (101, "מאה ואחת")+ , (110, "מאה ועשר")+ , (111, "מאה אחת עשרה")+ , (123, "מאה עשרים ושלוש")+ , (144, "מאה ארבעים וארבע")+ , (199, "מאה תשעים ותשע")+ , (200, "מאתיים")+ , (299, "מאתיים תשעים ותשע")+ , (300, "שלוש מאות")+ , (400, "ארבע מאות")+ , (900, "תשע מאות")+ , (1000, "אלף")+ , (1999, "אלף תשע מאות תשעים ותשע")+ , (2000, "אלפיים")+ , (2999, "אלפיים תשע מאות תשעים ותשע")+ , (3000, "שלושת אלפים")+ , (3110, "שלושת אלפים מאה ועשר")+ , (4000, "ארבעת אלפים")+ , (5000, "חמשת אלפים")+ , (6000, "ששת אלפים")+ , (7000, "שבעת אלפים")+ , (8000, "שמונת אלפים")+ , (9000, "תשעת אלפים")+ , (10000, "עשרת אלפים")+ , (11000, "אחד עשר אלף")+ , (12000, "שנים עשר אלף")+ , (dec 5, "מאה אלף")+ , (dec 6, "מיליון")+ , (dec 9, "מיליארד")+ ]+ )+ , ( "masculine"+ , masculine defaultInflection+ , [ (0, "אפס")+ , (1, "אחד")+ , (2, "שניים") -- Connecting form: "שני"+ , (3, "שלושה")+ , (4, "ארבעה")+ , (5, "חמישה")+ , (6, "שישה")+ , (7, "שבעה")+ , (8, "שמונה")+ , (9, "תשעה")+ , (10, "עשרה")+ , (11, "אחד עשר")+ , (12, "שנים עשר")+ , (13, "שלושה עשר")+ , (14, "ארבעה עשר")+ , (15, "חמישה עשר")+ , (16, "שישה עשר")+ , (17, "שבעה עשר")+ , (18, "שמונה עשר")+ , (19, "תשעה עשר")+ , (20, "עשרים")+ , (21, "עשרים ואחד")+ , (22, "עשרים ושניים")+ , (23, "עשרים ושלושה")+ , (24, "עשרים וארבעה")+ , (25, "עשרים וחמישה")+ , (26, "עשרים ושישה")+ , (27, "עשרים ושבעה")+ , (28, "עשרים ושמונה")+ , (29, "עשרים ותשעה")+ , (30, "שלושים")+ , (31, "שלושים ואחד")+ , (32, "שלושים ושניים")+ , (33, "שלושים ושלושה")+ , (34, "שלושים וארבעה")+ , (35, "שלושים וחמישה")+ , (36, "שלושים ושישה")+ , (37, "שלושים ושבעה")+ , (38, "שלושים ושמונה")+ , (39, "שלושים ותשעה")+ , (40, "ארבעים")+ , (41, "ארבעים ואחד")+ , (42, "ארבעים ושניים")+ , (43, "ארבעים ושלושה")+ , (44, "ארבעים וארבעה")+ , (45, "ארבעים וחמישה")+ , (46, "ארבעים ושישה")+ , (47, "ארבעים ושבעה")+ , (48, "ארבעים ושמונה")+ , (49, "ארבעים ותשעה")+ , (50, "חמישים")+ , (51, "חמישים ואחד")+ , (52, "חמישים ושניים")+ , (53, "חמישים ושלושה")+ , (54, "חמישים וארבעה")+ , (55, "חמישים וחמישה")+ , (56, "חמישים ושישה")+ , (57, "חמישים ושבעה")+ , (58, "חמישים ושמונה")+ , (59, "חמישים ותשעה")+ , (60, "ששים")+ , (61, "ששים ואחד")+ , (62, "ששים ושניים")+ , (63, "ששים ושלושה")+ , (64, "ששים וארבעה")+ , (65, "ששים וחמישה")+ , (66, "ששים ושישה")+ , (67, "ששים ושבעה")+ , (68, "ששים ושמונה")+ , (69, "ששים ותשעה")+ , (70, "שבעים")+ , (71, "שבעים ואחד")+ , (72, "שבעים ושניים")+ , (73, "שבעים ושלושה")+ , (74, "שבעים וארבעה")+ , (75, "שבעים וחמישה")+ , (76, "שבעים ושישה")+ , (77, "שבעים ושבעה")+ , (78, "שבעים ושמונה")+ , (79, "שבעים ותשעה")+ , (80, "שמונים")+ , (81, "שמונים ואחד")+ , (82, "שמונים ושניים")+ , (83, "שמונים ושלושה")+ , (84, "שמונים וארבעה")+ , (85, "שמונים וחמישה")+ , (86, "שמונים ושישה")+ , (87, "שמונים ושבעה")+ , (88, "שמונים ושמונה")+ , (89, "שמונים ותשעה")+ , (90, "תשעים")+ , (91, "תשעים ואחד")+ , (92, "תשעים ושניים")+ , (93, "תשעים ושלושה")+ , (94, "תשעים וארבעה")+ , (95, "תשעים וחמישה")+ , (96, "תשעים ושישה")+ , (97, "תשעים ושבעה")+ , (98, "תשעים ושמונה")+ , (99, "תשעים ותשעה")+ , (100, "מאה")+ , (101, "מאה ואחד")+ , (110, "מאה ועשרה")+ , (111, "מאה אחד עשרה")+ , (123, "מאה עשרים ושלושה")+ , (144, "מאה ארבעים וארבעה")+ , (199, "מאה תשעים ותשעה")+ , (200, "מאתיים")+ , (299, "מאתיים תשעים ותשעה")+ , (300, "שלוש מאות")+ , (400, "ארבע מאות")+ , (900, "תשע מאות")+ , (1000, "אלף")+ , (1999, "אלף תשע מאות תשעים ותשעה")+ , (2000, "אלפיים")+ , (2999, "אלפיים תשע מאות תשעים ותשעה")+ , (3000, "שלושת אלפים")+ , (3110, "שלושת אלפים מאה ועשרה")+ , (4000, "ארבעת אלפים")+ , (5000, "חמשת אלפים")+ , (6000, "ששת אלפים")+ , (7000, "שבעת אלפים")+ , (8000, "שמונת אלפים")+ , (9000, "תשעת אלפים")+ , (10000, "עשרת אלפים")+ , (11000, "אחד עשר אלף")+ , (12000, "שנים עשר אלף")+ , (dec 5, "מאה אלף")+ , (dec 6, "מיליון")+ , (dec 9, "מיליארד")+ ]+ )+ ]
src-test/Text/Numeral/Language/HOP/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -23,8 +17,8 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Integral, (+) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "base" Prelude ( Integral )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -34,7 +28,7 @@ -- Sources: -- http://www.languagesandnumbers.com/how-to-count-in-hopi/en/hop/-cardinals ∷ (Integral i) ⇒ TestData i+cardinals :: (Integral i) => TestData i cardinals = [ ( "default" , defaultInflection
− src-test/Text/Numeral/Language/HR/TestData.hs
@@ -1,142 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] hr--[@ISO639-2@] hrv--[@ISO639-3@] hrv--[@Native name@] Hrvatski--[@English name@] Croatian--}--module Text.Numeral.Language.HR.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- HR - Croatian-----------------------------------------------------------------------------------cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "nula")- , (1, "jedan")- , (2, "dva")- , (3, "tri")- , (4, "cetiri")- , (5, "pet")- , (6, "šest")- , (7, "sedam")- , (8, "osam")- , (9, "devet")- , (10, "deset")- , (11, "jedanaest")- , (12, "dvanaest")- , (13, "trinaest")- , (14, "cetrnaest")- , (15, "petnaest")- , (16, "šesnaest")- , (17, "sedamnaest")- , (18, "osamnaest")- , (19, "devetnaest")- , (20, "dvadeset")- , (21, "dvadeseti jedan")- , (22, "dvadeseti dva")- , (23, "dvadeseti tri")- , (24, "dvadeseti cetiri")- , (25, "dvadeseti pet")- , (26, "dvadeseti šest")- , (27, "dvadeseti sedam")- , (28, "dvadeseti osam")- , (29, "dvadeseti devet")- , (30, "drideset")- , (31, "drideseti jedan")- , (32, "drideseti dva")- , (33, "drideseti tri")- , (34, "drideseti cetiri")- , (35, "drideseti pet")- , (36, "drideseti šest")- , (37, "drideseti sedam")- , (38, "drideseti osam")- , (39, "drideseti devet")- , (40, "cetrdeset")- , (41, "cetrdeseti jedan")- , (42, "cetrdeseti dva")- , (43, "cetrdeseti tri")- , (44, "cetrdeseti cetiri")- , (45, "cetrdeseti pet")- , (46, "cetrdeseti šest")- , (47, "cetrdeseti sedam")- , (48, "cetrdeseti osam")- , (49, "cetrdeseti devet")- , (50, "pedeset")- , (51, "pedeseti jedan")- , (52, "pedeseti dva")- , (53, "pedeseti tri")- , (54, "pedeseti cetiri")- , (55, "pedeseti pet")- , (56, "pedeseti šest")- , (57, "pedeseti sedam")- , (58, "pedeseti osam")- , (59, "pedeseti devet")- , (60, "šezdezet")- , (61, "šezdezeti jedan")- , (62, "šezdezeti dva")- , (63, "šezdezeti tri")- , (64, "šezdezeti cetiri")- , (65, "šezdezeti pet")- , (66, "šezdezeti šest")- , (67, "šezdezeti sedam")- , (68, "šezdezeti osam")- , (69, "šezdezeti devet")- , (70, "sedamdezet")- , (71, "sedamdezeti jedan")- , (72, "sedamdezeti dva")- , (73, "sedamdezeti tri")- , (74, "sedamdezeti cetiri")- , (75, "sedamdezeti pet")- , (76, "sedamdezeti šest")- , (77, "sedamdezeti sedam")- , (78, "sedamdezeti osam")- , (79, "sedamdezeti devet")- , (80, "osamdeset")- , (81, "osamdeseti jedan")- , (82, "osamdeseti dva")- , (83, "osamdeseti tri")- , (84, "osamdeseti cetiri")- , (85, "osamdeseti pet")- , (86, "osamdeseti šest")- , (87, "osamdeseti sedam")- , (88, "osamdeseti osam")- , (89, "osamdeseti devet")- , (90, "deveteset")- , (91, "deveteseti jedan")- , (92, "deveteseti dva")- , (93, "deveteseti tri")- , (94, "deveteseti cetiri")- , (95, "deveteseti pet")- , (96, "deveteseti šest")- , (97, "deveteseti sedam")- , (98, "deveteseti osam")- , (99, "deveteseti devet")- , (100, "sto")- ]- )- ]
+ src-test/Text/Numeral/Language/HRV/TestData.hs view
@@ -0,0 +1,135 @@+{-|+[@ISO639-1@] hr++[@ISO639-2@] hrv++[@ISO639-3@] hrv++[@Native name@] Hrvatski++[@English name@] Croatian+-}++module Text.Numeral.Language.HRV.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- HRV - Croatian+--------------------------------------------------------------------------------++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nula")+ , (1, "jedan")+ , (2, "dva")+ , (3, "tri")+ , (4, "cetiri")+ , (5, "pet")+ , (6, "šest")+ , (7, "sedam")+ , (8, "osam")+ , (9, "devet")+ , (10, "deset")+ , (11, "jedanaest")+ , (12, "dvanaest")+ , (13, "trinaest")+ , (14, "cetrnaest")+ , (15, "petnaest")+ , (16, "šesnaest")+ , (17, "sedamnaest")+ , (18, "osamnaest")+ , (19, "devetnaest")+ , (20, "dvadeset")+ , (21, "dvadeseti jedan")+ , (22, "dvadeseti dva")+ , (23, "dvadeseti tri")+ , (24, "dvadeseti cetiri")+ , (25, "dvadeseti pet")+ , (26, "dvadeseti šest")+ , (27, "dvadeseti sedam")+ , (28, "dvadeseti osam")+ , (29, "dvadeseti devet")+ , (30, "drideset")+ , (31, "drideseti jedan")+ , (32, "drideseti dva")+ , (33, "drideseti tri")+ , (34, "drideseti cetiri")+ , (35, "drideseti pet")+ , (36, "drideseti šest")+ , (37, "drideseti sedam")+ , (38, "drideseti osam")+ , (39, "drideseti devet")+ , (40, "cetrdeset")+ , (41, "cetrdeseti jedan")+ , (42, "cetrdeseti dva")+ , (43, "cetrdeseti tri")+ , (44, "cetrdeseti cetiri")+ , (45, "cetrdeseti pet")+ , (46, "cetrdeseti šest")+ , (47, "cetrdeseti sedam")+ , (48, "cetrdeseti osam")+ , (49, "cetrdeseti devet")+ , (50, "pedeset")+ , (51, "pedeseti jedan")+ , (52, "pedeseti dva")+ , (53, "pedeseti tri")+ , (54, "pedeseti cetiri")+ , (55, "pedeseti pet")+ , (56, "pedeseti šest")+ , (57, "pedeseti sedam")+ , (58, "pedeseti osam")+ , (59, "pedeseti devet")+ , (60, "šezdezet")+ , (61, "šezdezeti jedan")+ , (62, "šezdezeti dva")+ , (63, "šezdezeti tri")+ , (64, "šezdezeti cetiri")+ , (65, "šezdezeti pet")+ , (66, "šezdezeti šest")+ , (67, "šezdezeti sedam")+ , (68, "šezdezeti osam")+ , (69, "šezdezeti devet")+ , (70, "sedamdezet")+ , (71, "sedamdezeti jedan")+ , (72, "sedamdezeti dva")+ , (73, "sedamdezeti tri")+ , (74, "sedamdezeti cetiri")+ , (75, "sedamdezeti pet")+ , (76, "sedamdezeti šest")+ , (77, "sedamdezeti sedam")+ , (78, "sedamdezeti osam")+ , (79, "sedamdezeti devet")+ , (80, "osamdeset")+ , (81, "osamdeseti jedan")+ , (82, "osamdeseti dva")+ , (83, "osamdeseti tri")+ , (84, "osamdeseti cetiri")+ , (85, "osamdeseti pet")+ , (86, "osamdeseti šest")+ , (87, "osamdeseti sedam")+ , (88, "osamdeseti osam")+ , (89, "osamdeseti devet")+ , (90, "deveteset")+ , (91, "deveteseti jedan")+ , (92, "deveteseti dva")+ , (93, "deveteseti tri")+ , (94, "deveteseti cetiri")+ , (95, "deveteseti pet")+ , (96, "deveteseti šest")+ , (97, "deveteseti sedam")+ , (98, "deveteseti osam")+ , (99, "deveteseti devet")+ , (100, "sto")+ ]+ )+ ]
− src-test/Text/Numeral/Language/HU/TestData.hs
@@ -1,142 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] hu--[@ISO639-2@] hun--[@ISO639-3@] hun--[@Native name@] magyar--[@English name@] Hungarian--}--module Text.Numeral.Language.HU.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "nulla")- , (1, "egy")- , (2, "kettö")- , (3, "három")- , (4, "négy")- , (5, "öt")- , (6, "hat")- , (7, "hét")- , (8, "nyolc")- , (9, "kilenc")- , (10, "tíz")- , (11, "tízenegy")- , (12, "tízenkettö")- , (13, "tízenhárom")- , (14, "tízennégy")- , (15, "tízenöt")- , (16, "tízenhat")- , (17, "tízenhét")- , (18, "tízennyolc")- , (19, "tízenkilenc")- , (20, "húsz")- , (21, "húszonegy")- , (22, "húszonkettö")- , (23, "húszonhárom")- , (24, "húszonnégy")- , (25, "húszonöt")- , (26, "húszonhat")- , (27, "húszonhét")- , (28, "húszonnyolc")- , (29, "húszonkilenc")- , (30, "harminc")- , (31, "harmincegy")- , (32, "harminckettö")- , (33, "harminchárom")- , (34, "harmincnégy")- , (35, "harmincöt")- , (36, "harminchat")- , (37, "harminchét")- , (38, "harmincnyolc")- , (39, "harminckilenc")- , (40, "negyven")- , (41, "negyvenegy")- , (42, "negyvenkettö")- , (43, "negyvenhárom")- , (44, "negyvennégy")- , (45, "negyvenöt")- , (46, "negyvenhat")- , (47, "negyvenhét")- , (48, "negyvennyolc")- , (49, "negyvenkilenc")- , (50, "ötven")- , (51, "ötvenegy")- , (52, "ötvenkettö")- , (53, "ötvenhárom")- , (54, "ötvennégy")- , (55, "ötvenöt")- , (56, "ötvenhat")- , (57, "ötvenhét")- , (58, "ötvennyolc")- , (59, "ötvenkilenc")- , (60, "hatvan")- , (61, "hatvanegy")- , (62, "hatvankettö")- , (63, "hatvanhárom")- , (64, "hatvannégy")- , (65, "hatvanöt")- , (66, "hatvanhat")- , (67, "hatvanhét")- , (68, "hatvannyolc")- , (69, "hatvankilenc")- , (70, "hetven")- , (71, "hetvenegy")- , (72, "hetvenkettö")- , (73, "hetvenhárom")- , (74, "hetvennégy")- , (75, "hetvenöt")- , (76, "hetvenhat")- , (77, "hetvenhét")- , (78, "hetvennyolc")- , (79, "hetvenkilenc")- , (80, "nyolcvan")- , (81, "nyolcvanegy")- , (82, "nyolcvankettö")- , (83, "nyolcvanhárom")- , (84, "nyolcvannégy")- , (85, "nyolcvanöt")- , (86, "nyolcvanhat")- , (87, "nyolcvanhét")- , (88, "nyolcvannyolc")- , (89, "nyolcvankilenc")- , (90, "kilencven")- , (91, "kilencvenegy")- , (92, "kilencvenkettö")- , (93, "kilencvenhárom")- , (94, "kilencvennégy")- , (95, "kilencvenöt")- , (96, "kilencvenhat")- , (97, "kilencvenhét")- , (98, "kilencvennyolc")- , (99, "kilencvenkilenc")- , (100, "száz")- ]- )- ]
+ src-test/Text/Numeral/Language/HUN/TestData.hs view
@@ -0,0 +1,135 @@+{-|+[@ISO639-1@] hu++[@ISO639-2@] hun++[@ISO639-3@] hun++[@Native name@] magyar++[@English name@] Hungarian+-}++module Text.Numeral.Language.HUN.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nulla")+ , (1, "egy")+ , (2, "kettö")+ , (3, "három")+ , (4, "négy")+ , (5, "öt")+ , (6, "hat")+ , (7, "hét")+ , (8, "nyolc")+ , (9, "kilenc")+ , (10, "tíz")+ , (11, "tízenegy")+ , (12, "tízenkettö")+ , (13, "tízenhárom")+ , (14, "tízennégy")+ , (15, "tízenöt")+ , (16, "tízenhat")+ , (17, "tízenhét")+ , (18, "tízennyolc")+ , (19, "tízenkilenc")+ , (20, "húsz")+ , (21, "húszonegy")+ , (22, "húszonkettö")+ , (23, "húszonhárom")+ , (24, "húszonnégy")+ , (25, "húszonöt")+ , (26, "húszonhat")+ , (27, "húszonhét")+ , (28, "húszonnyolc")+ , (29, "húszonkilenc")+ , (30, "harminc")+ , (31, "harmincegy")+ , (32, "harminckettö")+ , (33, "harminchárom")+ , (34, "harmincnégy")+ , (35, "harmincöt")+ , (36, "harminchat")+ , (37, "harminchét")+ , (38, "harmincnyolc")+ , (39, "harminckilenc")+ , (40, "negyven")+ , (41, "negyvenegy")+ , (42, "negyvenkettö")+ , (43, "negyvenhárom")+ , (44, "negyvennégy")+ , (45, "negyvenöt")+ , (46, "negyvenhat")+ , (47, "negyvenhét")+ , (48, "negyvennyolc")+ , (49, "negyvenkilenc")+ , (50, "ötven")+ , (51, "ötvenegy")+ , (52, "ötvenkettö")+ , (53, "ötvenhárom")+ , (54, "ötvennégy")+ , (55, "ötvenöt")+ , (56, "ötvenhat")+ , (57, "ötvenhét")+ , (58, "ötvennyolc")+ , (59, "ötvenkilenc")+ , (60, "hatvan")+ , (61, "hatvanegy")+ , (62, "hatvankettö")+ , (63, "hatvanhárom")+ , (64, "hatvannégy")+ , (65, "hatvanöt")+ , (66, "hatvanhat")+ , (67, "hatvanhét")+ , (68, "hatvannyolc")+ , (69, "hatvankilenc")+ , (70, "hetven")+ , (71, "hetvenegy")+ , (72, "hetvenkettö")+ , (73, "hetvenhárom")+ , (74, "hetvennégy")+ , (75, "hetvenöt")+ , (76, "hetvenhat")+ , (77, "hetvenhét")+ , (78, "hetvennyolc")+ , (79, "hetvenkilenc")+ , (80, "nyolcvan")+ , (81, "nyolcvanegy")+ , (82, "nyolcvankettö")+ , (83, "nyolcvanhárom")+ , (84, "nyolcvannégy")+ , (85, "nyolcvanöt")+ , (86, "nyolcvanhat")+ , (87, "nyolcvanhét")+ , (88, "nyolcvannyolc")+ , (89, "nyolcvankilenc")+ , (90, "kilencven")+ , (91, "kilencvenegy")+ , (92, "kilencvenkettö")+ , (93, "kilencvenhárom")+ , (94, "kilencvennégy")+ , (95, "kilencvenöt")+ , (96, "kilencvenhat")+ , (97, "kilencvenhét")+ , (98, "kilencvennyolc")+ , (99, "kilencvenkilenc")+ , (100, "száz")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/HUP/TestData.hs view
@@ -0,0 +1,162 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] hup++[@ISO639-3@] hup++[@Native name@] -++[@English name@] Hupa+-}+module Text.Numeral.Language.HUP.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-hupa/en/hup/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "ła’")+ , (2, "nahx")+ , (3, "ta:q’")+ , (4, "dink’")+ , (5, "chwola’")+ , (6, "xosta:n")+ , (7, "xohk’it")+ , (8, "ke:nim")+ , (9, "miq’os-t’aw")+ , (10, "minłung")+ , (11, "minłung-miwah-na:ła’")+ , (12, "minłung-miwah-na:nahx")+ , (13, "minłung-miwah-na:ta:q’")+ , (14, "minłung-miwah-na:dink’")+ , (15, "minłung-miwah-na:chwola’")+ , (16, "minłung-miwah-na:xosta:n")+ , (17, "minłung-miwah-na:xohk’it")+ , (18, "minłung-miwah-na:ke:nim")+ , (19, "minłung-miwah-na:miq’os-t’aw")+ , (20, "nahdiminłung")+ , (21, "nahdiminłung-miwah-na:ła’")+ , (22, "nahdiminłung-miwah-na:nahx")+ , (23, "nahdiminłung-miwah-na:ta:q’")+ , (24, "nahdiminłung-miwah-na:dink’")+ , (25, "nahdiminłung-miwah-na:chwola’")+ , (26, "nahdiminłung-miwah-na:xosta:n")+ , (27, "nahdiminłung-miwah-na:xohk’it")+ , (28, "nahdiminłung-miwah-na:ke:nim")+ , (29, "nahdiminłung-miwah-na:miq’os-t’aw")+ , (30, "ta:q’idiminłung")+ , (31, "ta:q’idiminłung-miwah-na:ła’")+ , (32, "ta:q’idiminłung-miwah-na:nahx")+ , (33, "ta:q’idiminłung-miwah-na:ta:q’")+ , (34, "ta:q’idiminłung-miwah-na:dink’")+ , (35, "ta:q’idiminłung-miwah-na:chwola’")+ , (36, "ta:q’idiminłung-miwah-na:xosta:n")+ , (37, "ta:q’idiminłung-miwah-na:xohk’it")+ , (38, "ta:q’idiminłung-miwah-na:ke:nim")+ , (39, "ta:q’idiminłung-miwah-na:miq’os-t’aw")+ , (40, "dink’idiminłung")+ , (41, "dink’idiminłung-miwah-na:ła’")+ , (42, "dink’idiminłung-miwah-na:nahx")+ , (43, "dink’idiminłung-miwah-na:ta:q’")+ , (44, "dink’idiminłung-miwah-na:dink’")+ , (45, "dink’idiminłung-miwah-na:chwola’")+ , (46, "dink’idiminłung-miwah-na:xosta:n")+ , (47, "dink’idiminłung-miwah-na:xohk’it")+ , (48, "dink’idiminłung-miwah-na:ke:nim")+ , (49, "dink’idiminłung-miwah-na:miq’os-t’aw")+ , (50, "chwola’diminłung")+ , (51, "chwola’diminłung-miwah-na:ła’")+ , (52, "chwola’diminłung-miwah-na:nahx")+ , (53, "chwola’diminłung-miwah-na:ta:q’")+ , (54, "chwola’diminłung-miwah-na:dink’")+ , (55, "chwola’diminłung-miwah-na:chwola’")+ , (56, "chwola’diminłung-miwah-na:xosta:n")+ , (57, "chwola’diminłung-miwah-na:xohk’it")+ , (58, "chwola’diminłung-miwah-na:ke:nim")+ , (59, "chwola’diminłung-miwah-na:miq’os-t’aw")+ , (60, "xosta:ndiminłung")+ , (61, "xosta:ndiminłung-miwah-na:ła’")+ , (62, "xosta:ndiminłung-miwah-na:nahx")+ , (63, "xosta:ndiminłung-miwah-na:ta:q’")+ , (64, "xosta:ndiminłung-miwah-na:dink’")+ , (65, "xosta:ndiminłung-miwah-na:chwola’")+ , (66, "xosta:ndiminłung-miwah-na:xosta:n")+ , (67, "xosta:ndiminłung-miwah-na:xohk’it")+ , (68, "xosta:ndiminłung-miwah-na:ke:nim")+ , (69, "xosta:ndiminłung-miwah-na:miq’os-t’aw")+ , (70, "xohk’e:diminłung")+ , (71, "xohk’e:diminłung-miwah-na:ła’")+ , (72, "xohk’e:diminłung-miwah-na:nahx")+ , (73, "xohk’e:diminłung-miwah-na:ta:q’")+ , (74, "xohk’e:diminłung-miwah-na:dink’")+ , (75, "xohk’e:diminłung-miwah-na:chwola’")+ , (76, "xohk’e:diminłung-miwah-na:xosta:n")+ , (77, "xohk’e:diminłung-miwah-na:xohk’it")+ , (78, "xohk’e:diminłung-miwah-na:ke:nim")+ , (79, "xohk’e:diminłung-miwah-na:miq’os-t’aw")+ , (80, "ke:nimdiminłung")+ , (81, "ke:nimdiminłung-miwah-na:ła’")+ , (82, "ke:nimdiminłung-miwah-na:nahx")+ , (83, "ke:nimdiminłung-miwah-na:ta:q’")+ , (84, "ke:nimdiminłung-miwah-na:dink’")+ , (85, "ke:nimdiminłung-miwah-na:chwola’")+ , (86, "ke:nimdiminłung-miwah-na:xosta:n")+ , (87, "ke:nimdiminłung-miwah-na:xohk’it")+ , (88, "ke:nimdiminłung-miwah-na:ke:nim")+ , (89, "ke:nimdiminłung-miwah-na:miq’os-t’aw")+ , (90, "miq’ost’ahdiminłung")+ , (91, "miq’ost’ahdiminłung-miwah-na:ła’")+ , (92, "miq’ost’ahdiminłung-miwah-na:nahx")+ , (93, "miq’ost’ahdiminłung-miwah-na:ta:q’")+ , (94, "miq’ost’ahdiminłung-miwah-na:dink’")+ , (95, "miq’ost’ahdiminłung-miwah-na:chwola’")+ , (96, "miq’ost’ahdiminłung-miwah-na:xosta:n")+ , (97, "miq’ost’ahdiminłung-miwah-na:xohk’it")+ , (98, "miq’ost’ahdiminłung-miwah-na:ke:nim")+ , (99, "miq’ost’ahdiminłung-miwah-na:miq’os-t’aw")+ , (100, "ła’-dikin")+ , (101, "ła’-dikin-miwah-na:ła’")+ , (102, "ła’-dikin-miwah-na:nahx")+ , (103, "ła’-dikin-miwah-na:ta:q’")+ , (104, "ła’-dikin-miwah-na:dink’")+ , (105, "ła’-dikin-miwah-na:chwola’")+ , (106, "ła’-dikin-miwah-na:xosta:n")+ , (107, "ła’-dikin-miwah-na:xohk’it")+ , (108, "ła’-dikin-miwah-na:ke:nim")+ , (109, "ła’-dikin-miwah-na:miq’os-t’aw")+ , (110, "ła’-dikin-miwah-na:minłung")+ , (123, "ła’-dikin-miwah-na:nahdiminłung-miwah-na:ta:q’")+ , (200, "nahx-dikin")+ , (300, "ta:q’i-dikin")+ , (321, "ta:q’-dikin-miwah-na:nahdiminłung-miwah-na:ła’")+ , (400, "dink’i-dikin")+ , (500, "chwola’-dikin")+ , (600, "xosta:n-dikin")+ , (700, "xohk’e-dikin")+ , (800, "ke:nim-dikin")+ , (900, "miq’ost’ah-dikin")+ , (909, "miq’os-t’aw-dikin-miwah-na:miq’os-t’aw")+ , (990, "miq’os-t’aw-dikin-miwah-na:miq’ost’ahdiminłung")+ , (999, "miq’os-t’aw-dikin-miwah-na:miq’ost’ahdiminłung-miwah-na:miq’os-t’aw")+ , (1000, "minłun-dikin")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/HUR/TestData.hs view
@@ -0,0 +1,149 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] hur++[@Native name@] Halq̓eméylem, Hul̓q̓umín̓um̓, Hun'qumi'num++[@English name@] Halkomelem+-}+module Text.Numeral.Language.HUR.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-halkomelem/en/hur/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "nuts’a’")+ , (2, "yuse’lu")+ , (3, "lhihw")+ , (4, "xu’athun")+ , (5, "lhq’etsus")+ , (6, "t’xum")+ , (7, "tth’a’kwus")+ , (8, "te’tsus")+ , (9, "toohw")+ , (10, "’apun")+ , (11, "’apun ’i’ kw’ nuts’a’")+ , (12, "’apun ’i’ kw’ yuse’lu")+ , (13, "’apun ’i’ kw’ lhihw")+ , (14, "’apun ’i’ kw’ xu’athun")+ , (15, "’apun ’i’ kw’ lhq’etsus")+ , (16, "’apun ’i’ kw’ t’xum")+ , (17, "’apun ’i’ kw’ tth’a’kwus")+ , (18, "’apun ’i’ kw’ te’tsus")+ , (19, "’apun ’i’ kw’ toohw")+ , (20, "tskw’ush")+ , (21, "tskw’ush ’i’ kw’ nuts’a’")+ , (22, "tskw’ush ’i’ kw’ yuse’lu")+ , (23, "tskw’ush ’i’ kw’ lhihw")+ , (24, "tskw’ush ’i’ kw’ xu’athun")+ , (25, "tskw’ush ’i’ kw’ lhq’etsus")+ , (26, "tskw’ush ’i’ kw’ t’xum")+ , (27, "tskw’ush ’i’ kw’ tth’a’kwus")+ , (28, "tskw’ush ’i’ kw’ te’tsus")+ , (29, "tskw’ush ’i’ kw’ toohw")+ , (30, "lhuhwulhshe’")+ , (31, "lhuhwulhshe’ ’i’ kw’ nuts’a’")+ , (32, "lhuhwulhshe’ ’i’ kw’ yuse’lu")+ , (33, "lhuhwulhshe’ ’i’ kw’ lhihw")+ , (34, "lhuhwulhshe’ ’i’ kw’ xu’athun")+ , (35, "lhuhwulhshe’ ’i’ kw’ lhq’etsus")+ , (36, "lhuhwulhshe’ ’i’ kw’ t’xum")+ , (37, "lhuhwulhshe’ ’i’ kw’ tth’a’kwus")+ , (38, "lhuhwulhshe’ ’i’ kw’ te’tsus")+ , (39, "lhuhwulhshe’ ’i’ kw’ toohw")+ , (40, "xuthunlhshe’")+ , (41, "xuthunlhshe’ ’i’ kw’ nuts’a’")+ , (42, "xuthunlhshe’ ’i’ kw’ yuse’lu")+ , (43, "xuthunlhshe’ ’i’ kw’ lhihw")+ , (44, "xuthunlhshe’ ’i’ kw’ xu’athun")+ , (45, "xuthunlhshe’ ’i’ kw’ lhq’etsus")+ , (46, "xuthunlhshe’ ’i’ kw’ t’xum")+ , (47, "xuthunlhshe’ ’i’ kw’ tth’a’kwus")+ , (48, "xuthunlhshe’ ’i’ kw’ te’tsus")+ , (49, "xuthunlhshe’ ’i’ kw’ toohw")+ , (50, "lhq’utssulhshe’")+ , (51, "lhq’utssulhshe’ ’i’ kw’ nuts’a’")+ , (52, "lhq’utssulhshe’ ’i’ kw’ yuse’lu")+ , (53, "lhq’utssulhshe’ ’i’ kw’ lhihw")+ , (54, "lhq’utssulhshe’ ’i’ kw’ xu’athun")+ , (55, "lhq’utssulhshe’ ’i’ kw’ lhq’etsus")+ , (56, "lhq’utssulhshe’ ’i’ kw’ t’xum")+ , (57, "lhq’utssulhshe’ ’i’ kw’ tth’a’kwus")+ , (58, "lhq’utssulhshe’ ’i’ kw’ te’tsus")+ , (59, "lhq’utssulhshe’ ’i’ kw’ toohw")+ , (60, "t’xumulhshe’")+ , (61, "t’xumulhshe’ ’i’ kw’ nuts’a’")+ , (62, "t’xumulhshe’ ’i’ kw’ yuse’lu")+ , (63, "t’xumulhshe’ ’i’ kw’ lhihw")+ , (64, "t’xumulhshe’ ’i’ kw’ xu’athun")+ , (65, "t’xumulhshe’ ’i’ kw’ lhq’etsus")+ , (66, "t’xumulhshe’ ’i’ kw’ t’xum")+ , (67, "t’xumulhshe’ ’i’ kw’ tth’a’kwus")+ , (68, "t’xumulhshe’ ’i’ kw’ te’tsus")+ , (69, "t’xumulhshe’ ’i’ kw’ toohw")+ , (70, "tth’ukwsulhshe’")+ , (71, "tth’ukwsulhshe’ ’i’ kw’ nuts’a’")+ , (72, "tth’ukwsulhshe’ ’i’ kw’ yuse’lu")+ , (73, "tth’ukwsulhshe’ ’i’ kw’ lhihw")+ , (74, "tth’ukwsulhshe’ ’i’ kw’ xu’athun")+ , (75, "tth’ukwsulhshe’ ’i’ kw’ lhq’etsus")+ , (76, "tth’ukwsulhshe’ ’i’ kw’ t’xum")+ , (77, "tth’ukwsulhshe’ ’i’ kw’ tth’a’kwus")+ , (78, "tth’ukwsulhshe’ ’i’ kw’ te’tsus")+ , (79, "tth’ukwsulhshe’ ’i’ kw’ toohw")+ , (80, "tutssulhshe’")+ , (81, "tutssulhshe’ ’i’ kw’ nuts’a’")+ , (82, "tutssulhshe’ ’i’ kw’ yuse’lu")+ , (83, "tutssulhshe’ ’i’ kw’ lhihw")+ , (84, "tutssulhshe’ ’i’ kw’ xu’athun")+ , (85, "tutssulhshe’ ’i’ kw’ lhq’etsus")+ , (86, "tutssulhshe’ ’i’ kw’ t’xum")+ , (87, "tutssulhshe’ ’i’ kw’ tth’a’kwus")+ , (88, "tutssulhshe’ ’i’ kw’ te’tsus")+ , (89, "tutssulhshe’ ’i’ kw’ toohw")+ , (90, "toohwulhshe’")+ , (91, "toohwulhshe’ ’i’ kw’ nuts’a’")+ , (92, "toohwulhshe’ ’i’ kw’ yuse’lu")+ , (93, "toohwulhshe’ ’i’ kw’ lhihw")+ , (94, "toohwulhshe’ ’i’ kw’ xu’athun")+ , (95, "toohwulhshe’ ’i’ kw’ lhq’etsus")+ , (96, "toohwulhshe’ ’i’ kw’ t’xum")+ , (97, "toohwulhshe’ ’i’ kw’ tth’a’kwus")+ , (98, "toohwulhshe’ ’i’ kw’ te’tsus")+ , (99, "toohwulhshe’ ’i’ kw’ toohw")+ , (100, "nets’uwuts")+ , (101, "nets’uwuts ’i’ kw’ nuts’a’")+ , (102, "nets’uwuts ’i’ kw’ yuse’lu")+ , (103, "nets’uwuts ’i’ kw’ lhihw")+ , (104, "nets’uwuts ’i’ kw’ xu’athun")+ , (105, "nets’uwuts ’i’ kw’ lhq’etsus")+ , (106, "nets’uwuts ’i’ kw’ t’xum")+ , (107, "nets’uwuts ’i’ kw’ tth’a’kwus")+ , (108, "nets’uwuts ’i’ kw’ te’tsus")+ , (109, "nets’uwuts ’i’ kw’ toohw")+ , (110, "nets’uwuts ’i’ kw’ ’apun")+ , (123, "nets’uwuts ’i’ kw’ tskw’ush ’i’ kw’ lhihw")+ ]+ )+ ]
− src-test/Text/Numeral/Language/HY/TestData.hs
@@ -1,208 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] hy--[@ISO639-2B@] arm--[@ISO639-2T@] hye--[@ISO639-3@] hye--[@Native name@] հայերեն--[@English name@] Armenian--}-module Text.Numeral.Language.HY.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-armenian/en/hye/--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "զրո")- , (1, "մեկ")- , (2, "երկու")- , (3, "երեք")- , (4, "չորս")- , (5, "հինգ")- , (6, "վեց")- , (7, "յոթ")- , (8, "ութ")- , (9, "ինը")- , (10, "տաս")- , (11, "տասնմեկ")- , (12, "տասներկու")- , (13, "տասներեք")- , (14, "տասնչորս")- , (15, "տասնհինգ")- , (16, "տասնվեց")- , (17, "տասնյոթ")- , (18, "տասնութ")- , (19, "տասնինը")- , (20, "քսան")- , (21, "քսան մեկ")- , (22, "քսան երկու")- , (23, "քսան երեք")- , (24, "քսան չորս")- , (25, "քսան հինգ")- , (26, "քսան վեց")- , (27, "քսան յոթ")- , (28, "քսան ութ")- , (29, "քսան ինը")- , (30, "երեսուն")- , (31, "երեսուն մեկ")- , (32, "երեսուն երկու")- , (33, "երեսուն երեք")- , (34, "երեսուն չորս")- , (35, "երեսուն հինգ")- , (36, "երեսուն վեց")- , (37, "երեսուն յոթ")- , (38, "երեսուն ութ")- , (39, "երեսուն ինը")- , (40, "քառասուն")- , (41, "քառասուն մեկ")- , (42, "քառասուն երկու")- , (43, "քառասուն երեք")- , (44, "քառասուն չորս")- , (45, "քառասուն հինգ")- , (46, "քառասուն վեց")- , (47, "քառասուն յոթ")- , (48, "քառասուն ութ")- , (49, "քառասուն ինը")- , (50, "հիսուն")- , (51, "հիսուն մեկ")- , (52, "հիսուն երկու")- , (53, "հիսուն երեք")- , (54, "հիսուն չորս")- , (55, "հիսուն հինգ")- , (56, "հիսուն վեց")- , (57, "հիսուն յոթ")- , (58, "հիսուն ութ")- , (59, "հիսուն ինը")- , (60, "վաթսուն")- , (61, "վաթսուն մեկ")- , (62, "վաթսուն երկու")- , (63, "վաթսուն երեք")- , (64, "վաթսուն չորս")- , (65, "վաթսուն հինգ")- , (66, "վաթսուն վեց")- , (67, "վաթսուն յոթ")- , (68, "վաթսուն ութ")- , (69, "վաթսուն ինը")- , (70, "յոթանասուն")- , (71, "յոթանասուն մեկ")- , (72, "յոթանասուն երկու")- , (73, "յոթանասուն երեք")- , (74, "յոթանասուն չորս")- , (75, "յոթանասուն հինգ")- , (76, "յոթանասուն վեց")- , (77, "յոթանասուն յոթ")- , (78, "յոթանասուն ութ")- , (79, "յոթանասուն ինը")- , (80, "ութսուն")- , (81, "ութսուն մեկ")- , (82, "ութսուն երկու")- , (83, "ութսուն երեք")- , (84, "ութսուն չորս")- , (85, "ութսուն հինգ")- , (86, "ութսուն վեց")- , (87, "ութսուն յոթ")- , (88, "ութսուն ութ")- , (89, "ութսուն ինը")- , (90, "իննսուն")- , (91, "իննսուն մեկ")- , (92, "իննսուն երկու")- , (93, "իննսուն երեք")- , (94, "իննսուն չորս")- , (95, "իննսուն հինգ")- , (96, "իննսուն վեց")- , (97, "իննսուն յոթ")- , (98, "իննսուն ութ")- , (99, "իննսուն ինը")- , (100, "հարյուր")- , (101, "հարյուր մեկ")- , (102, "հարյուր երկու")- , (103, "հարյուր երեք")- , (104, "հարյուր չորս")- , (105, "հարյուր հինգ")- , (106, "հարյուր վեց")- , (107, "հարյուր յոթ")- , (108, "հարյուր ութ")- , (109, "հարյուր ինը")- , (110, "հարյուր տաս")- , (123, "հարյուր քսան երեք")- , (200, "երկու հարյուր")- , (300, "երեք հարյուր")- , (321, "երեք հարյուր քսան մեկ")- , (400, "չորս հարյուր")- , (500, "հինգ հարյուր")- , (600, "վեց հարյուր")- , (700, "յոթ հարյուր")- , (800, "ութ հարյուր")- , (900, "ինը հարյուր")- , (909, "ինը հարյուր ինը")- , (990, "ինը հարյուր իննսուն")- , (999, "ինը հարյուր իննսուն ինը")- , (1000, "հազար")- , (1001, "հազար մեկ")- , (1008, "հազար ութ")- , (1234, "հազար երկու հարյուր երեսուն չորս")- , (2000, "երկու հազար")- , (3000, "երեք հազար")- , (4000, "չորս հազար")- , (4321, "չորս հազար երեք հարյուր քսան մեկ")- , (5000, "հինգ հազար")- , (6000, "վեց հազար")- , (7000, "յոթ հազար")- , (8000, "ութ հազար")- , (9000, "ինը հազար")- , (10000, "տաս հազար")- , (12345, "տասներկու հազար երեք հարյուր քառասուն հինգ")- , (20000, "քսան հազար")- , (30000, "երեսուն հազար")- , (40000, "քառասուն հազար")- , (50000, "հիսուն հազար")- , (54321, "հիսուն չորս հազար երեք հարյուր քսան մեկ")- , (60000, "վաթսուն հազար")- , (70000, "յոթանասուն հազար")- , (80000, "ութսուն հազար")- , (90000, "իննսուն հազար")- , (100000, "հարյուր հազար")- , (123456, "հարյուր քսան երեք հազար չորս հարյուր հիսուն վեց")- , (200000, "երկու հարյուր հազար")- , (300000, "երեք հարյուր հազար")- , (400000, "չորս հարյուր հազար")- , (500000, "հինգ հարյուր հազար")- , (600000, "վեց հարյուր հազար")- , (654321, "վեց հարյուր հիսուն չորս հազար երեք հարյուր քսան մեկ")- , (700000, "յոթ հարյուր հազար")- , (800000, "ութ հարյուր հազար")- , (900000, "ինը հարյուր հազար")- , (1000000, "միլիոն")- , (1000000000, "միլիարդ")- , (1000000000000, "տրիլիոն")- ]- )- ]
+ src-test/Text/Numeral/Language/HYE/TestData.hs view
@@ -0,0 +1,202 @@+{-|+[@ISO639-1@] hy++[@ISO639-2B@] arm++[@ISO639-2T@] hye++[@ISO639-3@] hye++[@Native name@] հայերեն++[@English name@] Armenian+-}+module Text.Numeral.Language.HYE.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-armenian/en/hye/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "զրո")+ , (1, "մեկ")+ , (2, "երկու")+ , (3, "երեք")+ , (4, "չորս")+ , (5, "հինգ")+ , (6, "վեց")+ , (7, "յոթ")+ , (8, "ութ")+ , (9, "ինը")+ , (10, "տաս")+ , (11, "տասնմեկ")+ , (12, "տասներկու")+ , (13, "տասներեք")+ , (14, "տասնչորս")+ , (15, "տասնհինգ")+ , (16, "տասնվեց")+ , (17, "տասնյոթ")+ , (18, "տասնութ")+ , (19, "տասնինը")+ , (20, "քսան")+ , (21, "քսան մեկ")+ , (22, "քսան երկու")+ , (23, "քսան երեք")+ , (24, "քսան չորս")+ , (25, "քսան հինգ")+ , (26, "քսան վեց")+ , (27, "քսան յոթ")+ , (28, "քսան ութ")+ , (29, "քսան ինը")+ , (30, "երեսուն")+ , (31, "երեսուն մեկ")+ , (32, "երեսուն երկու")+ , (33, "երեսուն երեք")+ , (34, "երեսուն չորս")+ , (35, "երեսուն հինգ")+ , (36, "երեսուն վեց")+ , (37, "երեսուն յոթ")+ , (38, "երեսուն ութ")+ , (39, "երեսուն ինը")+ , (40, "քառասուն")+ , (41, "քառասուն մեկ")+ , (42, "քառասուն երկու")+ , (43, "քառասուն երեք")+ , (44, "քառասուն չորս")+ , (45, "քառասուն հինգ")+ , (46, "քառասուն վեց")+ , (47, "քառասուն յոթ")+ , (48, "քառասուն ութ")+ , (49, "քառասուն ինը")+ , (50, "հիսուն")+ , (51, "հիսուն մեկ")+ , (52, "հիսուն երկու")+ , (53, "հիսուն երեք")+ , (54, "հիսուն չորս")+ , (55, "հիսուն հինգ")+ , (56, "հիսուն վեց")+ , (57, "հիսուն յոթ")+ , (58, "հիսուն ութ")+ , (59, "հիսուն ինը")+ , (60, "վաթսուն")+ , (61, "վաթսուն մեկ")+ , (62, "վաթսուն երկու")+ , (63, "վաթսուն երեք")+ , (64, "վաթսուն չորս")+ , (65, "վաթսուն հինգ")+ , (66, "վաթսուն վեց")+ , (67, "վաթսուն յոթ")+ , (68, "վաթսուն ութ")+ , (69, "վաթսուն ինը")+ , (70, "յոթանասուն")+ , (71, "յոթանասուն մեկ")+ , (72, "յոթանասուն երկու")+ , (73, "յոթանասուն երեք")+ , (74, "յոթանասուն չորս")+ , (75, "յոթանասուն հինգ")+ , (76, "յոթանասուն վեց")+ , (77, "յոթանասուն յոթ")+ , (78, "յոթանասուն ութ")+ , (79, "յոթանասուն ինը")+ , (80, "ութսուն")+ , (81, "ութսուն մեկ")+ , (82, "ութսուն երկու")+ , (83, "ութսուն երեք")+ , (84, "ութսուն չորս")+ , (85, "ութսուն հինգ")+ , (86, "ութսուն վեց")+ , (87, "ութսուն յոթ")+ , (88, "ութսուն ութ")+ , (89, "ութսուն ինը")+ , (90, "իննսուն")+ , (91, "իննսուն մեկ")+ , (92, "իննսուն երկու")+ , (93, "իննսուն երեք")+ , (94, "իննսուն չորս")+ , (95, "իննսուն հինգ")+ , (96, "իննսուն վեց")+ , (97, "իննսուն յոթ")+ , (98, "իննսուն ութ")+ , (99, "իննսուն ինը")+ , (100, "հարյուր")+ , (101, "հարյուր մեկ")+ , (102, "հարյուր երկու")+ , (103, "հարյուր երեք")+ , (104, "հարյուր չորս")+ , (105, "հարյուր հինգ")+ , (106, "հարյուր վեց")+ , (107, "հարյուր յոթ")+ , (108, "հարյուր ութ")+ , (109, "հարյուր ինը")+ , (110, "հարյուր տաս")+ , (123, "հարյուր քսան երեք")+ , (200, "երկու հարյուր")+ , (300, "երեք հարյուր")+ , (321, "երեք հարյուր քսան մեկ")+ , (400, "չորս հարյուր")+ , (500, "հինգ հարյուր")+ , (600, "վեց հարյուր")+ , (700, "յոթ հարյուր")+ , (800, "ութ հարյուր")+ , (900, "ինը հարյուր")+ , (909, "ինը հարյուր ինը")+ , (990, "ինը հարյուր իննսուն")+ , (999, "ինը հարյուր իննսուն ինը")+ , (1000, "հազար")+ , (1001, "հազար մեկ")+ , (1008, "հազար ութ")+ , (1234, "հազար երկու հարյուր երեսուն չորս")+ , (2000, "երկու հազար")+ , (3000, "երեք հազար")+ , (4000, "չորս հազար")+ , (4321, "չորս հազար երեք հարյուր քսան մեկ")+ , (5000, "հինգ հազար")+ , (6000, "վեց հազար")+ , (7000, "յոթ հազար")+ , (8000, "ութ հազար")+ , (9000, "ինը հազար")+ , (10000, "տաս հազար")+ , (12345, "տասներկու հազար երեք հարյուր քառասուն հինգ")+ , (20000, "քսան հազար")+ , (30000, "երեսուն հազար")+ , (40000, "քառասուն հազար")+ , (50000, "հիսուն հազար")+ , (54321, "հիսուն չորս հազար երեք հարյուր քսան մեկ")+ , (60000, "վաթսուն հազար")+ , (70000, "յոթանասուն հազար")+ , (80000, "ութսուն հազար")+ , (90000, "իննսուն հազար")+ , (100000, "հարյուր հազար")+ , (123456, "հարյուր քսան երեք հազար չորս հարյուր հիսուն վեց")+ , (200000, "երկու հարյուր հազար")+ , (300000, "երեք հարյուր հազար")+ , (400000, "չորս հարյուր հազար")+ , (500000, "հինգ հարյուր հազար")+ , (600000, "վեց հարյուր հազար")+ , (654321, "վեց հարյուր հիսուն չորս հազար երեք հարյուր քսան մեկ")+ , (700000, "յոթ հարյուր հազար")+ , (800000, "ութ հարյուր հազար")+ , (900000, "ինը հարյուր հազար")+ , (1000000, "միլիոն")+ , (1000000000, "միլիարդ")+ , (1000000000000, "տրիլիոն")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/IBO/TestData.hs view
@@ -0,0 +1,219 @@+{-|+[@ISO639-1@] ig++[@ISO639-2@] ibo++[@ISO639-3@] ibo++[@Native name@] Asụsụ Igbo++[@English name@] Igbo+-}+module Text.Numeral.Language.IBO.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-igbo/en/ibo/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "adigi")+ , (1, "otu")+ , (2, "abụọ")+ , (3, "atọ")+ , (4, "anọ")+ , (5, "ise")+ , (6, "isii")+ , (7, "asaa")+ , (8, "asato")+ , (9, "eteghiete")+ , (10, "iri")+ , (11, "iri na otu")+ , (12, "iri na abụọ")+ , (13, "iri na atọ")+ , (14, "iri na anọ")+ , (15, "iri na ise")+ , (16, "iri na isii")+ , (17, "iri na asaa")+ , (18, "iri na asato")+ , (19, "iri na eteghiete")+ , (20, "iri abụọ")+ , (21, "iri abụọ na otu")+ , (22, "iri abụọ na abụọ")+ , (23, "iri abụọ na atọ")+ , (24, "iri abụọ na anọ")+ , (25, "iri abụọ na ise")+ , (26, "iri abụọ na isii")+ , (27, "iri abụọ na asaa")+ , (28, "iri abụọ na asato")+ , (29, "iri abụọ na eteghiete")+ , (30, "iri atọ")+ , (31, "iri atọ na otu")+ , (32, "iri atọ na abụọ")+ , (33, "iri atọ na atọ")+ , (34, "iri atọ na anọ")+ , (35, "iri atọ na ise")+ , (36, "iri atọ na isii")+ , (37, "iri atọ na asaa")+ , (38, "iri atọ na asato")+ , (39, "iri atọ na eteghiete")+ , (40, "iri anọ")+ , (41, "iri anọ na otu")+ , (42, "iri anọ na abụọ")+ , (43, "iri anọ na atọ")+ , (44, "iri anọ na anọ")+ , (45, "iri anọ na ise")+ , (46, "iri anọ na isii")+ , (47, "iri anọ na asaa")+ , (48, "iri anọ na asato")+ , (49, "iri anọ na eteghiete")+ , (50, "iri ise")+ , (51, "iri ise na otu")+ , (52, "iri ise na abụọ")+ , (53, "iri ise na atọ")+ , (54, "iri ise na anọ")+ , (55, "iri ise na ise")+ , (56, "iri ise na isii")+ , (57, "iri ise na asaa")+ , (58, "iri ise na asato")+ , (59, "iri ise na eteghiete")+ , (60, "iri isii")+ , (61, "iri isii na otu")+ , (62, "iri isii na abụọ")+ , (63, "iri isii na atọ")+ , (64, "iri isii na anọ")+ , (65, "iri isii na ise")+ , (66, "iri isii na isii")+ , (67, "iri isii na asaa")+ , (68, "iri isii na asato")+ , (69, "iri isii na eteghiete")+ , (70, "iri asaa")+ , (71, "iri asaa na otu")+ , (72, "iri asaa na abụọ")+ , (73, "iri asaa na atọ")+ , (74, "iri asaa na anọ")+ , (75, "iri asaa na ise")+ , (76, "iri asaa na isii")+ , (77, "iri asaa na asaa")+ , (78, "iri asaa na asato")+ , (79, "iri asaa na eteghiete")+ , (80, "iri asato")+ , (81, "iri asato na otu")+ , (82, "iri asato na abụọ")+ , (83, "iri asato na atọ")+ , (84, "iri asato na anọ")+ , (85, "iri asato na ise")+ , (86, "iri asato na isii")+ , (87, "iri asato na asaa")+ , (88, "iri asato na asato")+ , (89, "iri asato na eteghiete")+ , (90, "iri eteghiete")+ , (91, "iri eteghiete na otu")+ , (92, "iri eteghiete na abụọ")+ , (93, "iri eteghiete na atọ")+ , (94, "iri eteghiete na anọ")+ , (95, "iri eteghiete na ise")+ , (96, "iri eteghiete na isii")+ , (97, "iri eteghiete na asaa")+ , (98, "iri eteghiete na asato")+ , (99, "iri eteghiete na eteghiete")+ , (100, "nnari")+ , (101, "nnari na otu")+ , (102, "nnari na abụọ")+ , (103, "nnari na atọ")+ , (104, "nnari na anọ")+ , (105, "nnari na ise")+ , (106, "nnari na isii")+ , (107, "nnari na asaa")+ , (108, "nnari na asato")+ , (109, "nnari na eteghiete")+ , (110, "nnari na iri")+ , (123, "nnari na iri abụọ na atọ")+ , (200, "nnari abụọ")+ , (300, "nnari atọ")+ , (321, "nnari atọ na iri abụọ na otu")+ , (400, "nnari anọ")+ , (500, "nnari ise")+ , (600, "nnari isii")+ , (700, "nnari asaa")+ , (800, "nnari asato")+ , (900, "nnari eteghiete")+ , (909, "nnari eteghiete na eteghiete")+ , (990, "nnari eteghiete na iri eteghiete")+ , (999, "nnari eteghiete na iri eteghiete na eteghiete")+ , (1000, "puku")+ , (1001, "puku na otu")+ , (1008, "puku na asato")+ , (1234, "puku na nnari abụọ na iri atọ na anọ")+ , (2000, "puku abụọ")+ , (3000, "puku atọ")+ , (4000, "puku anọ")+ , (4321, "puku anọ na nnari atọ na iri abụọ na otu")+ , (5000, "puku ise")+ , (6000, "puku isii")+ , (7000, "puku asaa")+ , (8000, "puku asato")+ , (9000, "puku eteghiete")+ , (10000, "iri puku")+ , (12345, "iri na puku abụọ na nnari atọ na iri anọ na ise")+ , (20000, "iri puku abụọ")+ , (30000, "iri puku atọ")+ , (40000, "iri puku anọ")+ , (50000, "iri puku ise")+ , (54321, "iri ise na puku anọ na nnari atọ na iri abụọ na otu")+ , (60000, "iri puku isii")+ , (70000, "iri puku asaa")+ , (80000, "iri puku asato")+ , (90000, "iri puku eteghiete")+ , (100000, "nnari puku")+ , (123456, "nnari na iri abụọ na puku atọ na nnari anọ na iri ise na isii")+ , (200000, "nnari abụọ puku")+ , (300000, "nnari atọ puku")+ , (400000, "nnari anọ puku")+ , (500000, "nnari ise puku")+ , (600000, "nnari isii puku")+ , (654321, "nnari isii na iri ise na puku anọ na nnari atọ na iri abụọ na otu")+ , (700000, "nnari asaa puku")+ , (800000, "nnari asato puku")+ , (900000, "nnari eteghiete puku")+ , (1000000, "nde")+ , (1000001, "nde na otu")+ , (1234567, "nde na nnari abụọ na iri atọ na puku anọ na nnari ise na iri isii na asaa")+ , (2000000, "nde abụọ")+ , (3000000, "nde atọ")+ , (4000000, "nde anọ")+ , (5000000, "nde ise")+ , (6000000, "nde isii")+ , (7000000, "nde asaa")+ , (7654321, "nde asaa na nnari isii na iri ise na puku anọ na nnari atọ na iri abụọ na otu")+ , (8000000, "nde asato")+ , (9000000, "nde eteghiete")+ , (1000000000, "ijeri")+ , (1000000001, "ijeri na otu")+ , (2000000000, "ijeri abụọ")+ , (3000000000, "ijeri atọ")+ , (4000000000, "ijeri anọ")+ , (5000000000, "ijeri ise")+ , (6000000000, "ijeri isii")+ , (7000000000, "ijeri asaa")+ , (8000000000, "ijeri asato")+ , (9000000000, "ijeri eteghiete")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/IND/TestData.hs view
@@ -0,0 +1,229 @@+{-|+[@ISO639-1@] id++[@ISO639-2@] ind++[@ISO639-3@] ind++[@Native name@] Bahasa Indonesia++[@English name@] Indonesian+-}+module Text.Numeral.Language.IND.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-indonesian/en/ind/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "kosong")+ , (1, "satu")+ , (2, "dua")+ , (3, "tiga")+ , (4, "empat")+ , (5, "lima")+ , (6, "enam")+ , (7, "tujuh")+ , (8, "delapan")+ , (9, "sembilan")+ , (10, "sepuluh")+ , (11, "sebelas")+ , (12, "dua belas")+ , (13, "tiga belas")+ , (14, "empat belas")+ , (15, "lima belas")+ , (16, "enam belas")+ , (17, "tujuh belas")+ , (18, "delapan belas")+ , (19, "sembilan belas")+ , (20, "dua puluh")+ , (21, "dua puluh satu")+ , (22, "dua puluh dua")+ , (23, "dua puluh tiga")+ , (24, "dua puluh empat")+ , (25, "dua puluh lima")+ , (26, "dua puluh enam")+ , (27, "dua puluh tujuh")+ , (28, "dua puluh delapan")+ , (29, "dua puluh sembilan")+ , (30, "tiga puluh")+ , (31, "tiga puluh satu")+ , (32, "tiga puluh dua")+ , (33, "tiga puluh tiga")+ , (34, "tiga puluh empat")+ , (35, "tiga puluh lima")+ , (36, "tiga puluh enam")+ , (37, "tiga puluh tujuh")+ , (38, "tiga puluh delapan")+ , (39, "tiga puluh sembilan")+ , (40, "empat puluh")+ , (41, "empat puluh satu")+ , (42, "empat puluh dua")+ , (43, "empat puluh tiga")+ , (44, "empat puluh empat")+ , (45, "empat puluh lima")+ , (46, "empat puluh enam")+ , (47, "empat puluh tujuh")+ , (48, "empat puluh delapan")+ , (49, "empat puluh sembilan")+ , (50, "lima puluh")+ , (51, "lima puluh satu")+ , (52, "lima puluh dua")+ , (53, "lima puluh tiga")+ , (54, "lima puluh empat")+ , (55, "lima puluh lima")+ , (56, "lima puluh enam")+ , (57, "lima puluh tujuh")+ , (58, "lima puluh delapan")+ , (59, "lima puluh sembilan")+ , (60, "enam puluh")+ , (61, "enam puluh satu")+ , (62, "enam puluh dua")+ , (63, "enam puluh tiga")+ , (64, "enam puluh empat")+ , (65, "enam puluh lima")+ , (66, "enam puluh enam")+ , (67, "enam puluh tujuh")+ , (68, "enam puluh delapan")+ , (69, "enam puluh sembilan")+ , (70, "tujuh puluh")+ , (71, "tujuh puluh satu")+ , (72, "tujuh puluh dua")+ , (73, "tujuh puluh tiga")+ , (74, "tujuh puluh empat")+ , (75, "tujuh puluh lima")+ , (76, "tujuh puluh enam")+ , (77, "tujuh puluh tujuh")+ , (78, "tujuh puluh delapan")+ , (79, "tujuh puluh sembilan")+ , (80, "delapan puluh")+ , (81, "delapan puluh satu")+ , (82, "delapan puluh dua")+ , (83, "delapan puluh tiga")+ , (84, "delapan puluh empat")+ , (85, "delapan puluh lima")+ , (86, "delapan puluh enam")+ , (87, "delapan puluh tujuh")+ , (88, "delapan puluh delapan")+ , (89, "delapan puluh sembilan")+ , (90, "sembilan puluh")+ , (91, "sembilan puluh satu")+ , (92, "sembilan puluh dua")+ , (93, "sembilan puluh tiga")+ , (94, "sembilan puluh empat")+ , (95, "sembilan puluh lima")+ , (96, "sembilan puluh enam")+ , (97, "sembilan puluh tujuh")+ , (98, "sembilan puluh delapan")+ , (99, "sembilan puluh sembilan")+ , (100, "seratus")+ , (101, "seratus satu")+ , (102, "seratus dua")+ , (103, "seratus tiga")+ , (104, "seratus empat")+ , (105, "seratus lima")+ , (106, "seratus enam")+ , (107, "seratus tujuh")+ , (108, "seratus delapan")+ , (109, "seratus sembilan")+ , (110, "seratus sepuluh")+ , (123, "seratus dua puluh tiga")+ , (200, "dua ratus")+ , (300, "tiga ratus")+ , (321, "tiga ratus dua puluh satu")+ , (400, "empat ratus")+ , (500, "lima ratus")+ , (600, "enam ratus")+ , (700, "tujuh ratus")+ , (800, "delapan ratus")+ , (900, "sembilan ratus")+ , (909, "sembilan ratus sembilan")+ , (990, "sembilan ratus sembilan puluh")+ , (999, "sembilan ratus sembilan puluh sembilan")+ , (1000, "seribu")+ , (1001, "seribu satu")+ , (1008, "seribu delapan")+ , (1234, "seribu dua ratus tiga puluh empat")+ , (2000, "dua ribu")+ , (3000, "tiga ribu")+ , (4000, "empat ribu")+ , (4321, "empat ribu tiga ratus dua puluh satu")+ , (5000, "lima ribu")+ , (6000, "enam ribu")+ , (7000, "tujuh ribu")+ , (8000, "delapan ribu")+ , (9000, "sembilan ribu")+ , (10000, "sepuluh ribu")+ , (12345, "belas dua ribu tiga ratus empat puluh lima")+ , (20000, "dua puluh ribu")+ , (30000, "tiga puluh ribu")+ , (40000, "empat puluh ribu")+ , (50000, "lima puluh ribu")+ , (54321, "lima puluh empat ribu tiga ratus dua puluh satu")+ , (60000, "enam puluh ribu")+ , (70000, "tujuh puluh ribu")+ , (80000, "delapan puluh ribu")+ , (90000, "sembilan puluh ribu")+ , (100000, "seratus ribu")+ , (123456, "seratus dua puluh tiga ribu empat ratus lima puluh enam")+ , (200000, "dua ratus ribu")+ , (300000, "tiga ratus ribu")+ , (400000, "empat ratus ribu")+ , (500000, "lima ratus ribu")+ , (600000, "enam ratus ribu")+ , (654321, "enam ratus lima puluh empat ribu tiga ratus dua puluh satu")+ , (700000, "tujuh ratus ribu")+ , (800000, "delapan ratus ribu")+ , (900000, "sembilan ratus ribu")+ , (1000000, "sejuta")+ , (1000001, "sejuta satu")+ , (1234567, "sejuta dua ratus tiga puluh empat ribu lima ratus enam puluh tujuh")+ , (2000000, "dua juta")+ , (3000000, "tiga juta")+ , (4000000, "empat juta")+ , (5000000, "lima juta")+ , (6000000, "enam juta")+ , (7000000, "tujuh juta")+ , (7654321, "tujuh juta enam ratus lima puluh empat ribu tiga ratus dua puluh satu")+ , (8000000, "delapan juta")+ , (9000000, "sembilan juta")+ , (1000000000, "milyar")+ , (1000000001, "milyar satu")+ , (2000000000, "dua milyar")+ , (3000000000, "tiga milyar")+ , (4000000000, "empat milyar")+ , (5000000000, "lima milyar")+ , (6000000000, "enam milyar")+ , (7000000000, "tujuh milyar")+ , (8000000000, "delapan milyar")+ , (9000000000, "sembilan milyar")+ , (1000000000000, "seribu milyar")+ , (1000000000001, "seribu milyar satu")+ , (2000000000000, "dua seribu milyar")+ , (3000000000000, "tiga seribu milyar")+ , (4000000000000, "empat seribu milyar")+ , (5000000000000, "lima seribu milyar")+ , (6000000000000, "enam seribu milyar")+ , (7000000000000, "tujuh seribu milyar")+ , (8000000000000, "delapan seribu milyar")+ , (9000000000000, "sembilan seribu milyar")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/INH/TestData.hs view
@@ -0,0 +1,218 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] inh++[@ISO639-3@] inh++[@Native name@] -++[@English name@] Ingush+-}+module Text.Numeral.Language.INH.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-ingush/en/inh/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "цаI")+ , (2, "шиъ")+ , (3, "кхоъ")+ , (4, "диъ")+ , (5, "пхиъ")+ , (6, "ялх")+ , (7, "ворхI")+ , (8, "бапхI")+ , (9, "ийц")+ , (10, "итт")+ , (11, "цхьайтта")+ , (12, "шийтта")+ , (13, "кхойтта")+ , (14, "дийтта")+ , (15, "пхийтта")+ , (16, "ялхайтта")+ , (17, "вупийтта")+ , (18, "бапайтта")+ , (19, "ткъеста")+ , (20, "ткъо")+ , (21, "ткъаь цаI")+ , (22, "ткъаь шиъ")+ , (23, "ткъаь кхоъ")+ , (24, "ткъаь диъ")+ , (25, "ткъаь пхиъ")+ , (26, "ткъаь ялх")+ , (27, "ткъаь ворхI")+ , (28, "ткъаь бапхI")+ , (29, "ткъаь ийц")+ , (30, "ткъаь итт")+ , (31, "ткъаь цхьайтта")+ , (32, "ткъаь шийтта")+ , (33, "ткъаь кхойтта")+ , (34, "ткъаь дийтта")+ , (35, "ткъаь пхийтта")+ , (36, "ткъаь ялхайтта")+ , (37, "ткъаь вупийтта")+ , (38, "ткъаь бапайтта")+ , (39, "ткъаь ткъеста")+ , (40, "шовэткъа")+ , (41, "шовэткъе цаI")+ , (42, "шовэткъе шиъ")+ , (43, "шовэткъе кхоъ")+ , (44, "шовэткъе диъ")+ , (45, "шовэткъе пхиъ")+ , (46, "шовэткъе ялх")+ , (47, "шовэткъе ворхI")+ , (48, "шовэткъе бапхI")+ , (49, "шовэткъе ийц")+ , (50, "шовэткъа итт")+ , (51, "шовэткъе цхьайтта")+ , (52, "шовэткъе шийтта")+ , (53, "шовэткъе кхойтта")+ , (54, "шовэткъе дийтта")+ , (55, "шовэткъе пхийтта")+ , (56, "шовэткъе ялхайтта")+ , (57, "шовэткъе вупийтта")+ , (58, "шовэткъе бапайтта")+ , (59, "шовэткъе ткъеста")+ , (60, "кхоэткъа")+ , (61, "кхоэткъе цаI")+ , (62, "кхоэткъе шиъ")+ , (63, "кхоэткъе кхоъ")+ , (64, "кхоэткъе диъ")+ , (65, "кхоэткъе пхиъ")+ , (66, "кхоэткъе ялх")+ , (67, "кхоэткъе ворхI")+ , (68, "кхоэткъе бапхI")+ , (69, "кхоэткъе ийц")+ , (70, "кхоэткъа итт")+ , (71, "кхоэткъе цхьайтта")+ , (72, "кхоэткъе шийтта")+ , (73, "кхоэткъе кхойтта")+ , (74, "кхоэткъе дийтта")+ , (75, "кхоэткъе пхийтта")+ , (76, "кхоэткъе ялхайтта")+ , (77, "кхоэткъе вупийтта")+ , (78, "кхоэткъе бапайтта")+ , (79, "кхоэткъе ткъеста")+ , (80, "деэткъа")+ , (81, "деэткъе цаI")+ , (82, "деэткъе шиъ")+ , (83, "деэткъе кхоъ")+ , (84, "деэткъе диъ")+ , (85, "деэткъе пхиъ")+ , (86, "деэткъе ялх")+ , (87, "деэткъе ворхI")+ , (88, "деэткъе бапхI")+ , (89, "деэткъе ийц")+ , (90, "деэткъа итт")+ , (91, "деэткъе цхьайтта")+ , (92, "деэткъе шийтта")+ , (93, "деэткъе кхойтта")+ , (94, "деэткъе дийтта")+ , (95, "деэткъе пхийтта")+ , (96, "деэткъе ялхайтта")+ , (97, "деэткъе вупийтта")+ , (98, "деэткъе бапайтта")+ , (99, "деэткъе ткъеста")+ , (100, "бIаь")+ , (101, "цхьа бIаьи цаI")+ , (102, "цхьа бIаьи шиъ")+ , (103, "цхьа бIаьи кхоъ")+ , (104, "цхьа бIаьи диъ")+ , (105, "цхьа бIаьи пхиъ")+ , (106, "цхьа бIаьи ялх")+ , (107, "цхьа бIаьи ворхI")+ , (108, "цхьа бIаьи бапхI")+ , (109, "цхьа бIаьи ийц")+ , (110, "цхьа бIаьи итт")+ , (123, "цхьа бIаьи ткъаь кхоъ")+ , (200, "ши бIаь")+ , (300, "кхо бIаь")+ , (321, "кхо бIаьи ткъаь цаI")+ , (400, "ди бIаь")+ , (500, "пхи бIаь")+ , (600, "ялх бIаь")+ , (700, "ворх бIаь")+ , (800, "бапх бIаь")+ , (900, "ийц бIаь")+ , (909, "ийц бIаьи ийц")+ , (990, "ийц бIаьи деэткъа итт")+ , (999, "ийц бIаьи деэткъе ткъеста")+ , (1000, "эзап")+ , (1001, "эзап цаI")+ , (1008, "эзап бапхI")+ , (1234, "эзап ши бIаьи ткъаь дийтта")+ , (2000, "ши эзап")+ , (3000, "кхо эзап")+ , (4000, "ди эзап")+ , (4321, "ди эзап кхо бIаьи ткъаь цаI")+ , (5000, "пхи эзап")+ , (6000, "ялх эзап")+ , (7000, "ворх эзап")+ , (8000, "бапх эзап")+ , (9000, "ийц эзап")+ , (10000, "итт эзап")+ , (12345, "шийтта эзап кхо бIаьи шовэткъе пхиъ")+ , (20000, "ткъо эзап")+ , (30000, "ткъаь итт эзап")+ , (40000, "шовэткъа эзап")+ , (50000, "шовэткъа итт эзап")+ , (54321, "шовэткъе дийтта эзап кхо бIаьи ткъаь цаI")+ , (60000, "кхоэткъа эзап")+ , (70000, "кхоэткъа итт эзап")+ , (80000, "деэткъа эзап")+ , (90000, "деэткъа итт эзап")+ , (100000, "цхьа бIаьи эзап")+ , (123456, "цхьа бIаьи ткъаь кхо эзап ди бIаьи шовэткъе ялхайтта")+ , (200000, "ши бIаьи эзап")+ , (300000, "кхо бIаьи эзап")+ , (400000, "ди бIаьи эзап")+ , (500000, "пхи бIаьи эзап")+ , (600000, "ялх бIаьи эзап")+ , (654321, "ялх бIаьи шовэткъе дийтта эзап кхо бIаьи ткъаь цаI")+ , (700000, "ворх бIаьи эзап")+ , (800000, "бапх бIаьи эзап")+ , (900000, "ийц бIаьи эзап")+ , (1000000, "миллион")+ , (1000001, "миллион цаI")+ , (1234567, "миллион ши бIаьи ткъаь дийтта эзап пхи бIаьи кхоэткъе ворхI")+ , (2000000, "ши миллион")+ , (3000000, "кхо миллион")+ , (4000000, "ди миллион")+ , (5000000, "пхи миллион")+ , (6000000, "ялх миллион")+ , (7000000, "ворх миллион")+ , (7654321, "ворх миллион ялх бIаьи шовэткъе дийтта эзап кхо бIаьи ткъаь цаI")+ , (8000000, "бапх миллион")+ , (9000000, "ийц миллион")+ , (1000000000, "миллиард")+ , (1000000001, "миллиард цаI")+ , (2000000000, "ши миллиард")+ , (3000000000, "кхо миллиард")+ , (4000000000, "ди миллиард")+ , (5000000000, "пхи миллиард")+ , (6000000000, "ялх миллиард")+ , (7000000000, "ворх миллиард")+ , (8000000000, "бапх миллиард")+ , (9000000000, "ийц миллиард")+ ]+ )+ ]
− src-test/Text/Numeral/Language/IT/TestData.hs
@@ -1,295 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] it--[@ISO639-2B@] ita--[@ISO639-3@] ita--[@Native name@] Italiano--[@English name@] Italian--}--module Text.Numeral.Language.IT.TestData (cardinals, ordinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources:--- http://www.sf.airnet.ne.jp/~ts/language/number/italian.html--- http://www.orbilat.com/Languages/Italian/Grammar/Italian-Numerals.html--- http://italian.about.com/library/weekly/aa042600a.htm--- http://www.suite101.com/content/how-to-count-in-italian-a146487--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "neuter"- , neuter defaultInflection- , [ (0, "zero")- , (1, "uno")- , (2, "due")- , (3, "tre")- , (4, "quattro")- , (5, "cinque")- , (6, "sei")- , (7, "sette")- , (8, "otto")- , (9, "nove")- , (10, "dieci")- , (11, "undici")- , (12, "dodici")- , (13, "tredici")- , (14, "quattordici")- , (15, "quindici")- , (16, "sedici")- , (17, "diciassette")- , (18, "diciotto")- , (19, "diciannove")- , (20, "venti")- , (21, "ventuno")- , (22, "ventidue")- , (23, "ventitré")- , (24, "ventiquattro")- , (25, "venticinque")- , (26, "ventisei")- , (27, "ventisette")- , (28, "ventotto")- , (29, "ventinove")- , (30, "trenta")- , (31, "trentuno")- , (32, "trentadue")- , (33, "trentatré")- , (34, "trentaquattro")- , (35, "trentacinque")- , (36, "trentasei")- , (37, "trentasette")- , (38, "trentotto")- , (39, "trentanove")- , (40, "quaranta")- , (41, "quarantuno")- , (42, "quarantadue")- , (43, "quarantatré")- , (44, "quarantaquattro")- , (45, "quarantacinque")- , (46, "quarantasei")- , (47, "quarantasette")- , (48, "quarantotto")- , (49, "quarantanove")- , (50, "cinquanta")- , (51, "cinquantuno")- , (52, "cinquantadue")- , (53, "cinquantatré")- , (54, "cinquantaquattro")- , (55, "cinquantacinque")- , (56, "cinquantasei")- , (57, "cinquantasette")- , (58, "cinquantotto")- , (59, "cinquantanove")- , (60, "sessanta")- , (61, "sessantuno")- , (62, "sessantadue")- , (63, "sessantatré")- , (64, "sessantaquattro")- , (65, "sessantacinque")- , (66, "sessantasei")- , (67, "sessantasette")- , (68, "sessantotto")- , (69, "sessantanove")- , (70, "settanta")- , (71, "settantuno")- , (72, "settantadue")- , (73, "settantatré")- , (74, "settantaquattro")- , (75, "settantacinque")- , (76, "settantasei")- , (77, "settantasette")- , (78, "settantotto")- , (79, "settantanove")- , (80, "ottanta")- , (81, "ottantuno")- , (82, "ottantadue")- , (83, "ottantatré")- , (84, "ottantaquattro")- , (85, "ottantacinque")- , (86, "ottantasei")- , (87, "ottantasette")- , (88, "ottantotto")- , (89, "ottantanove")- , (90, "novanta")- , (91, "novantuno")- , (92, "novantadue")- , (93, "novantatré")- , (94, "novantaquattro")- , (95, "novantacinque")- , (96, "novantasei")- , (97, "novantasette")- , (98, "novantotto")- , (99, "novantanove")- , (100, "cento")- , (108, "centotto")- , (101, "centouno")- , (150, "centocinquanta")- , (180, "centottanta")- , (188, "centottantotto")- , (200, "duecento")- , (208, "duecentotto")- , (280, "duecentottanta")- , (288, "duecentottantotto")- , (300, "trecento")- , (400, "quattrocento")- , (456, "quattrocentocinquantasei")- , (500, "cinquecento")- , (600, "seicento")- , (700, "settecento")- , (800, "ottocento")- , (900, "novecento")- , (1000, "mille")- , (1001, "milleuno")- , (1002, "milledue")- , (1100, "millecento")- , (1200, "milleduecento")- , (2000, "duemila")- , (3000, "tremila")- , (6827, "seimilaottocentoventisette")- , (10000, "diecimila")- , (11000, "undicimila")- , (100000, "centomila")- , (1 ⋅ dec 6, "milione")- , (2 ⋅ dec 6, "due milioni")- , (125 ⋅ dec 5, "dodici milioni cinquecentomila")- , (43152 ⋅ dec 3, "quarantatré milioni centocinquantaduemila")- , (132 ⋅ dec 6, "centotrentadue milioni")- , (28375 ⋅ dec 4, "duecentottantatré milioni settecentocinquantamila")- , (680 ⋅ dec 6, "seicentottanta milioni")- , (1 ⋅ dec 9, "miliardo")- , (2 ⋅ dec 9, "due miliardi")- , (dec 12, "bilione")- , (dec 15, "biliardo")- , (dec 18, "trilione")- , (dec 21, "triliardo")- , (dec 24, "quadrilione")- , (dec 27, "quadriliardo")- , (dec 30, "quintilione")- , (dec 33, "quintiliardo")- , (dec 36, "sestilione")- , (dec 39, "sestiliardo")- , (dec 42, "settilione")- , (dec 45, "settiliardo")- , (dec 48, "ottilione")- , (dec 51, "ottiliardo")- , (dec 54, "nonilione")- , (dec 57, "noniliardo")- , (dec 60, "decilione")- , (dec 63, "deciliardo")- ]- )- , ( "masculine"- , masculine defaultInflection- , [ (1, "un")- ]- )- , ( "feminine"- , feminine defaultInflection- , [ (1, "una")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "default"- , defaultInflection- , [ (1, "primo")- , (2, "secondo")- , (3, "terzo")- , (4, "quarto")- , (5, "quinto")- , (6, "sesto")- , (7, "settimo")- , (8, "ottavo")- , (9, "nono")- , (10, "decimo")- , (11, "undicesimo")- , (12, "dodicesimo")- , (13, "tredicesimo")- , (14, "quattordicesimo")- , (15, "quindicesimo")- , (16, "sedicesimo")- , (17, "diciassettesimo")- , (18, "diciottesimo")- , (19, "diciannovesimo")- , (20, "ventesimo")- , (21, "ventunesimo")- , (22, "ventiduesimo")- , (23, "ventitreesimo")- , (24, "ventiquattresimo")- , (25, "venticinquesimo")- , (26, "ventiseiesimo")- , (27, "ventisettesimo")- , (28, "ventottesimo")- , (29, "ventinovesimo")- , (30, "trentesimo")- , (31, "trentunesimo")- , (32, "trentaduesimo")- , (33, "trentatreesimo")- , (34, "trentaquattresimo")- , (35, "trentacinquesimo")- , (36, "trentaseiesimo")- , (37, "trentasettesimo")- , (38, "trentottesimo")- , (39, "trentanovesimo")- , (40, "quarantesimo")- , (43, "quarantatreesimo")- , (50, "cinquantesimo")- , (60, "sessantesimo")- , (70, "settantesimo")- , (80, "ottantesimo")- , (89, "ottantanovesimo")- , (90, "novantesimo")- , (100, "centesimo")- , (200, "duecentesimo")- , (278, "duecentosettantottesimo")- , (300, "trecentesimo")- , (400, "quattrocentesimo")- , (500, "cinquecentesimo")- , (600, "seicentesimo")- , (700, "settecentesimo")- , (800, "ottocentesimo")- , (900, "novecentesimo")- , (1000, "millesimo")- , (2000, "duemillesimo")- , (dec 6, "milionesimo")- , (dec 12, "bilionesimo")- ]- )- , ( "feminine"- , feminine defaultInflection- , [ (1, "prima")- , (2, "seconda")- , (3, "terza")- , (4, "quarta")- , (5, "quinta")- , (6, "sesta")- ]- )- ]
+ src-test/Text/Numeral/Language/ITA/TestData.hs view
@@ -0,0 +1,287 @@+{-|+[@ISO639-1@] it++[@ISO639-2B@] ita++[@ISO639-3@] ita++[@Native name@] Italiano++[@English name@] Italian+-}++module Text.Numeral.Language.ITA.TestData (cardinals, ordinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources:+-- http://www.sf.airnet.ne.jp/~ts/language/number/italian.html+-- http://www.orbilat.com/Languages/Italian/Grammar/Italian-Numerals.html+-- http://italian.about.com/library/weekly/aa042600a.htm+-- http://www.suite101.com/content/how-to-count-in-italian-a146487++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "neuter"+ , neuter defaultInflection+ , [ (0, "zero")+ , (1, "uno")+ , (2, "due")+ , (3, "tre")+ , (4, "quattro")+ , (5, "cinque")+ , (6, "sei")+ , (7, "sette")+ , (8, "otto")+ , (9, "nove")+ , (10, "dieci")+ , (11, "undici")+ , (12, "dodici")+ , (13, "tredici")+ , (14, "quattordici")+ , (15, "quindici")+ , (16, "sedici")+ , (17, "diciassette")+ , (18, "diciotto")+ , (19, "diciannove")+ , (20, "venti")+ , (21, "ventuno")+ , (22, "ventidue")+ , (23, "ventitré")+ , (24, "ventiquattro")+ , (25, "venticinque")+ , (26, "ventisei")+ , (27, "ventisette")+ , (28, "ventotto")+ , (29, "ventinove")+ , (30, "trenta")+ , (31, "trentuno")+ , (32, "trentadue")+ , (33, "trentatré")+ , (34, "trentaquattro")+ , (35, "trentacinque")+ , (36, "trentasei")+ , (37, "trentasette")+ , (38, "trentotto")+ , (39, "trentanove")+ , (40, "quaranta")+ , (41, "quarantuno")+ , (42, "quarantadue")+ , (43, "quarantatré")+ , (44, "quarantaquattro")+ , (45, "quarantacinque")+ , (46, "quarantasei")+ , (47, "quarantasette")+ , (48, "quarantotto")+ , (49, "quarantanove")+ , (50, "cinquanta")+ , (51, "cinquantuno")+ , (52, "cinquantadue")+ , (53, "cinquantatré")+ , (54, "cinquantaquattro")+ , (55, "cinquantacinque")+ , (56, "cinquantasei")+ , (57, "cinquantasette")+ , (58, "cinquantotto")+ , (59, "cinquantanove")+ , (60, "sessanta")+ , (61, "sessantuno")+ , (62, "sessantadue")+ , (63, "sessantatré")+ , (64, "sessantaquattro")+ , (65, "sessantacinque")+ , (66, "sessantasei")+ , (67, "sessantasette")+ , (68, "sessantotto")+ , (69, "sessantanove")+ , (70, "settanta")+ , (71, "settantuno")+ , (72, "settantadue")+ , (73, "settantatré")+ , (74, "settantaquattro")+ , (75, "settantacinque")+ , (76, "settantasei")+ , (77, "settantasette")+ , (78, "settantotto")+ , (79, "settantanove")+ , (80, "ottanta")+ , (81, "ottantuno")+ , (82, "ottantadue")+ , (83, "ottantatré")+ , (84, "ottantaquattro")+ , (85, "ottantacinque")+ , (86, "ottantasei")+ , (87, "ottantasette")+ , (88, "ottantotto")+ , (89, "ottantanove")+ , (90, "novanta")+ , (91, "novantuno")+ , (92, "novantadue")+ , (93, "novantatré")+ , (94, "novantaquattro")+ , (95, "novantacinque")+ , (96, "novantasei")+ , (97, "novantasette")+ , (98, "novantotto")+ , (99, "novantanove")+ , (100, "cento")+ , (108, "centotto")+ , (101, "centouno")+ , (150, "centocinquanta")+ , (180, "centottanta")+ , (188, "centottantotto")+ , (200, "duecento")+ , (208, "duecentotto")+ , (280, "duecentottanta")+ , (288, "duecentottantotto")+ , (300, "trecento")+ , (400, "quattrocento")+ , (456, "quattrocentocinquantasei")+ , (500, "cinquecento")+ , (600, "seicento")+ , (700, "settecento")+ , (800, "ottocento")+ , (900, "novecento")+ , (1000, "mille")+ , (1001, "milleuno")+ , (1002, "milledue")+ , (1100, "millecento")+ , (1200, "milleduecento")+ , (2000, "duemila")+ , (3000, "tremila")+ , (6827, "seimilaottocentoventisette")+ , (10000, "diecimila")+ , (11000, "undicimila")+ , (100000, "centomila")+ , (1 * dec 6, "milione")+ , (2 * dec 6, "due milioni")+ , (125 * dec 5, "dodici milioni cinquecentomila")+ , (43152 * dec 3, "quarantatré milioni centocinquantaduemila")+ , (132 * dec 6, "centotrentadue milioni")+ , (28375 * dec 4, "duecentottantatré milioni settecentocinquantamila")+ , (680 * dec 6, "seicentottanta milioni")+ , (1 * dec 9, "miliardo")+ , (2 * dec 9, "due miliardi")+ , (dec 12, "bilione")+ , (dec 15, "biliardo")+ , (dec 18, "trilione")+ , (dec 21, "triliardo")+ , (dec 24, "quadrilione")+ , (dec 27, "quadriliardo")+ , (dec 30, "quintilione")+ , (dec 33, "quintiliardo")+ , (dec 36, "sestilione")+ , (dec 39, "sestiliardo")+ , (dec 42, "settilione")+ , (dec 45, "settiliardo")+ , (dec 48, "ottilione")+ , (dec 51, "ottiliardo")+ , (dec 54, "nonilione")+ , (dec 57, "noniliardo")+ , (dec 60, "decilione")+ , (dec 63, "deciliardo")+ ]+ )+ , ( "masculine"+ , masculine defaultInflection+ , [ (1, "un")+ ]+ )+ , ( "feminine"+ , feminine defaultInflection+ , [ (1, "una")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "primo")+ , (2, "secondo")+ , (3, "terzo")+ , (4, "quarto")+ , (5, "quinto")+ , (6, "sesto")+ , (7, "settimo")+ , (8, "ottavo")+ , (9, "nono")+ , (10, "decimo")+ , (11, "undicesimo")+ , (12, "dodicesimo")+ , (13, "tredicesimo")+ , (14, "quattordicesimo")+ , (15, "quindicesimo")+ , (16, "sedicesimo")+ , (17, "diciassettesimo")+ , (18, "diciottesimo")+ , (19, "diciannovesimo")+ , (20, "ventesimo")+ , (21, "ventunesimo")+ , (22, "ventiduesimo")+ , (23, "ventitreesimo")+ , (24, "ventiquattresimo")+ , (25, "venticinquesimo")+ , (26, "ventiseiesimo")+ , (27, "ventisettesimo")+ , (28, "ventottesimo")+ , (29, "ventinovesimo")+ , (30, "trentesimo")+ , (31, "trentunesimo")+ , (32, "trentaduesimo")+ , (33, "trentatreesimo")+ , (34, "trentaquattresimo")+ , (35, "trentacinquesimo")+ , (36, "trentaseiesimo")+ , (37, "trentasettesimo")+ , (38, "trentottesimo")+ , (39, "trentanovesimo")+ , (40, "quarantesimo")+ , (43, "quarantatreesimo")+ , (50, "cinquantesimo")+ , (60, "sessantesimo")+ , (70, "settantesimo")+ , (80, "ottantesimo")+ , (89, "ottantanovesimo")+ , (90, "novantesimo")+ , (100, "centesimo")+ , (200, "duecentesimo")+ , (278, "duecentosettantottesimo")+ , (300, "trecentesimo")+ , (400, "quattrocentesimo")+ , (500, "cinquecentesimo")+ , (600, "seicentesimo")+ , (700, "settecentesimo")+ , (800, "ottocentesimo")+ , (900, "novecentesimo")+ , (1000, "millesimo")+ , (2000, "duemillesimo")+ , (dec 6, "milionesimo")+ , (dec 12, "bilionesimo")+ ]+ )+ , ( "feminine"+ , feminine defaultInflection+ , [ (1, "prima")+ , (2, "seconda")+ , (3, "terza")+ , (4, "quarta")+ , (5, "quinta")+ , (6, "sesta")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/IZH/TestData.hs view
@@ -0,0 +1,139 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] izh++[@Native name@] ižoran keel++[@English name@] Ingrian+-}+module Text.Numeral.Language.IZH.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-ingrian/en/izh/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "null")+ , (1, "üks")+ , (2, "kaks")+ , (3, "kold")+ , (4, "neljä")+ , (5, "viis")+ , (6, "kuus")+ , (7, "seitsemän")+ , (8, "kaheksan")+ , (9, "üheksän")+ , (10, "kümmenän")+ , (11, "yksitoista")+ , (12, "kakstoist")+ , (13, "koldtoist")+ , (14, "neljätoist")+ , (15, "viistoist")+ , (16, "kuustoist")+ , (17, "seitsemäntoist")+ , (18, "kaheksantoist")+ , (19, "üheksäntoist")+ , (20, "kakskümmend")+ , (21, "kakskümmend üks")+ , (22, "kakskümmend kaks")+ , (23, "kakskümmend kold")+ , (24, "kakskümmend neljä")+ , (25, "kakskümmend viis")+ , (26, "kakskümmend kuus")+ , (27, "kakskümmend seitsemän")+ , (28, "kakskümmend kaheksan")+ , (29, "kakskümmend üheksän")+ , (30, "koldkümmend")+ , (31, "koldkümmend üks")+ , (32, "koldkümmend kaks")+ , (33, "koldkümmend kold")+ , (34, "koldkümmend neljä")+ , (35, "koldkümmend viis")+ , (36, "koldkümmend kuus")+ , (37, "koldkümmend seitsemän")+ , (38, "koldkümmend kaheksan")+ , (39, "koldkümmend üheksän")+ , (40, "neljäkümmend")+ , (41, "neljäkümmend üks")+ , (42, "neljäkümmend kaks")+ , (43, "neljäkümmend kold")+ , (44, "neljäkümmend neljä")+ , (45, "neljäkümmend viis")+ , (46, "neljäkümmend kuus")+ , (47, "neljäkümmend seitsemän")+ , (48, "neljäkümmend kaheksan")+ , (49, "neljäkümmend üheksän")+ , (50, "viiskümmend")+ , (51, "viiskümmend üks")+ , (52, "viiskümmend kaks")+ , (53, "viiskümmend kold")+ , (54, "viiskümmend neljä")+ , (55, "viiskümmend viis")+ , (56, "viiskümmend kuus")+ , (57, "viiskümmend seitsemän")+ , (58, "viiskümmend kaheksan")+ , (59, "viiskümmend üheksän")+ , (60, "kuuskümmend")+ , (61, "kuuskümmend üks")+ , (62, "kuuskümmend kaks")+ , (63, "kuuskümmend kold")+ , (64, "kuuskümmend neljä")+ , (65, "kuuskümmend viis")+ , (66, "kuuskümmend kuus")+ , (67, "kuuskümmend seitsemän")+ , (68, "kuuskümmend kaheksan")+ , (69, "kuuskümmend üheksän")+ , (70, "seitsemänkümmend")+ , (71, "seitsemänkümmend üks")+ , (72, "seitsemänkümmend kaks")+ , (73, "seitsemänkümmend kold")+ , (74, "seitsemänkümmend neljä")+ , (75, "seitsemänkümmend viis")+ , (76, "seitsemänkümmend kuus")+ , (77, "seitsemänkümmend seitsemän")+ , (78, "seitsemänkümmend kaheksan")+ , (79, "seitsemänkümmend üheksän")+ , (80, "kaheksankümmend")+ , (81, "kaheksankümmend üks")+ , (82, "kaheksankümmend kaks")+ , (83, "kaheksankümmend kold")+ , (84, "kaheksankümmend neljä")+ , (85, "kaheksankümmend viis")+ , (86, "kaheksankümmend kuus")+ , (87, "kaheksankümmend seitsemän")+ , (88, "kaheksankümmend kaheksan")+ , (89, "kaheksankümmend üheksän")+ , (90, "üheksänkümmend")+ , (91, "üheksänkümmend üks")+ , (92, "üheksänkümmend kaks")+ , (93, "üheksänkümmend kold")+ , (94, "üheksänkümmend neljä")+ , (95, "üheksänkümmend viis")+ , (96, "üheksänkümmend kuus")+ , (97, "üheksänkümmend seitsemän")+ , (98, "üheksänkümmend kaheksan")+ , (99, "üheksänkümmend üheksän")+ , (100, "sada")+ ]+ )+ ]
− src-test/Text/Numeral/Language/JA/TestData.hs
@@ -1,217 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] ja--[@ISO639-2B@] jpn--[@ISO639-3@] jpn--[@Native name@] 日本語--[@English name@] Japanese--}--module Text.Numeral.Language.JA.TestData- ( preferred_cardinals- , kanji_cardinals- , daiji_cardinals- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num, Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- JA-----------------------------------------------------------------------------------{--Sources:- http://en.wikipedia.org/wiki/Japanese_numerals- http://www.guidetojapanese.org/numbers.html--}--preferred_cardinals ∷ (Num i) ⇒ TestData i-preferred_cardinals =- [ ( "default"- , defaultInflection- , [ (0, "rei")- , (1, "ichi")- , (2, "ni")- , (3, "san")- , (4, "yon")- , (5, "go")- , (6, "roku")- , (7, "nana")- , (8, "hachi")- , (9, "kyū")- , (10, "jū")- , (11, "jū ichi")- , (12, "jū ni")- , (13, "jū san")- , (14, "jū yon")- , (15, "jū go")- , (16, "jū roku")- , (17, "jū nana")- , (18, "jū hachi")- , (19, "jū kyū")- , (20, "nijū")- , (21, "nijū ichi")- , (22, "nijū ni")- , (23, "nijū san")- , (24, "nijū yon")- , (25, "nijū go")- , (26, "nijū roku")- , (27, "nijū nana")- , (28, "nijū hachi")- , (29, "nijū kyū")- , (30, "sanjū")- , (31, "sanjū ichi")- , (32, "sanjū ni")- , (33, "sanjū san")- , (34, "sanjū yon")- , (35, "sanjū go")- , (36, "sanjū roku")- , (37, "sanjū nana")- , (38, "sanjū hachi")- , (39, "sanjū kyū")- , (40, "yonjū")- , (41, "yonjū ichi")- , (42, "yonjū ni")- , (43, "yonjū san")- , (44, "yonjū yon")- , (45, "yonjū go")- , (46, "yonjū roku")- , (47, "yonjū nana")- , (48, "yonjū hachi")- , (49, "yonjū kyū")- , (50, "gojū")- , (51, "gojū ichi")- , (52, "gojū ni")- , (53, "gojū san")- , (54, "gojū yon")- , (55, "gojū go")- , (56, "gojū roku")- , (57, "gojū nana")- , (58, "gojū hachi")- , (59, "gojū kyū")- , (60, "rokujū")- , (61, "rokujū ichi")- , (62, "rokujū ni")- , (63, "rokujū san")- , (64, "rokujū yon")- , (65, "rokujū go")- , (66, "rokujū roku")- , (67, "rokujū nana")- , (68, "rokujū hachi")- , (69, "rokujū kyū")- , (70, "nanajū")- , (71, "nanajū ichi")- , (72, "nanajū ni")- , (73, "nanajū san")- , (74, "nanajū yon")- , (75, "nanajū go")- , (76, "nanajū roku")- , (77, "nanajū nana")- , (78, "nanajū hachi")- , (79, "nanajū kyū")- , (80, "hachijū")- , (81, "hachijū ichi")- , (82, "hachijū ni")- , (83, "hachijū san")- , (84, "hachijū yon")- , (85, "hachijū go")- , (86, "hachijū roku")- , (87, "hachijū nana")- , (88, "hachijū hachi")- , (89, "hachijū kyū")- , (90, "kyūjū")- , (91, "kyūjū ichi")- , (92, "kyūjū ni")- , (93, "kyūjū san")- , (94, "kyūjū yon")- , (95, "kyūjū go")- , (96, "kyūjū roku")- , (97, "kyūjū nana")- , (98, "kyūjū hachi")- , (99, "kyūjū kyū")- , (100, "hyaku")- , (208, "nihyaku hachi")- , (280, "nihyaku hachijū")- , (2008, "nisen hachi")- , (2080, "nisen hachijū")- , (2800, "nisen hachihyaku")- ]- )- ]--kanji_cardinals ∷ (Integral i) ⇒ TestData i-kanji_cardinals =- [ ( "default"- , defaultInflection- , [ (0, "零")- , (1, "一")- , (2, "二")- , (3, "三")- , (4, "四")- , (5, "五")- , (6, "六")- , (7, "七")- , (8, "八")- , (9, "九")- , (10, "十")- , (11, "十一")- , (12, "十二")- , (13, "十三")- , (14, "十四")- , (21, "二十一")- , (28, "二十八")- , (100, "百")- , (208, "二百八")- , (280, "二百八十")- , (321, "三百二十一")- , (1000, "千")- , (2008, "二千八")- , (2080, "二千八十")- , (2800, "二千八百")- , (4321, "四千三百二十一")- , (10000, "一万")- , (654321, "六十五万四千三百二十一")- , (87654321, "八千七百六十五万四千三百二十一")- , (100000000, "一億")- , (987654321, "九億八千七百六十五万四千三百二十一")- , (dec 12, "一兆")- ]- )- ]--daiji_cardinals ∷ (Integral i) ⇒ TestData i-daiji_cardinals =- [ ( "default"- , defaultInflection- , [ (0, "零")- , (1, "壱")- , (2, "弐")- , (3, "参")- , (4, "四")- , (5, "五")- , (6, "六")- , (7, "七")- , (8, "八")- , (9, "九")- , (10, "拾")- ]- )- ]
+ src-test/Text/Numeral/Language/JPN/TestData.hs view
@@ -0,0 +1,211 @@+{-|+[@ISO639-1@] ja++[@ISO639-2B@] jpn++[@ISO639-3@] jpn++[@Native name@] 日本語++[@English name@] Japanese+-}++module Text.Numeral.Language.JPN.TestData+ ( preferred_cardinals+ , kanji_cardinals+ , daiji_cardinals+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Prelude ( Num, Integral )+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- JPN+--------------------------------------------------------------------------------++{-+Sources:+ http://en.wikipedia.org/wiki/Japanese_numerals+ http://www.guidetojapanese.org/numbers.html+-}++preferred_cardinals :: (Num i) => TestData i+preferred_cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "rei")+ , (1, "ichi")+ , (2, "ni")+ , (3, "san")+ , (4, "yon")+ , (5, "go")+ , (6, "roku")+ , (7, "nana")+ , (8, "hachi")+ , (9, "kyū")+ , (10, "jū")+ , (11, "jū ichi")+ , (12, "jū ni")+ , (13, "jū san")+ , (14, "jū yon")+ , (15, "jū go")+ , (16, "jū roku")+ , (17, "jū nana")+ , (18, "jū hachi")+ , (19, "jū kyū")+ , (20, "nijū")+ , (21, "nijū ichi")+ , (22, "nijū ni")+ , (23, "nijū san")+ , (24, "nijū yon")+ , (25, "nijū go")+ , (26, "nijū roku")+ , (27, "nijū nana")+ , (28, "nijū hachi")+ , (29, "nijū kyū")+ , (30, "sanjū")+ , (31, "sanjū ichi")+ , (32, "sanjū ni")+ , (33, "sanjū san")+ , (34, "sanjū yon")+ , (35, "sanjū go")+ , (36, "sanjū roku")+ , (37, "sanjū nana")+ , (38, "sanjū hachi")+ , (39, "sanjū kyū")+ , (40, "yonjū")+ , (41, "yonjū ichi")+ , (42, "yonjū ni")+ , (43, "yonjū san")+ , (44, "yonjū yon")+ , (45, "yonjū go")+ , (46, "yonjū roku")+ , (47, "yonjū nana")+ , (48, "yonjū hachi")+ , (49, "yonjū kyū")+ , (50, "gojū")+ , (51, "gojū ichi")+ , (52, "gojū ni")+ , (53, "gojū san")+ , (54, "gojū yon")+ , (55, "gojū go")+ , (56, "gojū roku")+ , (57, "gojū nana")+ , (58, "gojū hachi")+ , (59, "gojū kyū")+ , (60, "rokujū")+ , (61, "rokujū ichi")+ , (62, "rokujū ni")+ , (63, "rokujū san")+ , (64, "rokujū yon")+ , (65, "rokujū go")+ , (66, "rokujū roku")+ , (67, "rokujū nana")+ , (68, "rokujū hachi")+ , (69, "rokujū kyū")+ , (70, "nanajū")+ , (71, "nanajū ichi")+ , (72, "nanajū ni")+ , (73, "nanajū san")+ , (74, "nanajū yon")+ , (75, "nanajū go")+ , (76, "nanajū roku")+ , (77, "nanajū nana")+ , (78, "nanajū hachi")+ , (79, "nanajū kyū")+ , (80, "hachijū")+ , (81, "hachijū ichi")+ , (82, "hachijū ni")+ , (83, "hachijū san")+ , (84, "hachijū yon")+ , (85, "hachijū go")+ , (86, "hachijū roku")+ , (87, "hachijū nana")+ , (88, "hachijū hachi")+ , (89, "hachijū kyū")+ , (90, "kyūjū")+ , (91, "kyūjū ichi")+ , (92, "kyūjū ni")+ , (93, "kyūjū san")+ , (94, "kyūjū yon")+ , (95, "kyūjū go")+ , (96, "kyūjū roku")+ , (97, "kyūjū nana")+ , (98, "kyūjū hachi")+ , (99, "kyūjū kyū")+ , (100, "hyaku")+ , (208, "nihyaku hachi")+ , (280, "nihyaku hachijū")+ , (2008, "nisen hachi")+ , (2080, "nisen hachijū")+ , (2800, "nisen hachihyaku")+ ]+ )+ ]++kanji_cardinals :: (Integral i) => TestData i+kanji_cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "零")+ , (1, "一")+ , (2, "二")+ , (3, "三")+ , (4, "四")+ , (5, "五")+ , (6, "六")+ , (7, "七")+ , (8, "八")+ , (9, "九")+ , (10, "十")+ , (11, "十一")+ , (12, "十二")+ , (13, "十三")+ , (14, "十四")+ , (21, "二十一")+ , (28, "二十八")+ , (100, "百")+ , (208, "二百八")+ , (280, "二百八十")+ , (321, "三百二十一")+ , (1000, "千")+ , (2008, "二千八")+ , (2080, "二千八十")+ , (2800, "二千八百")+ , (4321, "四千三百二十一")+ , (10000, "一万")+ , (654321, "六十五万四千三百二十一")+ , (87654321, "八千七百六十五万四千三百二十一")+ , (100000000, "一億")+ , (987654321, "九億八千七百六十五万四千三百二十一")+ , (dec 12, "一兆")+ ]+ )+ ]++daiji_cardinals :: (Integral i) => TestData i+daiji_cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "零")+ , (1, "壱")+ , (2, "弐")+ , (3, "参")+ , (4, "四")+ , (5, "五")+ , (6, "六")+ , (7, "七")+ , (8, "八")+ , (9, "九")+ , (10, "拾")+ ]+ )+ ]
src-test/Text/Numeral/Language/KAP/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-bezhta/en/kap/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
src-test/Text/Numeral/Language/KEA/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-cape-verdean-creole/en/kea/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/KLB/TestData.hs view
@@ -0,0 +1,175 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] klb++[@Native name@] Koléew Ñaja'++[@English name@] Kiliwa+-}+module Text.Numeral.Language.KLB.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-kiliwa/en/lkb/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "msig")+ , (2, "juwak")+ , (3, "jmi’k")+ , (4, "mnak")+ , (5, "salchipam")+ , (6, "msigl paayp")+ , (7, "juwakl paayp")+ , (8, "jmi’kl paayp")+ , (9, "msigl tmat")+ , (10, "chipam msig")+ , (11, "chipam msig, msig tmaljaa")+ , (12, "chipam msig, juwak tmaljaa")+ , (13, "chipam msig, jmi’k tmaljaa")+ , (14, "chipam msig, mnak tmaljaa")+ , (15, "chipam msig, salchipam tmaljaa")+ , (16, "chipam msig, msigl paayp tmaljaa")+ , (17, "chipam msig, juwakl paayp tmaljaa")+ , (18, "chipam msig, jmi’kl paayp tmaljaa")+ , (19, "chipam msig, msigl tmat tmaljaa")+ , (20, "chipam juwak")+ , (21, "chipam juwak, msig tmaljaa")+ , (22, "chipam juwak, juwak tmaljaa")+ , (23, "chipam juwak, jmi’k tmaljaa")+ , (24, "chipam juwak, mnak tmaljaa")+ , (25, "chipam juwak, salchipam tmaljaa")+ , (26, "chipam juwak, msigl paayp tmaljaa")+ , (27, "chipam juwak, juwakl paayp tmaljaa")+ , (28, "chipam juwak, jmi’kl paayp tmaljaa")+ , (29, "chipam juwak, msigl tmat tmaljaa")+ , (30, "chipam jmi’k")+ , (31, "chipam jmi’k, msig tmaljaa")+ , (32, "chipam jmi’k, juwak tmaljaa")+ , (33, "chipam jmi’k, jmi’k tmaljaa")+ , (34, "chipam jmi’k, mnak tmaljaa")+ , (35, "chipam jmi’k, salchipam tmaljaa")+ , (36, "chipam jmi’k, msigl paayp tmaljaa")+ , (37, "chipam jmi’k, juwakl paayp tmaljaa")+ , (38, "chipam jmi’k, jmi’kl paayp tmaljaa")+ , (39, "chipam jmi’k, msigl tmat tmaljaa")+ , (40, "chipam mnak")+ , (41, "chipam mnak, msig tmaljaa")+ , (42, "chipam mnak, juwak tmaljaa")+ , (43, "chipam mnak, jmi’k tmaljaa")+ , (44, "chipam mnak, mnak tmaljaa")+ , (45, "chipam mnak, salchipam tmaljaa")+ , (46, "chipam mnak, msigl paayp tmaljaa")+ , (47, "chipam mnak, juwakl paayp tmaljaa")+ , (48, "chipam mnak, jmi’kl paayp tmaljaa")+ , (49, "chipam mnak, msigl tmat tmaljaa")+ , (50, "chipam salchipam")+ , (51, "chipam salchipam, msig tmaljaa")+ , (52, "chipam salchipam, juwak tmaljaa")+ , (53, "chipam salchipam, jmi’k tmaljaa")+ , (54, "chipam salchipam, mnak tmaljaa")+ , (55, "chipam salchipam, salchipam tmaljaa")+ , (56, "chipam salchipam, msigl paayp tmaljaa")+ , (57, "chipam salchipam, juwakl paayp tmaljaa")+ , (58, "chipam salchipam, jmi’kl paayp tmaljaa")+ , (59, "chipam salchipam, msigl tmat tmaljaa")+ , (60, "chipam msigl paayp")+ , (61, "chipam msigl paayp, msig tmaljaa")+ , (62, "chipam msigl paayp, juwak tmaljaa")+ , (63, "chipam msigl paayp, jmi’k tmaljaa")+ , (64, "chipam msigl paayp, mnak tmaljaa")+ , (65, "chipam msigl paayp, salchipam tmaljaa")+ , (66, "chipam msigl paayp, msigl paayp tmaljaa")+ , (67, "chipam msigl paayp, juwakl paayp tmaljaa")+ , (68, "chipam msigl paayp, jmi’kl paayp tmaljaa")+ , (69, "chipam msigl paayp, msigl tmat tmaljaa")+ , (70, "chipam juwakl paayb")+ , (71, "chipam juwakl paayb, msig tmaljaa")+ , (72, "chipam juwakl paayb, juwak tmaljaa")+ , (73, "chipam juwakl paayb, jmi’k tmaljaa")+ , (74, "chipam juwakl paayb, mnak tmaljaa")+ , (75, "chipam juwakl paayb, salchipam tmaljaa")+ , (76, "chipam juwakl paayb, msigl paayp tmaljaa")+ , (77, "chipam juwakl paayb, juwakl paayp tmaljaa")+ , (78, "chipam juwakl paayb, jmi’kl paayp tmaljaa")+ , (79, "chipam juwakl paayb, msigl tmat tmaljaa")+ , (80, "chipam jmi’kl paayb")+ , (81, "chipam jmi’kl paayb, msig tmaljaa")+ , (82, "chipam jmi’kl paayb, juwak tmaljaa")+ , (83, "chipam jmi’kl paayb, jmi’k tmaljaa")+ , (84, "chipam jmi’kl paayb, mnak tmaljaa")+ , (85, "chipam jmi’kl paayb, salchipam tmaljaa")+ , (86, "chipam jmi’kl paayb, msigl paayp tmaljaa")+ , (87, "chipam jmi’kl paayb, juwakl paayp tmaljaa")+ , (88, "chipam jmi’kl paayb, jmi’kl paayp tmaljaa")+ , (89, "chipam jmi’kl paayb, msigl tmat tmaljaa")+ , (90, "chipam msigl tmat")+ , (91, "chipam msigl tmat, msig tmaljaa")+ , (92, "chipam msigl tmat, juwak tmaljaa")+ , (93, "chipam msigl tmat, jmi’k tmaljaa")+ , (94, "chipam msigl tmat, mnak tmaljaa")+ , (95, "chipam msigl tmat, salchipam tmaljaa")+ , (96, "chipam msigl tmat, msigl paayp tmaljaa")+ , (97, "chipam msigl tmat, juwakl paayp tmaljaa")+ , (98, "chipam msigl tmat, jmi’kl paayp tmaljaa")+ , (99, "chipam msigl tmat, msigl tmat tmaljaa")+ , (100, "chipam msig u’ kun yuu chipam msig")+ , (101, "chipam msig u’ kun yuu chipam msig, msig tmaljaa")+ , (102, "chipam msig u’ kun yuu chipam msig, juwak tmaljaa")+ , (103, "chipam msig u’ kun yuu chipam msig, jmi’k tmaljaa")+ , (104, "chipam msig u’ kun yuu chipam msig, mnak tmaljaa")+ , (105, "chipam msig u’ kun yuu chipam msig, salchipam tmaljaa")+ , (106, "chipam msig u’ kun yuu chipam msig, msigl paayp tmaljaa")+ , (107, "chipam msig u’ kun yuu chipam msig, juwakl paayp tmaljaa")+ , (108, "chipam msig u’ kun yuu chipam msig, jmi’kl paayp tmaljaa")+ , (109, "chipam msig u’ kun yuu chipam msig, msigl tmat tmaljaa")+ , (110, "chipam msig u’ kun yuu chipam msig, chipam msig")+ , (123, "chipam msig u’ kun yuu chipam msig, chipam juwak, jmi’k tmaljaa")+ , (200, "chipam msig u’ kun yuu chipam juwak")+ , (300, "chipam msig u’ kun yuu chipam jmi’k")+ , (321, "chipam msig u’ kun yuu chipam jmi’k, chipam juwak, msig tmaljaa")+ , (400, "chipam msig u’ kun yuu chipam mnak")+ , (500, "chipam msig u’ kun yuu chipam salchipam")+ , (600, "chipam msig u’ kun yuu chipam msigl paayp")+ , (700, "chipam msig u’ kun yuu chipam juwakl paayp")+ , (800, "chipam msig u’ kun yuu chipam jmi’kl paayp")+ , (900, "chipam msig u’ kun yuu chipam msigl tmat")+ , (909, "chipam msig u’ kun yuu chipam msigl tmat, msigl tmat tmaljaa")+ , (990, "chipam msig u’ kun yuu chipam msigl tmat, chipam msigl tmat")+ , (999, "chipam msig u’ kun yuu chipam msigl tmat, chipam msigl tmat, msigl tmat tmaljaa")+ , (1000, "chipam msig u’ kuetet msig")+ , (1001, "chipam msig u’ kuetet msig, msig tmaljaa")+ , (1008, "chipam msig u’ kuetet msig, jmi’kl paayp tmaljaa")+ , (1234, "chipam msig u’ kuetet msig, chipam msig u’ kun yuu chipam juwak, chipam jmi’k, mnak tmaljaa")+ , (2000, "chipam msig u’ kuetet juwak")+ , (3000, "chipam msig u’ kuetet jmi’k")+ , (4000, "chipam msig u’ kuetet mnak")+ , (4321, "chipam msig u’ kuetet mnak, chipam msig u’ kun yuu chipam jmi’k, chipam juwak, msig tmaljaa")+ , (5000, "chipam msig u’ kuetet salchipam")+ , (6000, "chipam msig u’ kuetet msigl paayp")+ , (7000, "chipam msig u’ kuetet juwakl paayp")+ , (8000, "chipam msig u’ kuetet jmi’kl paayp")+ , (9000, "chipam msig u’ kuetet msigl tmat")+ , (10000, "chipam msig u’ kuetet chipam msig")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/KMR/TestData.hs view
@@ -0,0 +1,209 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] kmr++[@Native name@] -++[@English name@] Kurmanji+-}+module Text.Numeral.Language.KMR.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-northern-kurdish/en/kmr/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "sifir")+ , (1, "yek")+ , (2, "du")+ , (3, "sê")+ , (4, "çar")+ , (5, "pênc")+ , (6, "şeş")+ , (7, "heft")+ , (8, "heşt")+ , (9, "neh")+ , (10, "deh")+ , (11, "yanzdeh")+ , (12, "dwanzdeh")+ , (13, "sêzdeh")+ , (14, "çardeh")+ , (15, "panzdeh")+ , (16, "şanzdeh")+ , (17, "hivdeh")+ , (18, "hijdeh")+ , (19, "nozdeh")+ , (20, "bîst")+ , (21, "bîst û yek")+ , (22, "bîst û du")+ , (23, "bîst û sê")+ , (24, "bîst û çar")+ , (25, "bîst û pênc")+ , (26, "bîst û şeş")+ , (27, "bîst û heft")+ , (28, "bîst û heşt")+ , (29, "bîst û neh")+ , (30, "sî")+ , (31, "sî û yek")+ , (32, "sî û du")+ , (33, "sî û sê")+ , (34, "sî û çar")+ , (35, "sî û pênc")+ , (36, "sî û şeş")+ , (37, "sî û heft")+ , (38, "sî û heşt")+ , (39, "sî û neh")+ , (40, "çil")+ , (41, "çil û yek")+ , (42, "çil û du")+ , (43, "çil û sê")+ , (44, "çil û çar")+ , (45, "çil û pênc")+ , (46, "çil û şeş")+ , (47, "çil û heft")+ , (48, "çil û heşt")+ , (49, "çil û neh")+ , (50, "pêncî")+ , (51, "pêncî û yek")+ , (52, "pêncî û du")+ , (53, "pêncî û sê")+ , (54, "pêncî û çar")+ , (55, "pêncî û pênc")+ , (56, "pêncî û şeş")+ , (57, "pêncî û heft")+ , (58, "pêncî û heşt")+ , (59, "pêncî û neh")+ , (60, "şêst")+ , (61, "şêst û yek")+ , (62, "şêst û du")+ , (63, "şêst û sê")+ , (64, "şêst û çar")+ , (65, "şêst û pênc")+ , (66, "şêst û şeş")+ , (67, "şêst û heft")+ , (68, "şêst û heşt")+ , (69, "şêst û neh")+ , (70, "heftê")+ , (71, "heftê û yek")+ , (72, "heftê û du")+ , (73, "heftê û sê")+ , (74, "heftê û çar")+ , (75, "heftê û pênc")+ , (76, "heftê û şeş")+ , (77, "heftê û heft")+ , (78, "heftê û heşt")+ , (79, "heftê û neh")+ , (80, "heştê")+ , (81, "heştê û yek")+ , (82, "heştê û du")+ , (83, "heştê û sê")+ , (84, "heştê û çar")+ , (85, "heştê û pênc")+ , (86, "heştê û şeş")+ , (87, "heştê û heft")+ , (88, "heştê û heşt")+ , (89, "heştê û neh")+ , (90, "nod")+ , (91, "nod û yek")+ , (92, "nod û du")+ , (93, "nod û sê")+ , (94, "nod û çar")+ , (95, "nod û pênc")+ , (96, "nod û şeş")+ , (97, "nod û heft")+ , (98, "nod û heşt")+ , (99, "nod û neh")+ , (100, "sed")+ , (101, "sed û yek")+ , (102, "sed û du")+ , (103, "sed û sê")+ , (104, "sed û çar")+ , (105, "sed û pênc")+ , (106, "sed û şeş")+ , (107, "sed û heft")+ , (108, "sed û heşt")+ , (109, "sed û neh")+ , (110, "sed û deh")+ , (123, "sed û bîst û sê")+ , (200, "dused")+ , (300, "sêsed")+ , (321, "sêsed û bîst û yek")+ , (400, "çarsed")+ , (500, "pêncsed")+ , (600, "şeşsed")+ , (700, "heftsed")+ , (800, "heştsed")+ , (900, "nehsed")+ , (909, "nehsed û neh")+ , (990, "nehsed û nod")+ , (999, "nehsed û nod û neh")+ , (1000, "hezar")+ , (1001, "hezar û yek")+ , (1008, "hezar û heşt")+ , (1234, "hezar û dused û sî û çar")+ , (2000, "du hezar")+ , (3000, "sê hezar")+ , (4000, "çar hezar")+ , (4321, "çar hezar û sêsed û bîst û yek")+ , (5000, "pênc hezar")+ , (6000, "şeş hezar")+ , (7000, "heft hezar")+ , (8000, "heşt hezar")+ , (9000, "neh hezar")+ , (10000, "deh hezar")+ , (12345, "dwanzdeh hezar û sêsed û çil û pênc")+ , (20000, "bîst hezar")+ , (30000, "sî hezar")+ , (40000, "çil hezar")+ , (50000, "pêncî hezar")+ , (54321, "pêncî û çar hezar û sêsed û bîst û yek")+ , (60000, "şêst hezar")+ , (70000, "heftê hezar")+ , (80000, "heştê hezar")+ , (90000, "nod hezar")+ , (100000, "sed hezar")+ , (123456, "sed û bîst û sê hezar û çarsed û pêncî û şeş")+ , (200000, "dused hezar")+ , (300000, "sêsed hezar")+ , (400000, "çarsed hezar")+ , (500000, "pêncsed hezar")+ , (600000, "şeşsed hezar")+ , (654321, "şeşsed û pêncî û çar hezar û sêsed û bîst û yek")+ , (700000, "heftsed hezar")+ , (800000, "heştsed hezar")+ , (900000, "nehsed hezar")+ , (1000000, "milyon")+ , (1000001, "milyon û yek")+ , (1234567, "milyon û dused û sî û çar hezar û pêncsed û şêst û heft")+ , (2000000, "du milyon")+ , (3000000, "sê milyon")+ , (4000000, "çar milyon")+ , (5000000, "pênc milyon")+ , (6000000, "şeş milyon")+ , (7000000, "heft milyon")+ , (7654321, "heft milyon û şeşsed û pêncî û çar hezar û sêsed û bîst û yek")+ , (8000000, "heşt milyon")+ , (9000000, "neh milyon")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/KRL/TestData.hs view
@@ -0,0 +1,138 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] krl++[@ISO639-3@] krl++[@Native name@] karjala, karjal, kariela++[@English name@] Karelian+-}+module Text.Numeral.Language.KRL.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-karelian/en/krl/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "yksi")+ , (2, "kakši")+ , (3, "kolme")+ , (4, "neljjä")+ , (5, "viizi")+ , (6, "kuuǯi")+ , (7, "seiččemän")+ , (8, "kahekšan")+ , (9, "yhekšän")+ , (10, "kymmenen")+ , (11, "yksitoista")+ , (12, "kakšitoista")+ , (13, "kolmetoista")+ , (14, "neljjätoista")+ , (15, "viiztoista")+ , (16, "kuuǯitoista")+ , (17, "seiččemäntoista")+ , (18, "kahekšantoista")+ , (19, "yhekšäntoista")+ , (20, "kakšikymmendä")+ , (21, "kakšikymmendä yksi")+ , (22, "kakšikymmendä kakši")+ , (23, "kakšikymmendä kolme")+ , (24, "kakšikymmendä neljjä")+ , (25, "kakšikymmendä viizi")+ , (26, "kakšikymmendä kuuǯi")+ , (27, "kakšikymmendä seiččemän")+ , (28, "kakšikymmendä kahekšan")+ , (29, "kakšikymmendä yhekšän")+ , (30, "kolmekymmendä")+ , (31, "kolmekymmendä yksi")+ , (32, "kolmekymmendä kakši")+ , (33, "kolmekymmendä kolme")+ , (34, "kolmekymmendä neljjä")+ , (35, "kolmekymmendä viizi")+ , (36, "kolmekymmendä kuuǯi")+ , (37, "kolmekymmendä seiččemän")+ , (38, "kolmekymmendä kahekšan")+ , (39, "kolmekymmendä yhekšän")+ , (40, "neljjäkymmendä")+ , (41, "neljjäkymmendä yksi")+ , (42, "neljjäkymmendä kakši")+ , (43, "neljjäkymmendä kolme")+ , (44, "neljjäkymmendä neljjä")+ , (45, "neljjäkymmendä viizi")+ , (46, "neljjäkymmendä kuuǯi")+ , (47, "neljjäkymmendä seiččemän")+ , (48, "neljjäkymmendä kahekšan")+ , (49, "neljjäkymmendä yhekšän")+ , (50, "viizikymmendä")+ , (51, "viizikymmendä yksi")+ , (52, "viizikymmendä kakši")+ , (53, "viizikymmendä kolme")+ , (54, "viizikymmendä neljjä")+ , (55, "viizikymmendä viizi")+ , (56, "viizikymmendä kuuǯi")+ , (57, "viizikymmendä seiččemän")+ , (58, "viizikymmendä kahekšan")+ , (59, "viizikymmendä yhekšän")+ , (60, "kuuǯikymmendä")+ , (61, "kuuǯikymmendä yksi")+ , (62, "kuuǯikymmendä kakši")+ , (63, "kuuǯikymmendä kolme")+ , (64, "kuuǯikymmendä neljjä")+ , (65, "kuuǯikymmendä viizi")+ , (66, "kuuǯikymmendä kuuǯi")+ , (67, "kuuǯikymmendä seiččemän")+ , (68, "kuuǯikymmendä kahekšan")+ , (69, "kuuǯikymmendä yhekšän")+ , (70, "seiččemänkymmendä")+ , (71, "seiččemänkymmendä yksi")+ , (72, "seiččemänkymmendä kakši")+ , (73, "seiččemänkymmendä kolme")+ , (74, "seiččemänkymmendä neljjä")+ , (75, "seiččemänkymmendä viizi")+ , (76, "seiččemänkymmendä kuuǯi")+ , (77, "seiččemänkymmendä seiččemän")+ , (78, "seiččemänkymmendä kahekšan")+ , (79, "seiččemänkymmendä yhekšän")+ , (80, "kahekšankymmendä")+ , (81, "kahekšankymmendä yksi")+ , (82, "kahekšankymmendä kakši")+ , (83, "kahekšankymmendä kolme")+ , (84, "kahekšankymmendä neljjä")+ , (85, "kahekšankymmendä viizi")+ , (86, "kahekšankymmendä kuuǯi")+ , (87, "kahekšankymmendä seiččemän")+ , (88, "kahekšankymmendä kahekšan")+ , (89, "kahekšankymmendä yhekšän")+ , (90, "yhekšänkymmendä")+ , (91, "yhekšänkymmendä yksi")+ , (92, "yhekšänkymmendä kakši")+ , (93, "yhekšänkymmendä kolme")+ , (94, "yhekšänkymmendä neljjä")+ , (95, "yhekšänkymmendä viizi")+ , (96, "yhekšänkymmendä kuuǯi")+ , (97, "yhekšänkymmendä seiččemän")+ , (98, "yhekšänkymmendä kahekšan")+ , (99, "yhekšänkymmendä yhekšän")+ , (100, "šada")+ ]+ )+ ]
− src-test/Text/Numeral/Language/LA/TestData.hs
@@ -1,148 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] la--[@ISO639-2B@] lat--[@ISO639-3@] lat--[@Native name@] Latine--[@English name@] Latin--}--module Text.Numeral.Language.LA.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.informalmusic.com/latinsoc/latnum.html- http://www.sf.airnet.ne.jp/~ts/language/number/latin.html--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "nihil")- , (1, "ūnus")- , (2, "duo")- , (3, "trēs")- , (4, "quattuor")- , (5, "quīnque")- , (6, "sex")- , (7, "septem")- , (8, "octō")- , (9, "novem")- , (10, "decem")- , (11, "ūndecim")- , (12, "duodecim")- , (13, "trēdecim")- , (14, "quattuordecim")- , (15, "quīndecim")- , (16, "sēdecim")- , (17, "septendecim")- , (18, "duodēvīgintī")- , (19, "ūndēvīgintī")- , (20, "vīgintī")- , (21, "vīgintī ūnus")- , (22, "vīgintī duo")- , (23, "vīgintī trēs")- , (24, "vīgintī quattuor")- , (25, "vīgintī quīnque")- , (26, "vīgintī sex")- , (27, "vīgintī septem")- , (28, "duodētrīgintā")- , (29, "ūndētrīgintā")- , (30, "trīgintā")- , (31, "trīgintā ūnus")- , (32, "trīgintā duo")- , (33, "trīgintā trēs")- , (34, "trīgintā quattuor")- , (35, "trīgintā quīnque")- , (36, "trīgintā sex")- , (37, "trīgintā septem")- , (38, "duodēquadrāgintā")- , (39, "ūndēquadrāgintā")- , (40, "quadrāgintā")- , (41, "quadrāgintā ūnus")- , (42, "quadrāgintā duo")- , (43, "quadrāgintā trēs")- , (44, "quadrāgintā quattuor")- , (45, "quadrāgintā quīnque")- , (46, "quadrāgintā sex")- , (47, "quadrāgintā septem")- , (48, "duodēquīnquāgintā")- , (49, "ūndēquīnquāgintā")- , (50, "quīnquāgintā")- , (51, "quīnquāgintā ūnus")- , (52, "quīnquāgintā duo")- , (53, "quīnquāgintā trēs")- , (54, "quīnquāgintā quattuor")- , (55, "quīnquāgintā quīnque")- , (56, "quīnquāgintā sex")- , (57, "quīnquāgintā septem")- , (58, "duodēsexāgintā")- , (59, "ūndēsexāgintā")- , (60, "sexāgintā")- , (61, "sexāgintā ūnus")- , (62, "sexāgintā duo")- , (63, "sexāgintā trēs")- , (64, "sexāgintā quattuor")- , (65, "sexāgintā quīnque")- , (66, "sexāgintā sex")- , (67, "sexāgintā septem")- , (68, "duodēseptuāgintā")- , (69, "ūndēseptuāgintā")- , (70, "septuāgintā")- , (71, "septuāgintā ūnus")- , (72, "septuāgintā duo")- , (73, "septuāgintā trēs")- , (74, "septuāgintā quattuor")- , (75, "septuāgintā quīnque")- , (76, "septuāgintā sex")- , (77, "septuāgintā septem")- , (78, "duodēoctōgintā")- , (79, "ūndēoctōgintā")- , (80, "octōgintā")- , (81, "octōgintā ūnus")- , (82, "octōgintā duo")- , (83, "octōgintā trēs")- , (84, "octōgintā quattuor")- , (85, "octōgintā quīnque")- , (86, "octōgintā sex")- , (87, "octōgintā septem")- , (88, "duodēnōnāgintā")- , (89, "ūndēnōnāgintā")- , (90, "nōnāgintā")- , (91, "nōnāgintā ūnus")- , (92, "nōnāgintā duo")- , (93, "nōnāgintā trēs")- , (94, "nōnāgintā quattuor")- , (95, "nōnāgintā quīnque")- , (96, "nōnāgintā sex")- , (97, "nōnāgintā septem")- , (98, "duodēcentum")- , (99, "ūndēcentum")- , (100, "centum")- ]- )- ]
+ src-test/Text/Numeral/Language/LAT/TestData.hs view
@@ -0,0 +1,141 @@+{-|+[@ISO639-1@] la++[@ISO639-2B@] lat++[@ISO639-3@] lat++[@Native name@] Latine++[@English name@] Latin+-}++module Text.Numeral.Language.LAT.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.informalmusic.com/latinsoc/latnum.html+ http://www.sf.airnet.ne.jp/~ts/language/number/latin.html+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nihil")+ , (1, "ūnus")+ , (2, "duo")+ , (3, "trēs")+ , (4, "quattuor")+ , (5, "quīnque")+ , (6, "sex")+ , (7, "septem")+ , (8, "octō")+ , (9, "novem")+ , (10, "decem")+ , (11, "ūndecim")+ , (12, "duodecim")+ , (13, "trēdecim")+ , (14, "quattuordecim")+ , (15, "quīndecim")+ , (16, "sēdecim")+ , (17, "septendecim")+ , (18, "duodēvīgintī")+ , (19, "ūndēvīgintī")+ , (20, "vīgintī")+ , (21, "vīgintī ūnus")+ , (22, "vīgintī duo")+ , (23, "vīgintī trēs")+ , (24, "vīgintī quattuor")+ , (25, "vīgintī quīnque")+ , (26, "vīgintī sex")+ , (27, "vīgintī septem")+ , (28, "duodētrīgintā")+ , (29, "ūndētrīgintā")+ , (30, "trīgintā")+ , (31, "trīgintā ūnus")+ , (32, "trīgintā duo")+ , (33, "trīgintā trēs")+ , (34, "trīgintā quattuor")+ , (35, "trīgintā quīnque")+ , (36, "trīgintā sex")+ , (37, "trīgintā septem")+ , (38, "duodēquadrāgintā")+ , (39, "ūndēquadrāgintā")+ , (40, "quadrāgintā")+ , (41, "quadrāgintā ūnus")+ , (42, "quadrāgintā duo")+ , (43, "quadrāgintā trēs")+ , (44, "quadrāgintā quattuor")+ , (45, "quadrāgintā quīnque")+ , (46, "quadrāgintā sex")+ , (47, "quadrāgintā septem")+ , (48, "duodēquīnquāgintā")+ , (49, "ūndēquīnquāgintā")+ , (50, "quīnquāgintā")+ , (51, "quīnquāgintā ūnus")+ , (52, "quīnquāgintā duo")+ , (53, "quīnquāgintā trēs")+ , (54, "quīnquāgintā quattuor")+ , (55, "quīnquāgintā quīnque")+ , (56, "quīnquāgintā sex")+ , (57, "quīnquāgintā septem")+ , (58, "duodēsexāgintā")+ , (59, "ūndēsexāgintā")+ , (60, "sexāgintā")+ , (61, "sexāgintā ūnus")+ , (62, "sexāgintā duo")+ , (63, "sexāgintā trēs")+ , (64, "sexāgintā quattuor")+ , (65, "sexāgintā quīnque")+ , (66, "sexāgintā sex")+ , (67, "sexāgintā septem")+ , (68, "duodēseptuāgintā")+ , (69, "ūndēseptuāgintā")+ , (70, "septuāgintā")+ , (71, "septuāgintā ūnus")+ , (72, "septuāgintā duo")+ , (73, "septuāgintā trēs")+ , (74, "septuāgintā quattuor")+ , (75, "septuāgintā quīnque")+ , (76, "septuāgintā sex")+ , (77, "septuāgintā septem")+ , (78, "duodēoctōgintā")+ , (79, "ūndēoctōgintā")+ , (80, "octōgintā")+ , (81, "octōgintā ūnus")+ , (82, "octōgintā duo")+ , (83, "octōgintā trēs")+ , (84, "octōgintā quattuor")+ , (85, "octōgintā quīnque")+ , (86, "octōgintā sex")+ , (87, "octōgintā septem")+ , (88, "duodēnōnāgintā")+ , (89, "ūndēnōnāgintā")+ , (90, "nōnāgintā")+ , (91, "nōnāgintā ūnus")+ , (92, "nōnāgintā duo")+ , (93, "nōnāgintā trēs")+ , (94, "nōnāgintā quattuor")+ , (95, "nōnāgintā quīnque")+ , (96, "nōnāgintā sex")+ , (97, "nōnāgintā septem")+ , (98, "duodēcentum")+ , (99, "ūndēcentum")+ , (100, "centum")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/LAV/TestData.hs view
@@ -0,0 +1,239 @@+{-|+[@ISO639-1@] lv++[@ISO639-2@] lav++[@ISO639-3@] lav++[@Native name@] latviešu valoda++[@English name@] Latvian+-}+module Text.Numeral.Language.LAV.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-latvian/en/lav/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nulle")+ , (1, "viens")+ , (2, "divi")+ , (3, "trīs")+ , (4, "četri")+ , (5, "pieci")+ , (6, "seši")+ , (7, "septiņi")+ , (8, "astoņi")+ , (9, "deviņi")+ , (10, "desmit")+ , (11, "vienpadsmit")+ , (12, "divpadsmit")+ , (13, "trīspadsmit")+ , (14, "četrpadsmit")+ , (15, "piecpadsmit")+ , (16, "sešpadsmit")+ , (17, "septiņpadsmit")+ , (18, "astoņpadsmit")+ , (19, "deviņpadsmit")+ , (20, "divdesmit")+ , (21, "divdesmit viens")+ , (22, "divdesmit divi")+ , (23, "divdesmit trīs")+ , (24, "divdesmit četri")+ , (25, "divdesmit pieci")+ , (26, "divdesmit seši")+ , (27, "divdesmit septiņi")+ , (28, "divdesmit astoņi")+ , (29, "divdesmit deviņi")+ , (30, "trīsdesmit")+ , (31, "trīsdesmit viens")+ , (32, "trīsdesmit divi")+ , (33, "trīsdesmit trīs")+ , (34, "trīsdesmit četri")+ , (35, "trīsdesmit pieci")+ , (36, "trīsdesmit seši")+ , (37, "trīsdesmit septiņi")+ , (38, "trīsdesmit astoņi")+ , (39, "trīsdesmit deviņi")+ , (40, "četrdesmit")+ , (41, "četrdesmit viens")+ , (42, "četrdesmit divi")+ , (43, "četrdesmit trīs")+ , (44, "četrdesmit četri")+ , (45, "četrdesmit pieci")+ , (46, "četrdesmit seši")+ , (47, "četrdesmit septiņi")+ , (48, "četrdesmit astoņi")+ , (49, "četrdesmit deviņi")+ , (50, "piecdesmit")+ , (51, "piecdesmit viens")+ , (52, "piecdesmit divi")+ , (53, "piecdesmit trīs")+ , (54, "piecdesmit četri")+ , (55, "piecdesmit pieci")+ , (56, "piecdesmit seši")+ , (57, "piecdesmit septiņi")+ , (58, "piecdesmit astoņi")+ , (59, "piecdesmit deviņi")+ , (60, "sešdesmit")+ , (61, "sešdesmit viens")+ , (62, "sešdesmit divi")+ , (63, "sešdesmit trīs")+ , (64, "sešdesmit četri")+ , (65, "sešdesmit pieci")+ , (66, "sešdesmit seši")+ , (67, "sešdesmit septiņi")+ , (68, "sešdesmit astoņi")+ , (69, "sešdesmit deviņi")+ , (70, "septiņdesmit")+ , (71, "septiņdesmit viens")+ , (72, "septiņdesmit divi")+ , (73, "septiņdesmit trīs")+ , (74, "septiņdesmit četri")+ , (75, "septiņdesmit pieci")+ , (76, "septiņdesmit seši")+ , (77, "septiņdesmit septiņi")+ , (78, "septiņdesmit astoņi")+ , (79, "septiņdesmit deviņi")+ , (80, "astoņdesmit")+ , (81, "astoņdesmit viens")+ , (82, "astoņdesmit divi")+ , (83, "astoņdesmit trīs")+ , (84, "astoņdesmit četri")+ , (85, "astoņdesmit pieci")+ , (86, "astoņdesmit seši")+ , (87, "astoņdesmit septiņi")+ , (88, "astoņdesmit astoņi")+ , (89, "astoņdesmit deviņi")+ , (90, "deviņdesmit")+ , (91, "deviņdesmit viens")+ , (92, "deviņdesmit divi")+ , (93, "deviņdesmit trīs")+ , (94, "deviņdesmit četri")+ , (95, "deviņdesmit pieci")+ , (96, "deviņdesmit seši")+ , (97, "deviņdesmit septiņi")+ , (98, "deviņdesmit astoņi")+ , (99, "deviņdesmit deviņi")+ , (100, "simts")+ , (101, "simt viens")+ , (102, "simt divi")+ , (103, "simt trīs")+ , (104, "simt četri")+ , (105, "simt pieci")+ , (106, "simt seši")+ , (107, "simt septiņi")+ , (108, "simt astoņi")+ , (109, "simt deviņi")+ , (110, "simt desmit")+ , (123, "simt divdesmit trīs")+ , (200, "divsimt")+ , (300, "trīssimt")+ , (321, "trīssimt divdesmit viens")+ , (400, "četrsimt")+ , (500, "piecsimt")+ , (600, "sešsimt")+ , (700, "septiņsimt")+ , (800, "astoņsimt")+ , (900, "deviņsimt")+ , (909, "deviņsimt deviņi")+ , (990, "deviņsimt deviņdesmit")+ , (999, "deviņsimt deviņdesmit deviņi")+ , (1000, "tūkstoš")+ , (1001, "tūkstoš viens")+ , (1008, "tūkstoš astoņi")+ , (1234, "tūkstoš divsimt trīsdesmit četri")+ , (2000, "divtūkstoši")+ , (3000, "trīstūkstoši")+ , (4000, "četrtūkstoši")+ , (4321, "četrtūkstoši trīssimt divdesmit viens")+ , (5000, "piectūkstoši")+ , (6000, "seštūkstoši")+ , (7000, "septiņtūkstoši")+ , (8000, "astoņtūkstoši")+ , (9000, "deviņtūkstoši")+ , (10000, "desmit tūkstošu")+ , (12345, "divpadsmit tūkstoši trīssimt četrdesmit pieci")+ , (20000, "divdesmit tūkstošu")+ , (30000, "trīsdesmit tūkstošu")+ , (40000, "četrdesmit tūkstošu")+ , (50000, "piecdesmit tūkstošu")+ , (54321, "piecdesmit četrtūkstoši trīssimt divdesmit viens")+ , (60000, "sešdesmit tūkstošu")+ , (70000, "septiņdesmit tūkstošu")+ , (80000, "astoņdesmit tūkstošu")+ , (90000, "deviņdesmit tūkstošu")+ , (100000, "simt tūkstošu")+ , (123456, "simt divdesmit trīstūkstoši četrsimt piecdesmit seši")+ , (200000, "divsimt tūkstošu")+ , (300000, "trīssimt tūkstošu")+ , (400000, "četrsimt tūkstošu")+ , (500000, "piecsimt tūkstošu")+ , (600000, "sešsimt tūkstošu")+ , (654321, "sešsimt piecdesmit četrtūkstoši trīssimt divdesmit viens")+ , (700000, "septiņsimt tūkstošu")+ , (800000, "astoņsimt tūkstošu")+ , (900000, "deviņsimt tūkstošu")+ , (1000000, "miljons")+ , (1000001, "miljons viens")+ , (1234567, "miljons divsimt trīsdesmit četrtūkstoši piecsimt sešdesmit septiņi")+ , (2000000, "divi miljonu")+ , (3000000, "trīs miljonu")+ , (4000000, "četri miljonu")+ , (5000000, "pieci miljonu")+ , (6000000, "seši miljonu")+ , (7000000, "septiņi miljonu")+ , (7654321, "septiņi miljonu sešsimt piecdesmit četrtūkstoši trīssimt divdesmit viens")+ , (8000000, "astoņi miljonu")+ , (9000000, "deviņi miljonu")+ , (1000000000, "miljards")+ , (1000000001, "miljards viens")+ , (2000000000, "divi miljardu")+ , (3000000000, "trīs miljardu")+ , (4000000000, "četri miljardu")+ , (5000000000, "pieci miljardu")+ , (6000000000, "seši miljardu")+ , (7000000000, "septiņi miljardu")+ , (8000000000, "astoņi miljardu")+ , (9000000000, "deviņi miljardu")+ , (1000000000000, "triljons")+ , (1000000000001, "triljons viens")+ , (2000000000000, "divi triljonu")+ , (3000000000000, "trīs triljonu")+ , (4000000000000, "četri triljonu")+ , (5000000000000, "pieci triljonu")+ , (6000000000000, "seši triljonu")+ , (7000000000000, "septiņi triljonu")+ , (8000000000000, "astoņi triljonu")+ , (9000000000000, "deviņi triljonu")+ , (1000000000000000, "kvadriljons")+ , (1000000000000001, "kvadriljons viens")+ , (2000000000000000, "divi kvadriljonu")+ , (3000000000000000, "trīs kvadriljonu")+ , (4000000000000000, "četri kvadriljonu")+ , (5000000000000000, "pieci kvadriljonu")+ , (6000000000000000, "seši kvadriljonu")+ , (7000000000000000, "septiņi kvadriljonu")+ , (8000000000000000, "astoņi kvadriljonu")+ , (9000000000000000, "deviņi kvadriljonu")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/LIN/TestData.hs view
@@ -0,0 +1,175 @@+{-|+[@ISO639-1@] ln++[@ISO639-2@] lin++[@ISO639-3@] lin++[@Native name@] Ngala++[@English name@] Lingala+-}+module Text.Numeral.Language.LIN.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-lingala/en/lin/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "libungutulu")+ , (1, "mókó")+ , (2, "míbalé")+ , (3, "mísáto")+ , (4, "mínei")+ , (5, "mítáno")+ , (6, "motóba")+ , (7, "sámbó")+ , (8, "mwámbe")+ , (9, "libwá")+ , (10, "zómi")+ , (11, "zómi na mókó")+ , (12, "zómi na míbalé")+ , (13, "zómi na mísáto")+ , (14, "zómi na mínei")+ , (15, "zómi na mítáno")+ , (16, "zómi na motóba")+ , (17, "zómi na sámbó")+ , (18, "zómi na mwámbe")+ , (19, "zómi na libwá")+ , (20, "ntúkú míbalé")+ , (21, "ntúkú míbalé na mókó")+ , (22, "ntúkú míbalé na míbalé")+ , (23, "ntúkú míbalé na mísáto")+ , (24, "ntúkú míbalé na mínei")+ , (25, "ntúkú míbalé na mítáno")+ , (26, "ntúkú míbalé na motóba")+ , (27, "ntúkú míbalé na sámbó")+ , (28, "ntúkú míbalé na mwámbe")+ , (29, "ntúkú míbalé na libwá")+ , (30, "ntúkú mísáto")+ , (31, "ntúkú mísáto na mókó")+ , (32, "ntúkú mísáto na míbalé")+ , (33, "ntúkú mísáto na mísáto")+ , (34, "ntúkú mísáto na mínei")+ , (35, "ntúkú mísáto na mítáno")+ , (36, "ntúkú mísáto na motóba")+ , (37, "ntúkú mísáto na sámbó")+ , (38, "ntúkú mísáto na mwámbe")+ , (39, "ntúkú mísáto na libwá")+ , (40, "ntúkú mínei")+ , (41, "ntúkú mínei na mókó")+ , (42, "ntúkú mínei na míbalé")+ , (43, "ntúkú mínei na mísáto")+ , (44, "ntúkú mínei na mínei")+ , (45, "ntúkú mínei na mítáno")+ , (46, "ntúkú mínei na motóba")+ , (47, "ntúkú mínei na sámbó")+ , (48, "ntúkú mínei na mwámbe")+ , (49, "ntúkú mínei na libwá")+ , (50, "ntúkú mítáno")+ , (51, "ntúkú mítáno na mókó")+ , (52, "ntúkú mítáno na míbalé")+ , (53, "ntúkú mítáno na mísáto")+ , (54, "ntúkú mítáno na mínei")+ , (55, "ntúkú mítáno na mítáno")+ , (56, "ntúkú mítáno na motóba")+ , (57, "ntúkú mítáno na sámbó")+ , (58, "ntúkú mítáno na mwámbe")+ , (59, "ntúkú mítáno na libwá")+ , (60, "ntúkú motóba")+ , (61, "ntúkú motóba na mókó")+ , (62, "ntúkú motóba na míbalé")+ , (63, "ntúkú motóba na mísáto")+ , (64, "ntúkú motóba na mínei")+ , (65, "ntúkú motóba na mítáno")+ , (66, "ntúkú motóba na motóba")+ , (67, "ntúkú motóba na sámbó")+ , (68, "ntúkú motóba na mwámbe")+ , (69, "ntúkú motóba na libwá")+ , (70, "ntúkú sámbó")+ , (71, "ntúkú sámbó na mókó")+ , (72, "ntúkú sámbó na míbalé")+ , (73, "ntúkú sámbó na mísáto")+ , (74, "ntúkú sámbó na mínei")+ , (75, "ntúkú sámbó na mítáno")+ , (76, "ntúkú sámbó na motóba")+ , (77, "ntúkú sámbó na sámbó")+ , (78, "ntúkú sámbó na mwámbe")+ , (79, "ntúkú sámbó na libwá")+ , (80, "ntúkú mwámbe")+ , (81, "ntúkú mwámbe na mókó")+ , (82, "ntúkú mwámbe na míbalé")+ , (83, "ntúkú mwámbe na mísáto")+ , (84, "ntúkú mwámbe na mínei")+ , (85, "ntúkú mwámbe na mítáno")+ , (86, "ntúkú mwámbe na motóba")+ , (87, "ntúkú mwámbe na sámbó")+ , (88, "ntúkú mwámbe na mwámbe")+ , (89, "ntúkú mwámbe na libwá")+ , (90, "ntúkú libwá")+ , (91, "ntúkú libwá na mókó")+ , (92, "ntúkú libwá na míbalé")+ , (93, "ntúkú libwá na mísáto")+ , (94, "ntúkú libwá na mínei")+ , (95, "ntúkú libwá na mítáno")+ , (96, "ntúkú libwá na motóba")+ , (97, "ntúkú libwá na sámbó")+ , (98, "ntúkú libwá na mwámbe")+ , (99, "ntúkú libwá na libwá")+ , (100, "nkámá")+ , (101, "nkámá mókó na mókó")+ , (102, "nkámá mókó na míbalé")+ , (103, "nkámá mókó na mísáto")+ , (104, "nkámá mókó na mínei")+ , (105, "nkámá mókó na mítáno")+ , (106, "nkámá mókó na motóba")+ , (107, "nkámá mókó na sámbó")+ , (108, "nkámá mókó na mwámbe")+ , (109, "nkámá mókó na libwá")+ , (110, "nkámá mókó na zómi")+ , (123, "nkámá mókó na ntúkú míbalé na mísáto")+ , (200, "nkámá míbalé")+ , (300, "nkámá mísáto")+ , (321, "nkámá mísáto na ntúkú míbalé na mókó")+ , (400, "nkámá mínei")+ , (500, "nkámá mítáno")+ , (600, "nkámá motóba")+ , (700, "nkámá sámbó")+ , (800, "nkámá mwámbe")+ , (900, "nkámá libwá")+ , (909, "nkámá libwá na libwá")+ , (990, "nkámá libwá na ntúkú libwá")+ , (999, "nkámá libwá na ntúkú libwá na libwá")+ , (1000, "nkóto")+ , (1001, "nkóto mókó na mókó")+ , (1008, "nkóto mókó na mwámbe")+ , (1234, "nkóto mókó na nkámá míbalé na ntúkú mísáto na mínei")+ , (2000, "nkóto míbalé")+ , (3000, "nkóto mísáto")+ , (4000, "nkóto mínei")+ , (4321, "nkóto mínei na nkámá mísáto na ntúkú míbalé na mókó")+ , (5000, "nkóto mítáno")+ , (6000, "nkóto motóba")+ , (7000, "nkóto sámbó")+ , (8000, "nkóto mwámbe")+ , (9000, "nkóto libwá")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/LIT/TestData.hs view
@@ -0,0 +1,291 @@+{-|+[@ISO639-1@] lt++[@ISO639-2@] lit++[@ISO639-3@] lit++[@Native name@] lietuvių kalba++[@English name@] Lithuanian+-}+module Text.Numeral.Language.LIT.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Prelude ( Integral, (+) )+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-lithuanian/en/lit/+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "nulis")+ , (1, "vienas")+ , (2, "du")+ , (3, "trys")+ , (4, "keturi")+ , (5, "penki")+ , (6, "šeši")+ , (7, "septyni")+ , (8, "aštuoni")+ , (9, "devyni")+ , (10, "dešimt")+ , (11, "vienuolika")+ , (12, "dvylika")+ , (13, "trylika")+ , (14, "keturiolika")+ , (15, "penkiolika")+ , (16, "šešiolika")+ , (17, "septyniolika")+ , (18, "aštuoniolika")+ , (19, "devyniolika")+ , (20, "dvidešimt")+ , (21, "dvidešimt vienas")+ , (22, "dvidešimt du")+ , (23, "dvidešimt trys")+ , (24, "dvidešimt keturi")+ , (25, "dvidešimt penki")+ , (26, "dvidešimt šeši")+ , (27, "dvidešimt septyni")+ , (28, "dvidešimt aštuoni")+ , (29, "dvidešimt devyni")+ , (30, "trisdešimt")+ , (31, "trisdešimt vienas")+ , (32, "trisdešimt du")+ , (33, "trisdešimt trys")+ , (34, "trisdešimt keturi")+ , (35, "trisdešimt penki")+ , (36, "trisdešimt šeši")+ , (37, "trisdešimt septyni")+ , (38, "trisdešimt aštuoni")+ , (39, "trisdešimt devyni")+ , (40, "keturiasdešimt")+ , (41, "keturiasdešimt vienas")+ , (42, "keturiasdešimt du")+ , (43, "keturiasdešimt trys")+ , (44, "keturiasdešimt keturi")+ , (45, "keturiasdešimt penki")+ , (46, "keturiasdešimt šeši")+ , (47, "keturiasdešimt septyni")+ , (48, "keturiasdešimt aštuoni")+ , (49, "keturiasdešimt devyni")+ , (50, "penkiasdešimt")+ , (51, "penkiasdešimt vienas")+ , (52, "penkiasdešimt du")+ , (53, "penkiasdešimt trys")+ , (54, "penkiasdešimt keturi")+ , (55, "penkiasdešimt penki")+ , (56, "penkiasdešimt šeši")+ , (57, "penkiasdešimt septyni")+ , (58, "penkiasdešimt aštuoni")+ , (59, "penkiasdešimt devyni")+ , (60, "šešiasdešimt")+ , (61, "šešiasdešimt vienas")+ , (62, "šešiasdešimt du")+ , (63, "šešiasdešimt trys")+ , (64, "šešiasdešimt keturi")+ , (65, "šešiasdešimt penki")+ , (66, "šešiasdešimt šeši")+ , (67, "šešiasdešimt septyni")+ , (68, "šešiasdešimt aštuoni")+ , (69, "šešiasdešimt devyni")+ , (70, "septyniasdešimt")+ , (71, "septyniasdešimt vienas")+ , (72, "septyniasdešimt du")+ , (73, "septyniasdešimt trys")+ , (74, "septyniasdešimt keturi")+ , (75, "septyniasdešimt penki")+ , (76, "septyniasdešimt šeši")+ , (77, "septyniasdešimt septyni")+ , (78, "septyniasdešimt aštuoni")+ , (79, "septyniasdešimt devyni")+ , (80, "aštuoniasdešimt")+ , (81, "aštuoniasdešimt vienas")+ , (82, "aštuoniasdešimt du")+ , (83, "aštuoniasdešimt trys")+ , (84, "aštuoniasdešimt keturi")+ , (85, "aštuoniasdešimt penki")+ , (86, "aštuoniasdešimt šeši")+ , (87, "aštuoniasdešimt septyni")+ , (88, "aštuoniasdešimt aštuoni")+ , (89, "aštuoniasdešimt devyni")+ , (90, "devyniasdešimt")+ , (91, "devyniasdešimt vienas")+ , (92, "devyniasdešimt du")+ , (93, "devyniasdešimt trys")+ , (94, "devyniasdešimt keturi")+ , (95, "devyniasdešimt penki")+ , (96, "devyniasdešimt šeši")+ , (97, "devyniasdešimt septyni")+ , (98, "devyniasdešimt aštuoni")+ , (99, "devyniasdešimt devyni")+ , (100, "šimtas")+ , (101, "šimtas vienas")+ , (102, "šimtas du")+ , (103, "šimtas trys")+ , (104, "šimtas keturi")+ , (105, "šimtas penki")+ , (106, "šimtas šeši")+ , (107, "šimtas septyni")+ , (108, "šimtas aštuoni")+ , (109, "šimtas devyni")+ , (110, "šimtas dešimt")+ , (123, "šimtas dvidešimt trys")+ , (200, "du šimtai")+ , (300, "trys šimtai")+ , (321, "trys šimtai dvidešimt vienas")+ , (400, "keturi šimtai")+ , (500, "penki šimtai")+ , (600, "šeši šimtai")+ , (700, "septyni šimtai")+ , (800, "aštuoni šimtai")+ , (900, "devyni šimtai")+ , (909, "devyni šimtai devyni")+ , (990, "devyni šimtai devyniasdešimt")+ , (999, "devyni šimtai devyniasdešimt devyni")+ , (1000, "tūkstantis")+ , (1001, "tūkstantis vienas")+ , (1008, "tūkstantis aštuoni")+ , (1234, "tūkstantis du šimtai trisdešimt keturi")+ , (2000, "du tūkstančiai")+ , (3000, "trys tūkstančiai")+ , (4000, "keturi tūkstančiai")+ , (4321, "keturi tūkstančiai trys šimtai dvidešimt vienas")+ , (5000, "penki tūkstančiai")+ , (6000, "šeši tūkstančiai")+ , (7000, "septyni tūkstančiai")+ , (8000, "aštuoni tūkstančiai")+ , (9000, "devyni tūkstančiai")+ , (10000, "dešimt tūkstančiai")+ , (12345, "dvylika tūkstančiai trys šimtai keturiasdešimt penki")+ , (20000, "dvidešimt tūkstančiai")+ , (30000, "trisdešimt tūkstančiai")+ , (40000, "keturiasdešimt tūkstančiai")+ , (50000, "penkiasdešimt tūkstančiai")+ , (54321, "penkiasdešimt keturi tūkstančiai trys šimtai dvidešimt vienas")+ , (60000, "šešiasdešimt tūkstančiai")+ , (70000, "septyniasdešimt tūkstančiai")+ , (80000, "aštuoniasdešimt tūkstančiai")+ , (90000, "devyniasdešimt tūkstančiai")+ , (100000, "šimtas tūkstančiai")+ , (123456, "šimtas dvidešimt trys tūkstančiai keturi šimtai penkiasdešimt šeši")+ , (200000, "du šimtai tūkstančiai")+ , (300000, "trys šimtai tūkstančiai")+ , (400000, "keturi šimtai tūkstančiai")+ , (500000, "penki šimtai tūkstančiai")+ , (600000, "šeši šimtai tūkstančiai")+ , (654321, "šeši šimtai penkiasdešimt keturi tūkstančiai trys šimtai dvidešimt vienas")+ , (700000, "septyni šimtai tūkstančiai")+ , (800000, "aštuoni šimtai tūkstančiai")+ , (900000, "devyni šimtai tūkstančiai")+ , (1000000, "milijonas")+ , (1000001, "milijonas vienas")+ , (1234567, "milijonas du šimtai trisdešimt keturi tūkstančiai penki šimtai šešiasdešimt septyni")+ , (2000000, "du milijonai")+ , (3000000, "trys milijonai")+ , (4000000, "keturi milijonai")+ , (5000000, "penki milijonai")+ , (6000000, "šeši milijonai")+ , (7000000, "septyni milijonai")+ , (7654321, "septyni milijonai šeši šimtai penkiasdešimt keturi tūkstančiai trys šimtai dvidešimt vienas")+ , (8000000, "aštuoni milijonai")+ , (9000000, "devyni milijonai")+ , (dec 9, "milijardas")+ , (dec 9 + 1, "milijardas vienas")+ , (2 * dec 9, "du milijardai")+ , (3 * dec 9, "trys milijardai")+ , (4 * dec 9, "keturi milijardai")+ , (5 * dec 9, "penki milijardai")+ , (6 * dec 9, "šeši milijardai")+ , (7 * dec 9, "septyni milijardai")+ , (8 * dec 9, "aštuoni milijardai")+ , (9 * dec 9, "devyni milijardai")+ , (dec 12, "trilijonas")+ , (dec 12 + 1, "trilijonas vienas")+ , (2 * dec 12, "du trilijonai")+ , (3 * dec 12, "trys trilijonai")+ , (4 * dec 12, "keturi trilijonai")+ , (5 * dec 12, "penki trilijonai")+ , (6 * dec 12, "šeši trilijonai")+ , (7 * dec 12, "septyni trilijonai")+ , (8 * dec 12, "aštuoni trilijonai")+ , (9 * dec 12, "devyni trilijonai")+ , (dec 15, "kvadrilijonas")+ , (dec 15 + 1, "kvadrilijonas vienas")+ , (2 * dec 15, "du kvadrilijonai")+ , (3 * dec 15, "trys kvadrilijonai")+ , (4 * dec 15, "keturi kvadrilijonai")+ , (5 * dec 15, "penki kvadrilijonai")+ , (6 * dec 15, "šeši kvadrilijonai")+ , (7 * dec 15, "septyni kvadrilijonai")+ , (8 * dec 15, "aštuoni kvadrilijonai")+ , (9 * dec 15, "devyni kvadrilijonai")+ , (dec 18, "kvintilijonas")+ , (dec 18 + 1, "kvintilijonas vienas")+ , (2 * dec 18, "du kvintilijonai")+ , (3 * dec 18, "trys kvintilijonai")+ , (4 * dec 18, "keturi kvintilijonai")+ , (5 * dec 18, "penki kvintilijonai")+ , (6 * dec 18, "šeši kvintilijonai")+ , (7 * dec 18, "septyni kvintilijonai")+ , (8 * dec 18, "aštuoni kvintilijonai")+ , (9 * dec 18, "devyni kvintilijonai")+ , (dec 21, "sikstilijonas")+ , (dec 21 + 1, "sikstilijonas vienas")+ , (2 * dec 21, "du sikstilijonai")+ , (3 * dec 21, "trys sikstilijonai")+ , (4 * dec 21, "keturi sikstilijonai")+ , (5 * dec 21, "penki sikstilijonai")+ , (6 * dec 21, "šeši sikstilijonai")+ , (7 * dec 21, "septyni sikstilijonai")+ , (8 * dec 21, "aštuoni sikstilijonai")+ , (9 * dec 21, "devyni sikstilijonai")+ , (dec 24, "septilijonas")+ , (dec 24 + 1, "septilijonas vienas")+ , (2 * dec 24, "du septilijonai")+ , (3 * dec 24, "trys septilijonai")+ , (4 * dec 24, "keturi septilijonai")+ , (5 * dec 24, "penki septilijonai")+ , (6 * dec 24, "šeši septilijonai")+ , (7 * dec 24, "septyni septilijonai")+ , (8 * dec 24, "aštuoni septilijonai")+ , (9 * dec 24, "devyni septilijonai")+ , (dec 27, "oktilijonas")+ , (dec 27 + 1, "oktilijonas vienas")+ , (2 * dec 27, "du oktilijonai")+ , (3 * dec 27, "trys oktilijonai")+ , (4 * dec 27, "keturi oktilijonai")+ , (5 * dec 27, "penki oktilijonai")+ , (6 * dec 27, "šeši oktilijonai")+ , (7 * dec 27, "septyni oktilijonai")+ , (8 * dec 27, "aštuoni oktilijonai")+ , (9 * dec 27, "devyni oktilijonai")+ , (dec 30, "naintilijonas")+ , (dec 30 + 1, "naintilijonas vienas")+ , (2 * dec 30, "du naintilijonai")+ , (3 * dec 30, "trys naintilijonai")+ , (4 * dec 30, "keturi naintilijonai")+ , (5 * dec 30, "penki naintilijonai")+ , (6 * dec 30, "šeši naintilijonai")+ , (7 * dec 30, "septyni naintilijonai")+ , (8 * dec 30, "aštuoni naintilijonai")+ , (9 * dec 30, "devyni naintilijonai")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/LIV/TestData.hs view
@@ -0,0 +1,209 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] liv++[@Native name@] līvõ kēļ++[@English name@] Livonian+-}+module Text.Numeral.Language.LIV.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-livonian/en/liv/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "null")+ , (1, "ikš")+ , (2, "kakš")+ , (3, "kuolm")+ , (4, "nēļa")+ , (5, "vīž")+ , (6, "kūž")+ , (7, "seis")+ , (8, "kōdõks")+ , (9, "īdõks")+ , (10, "kim")+ , (11, "ikštuoistõn")+ , (12, "kakštuoistõn")+ , (13, "kuolmtuoistõn")+ , (14, "nēļatuoistõn")+ , (15, "vīžtuoistõn")+ , (16, "kūžtuoistõn")+ , (17, "seistuoistõn")+ , (18, "kōdõkstuoistõn")+ , (19, "īdõkstuoistõn")+ , (20, "kakškimdõ")+ , (21, "kakškimdõ ikš")+ , (22, "kakškimdõ kakš")+ , (23, "kakškimdõ kuolm")+ , (24, "kakškimdõ nēļa")+ , (25, "kakškimdõ vīž")+ , (26, "kakškimdõ kūž")+ , (27, "kakškimdõ seis")+ , (28, "kakškimdõ kōdõks")+ , (29, "kakškimdõ īdõks")+ , (30, "kuolmkimdõ")+ , (31, "kuolmkimdõ ikš")+ , (32, "kuolmkimdõ kakš")+ , (33, "kuolmkimdõ kuolm")+ , (34, "kuolmkimdõ nēļa")+ , (35, "kuolmkimdõ vīž")+ , (36, "kuolmkimdõ kūž")+ , (37, "kuolmkimdõ seis")+ , (38, "kuolmkimdõ kōdõks")+ , (39, "kuolmkimdõ īdõks")+ , (40, "nēļakimdõ")+ , (41, "nēļakimdõ ikš")+ , (42, "nēļakimdõ kakš")+ , (43, "nēļakimdõ kuolm")+ , (44, "nēļakimdõ nēļa")+ , (45, "nēļakimdõ vīž")+ , (46, "nēļakimdõ kūž")+ , (47, "nēļakimdõ seis")+ , (48, "nēļakimdõ kōdõks")+ , (49, "nēļakimdõ īdõks")+ , (50, "vīžkimdõ")+ , (51, "vīžkimdõ ikš")+ , (52, "vīžkimdõ kakš")+ , (53, "vīžkimdõ kuolm")+ , (54, "vīžkimdõ nēļa")+ , (55, "vīžkimdõ vīž")+ , (56, "vīžkimdõ kūž")+ , (57, "vīžkimdõ seis")+ , (58, "vīžkimdõ kōdõks")+ , (59, "vīžkimdõ īdõks")+ , (60, "kūžkimdõ")+ , (61, "kūžkimdõ ikš")+ , (62, "kūžkimdõ kakš")+ , (63, "kūžkimdõ kuolm")+ , (64, "kūžkimdõ nēļa")+ , (65, "kūžkimdõ vīž")+ , (66, "kūžkimdõ kūž")+ , (67, "kūžkimdõ seis")+ , (68, "kūžkimdõ kōdõks")+ , (69, "kūžkimdõ īdõks")+ , (70, "seiskimdõ")+ , (71, "seiskimdõ ikš")+ , (72, "seiskimdõ kakš")+ , (73, "seiskimdõ kuolm")+ , (74, "seiskimdõ nēļa")+ , (75, "seiskimdõ vīž")+ , (76, "seiskimdõ kūž")+ , (77, "seiskimdõ seis")+ , (78, "seiskimdõ kōdõks")+ , (79, "seiskimdõ īdõks")+ , (80, "kōdõkskimdõ")+ , (81, "kōdõkskimdõ ikš")+ , (82, "kōdõkskimdõ kakš")+ , (83, "kōdõkskimdõ kuolm")+ , (84, "kōdõkskimdõ nēļa")+ , (85, "kōdõkskimdõ vīž")+ , (86, "kōdõkskimdõ kūž")+ , (87, "kōdõkskimdõ seis")+ , (88, "kōdõkskimdõ kōdõks")+ , (89, "kōdõkskimdõ īdõks")+ , (90, "īdõkskimdõ")+ , (91, "īdõkskimdõ ikš")+ , (92, "īdõkskimdõ kakš")+ , (93, "īdõkskimdõ kuolm")+ , (94, "īdõkskimdõ nēļa")+ , (95, "īdõkskimdõ vīž")+ , (96, "īdõkskimdõ kūž")+ , (97, "īdõkskimdõ seis")+ , (98, "īdõkskimdõ kōdõks")+ , (99, "īdõkskimdõ īdõks")+ , (100, "sadā")+ , (101, "sadā ikš")+ , (102, "sadā kakš")+ , (103, "sadā kuolm")+ , (104, "sadā nēļa")+ , (105, "sadā vīž")+ , (106, "sadā kūž")+ , (107, "sadā seis")+ , (108, "sadā kōdõks")+ , (109, "sadā īdõks")+ , (110, "sadā kim")+ , (123, "sadā kakškimdõ kuolm")+ , (200, "kakš saddõ")+ , (300, "kuolm saddõ")+ , (321, "kuolm saddõ kakškimdõ ikš")+ , (400, "nēļa saddõ")+ , (500, "vīž saddõ")+ , (600, "kūž saddõ")+ , (700, "seis saddõ")+ , (800, "kōdõks saddõ")+ , (900, "īdõks saddõ")+ , (909, "īdõks saddõ īdõks")+ , (990, "īdõks saddõ īdõkskimdõ")+ , (999, "īdõks saddõ īdõkskimdõ īdõks")+ , (1000, "tūontõ")+ , (1001, "tūontõ ikš")+ , (1008, "tūontõ kōdõks")+ , (1234, "tūontõ kakš saddõ kuolmkimdõ nēļa")+ , (2000, "kakš tūontõd")+ , (3000, "kuolm tūontõd")+ , (4000, "nēļa tūontõd")+ , (4321, "nēļa tūontõd kuolm saddõ kakškimdõ ikš")+ , (5000, "vīž tūontõd")+ , (6000, "kūž tūontõd")+ , (7000, "seis tūontõd")+ , (8000, "kōdõks tūontõd")+ , (9000, "īdõks tūontõd")+ , (10000, "kim tūontõd")+ , (12345, "kakštuoistõn tūontõd kuolm saddõ nēļakimdõ vīž")+ , (20000, "kakškimdõ tūontõd")+ , (30000, "kuolmkimdõ tūontõd")+ , (40000, "nēļakimdõ tūontõd")+ , (50000, "vīžkimdõ tūontõd")+ , (54321, "vīžkimdõ nēļa tūontõd kuolm saddõ kakškimdõ ikš")+ , (60000, "kūžkimdõ tūontõd")+ , (70000, "seiskimdõ tūontõd")+ , (80000, "kōdõkskimdõ tūontõd")+ , (90000, "īdõkskimdõ tūontõd")+ , (100000, "sadā tūontõd")+ , (123456, "sadā kakškimdõ kuolm tūontõd nēļa saddõ vīžkimdõ kūž")+ , (200000, "kakš saddõ tūontõd")+ , (300000, "kuolm saddõ tūontõd")+ , (400000, "nēļa saddõ tūontõd")+ , (500000, "vīž saddõ tūontõd")+ , (600000, "kūž saddõ tūontõd")+ , (654321, "kūž saddõ vīžkimdõ nēļa tūontõd kuolm saddõ kakškimdõ ikš")+ , (700000, "seis saddõ tūontõd")+ , (800000, "kōdõks saddõ tūontõd")+ , (900000, "īdõks saddõ tūontõd")+ , (1000000, "miljon")+ , (1000001, "miljon ikš")+ , (1234567, "miljon kakš saddõ kuolmkimdõ nēļa tūontõd vīž saddõ kūžkimdõ seis")+ , (2000000, "kakš miljonõd")+ , (3000000, "kuolm miljonõd")+ , (4000000, "nēļa miljonõd")+ , (5000000, "vīž miljonõd")+ , (6000000, "kūž miljonõd")+ , (7000000, "seis miljonõd")+ , (7654321, "seis miljonõd kūž saddõ vīžkimdõ nēļa tūontõd kuolm saddõ kakškimdõ ikš")+ , (8000000, "kōdõks miljonõd")+ , (9000000, "īdõks miljonõd")+ ]+ )+ ]
src-test/Text/Numeral/Language/LLD/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -24,9 +18,8 @@ -------------------------------------------------------------------------------- import "base" Prelude ( Integral, (+) )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) ) import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "numerals" Text.Numeral.Misc ( dec ) import "this" Text.Numeral.Test ( TestData ) @@ -37,7 +30,7 @@ -- Sources: -- http://www.languagesandnumbers.com/how-to-count-in-ladin/en/lld/-cardinals ∷ (Integral i) ⇒ TestData i+cardinals :: (Integral i) => TestData i cardinals = [ ( "masculine" , masculine defaultInflection@@ -138,10 +131,10 @@ , (12345, "dodescmiletreicentecarantecinch") , (dec 6, "un milion") , (dec 6 + 1, "un milioneun")- , (2 ⋅ dec 6, "doi milion")+ , (2 * dec 6, "doi milion") , (123456789, "centevintetrei milionecatercentecincantesiesmilesetcenteotantenuef") , (dec 9, "un miliard")- , (2 ⋅ dec 9, "doi miliard")+ , (2 * dec 9, "doi miliard") , (9876543210, "nuef miliardeotcentesetantesies milionecinchcentecarantetreimiledoicentediesc") , (9999999999, "nuef miliardenuefcentenonantenuef milionenuefcentenonantenuefmilenuefcentenonantenuef") ]
+ src-test/Text/Numeral/Language/LMO/TestData.hs view
@@ -0,0 +1,221 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] lmo++[@Native name@] Lombard, Lumbaart++[@English name@] Lombard+-}+module Text.Numeral.Language.LMO.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-lombard-milanese/en/lmo/++Note: The test data is probably Western Lombard (lom-wes) as oposed to+Eastern Lombard (lom-eas).+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "vun")+ , (2, "duu")+ , (3, "trii")+ , (4, "quatter")+ , (5, "cinch")+ , (6, "ses")+ , (7, "sett")+ , (8, "vott")+ , (9, "noeuv")+ , (10, "des")+ , (11, "vundes")+ , (12, "dodes")+ , (13, "tredes")+ , (14, "quattordes")+ , (15, "quindes")+ , (16, "sedes")+ , (17, "dersett")+ , (18, "desdott")+ , (19, "desnoeuv")+ , (20, "vint")+ , (21, "vintun")+ , (22, "vintduu")+ , (23, "vinttrii")+ , (24, "vintquatter")+ , (25, "vintcinch")+ , (26, "vintses")+ , (27, "vintsett")+ , (28, "vintott")+ , (29, "vintnoeuv")+ , (30, "trenta")+ , (31, "trentavun")+ , (32, "trentaduu")+ , (33, "trentatrii")+ , (34, "trentaquatter")+ , (35, "trentacinch")+ , (36, "trentases")+ , (37, "trentasett")+ , (38, "trentott")+ , (39, "trentanoeuv")+ , (40, "quaranta")+ , (41, "quarantavun")+ , (42, "quarantaduu")+ , (43, "quarantatrii")+ , (44, "quarantaquatter")+ , (45, "quarantacinch")+ , (46, "quarantases")+ , (47, "quarantasett")+ , (48, "quarantott")+ , (49, "quarantanoeuv")+ , (50, "cinquanta")+ , (51, "cinquantavun")+ , (52, "cinquantaduu")+ , (53, "cinquantatrii")+ , (54, "cinquantaquatter")+ , (55, "cinquantacinch")+ , (56, "cinquantases")+ , (57, "cinquantasett")+ , (58, "cinquantott")+ , (59, "cinquantanoeuv")+ , (60, "sessanta")+ , (61, "sessantavun")+ , (62, "sessantaduu")+ , (63, "sessantatrii")+ , (64, "sessantaquatter")+ , (65, "sessantacinch")+ , (66, "sessantases")+ , (67, "sessantasett")+ , (68, "sessantott")+ , (69, "sessantanoeuv")+ , (70, "settanta")+ , (71, "settantavun")+ , (72, "settantaduu")+ , (73, "settantatrii")+ , (74, "settantaquatter")+ , (75, "settantacinch")+ , (76, "settantases")+ , (77, "settantasett")+ , (78, "settantott")+ , (79, "settantanoeuv")+ , (80, "vottanta")+ , (81, "vottantavun")+ , (82, "vottantaduu")+ , (83, "vottantatrii")+ , (84, "vottantaquatter")+ , (85, "vottantacinch")+ , (86, "vottantases")+ , (87, "vottantasett")+ , (88, "vottantott")+ , (89, "vottantanoeuv")+ , (90, "novanta")+ , (91, "novantavun")+ , (92, "novantaduu")+ , (93, "novantatrii")+ , (94, "novantaquatter")+ , (95, "novantacinch")+ , (96, "novantases")+ , (97, "novantasett")+ , (98, "novantott")+ , (99, "novantanoeuv")+ , (100, "cent")+ , (101, "centvun")+ , (102, "centduu")+ , (103, "centtrii")+ , (104, "centquatter")+ , (105, "centcinch")+ , (106, "centses")+ , (107, "centsett")+ , (108, "centvott")+ , (109, "centnoeuv")+ , (110, "centdes")+ , (123, "centvinttrii")+ , (200, "dusent")+ , (300, "tresent")+ , (321, "tresentvintun")+ , (400, "quattercent")+ , (500, "cinchcent")+ , (600, "ses’cent")+ , (700, "settcent")+ , (800, "vottcent")+ , (900, "noeuvcent")+ , (909, "noeuvcentnoeuv")+ , (990, "noeuvcentnovanta")+ , (999, "noeuvcentnovantanoeuv")+ , (1000, "mila")+ , (1001, "mila e vun")+ , (1008, "mila e vott")+ , (1234, "mila e dusenttrentaquatter")+ , (2000, "dò mila")+ , (3000, "tré mila")+ , (4000, "quatter mila")+ , (4321, "quatter mila e tresentvintun")+ , (5000, "cinch mila")+ , (6000, "ses mila")+ , (7000, "sett mila")+ , (8000, "vott mila")+ , (9000, "noeuv mila")+ , (10000, "des mila")+ , (12345, "dodes mila e tresentquarantacinch")+ , (20000, "vint mila")+ , (30000, "trenta mila")+ , (40000, "quaranta mila")+ , (50000, "cinquanta mila")+ , (54321, "cinquantaquatter mila e tresentvintun")+ , (60000, "sessanta mila")+ , (70000, "settanta mila")+ , (80000, "vottanta mila")+ , (90000, "novanta mila")+ , (100000, "centmila")+ , (123456, "centvinttré mila e quattercentcinquantases")+ , (200000, "dusentmila")+ , (300000, "tresentmila")+ , (400000, "quattercentmila")+ , (500000, "cinchcentmila")+ , (600000, "ses’centmila")+ , (654321, "ses’centcinquantaquatter mila e tresentvintun")+ , (700000, "settcentmila")+ , (800000, "vottcentmila")+ , (900000, "noeuvcentmila")+ , (1000000, "on milion")+ , (1000001, "on milion e vun")+ , (1234567, "on milion e dusenttrentaquatter mila e cinchcentsessantasett")+ , (2000000, "duu milion")+ , (3000000, "trii milion")+ , (4000000, "quatter milion")+ , (5000000, "cinch milion")+ , (6000000, "ses milion")+ , (7000000, "sett milion")+ , (7654321, "sett milion e ses’centcinquantaquatter mila e tresentvintun")+ , (8000000, "vott milion")+ , (9000000, "noeuv milion")+ , (1000000000, "on miliard")+ , (1000000001, "on miliard e vun")+ , (2000000000, "duu miliard")+ , (3000000000, "trii miliard")+ , (4000000000, "quatter miliard")+ , (5000000000, "cinch miliard")+ , (6000000000, "ses miliard")+ , (7000000000, "sett miliard")+ , (8000000000, "vott miliard")+ , (9000000000, "noeuv miliard")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/LTZ/TestData.hs view
@@ -0,0 +1,239 @@+{-|+[@ISO639-1@] lb++[@ISO639-2@] ltz++[@ISO639-3@] ltz++[@Native name@] Lëtzebuergesch++[@English name@] Luxembourgish+-}+module Text.Numeral.Language.LTZ.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-luxembourgish/en/ltz/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "null")+ , (1, "eent")+ , (2, "zwee")+ , (3, "dräi")+ , (4, "véier")+ , (5, "fënnef")+ , (6, "sechs")+ , (7, "siwen")+ , (8, "aacht")+ , (9, "néng")+ , (10, "zéng")+ , (11, "elef")+ , (12, "zwielef")+ , (13, "dräizéng")+ , (14, "véierzéng")+ , (15, "fofzéng")+ , (16, "siechzéng")+ , (17, "siwwenzéng")+ , (18, "uechtzéng")+ , (19, "nonzéng")+ , (20, "zwanzeg")+ , (21, "eenanzwanzeg")+ , (22, "zweeanzwanzeg")+ , (23, "dräianzwanzeg")+ , (24, "véieranzwanzeg")+ , (25, "fënnefanzwanzeg")+ , (26, "sechsanzwanzeg")+ , (27, "siwenanzwanzeg")+ , (28, "aachtanzwanzeg")+ , (29, "nénganzwanzeg")+ , (30, "drësseg")+ , (31, "eenandrësseg")+ , (32, "zweeandrësseg")+ , (33, "dräiandrësseg")+ , (34, "véierandrësseg")+ , (35, "fënnefandrësseg")+ , (36, "sechsandrësseg")+ , (37, "siwenandrësseg")+ , (38, "aachtandrësseg")+ , (39, "néngandrësseg")+ , (40, "véierzeg")+ , (41, "eenanvéierzeg")+ , (42, "zweeanvéierzeg")+ , (43, "dräianvéierzeg")+ , (44, "véieranvéierzeg")+ , (45, "fënnefanvéierzeg")+ , (46, "sechsanvéierzeg")+ , (47, "siwenanvéierzeg")+ , (48, "aachtanvéierzeg")+ , (49, "nénganvéierzeg")+ , (50, "fofzeg")+ , (51, "eenanfofzeg")+ , (52, "zweeanfofzeg")+ , (53, "dräianfofzeg")+ , (54, "véieranfofzeg")+ , (55, "fënnefanfofzeg")+ , (56, "sechsanfofzeg")+ , (57, "siwenanfofzeg")+ , (58, "aachtanfofzeg")+ , (59, "nénganfofzeg")+ , (60, "sechzeg")+ , (61, "eenansechzeg")+ , (62, "zweeansechzeg")+ , (63, "dräiansechzeg")+ , (64, "véieransechzeg")+ , (65, "fënnefansechzeg")+ , (66, "sechsansechzeg")+ , (67, "siwenansechzeg")+ , (68, "aachtansechzeg")+ , (69, "néngansechzeg")+ , (70, "siwwenzeg")+ , (71, "eenansiwwenzeg")+ , (72, "zweeansiwwenzeg")+ , (73, "dräiansiwwenzeg")+ , (74, "véieransiwwenzeg")+ , (75, "fënnefansiwwenzeg")+ , (76, "sechsansiwwenzeg")+ , (77, "siwenansiwwenzeg")+ , (78, "aachtansiwwenzeg")+ , (79, "néngansiwwenzeg")+ , (80, "achtzeg")+ , (81, "eenanachtzeg")+ , (82, "zweeanachtzeg")+ , (83, "dräianachtzeg")+ , (84, "véieranachtzeg")+ , (85, "fënnefanachtzeg")+ , (86, "sechsanachtzeg")+ , (87, "siwenanachtzeg")+ , (88, "aachtanachtzeg")+ , (89, "nénganachtzeg")+ , (90, "nonzeg")+ , (91, "eenannonzeg")+ , (92, "zweeannonzeg")+ , (93, "dräiannonzeg")+ , (94, "véierannonzeg")+ , (95, "fënnefannonzeg")+ , (96, "sechsannonzeg")+ , (97, "siwenannonzeg")+ , (98, "aachtannonzeg")+ , (99, "néngannonzeg")+ , (100, "honnert")+ , (101, "honnerteent")+ , (102, "honnertzwee")+ , (103, "honnertdräi")+ , (104, "honnertvéier")+ , (105, "honnertfënnef")+ , (106, "honnertsechs")+ , (107, "honnertsiwen")+ , (108, "honnertaacht")+ , (109, "honnertnéng")+ , (110, "honnertzéng")+ , (123, "honnertdräianzwanzeg")+ , (200, "zweehonnert")+ , (300, "dräihonnert")+ , (321, "dräihonnerteenanzwanzeg")+ , (400, "véierhonnert")+ , (500, "fënnefhonnert")+ , (600, "sechshonnert")+ , (700, "siwenhonnert")+ , (800, "aachthonnert")+ , (900, "nénghonnert")+ , (909, "nénghonnertnéng")+ , (990, "nénghonnertnonzeg")+ , (999, "nénghonnertnéngannonzeg")+ , (1000, "dausend")+ , (1001, "dausendeent")+ , (1008, "dausendaacht")+ , (1234, "dausendzweehonnertvéierandrësseg")+ , (2000, "zweedausend")+ , (3000, "dräidausend")+ , (4000, "véierdausend")+ , (4321, "véierdausenddräihonnerteenanzwanzeg")+ , (5000, "fënnefdausend")+ , (6000, "sechsdausend")+ , (7000, "siwendausend")+ , (8000, "aachtdausend")+ , (9000, "néngdausend")+ , (10000, "zéngdausend")+ , (12345, "zwielefdausenddräihonnertfënnefanvéierzeg")+ , (20000, "zwanzegdausend")+ , (30000, "drëssegdausend")+ , (40000, "véierzegdausend")+ , (50000, "fofzegdausend")+ , (54321, "véieranfofzegdausenddräihonnerteenanzwanzeg")+ , (60000, "sechzegdausend")+ , (70000, "siwwenzegdausend")+ , (80000, "achtzegdausend")+ , (90000, "nonzegdausend")+ , (100000, "honnertdausend")+ , (123456, "honnertdräianzwanzegdausendvéierhonnertsechsanfofzeg")+ , (200000, "zweehonnertdausend")+ , (300000, "dräihonnertdausend")+ , (400000, "véierhonnertdausend")+ , (500000, "fënnefhonnertdausend")+ , (600000, "sechshonnertdausend")+ , (654321, "sechshonnertvéieranfofzegdausenddräihonnerteenanzwanzeg")+ , (700000, "siwenhonnertdausend")+ , (800000, "aachthonnertdausend")+ , (900000, "nénghonnertdausend")+ , (1000000, "eng Millioun")+ , (1000001, "eng Millioun eent")+ , (1234567, "eng Millioun zweehonnertvéierandrëssegdausendfënnefhonnertsiwenansechzeg")+ , (2000000, "zwou Milliounen")+ , (3000000, "dräi Milliounen")+ , (4000000, "véier Milliounen")+ , (5000000, "fënnef Milliounen")+ , (6000000, "sechs Milliounen")+ , (7000000, "siwen Milliounen")+ , (7654321, "siwen Milliounen sechshonnertvéieranfofzegdausenddräihonnerteenanzwanzeg")+ , (8000000, "aacht Milliounen")+ , (9000000, "néng Milliounen")+ , (1000000000, "eng Milliard")+ , (1000000001, "eng Milliard eent")+ , (2000000000, "zwou Milliarden")+ , (3000000000, "dräi Milliarden")+ , (4000000000, "véier Milliarden")+ , (5000000000, "fënnef Milliarden")+ , (6000000000, "sechs Milliarden")+ , (7000000000, "siwen Milliarden")+ , (8000000000, "aacht Milliarden")+ , (9000000000, "néng Milliarden")+ , (1000000000000, "eng Billion")+ , (1000000000001, "eng Billion eent")+ , (2000000000000, "zwou Billionen")+ , (3000000000000, "dräi Billionen")+ , (4000000000000, "véier Billionen")+ , (5000000000000, "fënnef Billionen")+ , (6000000000000, "sechs Billionen")+ , (7000000000000, "siwen Billionen")+ , (8000000000000, "aacht Billionen")+ , (9000000000000, "néng Billionen")+ , (1000000000000000, "eng Billiard")+ , (1000000000000001, "eng Billiard eent")+ , (2000000000000000, "zwou Billiarden")+ , (3000000000000000, "dräi Billiarden")+ , (4000000000000000, "véier Billiarden")+ , (5000000000000000, "fënnef Billiarden")+ , (6000000000000000, "sechs Billiarden")+ , (7000000000000000, "siwen Billiarden")+ , (8000000000000000, "aacht Billiarden")+ , (9000000000000000, "néng Billiarden")+ ]+ )+ ]
− src-test/Text/Numeral/Language/MG/TestData.hs
@@ -1,162 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] mg--[@ISO639-2@] mlg--[@ISO639-3@] mlg--[@Native name@] ---[@English name@] Malagasy--}--module Text.Numeral.Language.MG.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Misc ( dec )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://en.wikipedia.org/wiki/Malagasy_language- http://www.sf.airnet.ne.jp/~ts/language/number/malagasy.html--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "haotra")- , (1, "iray")- , (2, "roa")- , (3, "telo")- , (4, "efatra")- , (5, "dimy")- , (6, "enina")- , (7, "fito")- , (8, "valo")- , (9, "sivy")- , (10, "folo")- , (11, "iraika ambin'ny folo")- , (12, "roa ambin'ny folo")- , (13, "telo ambin'ny folo")- , (14, "efatra ambin'ny folo")- , (15, "dimy ambin'ny folo")- , (16, "enina ambin'ny folo")- , (17, "fito ambin'ny folo")- , (18, "valo ambin'ny folo")- , (19, "sivy ambin'ny folo")- , (20, "roapolo")- , (21, "iraika amby roapolo")- , (22, "roa amby roapolo")- , (23, "telo amby roapolo")- , (24, "efatra amby roapolo")- , (25, "dimy amby roapolo")- , (26, "enina amby roapolo")- , (27, "fito amby roapolo")- , (28, "valo amby roapolo")- , (29, "sivy amby roapolo")- , (30, "telopolo")- , (31, "iraika amby telopolo")- , (32, "roa amby telopolo")- , (33, "telo amby telopolo")- , (34, "efatra amby telopolo")- , (35, "dimy amby telopolo")- , (36, "enina amby telopolo")- , (37, "fito amby telopolo")- , (38, "valo amby telopolo")- , (39, "sivy amby telopolo")- , (40, "efapolo")- , (41, "iraika amby efapolo")- , (42, "roa amby efapolo")- , (43, "telo amby efapolo")- , (44, "efatra amby efapolo")- , (45, "dimy amby efapolo")- , (46, "enina amby efapolo")- , (47, "fito amby efapolo")- , (48, "valo amby efapolo")- , (49, "sivy amby efapolo")- , (50, "dimampolo")- , (51, "iraika amby dimampolo")- , (52, "roa amby dimampolo")- , (53, "telo amby dimampolo")- , (54, "efatra amby dimampolo")- , (55, "dimy amby dimampolo")- , (56, "enina amby dimampolo")- , (57, "fito amby dimampolo")- , (58, "valo amby dimampolo")- , (59, "sivy amby dimampolo")- , (60, "enimpolo")- , (61, "iraika amby enimpolo")- , (62, "roa amby enimpolo")- , (63, "telo amby enimpolo")- , (64, "efatra amby enimpolo")- , (65, "dimy amby enimpolo")- , (66, "enina amby enimpolo")- , (67, "fito amby enimpolo")- , (68, "valo amby enimpolo")- , (69, "sivy amby enimpolo")- , (70, "fitopolo")- , (71, "iraika amby fitopolo")- , (72, "roa amby fitopolo")- , (73, "telo amby fitopolo")- , (74, "efatra amby fitopolo")- , (75, "dimy amby fitopolo")- , (76, "enina amby fitopolo")- , (77, "fito amby fitopolo")- , (78, "valo amby fitopolo")- , (79, "sivy amby fitopolo")- , (80, "valopolo")- , (81, "iraika amby valopolo")- , (82, "roa amby valopolo")- , (83, "telo amby valopolo")- , (84, "efatra amby valopolo")- , (85, "dimy amby valopolo")- , (86, "enina amby valopolo")- , (87, "fito amby valopolo")- , (88, "valo amby valopolo")- , (89, "sivy amby valopolo")- , (90, "sivifolo")- , (91, "iraika amby sivifolo")- , (92, "roa amby sivifolo")- , (93, "telo amby sivifolo")- , (94, "efatra amby sivifolo")- , (95, "dimy amby sivifolo")- , (96, "enina amby sivifolo")- , (97, "fito amby sivifolo")- , (98, "valo amby sivifolo")- , (99, "sivy amby sivifolo")- , (100, "zato")- , (200, "roanjato")- , (300, "telonjato")- , (400, "efajato")- , (500, "dimanjato")- , (600, "eninjato")- , (700, "fitonjato")- , (800, "valonjato")- , (900, "sivinjato")- , (1000, "arivo")- , (dec 4, "alina")- , (dec 5, "hetsy")- , (123456, "enina amby dimampolo sy efajato sy telo arivo sy roa alina sy hetsy")- , (dec 6, "tapitrisa")- ]- )- ]
+ src-test/Text/Numeral/Language/MIC/TestData.hs view
@@ -0,0 +1,197 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] mic++[@ISO639-3@] mic++[@Native name@] Míkmawísimk++[@English name@] Mi'kmaq+-}+module Text.Numeral.Language.MIC.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-micmac/en/mic/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "ne’wt")+ , (2, "ta’pu")+ , (3, "si’st")+ , (4, "ne’w")+ , (5, "na’n")+ , (6, "asukom")+ , (7, "l’uiknek")+ , (8, "ukmuljin")+ , (9, "pesqunatek")+ , (10, "newtiska’q")+ , (11, "newtiska’q jel ne’wt")+ , (12, "newtiska’q jel ta’pu")+ , (13, "newtiska’q jel si’st")+ , (14, "newtiska’q jel ne’w")+ , (15, "newtiska’q jel na’n")+ , (16, "newtiska’q jel asukom")+ , (17, "newtiska’q jel l’uiknek")+ , (18, "newtiska’q jel ukmuljin")+ , (19, "newtiska’q jel pesqunatek")+ , (20, "tapuiska’q")+ , (21, "tapuiska’q jel ne’wt")+ , (22, "tapuiska’q jel ta’pu")+ , (23, "tapuiska’q jel si’st")+ , (24, "tapuiska’q jel ne’w")+ , (25, "tapuiska’q jel na’n")+ , (26, "tapuiska’q jel asukom")+ , (27, "tapuiska’q jel l’uiknek")+ , (28, "tapuiska’q jel ukmuljin")+ , (29, "tapuiska’q jel pesqunatek")+ , (30, "nesiska’q")+ , (31, "nesiska’q jel ne’wt")+ , (32, "nesiska’q jel ta’pu")+ , (33, "nesiska’q jel si’st")+ , (34, "nesiska’q jel ne’w")+ , (35, "nesiska’q jel na’n")+ , (36, "nesiska’q jel asukom")+ , (37, "nesiska’q jel l’uiknek")+ , (38, "nesiska’q jel ukmuljin")+ , (39, "nesiska’q jel pesqunatek")+ , (40, "newiska’q")+ , (41, "newiska’q jel ne’wt")+ , (42, "newiska’q jel ta’pu")+ , (43, "newiska’q jel si’st")+ , (44, "newiska’q jel ne’w")+ , (45, "newiska’q jel na’n")+ , (46, "newiska’q jel asukom")+ , (47, "newiska’q jel l’uiknek")+ , (48, "newiska’q jel ukmuljin")+ , (49, "newiska’q jel pesqunatek")+ , (50, "naniska’q")+ , (51, "naniska’q jel ne’wt")+ , (52, "naniska’q jel ta’pu")+ , (53, "naniska’q jel si’st")+ , (54, "naniska’q jel ne’w")+ , (55, "naniska’q jel na’n")+ , (56, "naniska’q jel asukom")+ , (57, "naniska’q jel l’uiknek")+ , (58, "naniska’q jel ukmuljin")+ , (59, "naniska’q jel pesqunatek")+ , (60, "asukom te’siska’q")+ , (61, "asukom te’siska’q jel ne’wt")+ , (62, "asukom te’siska’q jel ta’pu")+ , (63, "asukom te’siska’q jel si’st")+ , (64, "asukom te’siska’q jel ne’w")+ , (65, "asukom te’siska’q jel na’n")+ , (66, "asukom te’siska’q jel asukom")+ , (67, "asukom te’siska’q jel l’uiknek")+ , (68, "asukom te’siska’q jel ukmuljin")+ , (69, "asukom te’siska’q jel pesqunatek")+ , (70, "l’uiknek te’siska’q")+ , (71, "l’uiknek te’siska’q jel ne’wt")+ , (72, "l’uiknek te’siska’q jel ta’pu")+ , (73, "l’uiknek te’siska’q jel si’st")+ , (74, "l’uiknek te’siska’q jel ne’w")+ , (75, "l’uiknek te’siska’q jel na’n")+ , (76, "l’uiknek te’siska’q jel asukom")+ , (77, "l’uiknek te’siska’q jel l’uiknek")+ , (78, "l’uiknek te’siska’q jel ukmuljin")+ , (79, "l’uiknek te’siska’q jel pesqunatek")+ , (80, "ukmuljin te’siska’q")+ , (81, "ukmuljin te’siska’q jel ne’wt")+ , (82, "ukmuljin te’siska’q jel ta’pu")+ , (83, "ukmuljin te’siska’q jel si’st")+ , (84, "ukmuljin te’siska’q jel ne’w")+ , (85, "ukmuljin te’siska’q jel na’n")+ , (86, "ukmuljin te’siska’q jel asukom")+ , (87, "ukmuljin te’siska’q jel l’uiknek")+ , (88, "ukmuljin te’siska’q jel ukmuljin")+ , (89, "ukmuljin te’siska’q jel pesqunatek")+ , (90, "pesqunatek te’siska’q")+ , (91, "pesqunatek te’siska’q jel ne’wt")+ , (92, "pesqunatek te’siska’q jel ta’pu")+ , (93, "pesqunatek te’siska’q jel si’st")+ , (94, "pesqunatek te’siska’q jel ne’w")+ , (95, "pesqunatek te’siska’q jel na’n")+ , (96, "pesqunatek te’siska’q jel asukom")+ , (97, "pesqunatek te’siska’q jel l’uiknek")+ , (98, "pesqunatek te’siska’q jel ukmuljin")+ , (99, "pesqunatek te’siska’q jel pesqunatek")+ , (100, "kaskimtlnaqn")+ , (101, "kaskimtlnaqn te’siska’q jel ne’wt")+ , (102, "kaskimtlnaqn te’siska’q jel ta’pu")+ , (103, "kaskimtlnaqn te’siska’q jel si’st")+ , (104, "kaskimtlnaqn te’siska’q jel ne’w")+ , (105, "kaskimtlnaqn te’siska’q jel na’n")+ , (106, "kaskimtlnaqn te’siska’q jel asukom")+ , (107, "kaskimtlnaqn te’siska’q jel l’uiknek")+ , (108, "kaskimtlnaqn te’siska’q jel ukmuljin")+ , (109, "kaskimtlnaqn te’siska’q jel pesqunatek")+ , (110, "kaskimtlnaqn te’siska’q jel newtiska’q")+ , (123, "kaskimtlnaqn te’siska’q jel tapuiska’q jel si’st")+ , (200, "ta’pu kaskimtlnaqn")+ , (300, "si’st kaskimtlnaqn")+ , (321, "si’st kaskimtlnaqn te’siska’q jel tapuiska’q jel ne’wt")+ , (400, "ne’w kaskimtlnaqn")+ , (500, "na’n kaskimtlnaqn")+ , (600, "asukom kaskimtlnaqn")+ , (700, "l’uiknek kaskimtlnaqn")+ , (800, "ukmuljin kaskimtlnaqn")+ , (900, "pesqunatek kaskimtlnaqn")+ , (909, "pesqunatek kaskimtlnaqn te’siska’q jel pesqunatek")+ , (990, "pesqunatek kaskimtlnaqn te’siska’q jel pesqunatek te’siska’q")+ , (999, "pesqunatek kaskimtlnaqn te’siska’q jel pesqunatek te’siska’q jel pesqunatek")+ , (1000, "pituimtlnaqn")+ , (1001, "pituimtlnaqn te’siska’q jel ne’wt")+ , (1008, "pituimtlnaqn te’siska’q jel ukmuljin")+ , (1234, "pituimtlnaqn te’siska’q jel ta’pu kaskimtlnaqn te’siska’q jel nesiska’q jel ne’w")+ , (2000, "ta’pu pituimtlnaqn")+ , (3000, "si’st pituimtlnaqn")+ , (4000, "ne’w pituimtlnaqn")+ , (4321, "ne’w pituimtlnaqn te’siska’q jel si’st kaskimtlnaqn te’siska’q jel tapuiska’q jel ne’wt")+ , (5000, "na’n pituimtlnaqn")+ , (6000, "asukom pituimtlnaqn")+ , (7000, "l’uiknek pituimtlnaqn")+ , (8000, "ukmuljin pituimtlnaqn")+ , (9000, "pesqunatek pituimtlnaqn")+ , (10000, "pituimtlnaqnepikatun")+ , (12345, "newtiska’q jel ta’pu pituimtlnaqn te’siska’q jel si’st kaskimtlnaqn te’siska’q jel newiska’q jel na’n")+ , (20000, "tapuiska’q pituimtlnaqn")+ , (30000, "nesiska’q pituimtlnaqn")+ , (40000, "newiska’q pituimtlnaqn")+ , (50000, "naniska’q pituimtlnaqn")+ , (54321, "naniska’q jel ne’w pituimtlnaqn te’siska’q jel si’st kaskimtlnaqn te’siska’q jel tapuiska’q jel ne’wt")+ , (60000, "asukom te’siska’q pituimtlnaqn")+ , (70000, "l’uiknek te’siska’q pituimtlnaqn")+ , (80000, "ukmuljin te’siska’q pituimtlnaqn")+ , (90000, "pesqunatek te’siska’q pituimtlnaqn")+ , (100000, "kaskimtlnaqn pituimtlnaqn")+ , (123456, "kaskimtlnaqn te’siska’q jel tapuiska’q jel si’st pituimtlnaqn te’siska’q jel ne’w kaskimtlnaqn te’siska’q jel naniska’q jel asukom")+ , (200000, "ta’pu kaskimtlnaqn pituimtlnaqn")+ , (300000, "si’st kaskimtlnaqn pituimtlnaqn")+ , (400000, "ne’w kaskimtlnaqn pituimtlnaqn")+ , (500000, "na’n kaskimtlnaqn pituimtlnaqn")+ , (600000, "asukom kaskimtlnaqn pituimtlnaqn")+ , (654321, "asukom kaskimtlnaqn te’siska’q jel naniska’q jel ne’w pituimtlnaqn te’siska’q jel si’st kaskimtlnaqn te’siska’q jel tapuiska’q jel ne’wt")+ , (700000, "l’uiknek kaskimtlnaqn pituimtlnaqn")+ , (800000, "ukmuljin kaskimtlnaqn pituimtlnaqn")+ , (900000, "pesqunatek kaskimtlnaqn pituimtlnaqn")+ , (1000000, "kji-pituimtlnaqn")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/MIN/TestData.hs view
@@ -0,0 +1,138 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] min++[@ISO639-3@] min++[@Native name@] Baso Minangkabau, باسو مينڠكاباو++[@English name@] Minangkabau+-}+module Text.Numeral.Language.MIN.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-minangkabau/en/min/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "ciek")+ , (2, "duo")+ , (3, "tigo")+ , (4, "ampek")+ , (5, "limo")+ , (6, "anam")+ , (7, "tujuah")+ , (8, "salapan")+ , (9, "sambilan")+ , (10, "sapuluah")+ , (11, "sabaleh")+ , (12, "duo baleh")+ , (13, "tigo baleh")+ , (14, "ampek baleh")+ , (15, "limo baleh")+ , (16, "anam baleh")+ , (17, "tujuah baleh")+ , (18, "salapan baleh")+ , (19, "sambilan baleh")+ , (20, "duo puluah")+ , (21, "duo puluah ciek")+ , (22, "duo puluah duo")+ , (23, "duo puluah tigo")+ , (24, "duo puluah ampek")+ , (25, "duo puluah limo")+ , (26, "duo puluah anam")+ , (27, "duo puluah tujuah")+ , (28, "duo puluah salapan")+ , (29, "duo puluah sambilan")+ , (30, "tigo puluah")+ , (31, "tigo puluah ciek")+ , (32, "tigo puluah duo")+ , (33, "tigo puluah tigo")+ , (34, "tigo puluah ampek")+ , (35, "tigo puluah limo")+ , (36, "tigo puluah anam")+ , (37, "tigo puluah tujuah")+ , (38, "tigo puluah salapan")+ , (39, "tigo puluah sambilan")+ , (40, "ampek puluah")+ , (41, "ampek puluah ciek")+ , (42, "ampek puluah duo")+ , (43, "ampek puluah tigo")+ , (44, "ampek puluah ampek")+ , (45, "ampek puluah limo")+ , (46, "ampek puluah anam")+ , (47, "ampek puluah tujuah")+ , (48, "ampek puluah salapan")+ , (49, "ampek puluah sambilan")+ , (50, "limo puluah")+ , (51, "limo puluah ciek")+ , (52, "limo puluah duo")+ , (53, "limo puluah tigo")+ , (54, "limo puluah ampek")+ , (55, "limo puluah limo")+ , (56, "limo puluah anam")+ , (57, "limo puluah tujuah")+ , (58, "limo puluah salapan")+ , (59, "limo puluah sambilan")+ , (60, "anam puluah")+ , (61, "anam puluah ciek")+ , (62, "anam puluah duo")+ , (63, "anam puluah tigo")+ , (64, "anam puluah ampek")+ , (65, "anam puluah limo")+ , (66, "anam puluah anam")+ , (67, "anam puluah tujuah")+ , (68, "anam puluah salapan")+ , (69, "anam puluah sambilan")+ , (70, "tujuah puluah")+ , (71, "tujuah puluah ciek")+ , (72, "tujuah puluah duo")+ , (73, "tujuah puluah tigo")+ , (74, "tujuah puluah ampek")+ , (75, "tujuah puluah limo")+ , (76, "tujuah puluah anam")+ , (77, "tujuah puluah tujuah")+ , (78, "tujuah puluah salapan")+ , (79, "tujuah puluah sambilan")+ , (80, "salapan puluah")+ , (81, "salapan puluah ciek")+ , (82, "salapan puluah duo")+ , (83, "salapan puluah tigo")+ , (84, "salapan puluah ampek")+ , (85, "salapan puluah limo")+ , (86, "salapan puluah anam")+ , (87, "salapan puluah tujuah")+ , (88, "salapan puluah salapan")+ , (89, "salapan puluah sambilan")+ , (90, "sambilan puluah")+ , (91, "sambilan puluah ciek")+ , (92, "sambilan puluah duo")+ , (93, "sambilan puluah tigo")+ , (94, "sambilan puluah ampek")+ , (95, "sambilan puluah limo")+ , (96, "sambilan puluah anam")+ , (97, "sambilan puluah tujuah")+ , (98, "sambilan puluah salapan")+ , (99, "sambilan puluah sambilan")+ , (100, "saratuih")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/MLG/TestData.hs view
@@ -0,0 +1,155 @@+{-|+[@ISO639-1@] mg++[@ISO639-2@] mlg++[@ISO639-3@] mlg++[@Native name@] -++[@English name@] Malagasy+-}++module Text.Numeral.Language.MLG.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Misc ( dec )+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://en.wikipedia.org/wiki/Malagasy_language+ http://www.sf.airnet.ne.jp/~ts/language/number/malagasy.html+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "haotra")+ , (1, "iray")+ , (2, "roa")+ , (3, "telo")+ , (4, "efatra")+ , (5, "dimy")+ , (6, "enina")+ , (7, "fito")+ , (8, "valo")+ , (9, "sivy")+ , (10, "folo")+ , (11, "iraika ambin'ny folo")+ , (12, "roa ambin'ny folo")+ , (13, "telo ambin'ny folo")+ , (14, "efatra ambin'ny folo")+ , (15, "dimy ambin'ny folo")+ , (16, "enina ambin'ny folo")+ , (17, "fito ambin'ny folo")+ , (18, "valo ambin'ny folo")+ , (19, "sivy ambin'ny folo")+ , (20, "roapolo")+ , (21, "iraika amby roapolo")+ , (22, "roa amby roapolo")+ , (23, "telo amby roapolo")+ , (24, "efatra amby roapolo")+ , (25, "dimy amby roapolo")+ , (26, "enina amby roapolo")+ , (27, "fito amby roapolo")+ , (28, "valo amby roapolo")+ , (29, "sivy amby roapolo")+ , (30, "telopolo")+ , (31, "iraika amby telopolo")+ , (32, "roa amby telopolo")+ , (33, "telo amby telopolo")+ , (34, "efatra amby telopolo")+ , (35, "dimy amby telopolo")+ , (36, "enina amby telopolo")+ , (37, "fito amby telopolo")+ , (38, "valo amby telopolo")+ , (39, "sivy amby telopolo")+ , (40, "efapolo")+ , (41, "iraika amby efapolo")+ , (42, "roa amby efapolo")+ , (43, "telo amby efapolo")+ , (44, "efatra amby efapolo")+ , (45, "dimy amby efapolo")+ , (46, "enina amby efapolo")+ , (47, "fito amby efapolo")+ , (48, "valo amby efapolo")+ , (49, "sivy amby efapolo")+ , (50, "dimampolo")+ , (51, "iraika amby dimampolo")+ , (52, "roa amby dimampolo")+ , (53, "telo amby dimampolo")+ , (54, "efatra amby dimampolo")+ , (55, "dimy amby dimampolo")+ , (56, "enina amby dimampolo")+ , (57, "fito amby dimampolo")+ , (58, "valo amby dimampolo")+ , (59, "sivy amby dimampolo")+ , (60, "enimpolo")+ , (61, "iraika amby enimpolo")+ , (62, "roa amby enimpolo")+ , (63, "telo amby enimpolo")+ , (64, "efatra amby enimpolo")+ , (65, "dimy amby enimpolo")+ , (66, "enina amby enimpolo")+ , (67, "fito amby enimpolo")+ , (68, "valo amby enimpolo")+ , (69, "sivy amby enimpolo")+ , (70, "fitopolo")+ , (71, "iraika amby fitopolo")+ , (72, "roa amby fitopolo")+ , (73, "telo amby fitopolo")+ , (74, "efatra amby fitopolo")+ , (75, "dimy amby fitopolo")+ , (76, "enina amby fitopolo")+ , (77, "fito amby fitopolo")+ , (78, "valo amby fitopolo")+ , (79, "sivy amby fitopolo")+ , (80, "valopolo")+ , (81, "iraika amby valopolo")+ , (82, "roa amby valopolo")+ , (83, "telo amby valopolo")+ , (84, "efatra amby valopolo")+ , (85, "dimy amby valopolo")+ , (86, "enina amby valopolo")+ , (87, "fito amby valopolo")+ , (88, "valo amby valopolo")+ , (89, "sivy amby valopolo")+ , (90, "sivifolo")+ , (91, "iraika amby sivifolo")+ , (92, "roa amby sivifolo")+ , (93, "telo amby sivifolo")+ , (94, "efatra amby sivifolo")+ , (95, "dimy amby sivifolo")+ , (96, "enina amby sivifolo")+ , (97, "fito amby sivifolo")+ , (98, "valo amby sivifolo")+ , (99, "sivy amby sivifolo")+ , (100, "zato")+ , (200, "roanjato")+ , (300, "telonjato")+ , (400, "efajato")+ , (500, "dimanjato")+ , (600, "eninjato")+ , (700, "fitonjato")+ , (800, "valonjato")+ , (900, "sivinjato")+ , (1000, "arivo")+ , (dec 4, "alina")+ , (dec 5, "hetsy")+ , (123456, "enina amby dimampolo sy efajato sy telo arivo sy roa alina sy hetsy")+ , (dec 6, "tapitrisa")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/MNK/TestData.hs view
@@ -0,0 +1,174 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] mnk++[@Native name@] Mandingo, لغة مندنكا++[@English name@] Mandinka+-}+module Text.Numeral.Language.MNK.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-mandinka/en/mnk/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "kiliŋ")+ , (2, "fula")+ , (3, "saba")+ , (4, "naani")+ , (5, "luulu")+ , (6, "wooro")+ , (7, "worowula")+ , (8, "sey")+ , (9, "kononto")+ , (10, "taŋ")+ , (11, "taŋ niŋ kiliŋ")+ , (12, "taŋ niŋ fula")+ , (13, "taŋ niŋ saba")+ , (14, "taŋ niŋ naani")+ , (15, "taŋ niŋ luulu")+ , (16, "taŋ niŋ wooro")+ , (17, "taŋ niŋ worowula")+ , (18, "taŋ niŋ sey")+ , (19, "taŋ niŋ kononto")+ , (20, "muwaŋ")+ , (21, "muwaŋ niŋ kiliŋ")+ , (22, "muwaŋ niŋ fula")+ , (23, "muwaŋ niŋ saba")+ , (24, "muwaŋ niŋ naani")+ , (25, "muwaŋ niŋ luulu")+ , (26, "muwaŋ niŋ wooro")+ , (27, "muwaŋ niŋ worowula")+ , (28, "muwaŋ niŋ sey")+ , (29, "muwaŋ niŋ kononto")+ , (30, "taŋ saba")+ , (31, "taŋ saba niŋ kiliŋ")+ , (32, "taŋ saba niŋ fula")+ , (33, "taŋ saba niŋ saba")+ , (34, "taŋ saba niŋ naani")+ , (35, "taŋ saba niŋ luulu")+ , (36, "taŋ saba niŋ wooro")+ , (37, "taŋ saba niŋ worowula")+ , (38, "taŋ saba niŋ sey")+ , (39, "taŋ saba niŋ kononto")+ , (40, "taŋ naani")+ , (41, "taŋ naani niŋ kiliŋ")+ , (42, "taŋ naani niŋ fula")+ , (43, "taŋ naani niŋ saba")+ , (44, "taŋ naani niŋ naani")+ , (45, "taŋ naani niŋ luulu")+ , (46, "taŋ naani niŋ wooro")+ , (47, "taŋ naani niŋ worowula")+ , (48, "taŋ naani niŋ sey")+ , (49, "taŋ naani niŋ kononto")+ , (50, "taŋ luulu")+ , (51, "taŋ luulu niŋ kiliŋ")+ , (52, "taŋ luulu niŋ fula")+ , (53, "taŋ luulu niŋ saba")+ , (54, "taŋ luulu niŋ naani")+ , (55, "taŋ luulu niŋ luulu")+ , (56, "taŋ luulu niŋ wooro")+ , (57, "taŋ luulu niŋ worowula")+ , (58, "taŋ luulu niŋ sey")+ , (59, "taŋ luulu niŋ kononto")+ , (60, "taŋ wooro")+ , (61, "taŋ wooro niŋ kiliŋ")+ , (62, "taŋ wooro niŋ fula")+ , (63, "taŋ wooro niŋ saba")+ , (64, "taŋ wooro niŋ naani")+ , (65, "taŋ wooro niŋ luulu")+ , (66, "taŋ wooro niŋ wooro")+ , (67, "taŋ wooro niŋ worowula")+ , (68, "taŋ wooro niŋ sey")+ , (69, "taŋ wooro niŋ kononto")+ , (70, "taŋ worowula")+ , (71, "taŋ worowula niŋ kiliŋ")+ , (72, "taŋ worowula niŋ fula")+ , (73, "taŋ worowula niŋ saba")+ , (74, "taŋ worowula niŋ naani")+ , (75, "taŋ worowula niŋ luulu")+ , (76, "taŋ worowula niŋ wooro")+ , (77, "taŋ worowula niŋ worowula")+ , (78, "taŋ worowula niŋ sey")+ , (79, "taŋ worowula niŋ kononto")+ , (80, "taŋ sey")+ , (81, "taŋ sey niŋ kiliŋ")+ , (82, "taŋ sey niŋ fula")+ , (83, "taŋ sey niŋ saba")+ , (84, "taŋ sey niŋ naani")+ , (85, "taŋ sey niŋ luulu")+ , (86, "taŋ sey niŋ wooro")+ , (87, "taŋ sey niŋ worowula")+ , (88, "taŋ sey niŋ sey")+ , (89, "taŋ sey niŋ kononto")+ , (90, "taŋ konoto")+ , (91, "taŋ konoto niŋ kiliŋ")+ , (92, "taŋ konoto niŋ fula")+ , (93, "taŋ konoto niŋ saba")+ , (94, "taŋ konoto niŋ naani")+ , (95, "taŋ konoto niŋ luulu")+ , (96, "taŋ konoto niŋ wooro")+ , (97, "taŋ konoto niŋ worowula")+ , (98, "taŋ konoto niŋ sey")+ , (99, "taŋ konoto niŋ kononto")+ , (100, "keme kiliŋ")+ , (101, "keme kiliŋ niŋ kiliŋ")+ , (102, "keme kiliŋ niŋ fula")+ , (103, "keme kiliŋ niŋ saba")+ , (104, "keme kiliŋ niŋ naani")+ , (105, "keme kiliŋ niŋ luulu")+ , (106, "keme kiliŋ niŋ wooro")+ , (107, "keme kiliŋ niŋ worowula")+ , (108, "keme kiliŋ niŋ sey")+ , (109, "keme kiliŋ niŋ kononto")+ , (110, "keme kiliŋ niŋ taŋ")+ , (123, "keme kiliŋ niŋ muwaŋ niŋ saba")+ , (200, "keme fula")+ , (300, "keme saba")+ , (321, "keme saba niŋ muwaŋ niŋ kiliŋ")+ , (400, "keme naani")+ , (500, "keme luulu")+ , (600, "keme wooro")+ , (700, "keme worowula")+ , (800, "keme sey")+ , (900, "keme kononto")+ , (909, "keme kononto niŋ kononto")+ , (990, "keme kononto niŋ taŋ konoto")+ , (999, "keme kononto niŋ taŋ konoto niŋ kononto")+ , (1000, "wuli kiliŋ")+ , (1001, "wuli kiliŋ niŋ kiliŋ")+ , (1008, "wuli kiliŋ niŋ sey")+ , (1234, "wuli kiliŋ niŋ keme fula niŋ taŋ saba niŋ naani")+ , (2000, "wuli fula")+ , (3000, "wuli saba")+ , (4000, "wuli naani")+ , (4321, "wuli naani niŋ keme saba niŋ muwaŋ niŋ kiliŋ")+ , (5000, "wuli luulu")+ , (6000, "wuli wooro")+ , (7000, "wuli worowula")+ , (8000, "wuli sey")+ , (9000, "wuli kononto")+ ]+ )+ ]
src-test/Text/Numeral/Language/MOH/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-acholi/en/moh -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/NAV/TestData.hs view
@@ -0,0 +1,208 @@+{-|+[@ISO639-1@] nv++[@ISO639-2@] nav++[@ISO639-3@] nav++[@Native name@] Diné bizaad++[@English name@] Navajo+-}+module Text.Numeral.Language.NAV.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-navajo/en/nav/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "tʼááłáʼí")+ , (2, "naaki")+ , (3, "tááʼ")+ , (4, "dį́į́ʼ")+ , (5, "ashdlaʼ")+ , (6, "hastą́ą́")+ , (7, "tsostsʼid")+ , (8, "tseebíí")+ , (9, "náhástʼéí")+ , (10, "neeznáá")+ , (11, "łáʼtsʼáadah")+ , (12, "naakitsʼáadah")+ , (13, "táátsʼáadah")+ , (14, "dį́į́ʼtsʼáadah")+ , (15, "ashdlaʼáadah")+ , (16, "hastą́ʼáadah")+ , (17, "tsostsʼidtsʼáadah")+ , (18, "tseebíítsʼáadah")+ , (19, "náhástʼéítsʼáadah")+ , (20, "naadiin")+ , (21, "naadįįłaʼ")+ , (22, "naadįįnaaki")+ , (23, "naadįįtááʼ")+ , (24, "naadįįdį́į́ʼ")+ , (25, "naadįįʼashdlaʼ")+ , (26, "naadįįhastą́ą́")+ , (27, "naadįįtsostsʼid")+ , (28, "naadįįtseebíí")+ , (29, "naadįįnáhástʼéí")+ , (30, "tádiin")+ , (31, "tádiin dóó baʼąą tʼááłáʼí")+ , (32, "tádiin dóó baʼąą naaki")+ , (33, "tádiin dóó baʼąą tááʼ")+ , (34, "tádiin dóó baʼąą dį́į́ʼ")+ , (35, "tádiin dóó baʼąą ashdlaʼ")+ , (36, "tádiin dóó baʼąą hastą́ą́")+ , (37, "tádiin dóó baʼąą tsostsʼid")+ , (38, "tádiin dóó baʼąą tseebíí")+ , (39, "tádiin dóó baʼąą náhástʼéí")+ , (40, "dízdiin")+ , (41, "dízdįįłaʼ")+ , (42, "dízdįįnaaki")+ , (43, "dízdįįtááʼ")+ , (44, "dízdįįdį́į́ʼ")+ , (45, "dízdįįʼashdlaʼ")+ , (46, "dízdįįhastą́ą́")+ , (47, "dízdįįtsostsʼid")+ , (48, "dízdįįtseebíí")+ , (49, "dízdįįnáhástʼéí")+ , (50, "ashdladiin")+ , (51, "ashdladiin dóó baʼąą tʼááłáʼí")+ , (52, "ashdladiin dóó baʼąą naaki")+ , (53, "ashdladiin dóó baʼąą tááʼ")+ , (54, "ashdladiin dóó baʼąą dį́į́ʼ")+ , (55, "ashdladiin dóó baʼąą ashdlaʼ")+ , (56, "ashdladiin dóó baʼąą hastą́ą́")+ , (57, "ashdladiin dóó baʼąą tsostsʼid")+ , (58, "ashdladiin dóó baʼąą tseebíí")+ , (59, "ashdladiin dóó baʼąą náhástʼéí")+ , (60, "hastą́diin")+ , (61, "hastą́diin dóó baʼąą tʼááłáʼí")+ , (62, "hastą́diin dóó baʼąą naaki")+ , (63, "hastą́diin dóó baʼąą tááʼ")+ , (64, "hastą́diin dóó baʼąą dį́į́ʼ")+ , (65, "hastą́diin dóó baʼąą ashdlaʼ")+ , (66, "hastą́diin dóó baʼąą hastą́ą́")+ , (67, "hastą́diin dóó baʼąą tsostsʼid")+ , (68, "hastą́diin dóó baʼąą tseebíí")+ , (69, "hastą́diin dóó baʼąą náhástʼéí")+ , (70, "tsostsʼidiin")+ , (71, "tsostsʼidiin dóó baʼąą tʼááłáʼí")+ , (72, "tsostsʼidiin dóó baʼąą naaki")+ , (73, "tsostsʼidiin dóó baʼąą tááʼ")+ , (74, "tsostsʼidiin dóó baʼąą dį́į́ʼ")+ , (75, "tsostsʼidiin dóó baʼąą ashdlaʼ")+ , (76, "tsostsʼidiin dóó baʼąą hastą́ą́")+ , (77, "tsostsʼidiin dóó baʼąą tsostsʼid")+ , (78, "tsostsʼidiin dóó baʼąą tseebíí")+ , (79, "tsostsʼidiin dóó baʼąą náhástʼéí")+ , (80, "tseebídiin")+ , (81, "tseebídiin dóó baʼąą tʼááłáʼí")+ , (82, "tseebídiin dóó baʼąą naaki")+ , (83, "tseebídiin dóó baʼąą tááʼ")+ , (84, "tseebídiin dóó baʼąą dį́į́ʼ")+ , (85, "tseebídiin dóó baʼąą ashdlaʼ")+ , (86, "tseebídiin dóó baʼąą hastą́ą́")+ , (87, "tseebídiin dóó baʼąą tsostsʼid")+ , (88, "tseebídiin dóó baʼąą tseebíí")+ , (89, "tseebídiin dóó baʼąą náhástʼéí")+ , (90, "náhástʼédiin")+ , (91, "náhástʼédiin dóó baʼąą tʼááłáʼí")+ , (92, "náhástʼédiin dóó baʼąą naaki")+ , (93, "náhástʼédiin dóó baʼąą tááʼ")+ , (94, "náhástʼédiin dóó baʼąą dį́į́ʼ")+ , (95, "náhástʼédiin dóó baʼąą ashdlaʼ")+ , (96, "náhástʼédiin dóó baʼąą hastą́ą́")+ , (97, "náhástʼédiin dóó baʼąą tsostsʼid")+ , (98, "náhástʼédiin dóó baʼąą tseebíí")+ , (99, "náhástʼédiin dóó baʼąą náhástʼéí")+ , (100, "tʼááłáhádí neeznádiin")+ , (101, "tʼááłáhádí neeznádiin tʼááłáʼí")+ , (102, "tʼááłáhádí neeznádiin naaki")+ , (103, "tʼááłáhádí neeznádiin tááʼ")+ , (104, "tʼááłáhádí neeznádiin dį́į́ʼ")+ , (105, "tʼááłáhádí neeznádiin ashdlaʼ")+ , (106, "tʼááłáhádí neeznádiin hastą́ą́")+ , (107, "tʼááłáhádí neeznádiin tsostsʼid")+ , (108, "tʼááłáhádí neeznádiin tseebíí")+ , (109, "tʼááłáhádí neeznádiin náhástʼéí")+ , (110, "tʼááłáhádí neeznádiin neeznáá")+ , (123, "tʼááłáhádí neeznádiin naadįįtááʼ")+ , (200, "naakidi neeznádiin")+ , (300, "táadi neeznádiin")+ , (321, "táadi neeznádiin naadįįłaʼ")+ , (400, "dį́įʼdi neeznádiin")+ , (500, "ashdladi neeznádiin")+ , (600, "hastą́ądi neeznádiin")+ , (700, "tsostsʼidi neeznádiin")+ , (800, "tseebíidi neeznádiin")+ , (900, "náhástʼéidi neeznádiin")+ , (909, "náhástʼéidi neeznádiin náhástʼéí")+ , (990, "náhástʼéidi neeznádiin náhástʼédiin")+ , (999, "náhástʼéidi neeznádiin náhástʼédiin dóó baʼąą náhástʼéí")+ , (1000, "tʼááłáhádí mííl")+ , (1001, "tʼááłáhádí mííl tʼááłáʼí")+ , (1008, "tʼááłáhádí mííl tseebíí")+ , (1234, "tʼááłáhádí mííl naakidi neeznádiin tádiin dóó baʼąą dį́į́ʼ")+ , (2000, "naakidi mííl")+ , (3000, "táadi mííl")+ , (4000, "dį́įʼdi mííl")+ , (4321, "dį́įʼdi mííl táadi neeznádiin naadįįłaʼ")+ , (5000, "ashdladi mííl")+ , (6000, "hastą́ądi mííl")+ , (7000, "tsostsʼidi mííl")+ , (8000, "tseebíidi mííl")+ , (9000, "náhástʼéidi mííl")+ , (10000, "neeznáá mííl")+ , (12345, "naakitsʼáadah mííl táadi neeznádiin dízdįįʼashdlaʼ")+ , (20000, "naadiin mííl")+ , (30000, "tádiin mííl")+ , (40000, "dízdiin mííl")+ , (50000, "ashdladiin mííl")+ , (54321, "ashdladiin dóó baʼąą dį́įʼdi mííl táadi neeznádiin naadįįłaʼ")+ , (60000, "hastą́diin mííl")+ , (70000, "tsostsʼidiin mííl")+ , (80000, "tseebídiin mííl")+ , (90000, "náhástʼédiin mííl")+ , (100000, "tʼááłáhádí neeznádiin mííl")+ , (123456, "tʼááłáhádí neeznádiin naadįįtáadi mííl dį́įʼdi neeznádiin ashdladiin dóó baʼąą hastą́ą́")+ , (200000, "naakidi neeznádiin mííl")+ , (300000, "táadi neeznádiin mííl")+ , (400000, "dį́įʼdi neeznádiin mííl")+ , (500000, "ashdladi neeznádiin mííl")+ , (600000, "hastą́ądi neeznádiin mííl")+ , (654321, "hastą́ądi neeznádiin ashdladiin dóó baʼąą dį́įʼdi mííl táadi neeznádiin naadįįłaʼ")+ , (700000, "tsostsʼidi neeznádiin mííl")+ , (800000, "tseebíidi neeznádiin mííl")+ , (900000, "náhástʼéidi neeznádiin mííl")+ , (1000000, "tʼááłáhádí mííltsoh")+ , (1000001, "tʼááłáhádí mííltsoh tʼááłáʼí")+ , (1234567, "tʼááłáhádí mííltsoh naakidi neeznádiin tádiin dóó baʼąą dį́įʼdi mííl ashdladi neeznádiin hastą́diin dóó baʼąą tsostsʼid")+ , (2000000, "naakidi mííltsoh")+ , (3000000, "táadi mííltsoh")+ , (4000000, "dį́įʼdi mííltsoh")+ , (5000000, "ashdladi mííltsoh")+ , (6000000, "hastą́ądi mííltsoh")+ , (7000000, "tsostsʼidi mííltsoh")+ , (7654321, "tsostsʼidi mííltsoh hastą́ądi neeznádiin ashdladiin dóó baʼąą dį́įʼdi mííl táadi neeznádiin naadįįłaʼ")+ , (8000000, "tseebíidi mííltsoh")+ , (9000000, "náhástʼéidi mííltsoh")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/NEE/TestData.hs view
@@ -0,0 +1,141 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] nee++[@Native name@] Nêlêmwa-Nixumwak++[@English name@] Kumak+-}+module Text.Numeral.Language.NEE.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-nelemwa/en/nee/++Note: This data uses only one Nêlêmwa numerical classifier. There are+22 categories.+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "pwa-giik")+ , (2, "pwa-du")+ , (3, "pwa-gan")+ , (4, "pwa-baak")+ , (5, "pwa-nem")+ , (6, "pwa-nem-giik")+ , (7, "pwa-nem-du")+ , (8, "pwa-nem-gan")+ , (9, "pwa-nem-baak")+ , (10, "tujic")+ , (11, "tujic xa bwaat pwagiik")+ , (12, "tujic xa bwaat pwadu")+ , (13, "tujic xa bwaat pwagan")+ , (14, "tujic xa bwaat pwabaak")+ , (15, "tujic xa bwaat pwanem")+ , (16, "tujic xa bwaat pwanemgiik")+ , (17, "tujic xa bwaat pwanemdu")+ , (18, "tujic xa bwaat pwanemgan")+ , (19, "tujic xa bwaat pwanembaak")+ , (20, "aaxi ak")+ , (21, "aaxi ak xa bwaat pwagiik")+ , (22, "aaxi ak xa bwaat pwadu")+ , (23, "aaxi ak xa bwaat pwagan")+ , (24, "aaxi ak xa bwaat pwabaak")+ , (25, "aaxi ak xa bwaat pwanem")+ , (26, "aaxi ak xa bwaat pwanemgiik")+ , (27, "aaxi ak xa bwaat pwanemdu")+ , (28, "aaxi ak xa bwaat pwanemgan")+ , (29, "aaxi ak xa bwaat pwanembaak")+ , (30, "aaxi ak xa bwaat tujic")+ , (31, "aaxi ak xa bwaat tujic xa bwaat pwagiik")+ , (32, "aaxi ak xa bwaat tujic xa bwaat pwadu")+ , (33, "aaxi ak xa bwaat tujic xa bwaat pwagan")+ , (34, "aaxi ak xa bwaat tujic xa bwaat pwabaak")+ , (35, "aaxi ak xa bwaat tujic xa bwaat pwanem")+ , (36, "aaxi ak xa bwaat tujic xa bwaat pwanemgiik")+ , (37, "aaxi ak xa bwaat tujic xa bwaat pwanemdu")+ , (38, "aaxi ak xa bwaat tujic xa bwaat pwanemgan")+ , (39, "aaxi ak xa bwaat tujic xa bwaat pwanembaak")+ , (40, "aaru ak")+ , (41, "aaru ak xa bwaat pwagiik")+ , (42, "aaru ak xa bwaat pwadu")+ , (43, "aaru ak xa bwaat pwagan")+ , (44, "aaru ak xa bwaat pwabaak")+ , (45, "aaru ak xa bwaat pwanem")+ , (46, "aaru ak xa bwaat pwanemgiik")+ , (47, "aaru ak xa bwaat pwanemdu")+ , (48, "aaru ak xa bwaat pwanemgan")+ , (49, "aaru ak xa bwaat pwanembaak")+ , (50, "aaru ak xa bwaat tujic")+ , (51, "aaru ak xa bwaat tujic xa bwaat pwagiik")+ , (52, "aaru ak xa bwaat tujic xa bwaat pwadu")+ , (53, "aaru ak xa bwaat tujic xa bwaat pwagan")+ , (54, "aaru ak xa bwaat tujic xa bwaat pwabaak")+ , (55, "aaru ak xa bwaat tujic xa bwaat pwanem")+ , (56, "aaru ak xa bwaat tujic xa bwaat pwanemgiik")+ , (57, "aaru ak xa bwaat tujic xa bwaat pwanemdu")+ , (58, "aaru ak xa bwaat tujic xa bwaat pwanemgan")+ , (59, "aaru ak xa bwaat tujic xa bwaat pwanembaak")+ , (60, "aaxan ak")+ , (61, "aaxan ak xa bwaat pwagiik")+ , (62, "aaxan ak xa bwaat pwadu")+ , (63, "aaxan ak xa bwaat pwagan")+ , (64, "aaxan ak xa bwaat pwabaak")+ , (65, "aaxan ak xa bwaat pwanem")+ , (66, "aaxan ak xa bwaat pwanemgiik")+ , (67, "aaxan ak xa bwaat pwanemdu")+ , (68, "aaxan ak xa bwaat pwanemgan")+ , (69, "aaxan ak xa bwaat pwanembaak")+ , (70, "aaxan ak xa bwaat tujic")+ , (71, "aaxan ak xa bwaat tujic xa bwaat pwagiik")+ , (72, "aaxan ak xa bwaat tujic xa bwaat pwadu")+ , (73, "aaxan ak xa bwaat tujic xa bwaat pwagan")+ , (74, "aaxan ak xa bwaat tujic xa bwaat pwabaak")+ , (75, "aaxan ak xa bwaat tujic xa bwaat pwanem")+ , (76, "aaxan ak xa bwaat tujic xa bwaat pwanemgiik")+ , (77, "aaxan ak xa bwaat tujic xa bwaat pwanemdu")+ , (78, "aaxan ak xa bwaat tujic xa bwaat pwanemgan")+ , (79, "aaxan ak xa bwaat tujic xa bwaat pwanembaak")+ , (80, "aavaak ak")+ , (81, "aavaak ak xa bwaat pwagiik")+ , (82, "aavaak ak xa bwaat pwadu")+ , (83, "aavaak ak xa bwaat pwagan")+ , (84, "aavaak ak xa bwaat pwabaak")+ , (85, "aavaak ak xa bwaat pwanem")+ , (86, "aavaak ak xa bwaat pwanemgiik")+ , (87, "aavaak ak xa bwaat pwanemdu")+ , (88, "aavaak ak xa bwaat pwanemgan")+ , (89, "aavaak ak xa bwaat pwanembaak")+ , (90, "aavaak ak xa bwaat tujic")+ , (91, "aavaak ak xa bwaat tujic xa bwaat pwagiik")+ , (92, "aavaak ak xa bwaat tujic xa bwaat pwadu")+ , (93, "aavaak ak xa bwaat tujic xa bwaat pwagan")+ , (94, "aavaak ak xa bwaat tujic xa bwaat pwabaak")+ , (95, "aavaak ak xa bwaat tujic xa bwaat pwanem")+ , (96, "aavaak ak xa bwaat tujic xa bwaat pwanemgiik")+ , (97, "aavaak ak xa bwaat tujic xa bwaat pwanemdu")+ , (98, "aavaak ak xa bwaat tujic xa bwaat pwanemgan")+ , (99, "aavaak ak xa bwaat tujic xa bwaat pwanembaak")+ , (100, "aanem ak")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/NEN/TestData.hs view
@@ -0,0 +1,68 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] nen++[@Native name@] -++[@English name@] Nengone+-}+module Text.Numeral.Language.NEN.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-nengone/en/nen/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "sa")+ , (2, "rewe")+ , (3, "tini")+ , (4, "ece")+ , (5, "sedong")+ , (6, "sedong ne sa")+ , (7, "sedong ne rew")+ , (8, "sedong ne tin")+ , (9, "sedong ne ec")+ , (10, "ruenin")+ , (11, "ruenin ne sa")+ , (12, "ruenin ne rew")+ , (13, "ruenin ne tin")+ , (14, "ruenin ne ec")+ , (15, "adenin")+ , (16, "adenin ne sa")+ , (17, "adenin ne rew")+ , (18, "adenin ne tin")+ , (19, "adenin ne ec")+ , (20, "sarengom")+ , (21, "sarengom ne sa")+ , (22, "sarengom ne rew")+ , (23, "sarengom ne tin")+ , (24, "sarengom ne ec")+ , (25, "sarengom ne sedong")+ , (26, "sarengom ne sedosa")+ , (27, "sarengom ne sedorew")+ , (28, "sarengom ne sedotin")+ , (29, "sarengom ne sedoec")+ , (30, "sarengom ne ruenin")+ ]+ )+ ]
− src-test/Text/Numeral/Language/NL/TestData.hs
@@ -1,380 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] nl--[@ISO639-2B@] dut--[@ISO639-3@] nld--[@Native name@] Nederlands--[@English name@] Dutch--}--module Text.Numeral.Language.NL.TestData- ( cardinals- , ordinals- , partitives- , multiplicatives- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "singular"- , singular defaultInflection- , [ (0, "nul")- , (1, "één")- , (2, "twee")- , (3, "drie")- , (4, "vier")- , (5, "vijf")- , (6, "zes")- , (7, "zeven")- , (8, "acht")- , (9, "negen")- , (10, "tien")- , (11, "elf")- , (12, "twaalf")- , (13, "dertien")- , (14, "veertien")- , (15, "vijftien")- , (16, "zestien")- , (17, "zeventien")- , (18, "achtien")- , (19, "negentien")- , (20, "twintig")- , (21, "éénentwintig")- , (22, "tweeëntwintig")- , (23, "drieëntwintig")- , (24, "vierentwintig")- , (25, "vijfentwintig")- , (26, "zesentwintig")- , (27, "zevenentwintig")- , (28, "achtentwintig")- , (29, "negenentwintig")- , (30, "dertig")- , (31, "éénendertig")- , (32, "tweeëndertig")- , (33, "drieëndertig")- , (34, "vierendertig")- , (35, "vijfendertig")- , (36, "zesendertig")- , (37, "zevenendertig")- , (38, "achtendertig")- , (39, "negenendertig")- , (40, "veertig")- , (41, "éénenveertig")- , (42, "tweeënveertig")- , (43, "drieënveertig")- , (44, "vierenveertig")- , (45, "vijfenveertig")- , (46, "zesenveertig")- , (47, "zevenenveertig")- , (48, "achtenveertig")- , (49, "negenenveertig")- , (50, "vijftig")- , (51, "éénenvijftig")- , (52, "tweeënvijftig")- , (53, "drieënvijftig")- , (54, "vierenvijftig")- , (55, "vijfenvijftig")- , (56, "zesenvijftig")- , (57, "zevenenvijftig")- , (58, "achtenvijftig")- , (59, "negenenvijftig")- , (60, "zestig")- , (61, "éénenzestig")- , (62, "tweeënzestig")- , (63, "drieënzestig")- , (64, "vierenzestig")- , (65, "vijfenzestig")- , (66, "zesenzestig")- , (67, "zevenenzestig")- , (68, "achtenzestig")- , (69, "negenenzestig")- , (70, "zeventig")- , (71, "éénenzeventig")- , (72, "tweeënzeventig")- , (73, "drieënzeventig")- , (74, "vierenzeventig")- , (75, "vijfenzeventig")- , (76, "zesenzeventig")- , (77, "zevenenzeventig")- , (78, "achtenzeventig")- , (79, "negenenzeventig")- , (80, "tachtig")- , (81, "éénentachtig")- , (82, "tweeëntachtig")- , (83, "drieëntachtig")- , (84, "vierentachtig")- , (85, "vijfentachtig")- , (86, "zesentachtig")- , (87, "zevenentachtig")- , (88, "achtentachtig")- , (89, "negenentachtig")- , (90, "negentig")- , (91, "éénennegentig")- , (92, "tweeënnegentig")- , (93, "drieënnegentig")- , (94, "vierennegentig")- , (95, "vijfennegentig")- , (96, "zesennegentig")- , (97, "zevenennegentig")- , (98, "achtennegentig")- , (99, "negenennegentig")- , (100, "honderd")- , (101, "honderdéén")- , (108, "honderdacht")- , (118, "honderdachtien")- , (115, "honderdvijftien")- , (500, "vijfhonderd")- , (999, "negenhonderdnegenennegentig")- , (1000, "duizend")- , (1001, "duizendéén")- , (1008, "duizendacht")- , (8000, "achtduizend")- , (900000, "negenhonderdduizend")- , (dec 6, "miljoen")- , (dec 9, "miljard")- , (dec 12, "biljoen")- , (dec 15, "biljard")- , (dec 18, "triljoen")- , (dec 21, "triljard")- , (dec 24, "quadriljoen")- , (dec 27, "quadriljard")- ]- )- , ( "plural"- , plural defaultInflection- , [ (1, "éénen")- , (2, "tweeën")- , (3, "drieën")- , (4, "vieren")- , (5, "vijven")- , (6, "zessen")- , (7, "zevens")- , (8, "achten")- , (9, "negens")- , (10, "tienen")- , (11, "elven")- , (12, "twaalven")- , (13, "dertiens")- , (14, "veertiens")- , (15, "vijftiens")- , (16, "zestiens")- , (17, "zeventiens")- , (18, "achtiens")- , (19, "negentiens")- , (20, "twintigs")- , (100, "honderden")- , (1000, "duizenden")- , (dec 6, "miljoenen")- , (dec 9, "miljarden")- , (dec 12, "biljoenen")- , (dec 15, "biljarden")- ]- )- , ( "dative"- , dative defaultInflection- , [ (1, "éénen")- , (2, "tweeën")- , (3, "drieën")- , (4, "vieren")- , (5, "vijven")- , (6, "zessen")- , (7, "zevenen")- , (8, "achten")- , (9, "negenen")- , (10, "tienen")- , (11, "elven")- , (12, "twaalven")- , (13, "dertienen")- , (14, "veertienen")- , (15, "vijftienen")- , (16, "zestienen")- , (17, "zeventienen")- , (18, "achtienen")- , (19, "negentienen")- , (20, "twintigen")- , (23, "drieëntwintigen")- , (100, "honderden")- , (1000, "duizenden")- , (dec 6, "miljoenen")- , (dec 9, "miljarden")- , (dec 12, "biljoenen")- , (dec 15, "biljarden")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "default"- , defaultInflection- , [ (1, "eerste")- , (2, "tweede")- , (3, "derde")- , (4, "vierde")- , (5, "vijfde")- , (6, "zesde")- , (7, "zevende")- , (8, "achtste")- , (9, "negende")- , (10, "tiende")- , (11, "elfde")- , (12, "twaalfde")- , (13, "dertiende")- , (14, "veertiende")- , (15, "vijftiende")- , (16, "zestiende")- , (17, "zeventiende")- , (18, "achtiende")- , (19, "negentiende")- , (20, "twintigste")- , (21, "éénentwintigste")- , (22, "tweeëntwintigste")- , (23, "drieëntwintigste")- , (24, "vierentwintigste")- , (25, "vijfentwintigste")- , (26, "zesentwintigste")- , (27, "zevenentwintigste")- , (28, "achtentwintigste")- , (29, "negenentwintigste")- , (30, "dertigste")- , (31, "éénendertigste")- , (32, "tweeëndertigste")- , (33, "drieëndertigste")- , (34, "vierendertigste")- , (35, "vijfendertigste")- , (36, "zesendertigste")- , (37, "zevenendertigste")- , (38, "achtendertigste")- , (39, "negenendertigste")- , (40, "veertigste")- , (41, "éénenveertigste")- , (42, "tweeënveertigste")- , (43, "drieënveertigste")- , (44, "vierenveertigste")- , (45, "vijfenveertigste")- , (46, "zesenveertigste")- , (47, "zevenenveertigste")- , (48, "achtenveertigste")- , (49, "negenenveertigste")- , (50, "vijftigste")- , (51, "éénenvijftigste")- , (52, "tweeënvijftigste")- , (53, "drieënvijftigste")- , (54, "vierenvijftigste")- , (55, "vijfenvijftigste")- , (56, "zesenvijftigste")- , (57, "zevenenvijftigste")- , (58, "achtenvijftigste")- , (59, "negenenvijftigste")- , (60, "zestigste")- , (61, "éénenzestigste")- , (62, "tweeënzestigste")- , (63, "drieënzestigste")- , (64, "vierenzestigste")- , (65, "vijfenzestigste")- , (66, "zesenzestigste")- , (67, "zevenenzestigste")- , (68, "achtenzestigste")- , (69, "negenenzestigste")- , (70, "zeventigste")- , (71, "éénenzeventigste")- , (72, "tweeënzeventigste")- , (73, "drieënzeventigste")- , (74, "vierenzeventigste")- , (75, "vijfenzeventigste")- , (76, "zesenzeventigste")- , (77, "zevenenzeventigste")- , (78, "achtenzeventigste")- , (79, "negenenzeventigste")- , (80, "tachtigste")- , (81, "éénentachtigste")- , (82, "tweeëntachtigste")- , (83, "drieëntachtigste")- , (84, "vierentachtigste")- , (85, "vijfentachtigste")- , (86, "zesentachtigste")- , (87, "zevenentachtigste")- , (88, "achtentachtigste")- , (89, "negenentachtigste")- , (90, "negentigste")- , (91, "éénennegentigste")- , (92, "tweeënnegentigste")- , (93, "drieënnegentigste")- , (94, "vierennegentigste")- , (95, "vijfennegentigste")- , (96, "zesennegentigste")- , (97, "zevenennegentigste")- , (98, "achtennegentigste")- , (99, "negenennegentigste")- , (100, "honderdste")- ]- )- ]--partitives ∷ (Integral i) ⇒ TestData (i, i)-partitives =- [ ("singular", singular defaultInflection, testData)- , ("ignored plural", plural defaultInflection, testData)- , ("ignored dative", dative defaultInflection, testData)- ]- where- testData =- [ ((0, 1), "nul éénde")- , ((1, 1), "één éénde")- , ((0, 2), "nul tweede")- , ((1, 2), "één tweede") -- optionally "de helft"- , ((2, 2), "twee tweede")- , ((1, 3), "één derde")- , ((2, 3), "twee derde")- , ((1, 4), "één vierde") -- optionally "één kwart"- , ((2, 4), "twee vierde") -- optionally "twee kwart"- , ((3, 4), "drie vierde") -- optionally "drie kwart"- , ((4, 4), "vier vierde") -- optionally "vier kwart"- , ((1, 5), "één vijfde")- , ((2, 5), "twee vijfde")- , ((1, 10), "één tiende")- , ((1, 100), "één honderdste")- , ((12, 144), "twaalf honderdvierenveertigste")- , ((-1, 2), "min één tweede")- , ((2, -3), "twee min derde")- , ((-3, -5), "min drie min vijfde")- ]--multiplicatives ∷ (Integral i) ⇒ TestData i-multiplicatives =- [ ("singular", singular defaultInflection, testData)- , ("ignored plural", plural defaultInflection, testData)- , ("ignored dative", dative defaultInflection, testData)- ]- where- testData =- [ (1, "éénmaal")- , (2, "tweemaal")- , (3, "driemaal")- , (10, "tienmaal")- ]
+ src-test/Text/Numeral/Language/NLD/TestData.hs view
@@ -0,0 +1,373 @@+{-|+[@ISO639-1@] nl++[@ISO639-2B@] dut++[@ISO639-3@] nld++[@Native name@] Nederlands++[@English name@] Dutch+-}++module Text.Numeral.Language.NLD.TestData+ ( cardinals+ , ordinals+ , partitives+ , multiplicatives+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "singular"+ , singular defaultInflection+ , [ (0, "nul")+ , (1, "één")+ , (2, "twee")+ , (3, "drie")+ , (4, "vier")+ , (5, "vijf")+ , (6, "zes")+ , (7, "zeven")+ , (8, "acht")+ , (9, "negen")+ , (10, "tien")+ , (11, "elf")+ , (12, "twaalf")+ , (13, "dertien")+ , (14, "veertien")+ , (15, "vijftien")+ , (16, "zestien")+ , (17, "zeventien")+ , (18, "achtien")+ , (19, "negentien")+ , (20, "twintig")+ , (21, "éénentwintig")+ , (22, "tweeëntwintig")+ , (23, "drieëntwintig")+ , (24, "vierentwintig")+ , (25, "vijfentwintig")+ , (26, "zesentwintig")+ , (27, "zevenentwintig")+ , (28, "achtentwintig")+ , (29, "negenentwintig")+ , (30, "dertig")+ , (31, "éénendertig")+ , (32, "tweeëndertig")+ , (33, "drieëndertig")+ , (34, "vierendertig")+ , (35, "vijfendertig")+ , (36, "zesendertig")+ , (37, "zevenendertig")+ , (38, "achtendertig")+ , (39, "negenendertig")+ , (40, "veertig")+ , (41, "éénenveertig")+ , (42, "tweeënveertig")+ , (43, "drieënveertig")+ , (44, "vierenveertig")+ , (45, "vijfenveertig")+ , (46, "zesenveertig")+ , (47, "zevenenveertig")+ , (48, "achtenveertig")+ , (49, "negenenveertig")+ , (50, "vijftig")+ , (51, "éénenvijftig")+ , (52, "tweeënvijftig")+ , (53, "drieënvijftig")+ , (54, "vierenvijftig")+ , (55, "vijfenvijftig")+ , (56, "zesenvijftig")+ , (57, "zevenenvijftig")+ , (58, "achtenvijftig")+ , (59, "negenenvijftig")+ , (60, "zestig")+ , (61, "éénenzestig")+ , (62, "tweeënzestig")+ , (63, "drieënzestig")+ , (64, "vierenzestig")+ , (65, "vijfenzestig")+ , (66, "zesenzestig")+ , (67, "zevenenzestig")+ , (68, "achtenzestig")+ , (69, "negenenzestig")+ , (70, "zeventig")+ , (71, "éénenzeventig")+ , (72, "tweeënzeventig")+ , (73, "drieënzeventig")+ , (74, "vierenzeventig")+ , (75, "vijfenzeventig")+ , (76, "zesenzeventig")+ , (77, "zevenenzeventig")+ , (78, "achtenzeventig")+ , (79, "negenenzeventig")+ , (80, "tachtig")+ , (81, "éénentachtig")+ , (82, "tweeëntachtig")+ , (83, "drieëntachtig")+ , (84, "vierentachtig")+ , (85, "vijfentachtig")+ , (86, "zesentachtig")+ , (87, "zevenentachtig")+ , (88, "achtentachtig")+ , (89, "negenentachtig")+ , (90, "negentig")+ , (91, "éénennegentig")+ , (92, "tweeënnegentig")+ , (93, "drieënnegentig")+ , (94, "vierennegentig")+ , (95, "vijfennegentig")+ , (96, "zesennegentig")+ , (97, "zevenennegentig")+ , (98, "achtennegentig")+ , (99, "negenennegentig")+ , (100, "honderd")+ , (101, "honderdéén")+ , (108, "honderdacht")+ , (118, "honderdachtien")+ , (115, "honderdvijftien")+ , (500, "vijfhonderd")+ , (999, "negenhonderdnegenennegentig")+ , (1000, "duizend")+ , (1001, "duizendéén")+ , (1008, "duizendacht")+ , (8000, "achtduizend")+ , (900000, "negenhonderdduizend")+ , (dec 6, "miljoen")+ , (dec 9, "miljard")+ , (dec 12, "biljoen")+ , (dec 15, "biljard")+ , (dec 18, "triljoen")+ , (dec 21, "triljard")+ , (dec 24, "quadriljoen")+ , (dec 27, "quadriljard")+ ]+ )+ , ( "plural"+ , plural defaultInflection+ , [ (1, "éénen")+ , (2, "tweeën")+ , (3, "drieën")+ , (4, "vieren")+ , (5, "vijven")+ , (6, "zessen")+ , (7, "zevens")+ , (8, "achten")+ , (9, "negens")+ , (10, "tienen")+ , (11, "elven")+ , (12, "twaalven")+ , (13, "dertiens")+ , (14, "veertiens")+ , (15, "vijftiens")+ , (16, "zestiens")+ , (17, "zeventiens")+ , (18, "achtiens")+ , (19, "negentiens")+ , (20, "twintigs")+ , (100, "honderden")+ , (1000, "duizenden")+ , (dec 6, "miljoenen")+ , (dec 9, "miljarden")+ , (dec 12, "biljoenen")+ , (dec 15, "biljarden")+ ]+ )+ , ( "dative"+ , dative defaultInflection+ , [ (1, "éénen")+ , (2, "tweeën")+ , (3, "drieën")+ , (4, "vieren")+ , (5, "vijven")+ , (6, "zessen")+ , (7, "zevenen")+ , (8, "achten")+ , (9, "negenen")+ , (10, "tienen")+ , (11, "elven")+ , (12, "twaalven")+ , (13, "dertienen")+ , (14, "veertienen")+ , (15, "vijftienen")+ , (16, "zestienen")+ , (17, "zeventienen")+ , (18, "achtienen")+ , (19, "negentienen")+ , (20, "twintigen")+ , (23, "drieëntwintigen")+ , (100, "honderden")+ , (1000, "duizenden")+ , (dec 6, "miljoenen")+ , (dec 9, "miljarden")+ , (dec 12, "biljoenen")+ , (dec 15, "biljarden")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "eerste")+ , (2, "tweede")+ , (3, "derde")+ , (4, "vierde")+ , (5, "vijfde")+ , (6, "zesde")+ , (7, "zevende")+ , (8, "achtste")+ , (9, "negende")+ , (10, "tiende")+ , (11, "elfde")+ , (12, "twaalfde")+ , (13, "dertiende")+ , (14, "veertiende")+ , (15, "vijftiende")+ , (16, "zestiende")+ , (17, "zeventiende")+ , (18, "achtiende")+ , (19, "negentiende")+ , (20, "twintigste")+ , (21, "éénentwintigste")+ , (22, "tweeëntwintigste")+ , (23, "drieëntwintigste")+ , (24, "vierentwintigste")+ , (25, "vijfentwintigste")+ , (26, "zesentwintigste")+ , (27, "zevenentwintigste")+ , (28, "achtentwintigste")+ , (29, "negenentwintigste")+ , (30, "dertigste")+ , (31, "éénendertigste")+ , (32, "tweeëndertigste")+ , (33, "drieëndertigste")+ , (34, "vierendertigste")+ , (35, "vijfendertigste")+ , (36, "zesendertigste")+ , (37, "zevenendertigste")+ , (38, "achtendertigste")+ , (39, "negenendertigste")+ , (40, "veertigste")+ , (41, "éénenveertigste")+ , (42, "tweeënveertigste")+ , (43, "drieënveertigste")+ , (44, "vierenveertigste")+ , (45, "vijfenveertigste")+ , (46, "zesenveertigste")+ , (47, "zevenenveertigste")+ , (48, "achtenveertigste")+ , (49, "negenenveertigste")+ , (50, "vijftigste")+ , (51, "éénenvijftigste")+ , (52, "tweeënvijftigste")+ , (53, "drieënvijftigste")+ , (54, "vierenvijftigste")+ , (55, "vijfenvijftigste")+ , (56, "zesenvijftigste")+ , (57, "zevenenvijftigste")+ , (58, "achtenvijftigste")+ , (59, "negenenvijftigste")+ , (60, "zestigste")+ , (61, "éénenzestigste")+ , (62, "tweeënzestigste")+ , (63, "drieënzestigste")+ , (64, "vierenzestigste")+ , (65, "vijfenzestigste")+ , (66, "zesenzestigste")+ , (67, "zevenenzestigste")+ , (68, "achtenzestigste")+ , (69, "negenenzestigste")+ , (70, "zeventigste")+ , (71, "éénenzeventigste")+ , (72, "tweeënzeventigste")+ , (73, "drieënzeventigste")+ , (74, "vierenzeventigste")+ , (75, "vijfenzeventigste")+ , (76, "zesenzeventigste")+ , (77, "zevenenzeventigste")+ , (78, "achtenzeventigste")+ , (79, "negenenzeventigste")+ , (80, "tachtigste")+ , (81, "éénentachtigste")+ , (82, "tweeëntachtigste")+ , (83, "drieëntachtigste")+ , (84, "vierentachtigste")+ , (85, "vijfentachtigste")+ , (86, "zesentachtigste")+ , (87, "zevenentachtigste")+ , (88, "achtentachtigste")+ , (89, "negenentachtigste")+ , (90, "negentigste")+ , (91, "éénennegentigste")+ , (92, "tweeënnegentigste")+ , (93, "drieënnegentigste")+ , (94, "vierennegentigste")+ , (95, "vijfennegentigste")+ , (96, "zesennegentigste")+ , (97, "zevenennegentigste")+ , (98, "achtennegentigste")+ , (99, "negenennegentigste")+ , (100, "honderdste")+ ]+ )+ ]++partitives :: (Integral i) => TestData (i, i)+partitives =+ [ ("singular", singular defaultInflection, testData)+ , ("ignored plural", plural defaultInflection, testData)+ , ("ignored dative", dative defaultInflection, testData)+ ]+ where+ testData =+ [ ((0, 1), "nul éénde")+ , ((1, 1), "één éénde")+ , ((0, 2), "nul tweede")+ , ((1, 2), "één tweede") -- optionally "de helft"+ , ((2, 2), "twee tweede")+ , ((1, 3), "één derde")+ , ((2, 3), "twee derde")+ , ((1, 4), "één vierde") -- optionally "één kwart"+ , ((2, 4), "twee vierde") -- optionally "twee kwart"+ , ((3, 4), "drie vierde") -- optionally "drie kwart"+ , ((4, 4), "vier vierde") -- optionally "vier kwart"+ , ((1, 5), "één vijfde")+ , ((2, 5), "twee vijfde")+ , ((1, 10), "één tiende")+ , ((1, 100), "één honderdste")+ , ((12, 144), "twaalf honderdvierenveertigste")+ , ((-1, 2), "min één tweede")+ , ((2, -3), "twee min derde")+ , ((-3, -5), "min drie min vijfde")+ ]++multiplicatives :: (Integral i) => TestData i+multiplicatives =+ [ ("singular", singular defaultInflection, testData)+ , ("ignored plural", plural defaultInflection, testData)+ , ("ignored dative", dative defaultInflection, testData)+ ]+ where+ testData =+ [ (1, "éénmaal")+ , (2, "tweemaal")+ , (3, "driemaal")+ , (10, "tienmaal")+ ]
− src-test/Text/Numeral/Language/NO/TestData.hs
@@ -1,170 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] nb--[@ISO639-2B@] nob--[@ISO639-3@] nob--[@Native name@] Bokmål--[@English name@] Norwegian Bokmål--}--module Text.Numeral.Language.NO.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources:--- http://en.wikibooks.org/wiki/Norwegian_Numbers--- http://www.sf.airnet.ne.jp/~ts/language/number/norwegian.html--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "null")- , (1, "én")- , (2, "to")- , (3, "tre")- , (4, "fire")- , (5, "fem")- , (6, "seks")- , (7, "sju")- , (8, "åtte")- , (9, "ni")- , (10, "ti")- , (11, "elleve")- , (12, "tolv")- , (13, "tretten")- , (14, "fjorten")- , (15, "femten")- , (16, "seksten")- , (17, "sytten")- , (18, "atten")- , (19, "nitten")- , (20, "tjue")- , (21, "tjueen")- , (22, "tjueto")- , (23, "tjuetre")- , (24, "tjuefire")- , (25, "tjuefem")- , (26, "tjueseks")- , (27, "tjuesju")- , (28, "tjueåtte")- , (29, "tjueni")- , (30, "tretti")- , (31, "trettien")- , (32, "trettito")- , (33, "trettitre")- , (34, "trettifire")- , (35, "trettifem")- , (36, "trettiseks")- , (37, "trettisju")- , (38, "trettiåtte")- , (39, "trettini")- , (40, "førti")- , (41, "førtien")- , (42, "førtito")- , (43, "førtitre")- , (44, "førtifire")- , (45, "førtifem")- , (46, "førtiseks")- , (47, "førtisju")- , (48, "førtiåtte")- , (49, "førtini")- , (50, "femti")- , (51, "femtien")- , (52, "femtito")- , (53, "femtitre")- , (54, "femtifire")- , (55, "femtifem")- , (56, "femtiseks")- , (57, "femtisju")- , (58, "femtiåtte")- , (59, "femtini")- , (60, "seksti")- , (61, "sekstien")- , (62, "sekstito")- , (63, "sekstitre")- , (64, "sekstifire")- , (65, "sekstifem")- , (66, "sekstiseks")- , (67, "sekstisju")- , (68, "sekstiåtte")- , (69, "sekstini")- , (70, "sytti")- , (71, "syttien")- , (72, "syttito")- , (73, "syttitre")- , (74, "syttifire")- , (75, "syttifem")- , (76, "syttiseks")- , (77, "syttisju")- , (78, "syttiåtte")- , (79, "syttini")- , (80, "åtti")- , (81, "åttien")- , (82, "åttito")- , (83, "åttitre")- , (84, "åttifire")- , (85, "åttifem")- , (86, "åttiseks")- , (87, "åttisju")- , (88, "åttiåtte")- , (89, "åttini")- , (90, "nitti")- , (91, "nittien")- , (92, "nittito")- , (93, "nittitre")- , (94, "nittifire")- , (95, "nittifem")- , (96, "nittiseks")- , (97, "nittisju")- , (98, "nittiåtte")- , (99, "nittini")- , (100, "hundre")- , (123, "hundre tjuetre")- , (200, "to hundre")- , (300, "tre hundre")- , (400, "fire hundre")- , (500, "fem hundre")- , (600, "seks hundre")- , (700, "sju hundre")- , (800, "åtte hundre")- , (900, "ni hundre")- , (1000, "tusen")- , (1023, "tusen tjuetre")- , (2000, "totusen")- , (3000, "tretusen")- , (4000, "firetusen")- , (5000, "femtusen")- , (6000, "sekstusen")- , (7000, "sjutusen")- , (8000, "åttetusen")- , (9000, "nitusen")- , (10000, "titusen")- , (dec 6, "million")- , (2 ⋅ dec 6, "to millioner")- ]- )- ]
+ src-test/Text/Numeral/Language/NOB/TestData.hs view
@@ -0,0 +1,162 @@+{-|+[@ISO639-1@] nb++[@ISO639-2B@] nob++[@ISO639-3@] nob++[@Native name@] Bokmål++[@English name@] Norwegian Bokmål+-}++module Text.Numeral.Language.NOB.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources:+-- http://en.wikibooks.org/wiki/Norwegian_Numbers+-- http://www.sf.airnet.ne.jp/~ts/language/number/norwegian.html++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "null")+ , (1, "én")+ , (2, "to")+ , (3, "tre")+ , (4, "fire")+ , (5, "fem")+ , (6, "seks")+ , (7, "sju")+ , (8, "åtte")+ , (9, "ni")+ , (10, "ti")+ , (11, "elleve")+ , (12, "tolv")+ , (13, "tretten")+ , (14, "fjorten")+ , (15, "femten")+ , (16, "seksten")+ , (17, "sytten")+ , (18, "atten")+ , (19, "nitten")+ , (20, "tjue")+ , (21, "tjueen")+ , (22, "tjueto")+ , (23, "tjuetre")+ , (24, "tjuefire")+ , (25, "tjuefem")+ , (26, "tjueseks")+ , (27, "tjuesju")+ , (28, "tjueåtte")+ , (29, "tjueni")+ , (30, "tretti")+ , (31, "trettien")+ , (32, "trettito")+ , (33, "trettitre")+ , (34, "trettifire")+ , (35, "trettifem")+ , (36, "trettiseks")+ , (37, "trettisju")+ , (38, "trettiåtte")+ , (39, "trettini")+ , (40, "førti")+ , (41, "førtien")+ , (42, "førtito")+ , (43, "førtitre")+ , (44, "førtifire")+ , (45, "førtifem")+ , (46, "førtiseks")+ , (47, "førtisju")+ , (48, "førtiåtte")+ , (49, "førtini")+ , (50, "femti")+ , (51, "femtien")+ , (52, "femtito")+ , (53, "femtitre")+ , (54, "femtifire")+ , (55, "femtifem")+ , (56, "femtiseks")+ , (57, "femtisju")+ , (58, "femtiåtte")+ , (59, "femtini")+ , (60, "seksti")+ , (61, "sekstien")+ , (62, "sekstito")+ , (63, "sekstitre")+ , (64, "sekstifire")+ , (65, "sekstifem")+ , (66, "sekstiseks")+ , (67, "sekstisju")+ , (68, "sekstiåtte")+ , (69, "sekstini")+ , (70, "sytti")+ , (71, "syttien")+ , (72, "syttito")+ , (73, "syttitre")+ , (74, "syttifire")+ , (75, "syttifem")+ , (76, "syttiseks")+ , (77, "syttisju")+ , (78, "syttiåtte")+ , (79, "syttini")+ , (80, "åtti")+ , (81, "åttien")+ , (82, "åttito")+ , (83, "åttitre")+ , (84, "åttifire")+ , (85, "åttifem")+ , (86, "åttiseks")+ , (87, "åttisju")+ , (88, "åttiåtte")+ , (89, "åttini")+ , (90, "nitti")+ , (91, "nittien")+ , (92, "nittito")+ , (93, "nittitre")+ , (94, "nittifire")+ , (95, "nittifem")+ , (96, "nittiseks")+ , (97, "nittisju")+ , (98, "nittiåtte")+ , (99, "nittini")+ , (100, "hundre")+ , (123, "hundre tjuetre")+ , (200, "to hundre")+ , (300, "tre hundre")+ , (400, "fire hundre")+ , (500, "fem hundre")+ , (600, "seks hundre")+ , (700, "sju hundre")+ , (800, "åtte hundre")+ , (900, "ni hundre")+ , (1000, "tusen")+ , (1023, "tusen tjuetre")+ , (2000, "totusen")+ , (3000, "tretusen")+ , (4000, "firetusen")+ , (5000, "femtusen")+ , (6000, "sekstusen")+ , (7000, "sjutusen")+ , (8000, "åttetusen")+ , (9000, "nitusen")+ , (10000, "titusen")+ , (dec 6, "million")+ , (2 * dec 6, "to millioner")+ ]+ )+ ]
src-test/Text/Numeral/Language/NQM/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -23,8 +17,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -32,7 +25,7 @@ -- Test data -------------------------------------------------------------------------------- -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/OCI/TestData.hs view
@@ -0,0 +1,221 @@+{-|+[@ISO639-1@] oc++[@ISO639-2@] oci++[@ISO639-3@] oci++[@Native name@] occitan, lenga d'òc++[@English name@] Occitan+-}+module Text.Numeral.Language.OCI.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-occitan/en/oci/http://www.languagesandnumbers.com/how-to-count-in-occitan/en/oci/++Note: This is the Languedocien dialect.+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "zèro")+ , (1, "un")+ , (2, "dos")+ , (3, "tres")+ , (4, "quatre")+ , (5, "cinc")+ , (6, "sièis")+ , (7, "sèt")+ , (8, "uèch")+ , (9, "nòu")+ , (10, "dètz")+ , (11, "onze")+ , (12, "dotze")+ , (13, "tretze")+ , (14, "catòrze")+ , (15, "quinze")+ , (16, "setze")+ , (17, "dètz-e-sèt")+ , (18, "dètz-e-uèch")+ , (19, "dètz-e-nòu")+ , (20, "vint")+ , (21, "vint-e-un")+ , (22, "vint-e-dos")+ , (23, "vint-e-tres")+ , (24, "vint-e-quatre")+ , (25, "vint-e-cinc")+ , (26, "vint-e-sièis")+ , (27, "vint-e-sèt")+ , (28, "vint-e-uèch")+ , (29, "vint-e-nòu")+ , (30, "trenta")+ , (31, "trenta un")+ , (32, "trenta dos")+ , (33, "trenta tres")+ , (34, "trenta quatre")+ , (35, "trenta cinc")+ , (36, "trenta sièis")+ , (37, "trenta sèt")+ , (38, "trenta uèch")+ , (39, "trenta nòu")+ , (40, "quaranta")+ , (41, "quaranta un")+ , (42, "quaranta dos")+ , (43, "quaranta tres")+ , (44, "quaranta quatre")+ , (45, "quaranta cinc")+ , (46, "quaranta sièis")+ , (47, "quaranta sèt")+ , (48, "quaranta uèch")+ , (49, "quaranta nòu")+ , (50, "cinquanta")+ , (51, "cinquanta un")+ , (52, "cinquanta dos")+ , (53, "cinquanta tres")+ , (54, "cinquanta quatre")+ , (55, "cinquanta cinc")+ , (56, "cinquanta sièis")+ , (57, "cinquanta sèt")+ , (58, "cinquanta uèch")+ , (59, "cinquanta nòu")+ , (60, "seissanta")+ , (61, "seissanta un")+ , (62, "seissanta dos")+ , (63, "seissanta tres")+ , (64, "seissanta quatre")+ , (65, "seissanta cinc")+ , (66, "seissanta sièis")+ , (67, "seissanta sèt")+ , (68, "seissanta uèch")+ , (69, "seissanta nòu")+ , (70, "setanta")+ , (71, "setanta un")+ , (72, "setanta dos")+ , (73, "setanta tres")+ , (74, "setanta quatre")+ , (75, "setanta cinc")+ , (76, "setanta sièis")+ , (77, "setanta sèt")+ , (78, "setanta uèch")+ , (79, "setanta nòu")+ , (80, "ochanta")+ , (81, "ochanta un")+ , (82, "ochanta dos")+ , (83, "ochanta tres")+ , (84, "ochanta quatre")+ , (85, "ochanta cinc")+ , (86, "ochanta sièis")+ , (87, "ochanta sèt")+ , (88, "ochanta uèch")+ , (89, "ochanta nòu")+ , (90, "nonanta")+ , (91, "nonanta un")+ , (92, "nonanta dos")+ , (93, "nonanta tres")+ , (94, "nonanta quatre")+ , (95, "nonanta cinc")+ , (96, "nonanta sièis")+ , (97, "nonanta sèt")+ , (98, "nonanta uèch")+ , (99, "nonanta nòu")+ , (100, "cent")+ , (101, "cent un")+ , (102, "cent dos")+ , (103, "cent tres")+ , (104, "cent quatre")+ , (105, "cent cinc")+ , (106, "cent sièis")+ , (107, "cent sèt")+ , (108, "cent uèch")+ , (109, "cent nòu")+ , (110, "cent dètz")+ , (123, "cent vint-e-tres")+ , (200, "dos cents")+ , (300, "tres cents")+ , (321, "tres cents vint-e-un")+ , (400, "quatre cents")+ , (500, "cinc cents")+ , (600, "sièis cents")+ , (700, "sèt cents")+ , (800, "uèch cents")+ , (900, "nòu cents")+ , (909, "nòu cents nòu")+ , (990, "nòu cents nonanta")+ , (999, "nòu cents nonanta nòu")+ , (1000, "mila")+ , (1001, "mila un")+ , (1008, "mila uèch")+ , (1234, "mila dos cents trenta quatre")+ , (2000, "dos mila")+ , (3000, "tres mila")+ , (4000, "quatre mila")+ , (4321, "quatre mila tres cents vint-e-un")+ , (5000, "cinc mila")+ , (6000, "sièis mila")+ , (7000, "sèt mila")+ , (8000, "uèch mila")+ , (9000, "nòu mila")+ , (10000, "dètz mila")+ , (12345, "dotze mila tres cents quaranta cinc")+ , (20000, "vint mila")+ , (30000, "trenta mila")+ , (40000, "quaranta mila")+ , (50000, "cinquanta mila")+ , (54321, "cinquanta quatre mila tres cents vint-e-un")+ , (60000, "seissanta mila")+ , (70000, "setanta mila")+ , (80000, "ochanta mila")+ , (90000, "nonanta mila")+ , (100000, "cent mila")+ , (123456, "cent vint-e-tres mila quatre cents cinquanta sièis")+ , (200000, "dos cents mila")+ , (300000, "tres cents mila")+ , (400000, "quatre cents mila")+ , (500000, "cinc cents mila")+ , (600000, "sièis cents mila")+ , (654321, "sièis cents cinquanta quatre mila tres cents vint-e-un")+ , (700000, "sèt cents mila")+ , (800000, "uèch cents mila")+ , (900000, "nòu cents mila")+ , (1000000, "un milion")+ , (1000001, "un milion un")+ , (1234567, "un milion dos cents trenta quatre mila cinc cents seissanta sèt")+ , (2000000, "dos milions")+ , (3000000, "tres milions")+ , (4000000, "quatre milions")+ , (5000000, "cinc milions")+ , (6000000, "sièis milions")+ , (7000000, "sèt milions")+ , (7654321, "sèt milions sièis cents cinquanta quatre mila tres cents vint-e-un")+ , (8000000, "uèch milions")+ , (9000000, "nòu milions")+ , (1000000000, "un miliard")+ , (1000000001, "un miliard un")+ , (2000000000, "dos miliards")+ , (3000000000, "tres miliards")+ , (4000000000, "quatre miliards")+ , (5000000000, "cinc miliards")+ , (6000000000, "sièis miliards")+ , (7000000000, "sèt miliards")+ , (8000000000, "uèch miliards")+ , (9000000000, "nòu miliards")+ ]+ )+ ]
− src-test/Text/Numeral/Language/OJ/TestData.hs
@@ -1,159 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] oj--[@ISO639-2@] oji--[@ISO639-3@] oji--[@Native name@] ᐊᓂᔑᓈᐯᒧᐎᓐ (Anishinaabemowin)--[@English name@] Ojibwe--}--module Text.Numeral.Language.OJ.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.sf.airnet.ne.jp/~ts/language/number/ojibwa.html- http://www.languagesandnumbers.com/how-to-count-in-ojibwa/en/oji/--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "kaagego")- , (1, "bezhik")- , (2, "niizh")- , (3, "nswi")- , (4, "niiwin")- , (5, "naanan")- , (6, "ngodwaaswi")- , (7, "niizhwaaswi")- , (8, "nshwaaswi")- , (9, "zhaangswi")- , (10, "mdaaswi")- , (11, "mdaaswi shaa bezhik")- , (12, "mdaaswi shaa niizh")- , (13, "mdaaswi shaa nswi")- , (14, "mdaaswi shaa niiwin")- , (15, "mdaaswi shaa naanan")- , (16, "mdaaswi shaa ngodwaaswi")- , (17, "mdaaswi shaa niizhwaaswi")- , (18, "mdaaswi shaa nshwaaswi")- , (19, "mdaaswi shaa zhaangswi")- , (20, "niizhtaana")- , (21, "niizhtaana shaa bezhik")- , (22, "niizhtaana shaa niizh")- , (23, "niizhtaana shaa nswi")- , (24, "niizhtaana shaa niiwin")- , (25, "niizhtaana shaa naanan")- , (26, "niizhtaana shaa ngodwaaswi")- , (27, "niizhtaana shaa niizhwaaswi")- , (28, "niizhtaana shaa nshwaaswi")- , (29, "niizhtaana shaa zhaangswi")- , (30, "nsimtaana")- , (31, "nsimtaana shaa bezhik")- , (32, "nsimtaana shaa niizh")- , (33, "nsimtaana shaa nswi")- , (34, "nsimtaana shaa niiwin")- , (35, "nsimtaana shaa naanan")- , (36, "nsimtaana shaa ngodwaaswi")- , (37, "nsimtaana shaa niizhwaaswi")- , (38, "nsimtaana shaa nshwaaswi")- , (39, "nsimtaana shaa zhaangswi")- , (40, "niimtaana")- , (41, "niimtaana shaa bezhik")- , (42, "niimtaana shaa niizh")- , (43, "niimtaana shaa nswi")- , (44, "niimtaana shaa niiwin")- , (45, "niimtaana shaa naanan")- , (46, "niimtaana shaa ngodwaaswi")- , (47, "niimtaana shaa niizhwaaswi")- , (48, "niimtaana shaa nshwaaswi")- , (49, "niimtaana shaa zhaangswi")- , (50, "naanmitaana")- , (51, "naanmitaana shaa bezhik")- , (52, "naanmitaana shaa niizh")- , (53, "naanmitaana shaa nswi")- , (54, "naanmitaana shaa niiwin")- , (55, "naanmitaana shaa naanan")- , (56, "naanmitaana shaa ngodwaaswi")- , (57, "naanmitaana shaa niizhwaaswi")- , (58, "naanmitaana shaa nshwaaswi")- , (59, "naanmitaana shaa zhaangswi")- , (60, "ngodwaasmitaana")- , (61, "ngodwaasmitaana shaa bezhik")- , (62, "ngodwaasmitaana shaa niizh")- , (63, "ngodwaasmitaana shaa nswi")- , (64, "ngodwaasmitaana shaa niiwin")- , (65, "ngodwaasmitaana shaa naanan")- , (66, "ngodwaasmitaana shaa ngodwaaswi")- , (67, "ngodwaasmitaana shaa niizhwaaswi")- , (68, "ngodwaasmitaana shaa nshwaaswi")- , (69, "ngodwaasmitaana shaa zhaangswi")- , (70, "niizhwaasmitaana")- , (71, "niizhwaasmitaana shaa bezhik")- , (72, "niizhwaasmitaana shaa niizh")- , (73, "niizhwaasmitaana shaa nswi")- , (74, "niizhwaasmitaana shaa niiwin")- , (75, "niizhwaasmitaana shaa naanan")- , (76, "niizhwaasmitaana shaa ngodwaaswi")- , (77, "niizhwaasmitaana shaa niizhwaaswi")- , (78, "niizhwaasmitaana shaa nshwaaswi")- , (79, "niizhwaasmitaana shaa zhaangswi")- , (80, "nshwaasmitaana")- , (81, "nshwaasmitaana shaa bezhik")- , (82, "nshwaasmitaana shaa niizh")- , (83, "nshwaasmitaana shaa nswi")- , (84, "nshwaasmitaana shaa niiwin")- , (85, "nshwaasmitaana shaa naanan")- , (86, "nshwaasmitaana shaa ngodwaaswi")- , (87, "nshwaasmitaana shaa niizhwaaswi")- , (88, "nshwaasmitaana shaa nshwaaswi")- , (89, "nshwaasmitaana shaa zhaangswi")- , (90, "zhaangsmitaana")- , (91, "zhaangsmitaana shaa bezhik")- , (92, "zhaangsmitaana shaa niizh")- , (93, "zhaangsmitaana shaa nswi")- , (94, "zhaangsmitaana shaa niiwin")- , (95, "zhaangsmitaana shaa naanan")- , (96, "zhaangsmitaana shaa ngodwaaswi")- , (97, "zhaangsmitaana shaa niizhwaaswi")- , (98, "zhaangsmitaana shaa nshwaaswi")- , (99, "zhaangsmitaana shaa zhaangswi")- , (100, "ngodwaak")- , (200, "niizhwaak")- , (300, "nswaak")- , (400, "niiwaak")- , (448, "niiwaak shaa niimtaana shaa nshwaaswi")- , (500, "naanwaak")- , (600, "ngodwaaswaak")- , (700, "niizhwaaswaak")- , (800, "nshwaaswaak")- , (900, "zhaangswaak")- , (1000, "mdaaswaak")- , (1222, "mdaaswaak shaa niizhwaak shaa niizhtaana shaa niizh")- ]- )- ]
+ src-test/Text/Numeral/Language/OJI/TestData.hs view
@@ -0,0 +1,170 @@+{-|+[@ISO639-1@] oj++[@ISO639-2@] oji++[@ISO639-3@] oji++[@Native name@] ᐊᓂᔑᓈᐯᒧᐎᓐ (Anishinaabemowin)++[@English name@] Ojibwe+-}++module Text.Numeral.Language.OJI.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.sf.airnet.ne.jp/~ts/language/number/ojibwa.html+ http://www.languagesandnumbers.com/how-to-count-in-ojibwa/en/oji/+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "kaagego")+ , (1, "bezhik")+ , (2, "niizh")+ , (3, "nswi")+ , (4, "niiwin")+ , (5, "naanan")+ , (6, "ngodwaaswi")+ , (7, "niizhwaaswi")+ , (8, "nshwaaswi")+ , (9, "zhaangswi")+ , (10, "mdaaswi")+ , (11, "mdaaswi shaa bezhik")+ , (12, "mdaaswi shaa niizh")+ , (13, "mdaaswi shaa nswi")+ , (14, "mdaaswi shaa niiwin")+ , (15, "mdaaswi shaa naanan")+ , (16, "mdaaswi shaa ngodwaaswi")+ , (17, "mdaaswi shaa niizhwaaswi")+ , (18, "mdaaswi shaa nshwaaswi")+ , (19, "mdaaswi shaa zhaangswi")+ , (20, "niizhtaana")+ , (21, "niizhtaana shaa bezhik")+ , (22, "niizhtaana shaa niizh")+ , (23, "niizhtaana shaa nswi")+ , (24, "niizhtaana shaa niiwin")+ , (25, "niizhtaana shaa naanan")+ , (26, "niizhtaana shaa ngodwaaswi")+ , (27, "niizhtaana shaa niizhwaaswi")+ , (28, "niizhtaana shaa nshwaaswi")+ , (29, "niizhtaana shaa zhaangswi")+ , (30, "nsimtaana")+ , (31, "nsimtaana shaa bezhik")+ , (32, "nsimtaana shaa niizh")+ , (33, "nsimtaana shaa nswi")+ , (34, "nsimtaana shaa niiwin")+ , (35, "nsimtaana shaa naanan")+ , (36, "nsimtaana shaa ngodwaaswi")+ , (37, "nsimtaana shaa niizhwaaswi")+ , (38, "nsimtaana shaa nshwaaswi")+ , (39, "nsimtaana shaa zhaangswi")+ , (40, "niimtaana")+ , (41, "niimtaana shaa bezhik")+ , (42, "niimtaana shaa niizh")+ , (43, "niimtaana shaa nswi")+ , (44, "niimtaana shaa niiwin")+ , (45, "niimtaana shaa naanan")+ , (46, "niimtaana shaa ngodwaaswi")+ , (47, "niimtaana shaa niizhwaaswi")+ , (48, "niimtaana shaa nshwaaswi")+ , (49, "niimtaana shaa zhaangswi")+ , (50, "naanmitaana")+ , (51, "naanmitaana shaa bezhik")+ , (52, "naanmitaana shaa niizh")+ , (53, "naanmitaana shaa nswi")+ , (54, "naanmitaana shaa niiwin")+ , (55, "naanmitaana shaa naanan")+ , (56, "naanmitaana shaa ngodwaaswi")+ , (57, "naanmitaana shaa niizhwaaswi")+ , (58, "naanmitaana shaa nshwaaswi")+ , (59, "naanmitaana shaa zhaangswi")+ , (60, "ngodwaasmitaana")+ , (61, "ngodwaasmitaana shaa bezhik")+ , (62, "ngodwaasmitaana shaa niizh")+ , (63, "ngodwaasmitaana shaa nswi")+ , (64, "ngodwaasmitaana shaa niiwin")+ , (65, "ngodwaasmitaana shaa naanan")+ , (66, "ngodwaasmitaana shaa ngodwaaswi")+ , (67, "ngodwaasmitaana shaa niizhwaaswi")+ , (68, "ngodwaasmitaana shaa nshwaaswi")+ , (69, "ngodwaasmitaana shaa zhaangswi")+ , (70, "niizhwaasmitaana")+ , (71, "niizhwaasmitaana shaa bezhik")+ , (72, "niizhwaasmitaana shaa niizh")+ , (73, "niizhwaasmitaana shaa nswi")+ , (74, "niizhwaasmitaana shaa niiwin")+ , (75, "niizhwaasmitaana shaa naanan")+ , (76, "niizhwaasmitaana shaa ngodwaaswi")+ , (77, "niizhwaasmitaana shaa niizhwaaswi")+ , (78, "niizhwaasmitaana shaa nshwaaswi")+ , (79, "niizhwaasmitaana shaa zhaangswi")+ , (80, "nshwaasmitaana")+ , (81, "nshwaasmitaana shaa bezhik")+ , (82, "nshwaasmitaana shaa niizh")+ , (83, "nshwaasmitaana shaa nswi")+ , (84, "nshwaasmitaana shaa niiwin")+ , (85, "nshwaasmitaana shaa naanan")+ , (86, "nshwaasmitaana shaa ngodwaaswi")+ , (87, "nshwaasmitaana shaa niizhwaaswi")+ , (88, "nshwaasmitaana shaa nshwaaswi")+ , (89, "nshwaasmitaana shaa zhaangswi")+ , (90, "zhaangsmitaana")+ , (91, "zhaangsmitaana shaa bezhik")+ , (92, "zhaangsmitaana shaa niizh")+ , (93, "zhaangsmitaana shaa nswi")+ , (94, "zhaangsmitaana shaa niiwin")+ , (95, "zhaangsmitaana shaa naanan")+ , (96, "zhaangsmitaana shaa ngodwaaswi")+ , (97, "zhaangsmitaana shaa niizhwaaswi")+ , (98, "zhaangsmitaana shaa nshwaaswi")+ , (99, "zhaangsmitaana shaa zhaangswi")+ , (100, "ngodwaak")+ , (101, "ngodwaak shaa bezhik")+ , (102, "ngodwaak shaa niizh")+ , (103, "ngodwaak shaa nswi")+ , (104, "ngodwaak shaa niiwin")+ , (105, "ngodwaak shaa naanan")+ , (106, "ngodwaak shaa ngodwaaswi")+ , (107, "ngodwaak shaa niizhwaaswi")+ , (108, "ngodwaak shaa nshwaaswi")+ , (109, "ngodwaak shaa zhaangswi")+ , (110, "ngodwaak shaa mdaaswi")+ , (123, "ngodwaak shaa niizhtaana shaa nswi")+ , (200, "niizhwaak")+ , (300, "nswaak")+ , (321, "nswaak shaa niizhtaana shaa bezhik")+ , (400, "niiwaak")+ , (448, "niiwaak shaa niimtaana shaa nshwaaswi")+ , (500, "naanwaak")+ , (600, "ngodwaaswaak")+ , (700, "niizhwaaswaak")+ , (800, "nshwaaswaak")+ , (900, "zhaangswaak")+ , (909, "zhaangswaak shaa zhaangswi")+ , (990, "zhaangswaak shaa zhaangsmitaana")+ , (999, "zhaangswaak shaa zhaangsmitaana shaa zhaangswi")+ , (1000, "mdaaswaak")+ , (1001, "mdaaswaak shaa bezhik")+ , (1008, "mdaaswaak shaa nshwaaswi")+ , (1222, "mdaaswaak shaa niizhwaak shaa niizhtaana shaa niizh")+ , (1234, "mdaaswaak shaa niizhwaak shaa nsimtaana shaa niiwin")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/ONE/TestData.hs view
@@ -0,0 +1,162 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] one++[@Native name@] Onʌyotaʔa:ka++[@English name@] Oneida+-}+module Text.Numeral.Language.ONE.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-oneida/en/one/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "úskah")+ , (2, "téken")+ , (3, "áhsʌ")+ , (4, "kayé")+ , (5, "wisk")+ , (6, "yá·yahk")+ , (7, "tsya·ták")+ , (8, "tékluˀ")+ , (9, "wá·tlu")+ , (10, "oye·lí")+ , (11, "úskah yawʌ·lé")+ , (12, "tékni yawʌ·lé")+ , (13, "áhsʌ yawʌ·lé")+ , (14, "kayé yawʌ·lé")+ , (15, "wisk yawʌ·lé")+ , (16, "yá·yahk yawʌ·lé")+ , (17, "tsya·ták yawʌ·lé")+ , (18, "tékluˀ yawʌ·lé")+ , (19, "wá·tlu yawʌ·lé")+ , (20, "tewáshʌ")+ , (21, "tewáshʌ úskah")+ , (22, "tewáshʌ téken")+ , (23, "tewáshʌ áhsʌ")+ , (24, "tewáshʌ kayé")+ , (25, "tewáshʌ wisk")+ , (26, "tewáshʌ yá·yahk")+ , (27, "tewáshʌ tsya·ták")+ , (28, "tewáshʌ tékluˀ")+ , (29, "tewáshʌ wá·tlu")+ , (30, "áhsʌ niwáshʌ")+ , (31, "áhsʌ niwáshʌ úskah")+ , (32, "áhsʌ niwáshʌ téken")+ , (33, "áhsʌ niwáshʌ áhsʌ")+ , (34, "áhsʌ niwáshʌ kayé")+ , (35, "áhsʌ niwáshʌ wisk")+ , (36, "áhsʌ niwáshʌ yá·yahk")+ , (37, "áhsʌ niwáshʌ tsya·ták")+ , (38, "áhsʌ niwáshʌ tékluˀ")+ , (39, "áhsʌ niwáshʌ wá·tlu")+ , (40, "kayé niwáshʌ")+ , (41, "kayé niwáshʌ úskah")+ , (42, "kayé niwáshʌ téken")+ , (43, "kayé niwáshʌ áhsʌ")+ , (44, "kayé niwáshʌ kayé")+ , (45, "kayé niwáshʌ wisk")+ , (46, "kayé niwáshʌ yá·yahk")+ , (47, "kayé niwáshʌ tsya·ták")+ , (48, "kayé niwáshʌ tékluˀ")+ , (49, "kayé niwáshʌ wá·tlu")+ , (50, "wisk niwáshʌ")+ , (51, "wisk niwáshʌ úskah")+ , (52, "wisk niwáshʌ téken")+ , (53, "wisk niwáshʌ áhsʌ")+ , (54, "wisk niwáshʌ kayé")+ , (55, "wisk niwáshʌ wisk")+ , (56, "wisk niwáshʌ yá·yahk")+ , (57, "wisk niwáshʌ tsya·ták")+ , (58, "wisk niwáshʌ tékluˀ")+ , (59, "wisk niwáshʌ wá·tlu")+ , (60, "yá·yahk niwáshʌ")+ , (61, "yá·yahk niwáshʌ úskah")+ , (62, "yá·yahk niwáshʌ téken")+ , (63, "yá·yahk niwáshʌ áhsʌ")+ , (64, "yá·yahk niwáshʌ kayé")+ , (65, "yá·yahk niwáshʌ wisk")+ , (66, "yá·yahk niwáshʌ yá·yahk")+ , (67, "yá·yahk niwáshʌ tsya·ták")+ , (68, "yá·yahk niwáshʌ tékluˀ")+ , (69, "yá·yahk niwáshʌ wá·tlu")+ , (70, "tsya·ták niwáshʌ")+ , (71, "tsya·ták niwáshʌ úskah")+ , (72, "tsya·ták niwáshʌ téken")+ , (73, "tsya·ták niwáshʌ áhsʌ")+ , (74, "tsya·ták niwáshʌ kayé")+ , (75, "tsya·ták niwáshʌ wisk")+ , (76, "tsya·ták niwáshʌ yá·yahk")+ , (77, "tsya·ták niwáshʌ tsya·ták")+ , (78, "tsya·ták niwáshʌ tékluˀ")+ , (79, "tsya·ták niwáshʌ wá·tlu")+ , (80, "tékluˀ niwáshʌ")+ , (81, "tékluˀ niwáshʌ úskah")+ , (82, "tékluˀ niwáshʌ téken")+ , (83, "tékluˀ niwáshʌ áhsʌ")+ , (84, "tékluˀ niwáshʌ kayé")+ , (85, "tékluˀ niwáshʌ wisk")+ , (86, "tékluˀ niwáshʌ yá·yahk")+ , (87, "tékluˀ niwáshʌ tsya·ták")+ , (88, "tékluˀ niwáshʌ tékluˀ")+ , (89, "tékluˀ niwáshʌ wá·tlu")+ , (90, "wá·tlu niwáshʌ")+ , (91, "wá·tlu niwáshʌ úskah")+ , (92, "wá·tlu niwáshʌ téken")+ , (93, "wá·tlu niwáshʌ áhsʌ")+ , (94, "wá·tlu niwáshʌ kayé")+ , (95, "wá·tlu niwáshʌ wisk")+ , (96, "wá·tlu niwáshʌ yá·yahk")+ , (97, "wá·tlu niwáshʌ tsya·ták")+ , (98, "wá·tlu niwáshʌ tékluˀ")+ , (99, "wá·tlu niwáshʌ wá·tlu")+ , (100, "tewʌˀnyáwelu")+ , (101, "tewʌˀnyáwelu ok úskah")+ , (102, "tewʌˀnyáwelu ok téken")+ , (103, "tewʌˀnyáwelu ok áhsʌ")+ , (104, "tewʌˀnyáwelu ok kayé")+ , (105, "tewʌˀnyáwelu ok wisk")+ , (106, "tewʌˀnyáwelu ok yá·yahk")+ , (107, "tewʌˀnyáwelu ok tsya·ták")+ , (108, "tewʌˀnyáwelu ok tékluˀ")+ , (109, "tewʌˀnyáwelu ok wá·tlu")+ , (110, "tewʌˀnyáwelu ok oye·lí")+ , (123, "tewʌˀnyáwelu ok tewáshʌ áhsʌ")+ , (200, "tékni tewʌˀnyáwelu")+ , (300, "áhsʌ tewʌˀnyáwelu")+ , (321, "áhsʌ tewʌˀnyáwelu ok tewáshʌ úskah")+ , (400, "kayé tewʌˀnyáwelu")+ , (500, "wisk tewʌˀnyáwelu")+ , (600, "yá·yahk tewʌˀnyáwelu")+ , (700, "tsya·ták tewʌˀnyáwelu")+ , (800, "tékluˀ tewʌˀnyáwelu")+ , (900, "wá·tlu tewʌˀnyáwelu")+ , (909, "wá·tlu tewʌˀnyáwelu ok wá·tlu")+ , (990, "wá·tlu tewʌˀnyáwelu ok wá·tlu niwáshʌ")+ , (999, "wá·tlu tewʌˀnyáwelu ok wá·tlu niwáshʌ wá·tlu")+ , (1000, "skanutó·tslat")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/ORM/TestData.hs view
@@ -0,0 +1,175 @@+{-|+[@ISO639-1@] om++[@ISO639-2@] orm++[@ISO639-3@] orm++[@Native name@] Afaan Oromo++[@English name@] Oromo+-}+module Text.Numeral.Language.ORM.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-oromo/en/orm/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "duwwa")+ , (1, "tokko")+ , (2, "lama")+ , (3, "sadi")+ , (4, "afur")+ , (5, "shan")+ , (6, "jaya")+ , (7, "torba")+ , (8, "saddeet")+ , (9, "sagal")+ , (10, "khudan")+ , (11, "khuda-tokko")+ , (12, "khuda-lama")+ , (13, "khuda-sadi")+ , (14, "khuda-afur")+ , (15, "khuda-shan")+ , (16, "khuda-jaya")+ , (17, "khuda-torba")+ , (18, "khuda-saddeet")+ , (19, "khuda-sagal")+ , (20, "digdama")+ , (21, "digdamii-tokko")+ , (22, "digdamii-lama")+ , (23, "digdamii-sadi")+ , (24, "digdamii-afur")+ , (25, "digdamii-shan")+ , (26, "digdamii-jaya")+ , (27, "digdamii-torba")+ , (28, "digdamii-saddeet")+ , (29, "digdamii-sagal")+ , (30, "soddoma")+ , (31, "soddomii-tokko")+ , (32, "soddomii-lama")+ , (33, "soddomii-sadi")+ , (34, "soddomii-afur")+ , (35, "soddomii-shan")+ , (36, "soddomii-jaya")+ , (37, "soddomii-torba")+ , (38, "soddomii-saddeet")+ , (39, "soddomii-sagal")+ , (40, "afurtama")+ , (41, "afurtamii-tokko")+ , (42, "afurtamii-lama")+ , (43, "afurtamii-sadi")+ , (44, "afurtamii-afur")+ , (45, "afurtamii-shan")+ , (46, "afurtamii-jaya")+ , (47, "afurtamii-torba")+ , (48, "afurtamii-saddeet")+ , (49, "afurtamii-sagal")+ , (50, "shantama")+ , (51, "shantamii-tokko")+ , (52, "shantamii-lama")+ , (53, "shantamii-sadi")+ , (54, "shantamii-afur")+ , (55, "shantamii-shan")+ , (56, "shantamii-jaya")+ , (57, "shantamii-torba")+ , (58, "shantamii-saddeet")+ , (59, "shantamii-sagal")+ , (60, "jaatama")+ , (61, "jaatamii-tokko")+ , (62, "jaatamii-lama")+ , (63, "jaatamii-sadi")+ , (64, "jaatamii-afur")+ , (65, "jaatamii-shan")+ , (66, "jaatamii-jaya")+ , (67, "jaatamii-torba")+ , (68, "jaatamii-saddeet")+ , (69, "jaatamii-sagal")+ , (70, "torbatama")+ , (71, "torbatamii-tokko")+ , (72, "torbatamii-lama")+ , (73, "torbatamii-sadi")+ , (74, "torbatamii-afur")+ , (75, "torbatamii-shan")+ , (76, "torbatamii-jaya")+ , (77, "torbatamii-torba")+ , (78, "torbatamii-saddeet")+ , (79, "torbatamii-sagal")+ , (80, "saddeetama")+ , (81, "saddeetamii-tokko")+ , (82, "saddeetamii-lama")+ , (83, "saddeetamii-sadi")+ , (84, "saddeetamii-afur")+ , (85, "saddeetamii-shan")+ , (86, "saddeetamii-jaya")+ , (87, "saddeetamii-torba")+ , (88, "saddeetamii-saddeet")+ , (89, "saddeetamii-sagal")+ , (90, "sagaltama")+ , (91, "sagaltamii-tokko")+ , (92, "sagaltamii-lama")+ , (93, "sagaltamii-sadi")+ , (94, "sagaltamii-afur")+ , (95, "sagaltamii-shan")+ , (96, "sagaltamii-jaya")+ , (97, "sagaltamii-torba")+ , (98, "sagaltamii-saddeet")+ , (99, "sagaltamii-sagal")+ , (100, "dhibba")+ , (101, "dhibba tokko")+ , (102, "dhibba lama")+ , (103, "dhibba sadi")+ , (104, "dhibba afur")+ , (105, "dhibba shan")+ , (106, "dhibba jaya")+ , (107, "dhibba torba")+ , (108, "dhibba saddeet")+ , (109, "dhibba sagal")+ , (110, "dhibba khudan")+ , (123, "dhibba digdamii-sadi")+ , (200, "lama dhibba")+ , (300, "sadi dhibba")+ , (321, "sadi dhibba digdamii-tokko")+ , (400, "afur dhibba")+ , (500, "shan dhibba")+ , (600, "jaya dhibba")+ , (700, "torba dhibba")+ , (800, "saddeet dhibba")+ , (900, "sagal dhibba")+ , (909, "sagal dhibba sagal")+ , (990, "sagal dhibba sagaltama")+ , (999, "sagal dhibba sagaltamii-sagal")+ , (1000, "kuma")+ , (1001, "kuma tokko")+ , (1008, "kuma saddeet")+ , (1234, "kuma lama dhibba soddomii-afur")+ , (2000, "lama kuma")+ , (3000, "sadi kuma")+ , (4000, "afur kuma")+ , (4321, "afur kuma sadi dhibba digdamii-tokko")+ , (5000, "shan kuma")+ , (6000, "jaya kuma")+ , (7000, "torba kuma")+ , (8000, "saddeet kuma")+ , (9000, "sagal kuma")+ ]+ )+ ]
src-test/Text/Numeral/Language/PAA/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -22,8 +17,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -31,7 +25,7 @@ -- Test data -------------------------------------------------------------------------------- -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
src-test/Text/Numeral/Language/PDC/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-3@] pdc @@ -17,9 +12,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "numerals" Text.Numeral.Misc ( dec ) import "this" Text.Numeral.Test ( TestData ) @@ -32,7 +25,7 @@ http://www.languagesandnumbers.com/how-to-count-in-pennsylvania-german/en/pdc/ -} -cardinals ∷ (Integral i) ⇒ TestData i+cardinals :: (Integral i) => TestData i cardinals = [ ( "default" , defaultInflection@@ -163,7 +156,7 @@ , (524288, "fimf hunnert vierunzwansich dausend zwee hunnert achtunachtzich") , (dec 6, "en millyon") , (1048576, "en millyon achtunvazich dausend fimf hunnert sexunsiwwezich")- , (5 ⋅ dec 6, "fimf millyon")+ , (5 * dec 6, "fimf millyon") , (123456789, "en hunnert dreiunzwansich millyon vier hunnert sexunfuffzich dausend siwwe hunnert neinunachtzich") ] )
− src-test/Text/Numeral/Language/PL/TestData.hs
@@ -1,204 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] pl--[@ISO639-2@] pol--[@ISO639-3@] pol--[@Native name@] język polski--[@English name@] Polish--}--module Text.Numeral.Language.PL.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources:--- Krzysztof Skrzętnicki--- http://www.polishforums.com/archives/2009/general-language-17/numbers-polish-language-6722/--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "zero")- , (1, "jeden")- , (2, "dwa")- , (3, "trzy")- , (4, "cztery")- , (5, "pięć")- , (6, "sześć")- , (7, "siedem")- , (8, "osiem")- , (9, "dziewięć")- , (10, "dziesięć")- , (11, "jedenaście")- , (12, "dwanaście")- , (13, "trzynaście")- , (14, "czternaście")- , (15, "piętnaście")- , (16, "szesnaście")- , (17, "siedemnaście")- , (18, "osiemnaście")- , (19, "dziewiętnaście")- , (20, "dwadzieścia")- , (21, "dwadzieścia jeden")- , (22, "dwadzieścia dwa")- , (23, "dwadzieścia trzy")- , (24, "dwadzieścia cztery")- , (25, "dwadzieścia pięć")- , (26, "dwadzieścia sześć")- , (27, "dwadzieścia siedem")- , (28, "dwadzieścia osiem")- , (29, "dwadzieścia dziewięć")- , (30, "trzydzieści")- , (31, "trzydzieści jeden")- , (32, "trzydzieści dwa")- , (33, "trzydzieści trzy")- , (34, "trzydzieści cztery")- , (35, "trzydzieści pięć")- , (36, "trzydzieści sześć")- , (37, "trzydzieści siedem")- , (38, "trzydzieści osiem")- , (39, "trzydzieści dziewięć")- , (40, "czterdzieści")- , (41, "czterdzieści jeden")- , (42, "czterdzieści dwa")- , (43, "czterdzieści trzy")- , (44, "czterdzieści cztery")- , (45, "czterdzieści pięć")- , (46, "czterdzieści sześć")- , (47, "czterdzieści siedem")- , (48, "czterdzieści osiem")- , (49, "czterdzieści dziewięć")- , (50, "pięćdziesiąt")- , (51, "pięćdziesiąt jeden")- , (52, "pięćdziesiąt dwa")- , (53, "pięćdziesiąt trzy")- , (54, "pięćdziesiąt cztery")- , (55, "pięćdziesiąt pięć")- , (56, "pięćdziesiąt sześć")- , (57, "pięćdziesiąt siedem")- , (58, "pięćdziesiąt osiem")- , (59, "pięćdziesiąt dziewięć")- , (60, "sześćdziesiąt")- , (61, "sześćdziesiąt jeden")- , (62, "sześćdziesiąt dwa")- , (63, "sześćdziesiąt trzy")- , (64, "sześćdziesiąt cztery")- , (65, "sześćdziesiąt pięć")- , (66, "sześćdziesiąt sześć")- , (67, "sześćdziesiąt siedem")- , (68, "sześćdziesiąt osiem")- , (69, "sześćdziesiąt dziewięć")- , (70, "siedemdziesiąt")- , (71, "siedemdziesiąt jeden")- , (72, "siedemdziesiąt dwa")- , (73, "siedemdziesiąt trzy")- , (74, "siedemdziesiąt cztery")- , (75, "siedemdziesiąt pięć")- , (76, "siedemdziesiąt sześć")- , (77, "siedemdziesiąt siedem")- , (78, "siedemdziesiąt osiem")- , (79, "siedemdziesiąt dziewięć")- , (80, "osiemdziesiąt")- , (81, "osiemdziesiąt jeden")- , (82, "osiemdziesiąt dwa")- , (83, "osiemdziesiąt trzy")- , (84, "osiemdziesiąt cztery")- , (85, "osiemdziesiąt pięć")- , (86, "osiemdziesiąt sześć")- , (87, "osiemdziesiąt siedem")- , (88, "osiemdziesiąt osiem")- , (89, "osiemdziesiąt dziewięć")- , (90, "dziewięćdziesiąt")- , (91, "dziewięćdziesiąt jeden")- , (92, "dziewięćdziesiąt dwa")- , (93, "dziewięćdziesiąt trzy")- , (94, "dziewięćdziesiąt cztery")- , (95, "dziewięćdziesiąt pięć")- , (96, "dziewięćdziesiąt sześć")- , (97, "dziewięćdziesiąt siedem")- , (98, "dziewięćdziesiąt osiem")- , (99, "dziewięćdziesiąt dziewięć")- , (100, "sto")- , (101, "sto jeden")- , (110, "sto dziesięć")- , (111, "sto jedenaście")- , (120, "sto dwadzieścia")- , (121, "sto dwadzieścia jeden")- , (144, "sto czterdzieści cztery")- , (200, "dwieście")- , (300, "trzysta")- , (400, "czterysta")- , (500, "pięćset")- , (600, "sześćset")- , (700, "siedemset")- , (777, "siedemset siedemdziesiąt siedem")- , (800, "osiemset")- , (900, "dziewięćset")- , (1000, "tysiąc")- , (1001, "tysiąc jeden")- , (1010, "tysiąc dziesięć")- , (1011, "tysiąc jedenaście")- , (1024, "tysiąc dwadzieścia cztery")- , (1100, "tysiąc sto")- , (1728, "tysiąc siedemset dwadzieścia osiem")- , (2000, "dwa tysiące")- , (3000, "trzy tysiące")- , (4000, "cztery tysiące")- , (5000, "pięć tysięcy")- , (6000, "sześć tysięcy")- , (7000, "siedem tysięcy")- , (8000, "osiem tysięcy")- , (9000, "dziewięć tysięcy")- , (10000, "dziesięć tysięcy")- , (100000, "sto tysięcy")- , (500000, "pięćset tysięcy")- , (1000000, "milion")- , (1048576, "milion czterdzieści osiem tysięcy pięćset siedemdziesiąt sześć")- , (2 ⋅ dec 6, "dwa miliony")- , (3 ⋅ dec 6, "trzy miliony")- , (4 ⋅ dec 6, "cztery miliony")- , (5 ⋅ dec 6, "pięć milionów")- , (6 ⋅ dec 6, "sześć milionów")- , (7 ⋅ dec 6, "siedem milionów")- , (8 ⋅ dec 6, "osiem milionów")- , (9 ⋅ dec 6, "dziewięć milionów")- , (dec 7, "dziesięć milionów")- , (dec 8, "sto milionów")- , (dec 9, "miliard")- , (2 ⋅ dec 9, "dwa miliardy")- , (3 ⋅ dec 9, "trzy miliardy")- , (4 ⋅ dec 9, "cztery miliardy")- , (5 ⋅ dec 9, "pięć miliardów")- , (6 ⋅ dec 9, "sześć miliardów")- , (7 ⋅ dec 9, "siedem miliardów")- , (8 ⋅ dec 9, "osiem miliardów")- , (9 ⋅ dec 9, "dziewięć miliardów")- , (dec 10, "dziesięć miliardów")- , (dec 11, "sto miliardów")- ]- )- ]
+ src-test/Text/Numeral/Language/POL/TestData.hs view
@@ -0,0 +1,196 @@+{-|+[@ISO639-1@] pl++[@ISO639-2@] pol++[@ISO639-3@] pol++[@Native name@] język polski++[@English name@] Polish+-}++module Text.Numeral.Language.POL.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources:+-- Krzysztof Skrzętnicki+-- http://www.polishforums.com/archives/2009/general-language-17/numbers-polish-language-6722/++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "zero")+ , (1, "jeden")+ , (2, "dwa")+ , (3, "trzy")+ , (4, "cztery")+ , (5, "pięć")+ , (6, "sześć")+ , (7, "siedem")+ , (8, "osiem")+ , (9, "dziewięć")+ , (10, "dziesięć")+ , (11, "jedenaście")+ , (12, "dwanaście")+ , (13, "trzynaście")+ , (14, "czternaście")+ , (15, "piętnaście")+ , (16, "szesnaście")+ , (17, "siedemnaście")+ , (18, "osiemnaście")+ , (19, "dziewiętnaście")+ , (20, "dwadzieścia")+ , (21, "dwadzieścia jeden")+ , (22, "dwadzieścia dwa")+ , (23, "dwadzieścia trzy")+ , (24, "dwadzieścia cztery")+ , (25, "dwadzieścia pięć")+ , (26, "dwadzieścia sześć")+ , (27, "dwadzieścia siedem")+ , (28, "dwadzieścia osiem")+ , (29, "dwadzieścia dziewięć")+ , (30, "trzydzieści")+ , (31, "trzydzieści jeden")+ , (32, "trzydzieści dwa")+ , (33, "trzydzieści trzy")+ , (34, "trzydzieści cztery")+ , (35, "trzydzieści pięć")+ , (36, "trzydzieści sześć")+ , (37, "trzydzieści siedem")+ , (38, "trzydzieści osiem")+ , (39, "trzydzieści dziewięć")+ , (40, "czterdzieści")+ , (41, "czterdzieści jeden")+ , (42, "czterdzieści dwa")+ , (43, "czterdzieści trzy")+ , (44, "czterdzieści cztery")+ , (45, "czterdzieści pięć")+ , (46, "czterdzieści sześć")+ , (47, "czterdzieści siedem")+ , (48, "czterdzieści osiem")+ , (49, "czterdzieści dziewięć")+ , (50, "pięćdziesiąt")+ , (51, "pięćdziesiąt jeden")+ , (52, "pięćdziesiąt dwa")+ , (53, "pięćdziesiąt trzy")+ , (54, "pięćdziesiąt cztery")+ , (55, "pięćdziesiąt pięć")+ , (56, "pięćdziesiąt sześć")+ , (57, "pięćdziesiąt siedem")+ , (58, "pięćdziesiąt osiem")+ , (59, "pięćdziesiąt dziewięć")+ , (60, "sześćdziesiąt")+ , (61, "sześćdziesiąt jeden")+ , (62, "sześćdziesiąt dwa")+ , (63, "sześćdziesiąt trzy")+ , (64, "sześćdziesiąt cztery")+ , (65, "sześćdziesiąt pięć")+ , (66, "sześćdziesiąt sześć")+ , (67, "sześćdziesiąt siedem")+ , (68, "sześćdziesiąt osiem")+ , (69, "sześćdziesiąt dziewięć")+ , (70, "siedemdziesiąt")+ , (71, "siedemdziesiąt jeden")+ , (72, "siedemdziesiąt dwa")+ , (73, "siedemdziesiąt trzy")+ , (74, "siedemdziesiąt cztery")+ , (75, "siedemdziesiąt pięć")+ , (76, "siedemdziesiąt sześć")+ , (77, "siedemdziesiąt siedem")+ , (78, "siedemdziesiąt osiem")+ , (79, "siedemdziesiąt dziewięć")+ , (80, "osiemdziesiąt")+ , (81, "osiemdziesiąt jeden")+ , (82, "osiemdziesiąt dwa")+ , (83, "osiemdziesiąt trzy")+ , (84, "osiemdziesiąt cztery")+ , (85, "osiemdziesiąt pięć")+ , (86, "osiemdziesiąt sześć")+ , (87, "osiemdziesiąt siedem")+ , (88, "osiemdziesiąt osiem")+ , (89, "osiemdziesiąt dziewięć")+ , (90, "dziewięćdziesiąt")+ , (91, "dziewięćdziesiąt jeden")+ , (92, "dziewięćdziesiąt dwa")+ , (93, "dziewięćdziesiąt trzy")+ , (94, "dziewięćdziesiąt cztery")+ , (95, "dziewięćdziesiąt pięć")+ , (96, "dziewięćdziesiąt sześć")+ , (97, "dziewięćdziesiąt siedem")+ , (98, "dziewięćdziesiąt osiem")+ , (99, "dziewięćdziesiąt dziewięć")+ , (100, "sto")+ , (101, "sto jeden")+ , (110, "sto dziesięć")+ , (111, "sto jedenaście")+ , (120, "sto dwadzieścia")+ , (121, "sto dwadzieścia jeden")+ , (144, "sto czterdzieści cztery")+ , (200, "dwieście")+ , (300, "trzysta")+ , (400, "czterysta")+ , (500, "pięćset")+ , (600, "sześćset")+ , (700, "siedemset")+ , (777, "siedemset siedemdziesiąt siedem")+ , (800, "osiemset")+ , (900, "dziewięćset")+ , (1000, "tysiąc")+ , (1001, "tysiąc jeden")+ , (1010, "tysiąc dziesięć")+ , (1011, "tysiąc jedenaście")+ , (1024, "tysiąc dwadzieścia cztery")+ , (1100, "tysiąc sto")+ , (1728, "tysiąc siedemset dwadzieścia osiem")+ , (2000, "dwa tysiące")+ , (3000, "trzy tysiące")+ , (4000, "cztery tysiące")+ , (5000, "pięć tysięcy")+ , (6000, "sześć tysięcy")+ , (7000, "siedem tysięcy")+ , (8000, "osiem tysięcy")+ , (9000, "dziewięć tysięcy")+ , (10000, "dziesięć tysięcy")+ , (100000, "sto tysięcy")+ , (500000, "pięćset tysięcy")+ , (1000000, "milion")+ , (1048576, "milion czterdzieści osiem tysięcy pięćset siedemdziesiąt sześć")+ , (2 * dec 6, "dwa miliony")+ , (3 * dec 6, "trzy miliony")+ , (4 * dec 6, "cztery miliony")+ , (5 * dec 6, "pięć milionów")+ , (6 * dec 6, "sześć milionów")+ , (7 * dec 6, "siedem milionów")+ , (8 * dec 6, "osiem milionów")+ , (9 * dec 6, "dziewięć milionów")+ , (dec 7, "dziesięć milionów")+ , (dec 8, "sto milionów")+ , (dec 9, "miliard")+ , (2 * dec 9, "dwa miliardy")+ , (3 * dec 9, "trzy miliardy")+ , (4 * dec 9, "cztery miliardy")+ , (5 * dec 9, "pięć miliardów")+ , (6 * dec 9, "sześć miliardów")+ , (7 * dec 9, "siedem miliardów")+ , (8 * dec 9, "osiem miliardów")+ , (9 * dec 9, "dziewięć miliardów")+ , (dec 10, "dziesięć miliardów")+ , (dec 11, "sto miliardów")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/POR/TestData.hs view
@@ -0,0 +1,291 @@+{-|+[@ISO639-1@] pt++[@ISO639-2@] por++[@ISO639-3@] por++[@Native name@] Português++[@English name@] Portuguese+-}++module Text.Numeral.Language.POR.TestData (cardinals, ordinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Control.Arrow ( second )+import "base" Data.Monoid ( (<>) )+import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources:+-- http://www.sonia-portuguese.com/text/numerals.htm+-- http://www.smartphrase.com/Portuguese/po_numbers_voc.shtml++base_cardinals :: (Integral i) => [(i, Text)]+base_cardinals =+ [ (0, "zero")+ , (3, "três")+ , (4, "quatro")+ , (5, "cinco")+ , (6, "seis")+ , (7, "sete")+ , (8, "oito")+ , (9, "nove")+ , (10, "dez")+ , (11, "onze")+ , (12, "doze")+ , (13, "treze")+ , (14, "catorze")+ , (15, "quinze")+ , (16, "dezasseis")+ , (17, "dezassete")+ , (18, "dezoito")+ , (19, "dezanove")+ , (20, "vinte")+ , (23, "vinte e três")+ , (24, "vinte e quatro")+ , (25, "vinte e cinco")+ , (26, "vinte e seis")+ , (27, "vinte e sete")+ , (28, "vinte e oito")+ , (29, "vinte e nove")+ , (30, "trinta")+ , (33, "trinta e três")+ , (34, "trinta e quatro")+ , (35, "trinta e cinco")+ , (36, "trinta e seis")+ , (37, "trinta e sete")+ , (38, "trinta e oito")+ , (39, "trinta e nove")+ , (40, "quarenta")+ , (43, "quarenta e três")+ , (44, "quarenta e quatro")+ , (45, "quarenta e cinco")+ , (46, "quarenta e seis")+ , (47, "quarenta e sete")+ , (48, "quarenta e oito")+ , (49, "quarenta e nove")+ , (50, "cinquenta")+ , (53, "cinquenta e três")+ , (54, "cinquenta e quatro")+ , (55, "cinquenta e cinco")+ , (56, "cinquenta e seis")+ , (57, "cinquenta e sete")+ , (58, "cinquenta e oito")+ , (59, "cinquenta e nove")+ , (60, "sessenta")+ , (63, "sessenta e três")+ , (64, "sessenta e quatro")+ , (65, "sessenta e cinco")+ , (66, "sessenta e seis")+ , (67, "sessenta e sete")+ , (68, "sessenta e oito")+ , (69, "sessenta e nove")+ , (70, "setenta")+ , (73, "setenta e três")+ , (74, "setenta e quatro")+ , (75, "setenta e cinco")+ , (76, "setenta e seis")+ , (77, "setenta e sete")+ , (78, "setenta e oito")+ , (79, "setenta e nove")+ , (80, "oitenta")+ , (83, "oitenta e três")+ , (84, "oitenta e quatro")+ , (85, "oitenta e cinco")+ , (86, "oitenta e seis")+ , (87, "oitenta e sete")+ , (88, "oitenta e oito")+ , (89, "oitenta e nove")+ , (90, "noventa")+ , (93, "noventa e três")+ , (94, "noventa e quatro")+ , (95, "noventa e cinco")+ , (96, "noventa e seis")+ , (97, "noventa e sete")+ , (98, "noventa e oito")+ , (99, "noventa e nove")+ , (100, "cem")+ , (105, "cento e cinco")+ , (125, "cento e vinte e cinco")+ , (138, "cento e trinta e oito")+ , (199, "cento e noventa e nove")+ , (1000, "mil")+ , (1008, "mil e oito")+ , (1985, "mil novecentos e oitenta e cinco")+ , (3000, "três mil")+ , (10000, "dez mil")+ , (100000, "cem mil")+ , (125000, "cento e vinte e cinco mil")+ , (735346, "setecentos e trinta e cinco mil trezentos e quarenta e seis")+ , (dec 6, "um milhão")+ , (2 * dec 6, "dois milhões")+ , (dec 7, "dez milhões")+ , (dec 9, "um bilhão")+ , (dec 10, "dez bilhões")+ , (dec 12, "um trilhão")+ , (dec 13, "dez trilhões")+ , (dec 15, "um quatrilhão")+ , (dec 18, "um quintilhão")+ , (dec 21, "um sextilhão")+ , (dec 24, "um septilhão")+ , (dec 27, "um octilhão")+ , (dec 30, "um nonilhão")+ , (dec 33, "um decilhão")+ , (dec 36, "um undecilhão")+ , (dec 39, "um duodecilhão")+ , (dec 42, "um tredecilhão")+ , (dec 100, "dez duotrigintilhões")+ ]++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "masculine"+ , masculine defaultInflection+ , base_cardinals+ <> [ (1, "um")+ , (2, "dois")+ , (21, "vinte e um")+ , (22, "vinte e dois")+ , (31, "trinta e um")+ , (32, "trinta e dois")+ , (41, "quarenta e um")+ , (42, "quarenta e dois")+ , (51, "cinquenta e um")+ , (52, "cinquenta e dois")+ , (61, "sessenta e um")+ , (62, "sessenta e dois")+ , (71, "setenta e um")+ , (72, "setenta e dois")+ , (81, "oitenta e um")+ , (82, "oitenta e dois")+ , (91, "noventa e um")+ , (92, "noventa e dois")+ , (101, "cento e um")+ , (200, "duzentos")+ , (234, "duzentos e trinta e quatro")+ , (250, "duzentos e cinquenta")+ , (300, "trezentos")+ , (330, "trezentos e trinta")+ , (375, "trezentos e setenta e cinco")+ , (400, "quatrocentos")+ , (467, "quatrocentos e sessenta e sete")+ , (500, "quinhentos")+ , (600, "seiscentos")+ , (700, "setecentos")+ , (800, "oitocentos")+ , (900, "novecentos")+ , (2000, "dois mil")+ , (200000, "duzentos mil")+ , (500000, "quinhentos mil")+ , (100001, "cem mil e um")+ , (101000, "cento e um mil")+ , (1537469, "um milhão quinhentos e trinta e sete mil quatrocentos e sessenta e nove")+ ]+ )+ , ( "feminine"+ , feminine defaultInflection+ , base_cardinals+ <> [ (1, "uma")+ , (2, "duas")+ , (21, "vinte e uma")+ , (22, "vinte e duas")+ , (31, "trinta e uma")+ , (32, "trinta e duas")+ , (41, "quarenta e uma")+ , (42, "quarenta e duas")+ , (51, "cinquenta e uma")+ , (52, "cinquenta e duas")+ , (61, "sessenta e uma")+ , (62, "sessenta e duas")+ , (71, "setenta e uma")+ , (72, "setenta e duas")+ , (81, "oitenta e uma")+ , (82, "oitenta e duas")+ , (91, "noventa e uma")+ , (92, "noventa e duas")+ , (101, "cento e uma")+ , (200, "duzentas")+ , (234, "duzentas e trinta e quatro")+ , (250, "duzentas e cinquenta")+ , (300, "trezentas")+ , (330, "trezentas e trinta")+ , (375, "trezentas e setenta e cinco")+ , (400, "quatrocentas")+ , (467, "quatrocentas e sessenta e sete")+ , (500, "quinhentas")+ , (600, "seiscentas")+ , (700, "setecentas")+ , (800, "oitocentas")+ , (900, "novecentas")+ , (2000, "duas mil")+ , (200000, "duzentas mil")+ , (500000, "quinhentas mil")+ , (100001, "cem mil e uma")+ , (101000, "cento e uma mil")+ , (1537469, "um milhão quinhentas e trinta e sete mil quatrocentas e sessenta e nove")+ ]+ )+ ]++-- These are the base forms of the ordinals, stripped of their+-- ending. Append "o", "os", "a" or "as" to form combinations of+-- masculine, feminine, singular and plural ordinals.+base_ordinals :: (Integral i) => [(i, Text)]+base_ordinals =+ [ (1, "primeir")+ , (2, "segund")+ , (3, "terceir")+ , (4, "quart")+ , (5, "quint")+ , (6, "sext")+ , (7, "sétim")+ , (8, "oitav")+ , (9, "non")+ , (10, "décim")+ , (11, "décimo primeir")+ , (12, "décimo segund")+ , (13, "décimo terceir")+ , (20, "vigésim")+ , (21, "vigésimo primeir")+ , (30, "trigésim")+ , (40, "quadragésim")+ , (50, "qüinquagésim")+ , (60, "sexagésim")+ , (70, "septuagésim")+ , (80, "octogésim")+ , (90, "nonagésim")+ , (100, "centésim")+ , (200, "ducentésim")+ , (300, "trecentésim")+ , (400, "quadringentésim")+ , (500, "qüingentésim")+ , (600, "sexcentésim")+ , (700, "setingentésim")+ , (800, "octingentésim")+ , (900, "nongentésim")+ , (1000, "milésim")+ ]++ordinals :: (Integral i) => TestData i+ordinals = map (\(n, f, e) -> ( n+ , f defaultInflection+ , map (second (<> e)) base_ordinals)+ )+ [ ("masculine singular", masculine . singular, "o")+ , ("masculine plural", masculine . plural, "os")+ , ("feminine singular", feminine . singular, "a")+ , ("feminine plural", feminine . plural, "as")+ ]
− src-test/Text/Numeral/Language/PT/TestData.hs
@@ -1,302 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] pt--[@ISO639-2@] por--[@ISO639-3@] por--[@Native name@] Português--[@English name@] Portuguese--}--module Text.Numeral.Language.PT.TestData (cardinals, ordinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Control.Arrow ( second )-import "base" Data.List ( map )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources:--- http://www.sonia-portuguese.com/text/numerals.htm--- http://www.smartphrase.com/Portuguese/po_numbers_voc.shtml--base_cardinals ∷ (Integral i) ⇒ [(i, Text)]-base_cardinals =- [ (0, "zero")- , (3, "três")- , (4, "quatro")- , (5, "cinco")- , (6, "seis")- , (7, "sete")- , (8, "oito")- , (9, "nove")- , (10, "dez")- , (11, "onze")- , (12, "doze")- , (13, "treze")- , (14, "catorze")- , (15, "quinze")- , (16, "dezasseis")- , (17, "dezassete")- , (18, "dezoito")- , (19, "dezanove")- , (20, "vinte")- , (23, "vinte e três")- , (24, "vinte e quatro")- , (25, "vinte e cinco")- , (26, "vinte e seis")- , (27, "vinte e sete")- , (28, "vinte e oito")- , (29, "vinte e nove")- , (30, "trinta")- , (33, "trinta e três")- , (34, "trinta e quatro")- , (35, "trinta e cinco")- , (36, "trinta e seis")- , (37, "trinta e sete")- , (38, "trinta e oito")- , (39, "trinta e nove")- , (40, "quarenta")- , (43, "quarenta e três")- , (44, "quarenta e quatro")- , (45, "quarenta e cinco")- , (46, "quarenta e seis")- , (47, "quarenta e sete")- , (48, "quarenta e oito")- , (49, "quarenta e nove")- , (50, "cinquenta")- , (53, "cinquenta e três")- , (54, "cinquenta e quatro")- , (55, "cinquenta e cinco")- , (56, "cinquenta e seis")- , (57, "cinquenta e sete")- , (58, "cinquenta e oito")- , (59, "cinquenta e nove")- , (60, "sessenta")- , (63, "sessenta e três")- , (64, "sessenta e quatro")- , (65, "sessenta e cinco")- , (66, "sessenta e seis")- , (67, "sessenta e sete")- , (68, "sessenta e oito")- , (69, "sessenta e nove")- , (70, "setenta")- , (73, "setenta e três")- , (74, "setenta e quatro")- , (75, "setenta e cinco")- , (76, "setenta e seis")- , (77, "setenta e sete")- , (78, "setenta e oito")- , (79, "setenta e nove")- , (80, "oitenta")- , (83, "oitenta e três")- , (84, "oitenta e quatro")- , (85, "oitenta e cinco")- , (86, "oitenta e seis")- , (87, "oitenta e sete")- , (88, "oitenta e oito")- , (89, "oitenta e nove")- , (90, "noventa")- , (93, "noventa e três")- , (94, "noventa e quatro")- , (95, "noventa e cinco")- , (96, "noventa e seis")- , (97, "noventa e sete")- , (98, "noventa e oito")- , (99, "noventa e nove")- , (100, "cem")- , (105, "cento e cinco")- , (125, "cento e vinte e cinco")- , (138, "cento e trinta e oito")- , (199, "cento e noventa e nove")- , (1000, "mil")- , (1008, "mil e oito")- , (1985, "mil novecentos e oitenta e cinco")- , (3000, "três mil")- , (10000, "dez mil")- , (100000, "cem mil")- , (125000, "cento e vinte e cinco mil")- , (735346, "setecentos e trinta e cinco mil trezentos e quarenta e seis")- , (dec 6, "um milhão")- , (2 ⋅ dec 6, "dois milhões")- , (dec 7, "dez milhões")- , (dec 9, "um bilhão")- , (dec 10, "dez bilhões")- , (dec 12, "um trilhão")- , (dec 13, "dez trilhões")- , (dec 15, "um quatrilhão")- , (dec 18, "um quintilhão")- , (dec 21, "um sextilhão")- , (dec 24, "um septilhão")- , (dec 27, "um octilhão")- , (dec 30, "um nonilhão")- , (dec 33, "um decilhão")- , (dec 36, "um undecilhão")- , (dec 39, "um duodecilhão")- , (dec 42, "um tredecilhão")- , (dec 100, "dez duotrigintilhões")- ]--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "masculine"- , masculine defaultInflection- , base_cardinals- ⊕ [ (1, "um")- , (2, "dois")- , (21, "vinte e um")- , (22, "vinte e dois")- , (31, "trinta e um")- , (32, "trinta e dois")- , (41, "quarenta e um")- , (42, "quarenta e dois")- , (51, "cinquenta e um")- , (52, "cinquenta e dois")- , (61, "sessenta e um")- , (62, "sessenta e dois")- , (71, "setenta e um")- , (72, "setenta e dois")- , (81, "oitenta e um")- , (82, "oitenta e dois")- , (91, "noventa e um")- , (92, "noventa e dois")- , (101, "cento e um")- , (200, "duzentos")- , (234, "duzentos e trinta e quatro")- , (250, "duzentos e cinquenta")- , (300, "trezentos")- , (330, "trezentos e trinta")- , (375, "trezentos e setenta e cinco")- , (400, "quatrocentos")- , (467, "quatrocentos e sessenta e sete")- , (500, "quinhentos")- , (600, "seiscentos")- , (700, "setecentos")- , (800, "oitocentos")- , (900, "novecentos")- , (2000, "dois mil")- , (200000, "duzentos mil")- , (500000, "quinhentos mil")- , (100001, "cem mil e um")- , (101000, "cento e um mil")- , (1537469, "um milhão quinhentos e trinta e sete mil quatrocentos e sessenta e nove")- ]- )- , ( "feminine"- , feminine defaultInflection- , base_cardinals- ⊕ [ (1, "uma")- , (2, "duas")- , (21, "vinte e uma")- , (22, "vinte e duas")- , (31, "trinta e uma")- , (32, "trinta e duas")- , (41, "quarenta e uma")- , (42, "quarenta e duas")- , (51, "cinquenta e uma")- , (52, "cinquenta e duas")- , (61, "sessenta e uma")- , (62, "sessenta e duas")- , (71, "setenta e uma")- , (72, "setenta e duas")- , (81, "oitenta e uma")- , (82, "oitenta e duas")- , (91, "noventa e uma")- , (92, "noventa e duas")- , (101, "cento e uma")- , (200, "duzentas")- , (234, "duzentas e trinta e quatro")- , (250, "duzentas e cinquenta")- , (300, "trezentas")- , (330, "trezentas e trinta")- , (375, "trezentas e setenta e cinco")- , (400, "quatrocentas")- , (467, "quatrocentas e sessenta e sete")- , (500, "quinhentas")- , (600, "seiscentas")- , (700, "setecentas")- , (800, "oitocentas")- , (900, "novecentas")- , (2000, "duas mil")- , (200000, "duzentas mil")- , (500000, "quinhentas mil")- , (100001, "cem mil e uma")- , (101000, "cento e uma mil")- , (1537469, "um milhão quinhentas e trinta e sete mil quatrocentas e sessenta e nove")- ]- )- ]---- These are the base forms of the ordinals, stripped of their--- ending. Append "o", "os", "a" or "as" to form combinations of--- masculine, feminine, singular and plural ordinals.-base_ordinals ∷ (Integral i) ⇒ [(i, Text)]-base_ordinals =- [ (1, "primeir")- , (2, "segund")- , (3, "terceir")- , (4, "quart")- , (5, "quint")- , (6, "sext")- , (7, "sétim")- , (8, "oitav")- , (9, "non")- , (10, "décim")- , (11, "décimo primeir")- , (12, "décimo segund")- , (13, "décimo terceir")- , (20, "vigésim")- , (21, "vigésimo primeir")- , (30, "trigésim")- , (40, "quadragésim")- , (50, "qüinquagésim")- , (60, "sexagésim")- , (70, "septuagésim")- , (80, "octogésim")- , (90, "nonagésim")- , (100, "centésim")- , (200, "ducentésim")- , (300, "trecentésim")- , (400, "quadringentésim")- , (500, "qüingentésim")- , (600, "sexcentésim")- , (700, "setingentésim")- , (800, "octingentésim")- , (900, "nongentésim")- , (1000, "milésim")- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals = map (\(n, f, e) → ( n- , f defaultInflection- , map (second (⊕ e)) base_ordinals)- )- [ ("masculine singular", masculine ∘ singular, "o")- , ("masculine plural", masculine ∘ plural, "os")- , ("feminine singular", feminine ∘ singular, "a")- , ("feminine plural", feminine ∘ plural, "as")- ]
src-test/Text/Numeral/Language/RMN_DZA/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -36,7 +30,7 @@ -} -- Note: This is the Prilep dialect as spoken in Macedonia.-cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/RMY_KAL/TestData.hs view
@@ -0,0 +1,175 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] -++[@Native name@] -++[@English name@] Kalderash Romani+-}+module Text.Numeral.Language.RMY_KAL.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-kalderash-romani/en/rmy-kal/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "núla")+ , (1, "jek")+ , (2, "duj")+ , (3, "trin")+ , (4, "štar")+ , (5, "panź")+ , (6, "šov")+ , (7, "jefta")+ , (8, "oxto")+ , (9, "iňa")+ , (10, "deš")+ , (11, "dešujek")+ , (12, "dešuduj")+ , (13, "dešutrin")+ , (14, "dešuštar")+ , (15, "dešupanź")+ , (16, "dešušov")+ , (17, "dešjefta")+ , (18, "dešoxto")+ , (19, "dešuiňa")+ , (20, "biš")+ , (21, "biš taj jek")+ , (22, "biš taj duj")+ , (23, "biš taj trin")+ , (24, "biš taj štar")+ , (25, "biš taj panź")+ , (26, "biš taj šov")+ , (27, "biš taj jefta")+ , (28, "biš taj oxto")+ , (29, "biš taj iňa")+ , (30, "tranda")+ , (31, "tranda taj jek")+ , (32, "tranda taj duj")+ , (33, "tranda taj trin")+ , (34, "tranda taj štar")+ , (35, "tranda taj panź")+ , (36, "tranda taj šov")+ , (37, "tranda taj jefta")+ , (38, "tranda taj oxto")+ , (39, "tranda taj iňa")+ , (40, "saranda")+ , (41, "saranda taj jek")+ , (42, "saranda taj duj")+ , (43, "saranda taj trin")+ , (44, "saranda taj štar")+ , (45, "saranda taj panź")+ , (46, "saranda taj šov")+ , (47, "saranda taj jefta")+ , (48, "saranda taj oxto")+ , (49, "saranda taj iňa")+ , (50, "pinda")+ , (51, "pinda taj jek")+ , (52, "pinda taj duj")+ , (53, "pinda taj trin")+ , (54, "pinda taj štar")+ , (55, "pinda taj panź")+ , (56, "pinda taj šov")+ , (57, "pinda taj jefta")+ , (58, "pinda taj oxto")+ , (59, "pinda taj iňa")+ , (60, "šovardeš")+ , (61, "šovardeš taj jek")+ , (62, "šovardeš taj duj")+ , (63, "šovardeš taj trin")+ , (64, "šovardeš taj štar")+ , (65, "šovardeš taj panź")+ , (66, "šovardeš taj šov")+ , (67, "šovardeš taj jefta")+ , (68, "šovardeš taj oxto")+ , (69, "šovardeš taj iňa")+ , (70, "jeftavardeš")+ , (71, "jeftavardeš taj jek")+ , (72, "jeftavardeš taj duj")+ , (73, "jeftavardeš taj trin")+ , (74, "jeftavardeš taj štar")+ , (75, "jeftavardeš taj panź")+ , (76, "jeftavardeš taj šov")+ , (77, "jeftavardeš taj jefta")+ , (78, "jeftavardeš taj oxto")+ , (79, "jeftavardeš taj iňa")+ , (80, "oxtovardeš")+ , (81, "oxtovardeš taj jek")+ , (82, "oxtovardeš taj duj")+ , (83, "oxtovardeš taj trin")+ , (84, "oxtovardeš taj štar")+ , (85, "oxtovardeš taj panź")+ , (86, "oxtovardeš taj šov")+ , (87, "oxtovardeš taj jefta")+ , (88, "oxtovardeš taj oxto")+ , (89, "oxtovardeš taj iňa")+ , (90, "iňavardeš")+ , (91, "iňavardeš taj jek")+ , (92, "iňavardeš taj duj")+ , (93, "iňavardeš taj trin")+ , (94, "iňavardeš taj štar")+ , (95, "iňavardeš taj panź")+ , (96, "iňavardeš taj šov")+ , (97, "iňavardeš taj jefta")+ , (98, "iňavardeš taj oxto")+ , (99, "iňavardeš taj iňa")+ , (100, "šêl")+ , (101, "šêl jek")+ , (102, "šêl duj")+ , (103, "šêl trin")+ , (104, "šêl štar")+ , (105, "šêl panź")+ , (106, "šêl šov")+ , (107, "šêl jefta")+ , (108, "šêl oxto")+ , (109, "šêl iňa")+ , (110, "šêl deš")+ , (123, "šêl biš taj trin")+ , (200, "duj šêla")+ , (300, "trin šêla")+ , (321, "trin šêla biš taj jek")+ , (400, "štar šêla")+ , (500, "panź šêla")+ , (600, "šov šêla")+ , (700, "jefta šêla")+ , (800, "oxto šêla")+ , (900, "iňa šêla")+ , (909, "iňa šêla iňa")+ , (990, "iňa šêla iňavardeš")+ , (999, "iňa šêla iňavardeš taj iňa")+ , (1000, "mija")+ , (1001, "mija jek")+ , (1008, "mija oxto")+ , (1234, "mija duj šêla tranda taj štar")+ , (2000, "duj miji")+ , (3000, "trin miji")+ , (4000, "štar miji")+ , (4321, "štar miji trin šêla biš taj jek")+ , (5000, "panź miji")+ , (6000, "šov miji")+ , (7000, "jefta miji")+ , (8000, "oxto miji")+ , (9000, "iňa miji")+ ]+ )+ ]
− src-test/Text/Numeral/Language/RO/TestData.hs
@@ -1,144 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] ro--[@ISO639-2B@] rum--[@ISO639-2T@] ron--[@ISO639-3@] ron--[@Native name@] română--[@English name@] Romanian--}--module Text.Numeral.Language.RO.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "zero")- , (1, "unu")- , (2, "doi")- , (3, "trei")- , (4, "patru")- , (5, "cinci")- , (6, "sase")- , (7, "sapte")- , (8, "opt")- , (9, "noua")- , (10, "zece")- , (11, "unsprezece")- , (12, "doisprezece")- , (13, "treisprezece")- , (14, "paisprezece")- , (15, "cincisprezece")- , (16, "saisprezece")- , (17, "saptesprezece")- , (18, "optsprezece")- , (19, "nouasprezece")- , (20, "douazeci")- , (21, "douazecisiunu")- , (22, "douazecisidoi")- , (23, "douazecisitrei")- , (24, "douazecisipatru")- , (25, "douazecisicinci")- , (26, "douazecisisase")- , (27, "douazecisisapte")- , (28, "douazecisiopt")- , (29, "douazecisinoua")- , (30, "treizeci")- , (31, "treizecisiunu")- , (32, "treizecisidoi")- , (33, "treizecisitrei")- , (34, "treizecisipatru")- , (35, "treizecisicinci")- , (36, "treizecisisase")- , (37, "treizecisisapte")- , (38, "treizecisiopt")- , (39, "treizecisinoua")- , (40, "patruzeci")- , (41, "patruzecisiunu")- , (42, "patruzecisidoi")- , (43, "patruzecisitrei")- , (44, "patruzecisipatru")- , (45, "patruzecisicinci")- , (46, "patruzecisisase")- , (47, "patruzecisisapte")- , (48, "patruzecisiopt")- , (49, "patruzecisinoua")- , (50, "cincizeci")- , (51, "cincizecisiunu")- , (52, "cincizecisidoi")- , (53, "cincizecisitrei")- , (54, "cincizecisipatru")- , (55, "cincizecisicinci")- , (56, "cincizecisisase")- , (57, "cincizecisisapte")- , (58, "cincizecisiopt")- , (59, "cincizecisinoua")- , (60, "saizeci")- , (61, "saizecisiunu")- , (62, "saizecisidoi")- , (63, "saizecisitrei")- , (64, "saizecisipatru")- , (65, "saizecisicinci")- , (66, "saizecisisase")- , (67, "saizecisisapte")- , (68, "saizecisiopt")- , (69, "saizecisinoua")- , (70, "saptezeci")- , (71, "saptezecisiunu")- , (72, "saptezecisidoi")- , (73, "saptezecisitrei")- , (74, "saptezecisipatru")- , (75, "saptezecisicinci")- , (76, "saptezecisisase")- , (77, "saptezecisisapte")- , (78, "saptezecisiopt")- , (79, "saptezecisinoua")- , (80, "optzeci")- , (81, "optzecisiunu")- , (82, "optzecisidoi")- , (83, "optzecisitrei")- , (84, "optzecisipatru")- , (85, "optzecisicinci")- , (86, "optzecisisase")- , (87, "optzecisisapte")- , (88, "optzecisiopt")- , (89, "optzecisinoua")- , (90, "nouazeci")- , (91, "nouazecisiunu")- , (92, "nouazecisidoi")- , (93, "nouazecisitrei")- , (94, "nouazecisipatru")- , (95, "nouazecisicinci")- , (96, "nouazecisisase")- , (97, "nouazecisisapte")- , (98, "nouazecisiopt")- , (99, "nouazecisinoua")- , (100, "o suta")- ]- )- ]
+ src-test/Text/Numeral/Language/RON/TestData.hs view
@@ -0,0 +1,137 @@+{-|+[@ISO639-1@] ro++[@ISO639-2B@] rum++[@ISO639-2T@] ron++[@ISO639-3@] ron++[@Native name@] română++[@English name@] Romanian+-}++module Text.Numeral.Language.RON.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "zero")+ , (1, "unu")+ , (2, "doi")+ , (3, "trei")+ , (4, "patru")+ , (5, "cinci")+ , (6, "sase")+ , (7, "sapte")+ , (8, "opt")+ , (9, "noua")+ , (10, "zece")+ , (11, "unsprezece")+ , (12, "doisprezece")+ , (13, "treisprezece")+ , (14, "paisprezece")+ , (15, "cincisprezece")+ , (16, "saisprezece")+ , (17, "saptesprezece")+ , (18, "optsprezece")+ , (19, "nouasprezece")+ , (20, "douazeci")+ , (21, "douazecisiunu")+ , (22, "douazecisidoi")+ , (23, "douazecisitrei")+ , (24, "douazecisipatru")+ , (25, "douazecisicinci")+ , (26, "douazecisisase")+ , (27, "douazecisisapte")+ , (28, "douazecisiopt")+ , (29, "douazecisinoua")+ , (30, "treizeci")+ , (31, "treizecisiunu")+ , (32, "treizecisidoi")+ , (33, "treizecisitrei")+ , (34, "treizecisipatru")+ , (35, "treizecisicinci")+ , (36, "treizecisisase")+ , (37, "treizecisisapte")+ , (38, "treizecisiopt")+ , (39, "treizecisinoua")+ , (40, "patruzeci")+ , (41, "patruzecisiunu")+ , (42, "patruzecisidoi")+ , (43, "patruzecisitrei")+ , (44, "patruzecisipatru")+ , (45, "patruzecisicinci")+ , (46, "patruzecisisase")+ , (47, "patruzecisisapte")+ , (48, "patruzecisiopt")+ , (49, "patruzecisinoua")+ , (50, "cincizeci")+ , (51, "cincizecisiunu")+ , (52, "cincizecisidoi")+ , (53, "cincizecisitrei")+ , (54, "cincizecisipatru")+ , (55, "cincizecisicinci")+ , (56, "cincizecisisase")+ , (57, "cincizecisisapte")+ , (58, "cincizecisiopt")+ , (59, "cincizecisinoua")+ , (60, "saizeci")+ , (61, "saizecisiunu")+ , (62, "saizecisidoi")+ , (63, "saizecisitrei")+ , (64, "saizecisipatru")+ , (65, "saizecisicinci")+ , (66, "saizecisisase")+ , (67, "saizecisisapte")+ , (68, "saizecisiopt")+ , (69, "saizecisinoua")+ , (70, "saptezeci")+ , (71, "saptezecisiunu")+ , (72, "saptezecisidoi")+ , (73, "saptezecisitrei")+ , (74, "saptezecisipatru")+ , (75, "saptezecisicinci")+ , (76, "saptezecisisase")+ , (77, "saptezecisisapte")+ , (78, "saptezecisiopt")+ , (79, "saptezecisinoua")+ , (80, "optzeci")+ , (81, "optzecisiunu")+ , (82, "optzecisidoi")+ , (83, "optzecisitrei")+ , (84, "optzecisipatru")+ , (85, "optzecisicinci")+ , (86, "optzecisisase")+ , (87, "optzecisisapte")+ , (88, "optzecisiopt")+ , (89, "optzecisinoua")+ , (90, "nouazeci")+ , (91, "nouazecisiunu")+ , (92, "nouazecisidoi")+ , (93, "nouazecisitrei")+ , (94, "nouazecisipatru")+ , (95, "nouazecisicinci")+ , (96, "nouazecisisase")+ , (97, "nouazecisisapte")+ , (98, "nouazecisiopt")+ , (99, "nouazecisinoua")+ , (100, "o suta")+ ]+ )+ ]
− src-test/Text/Numeral/Language/RU/TestData.hs
@@ -1,192 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] ru--[@ISO639-2@] rus--[@ISO639-3@] rus--[@Native name@] Русский язык--[@English name@] Russian--}--module Text.Numeral.Language.RU.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://en.wikibooks.org/wiki/Russian/Numbers- http://russian.speak7.com/russian_numbers.htm- http://learningrussian.net/games_verbs_grammar3.php- http://www.waytorussia.net/WhatIsRussia/Russian/Part1a.html--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "ноль")- , (1, "один")- , (2, "два")- , (3, "три")- , (4, "четыре")- , (5, "пять")- , (6, "шесть")- , (7, "семь")- , (8, "восемь")- , (9, "девять")- , (10, "десять")- , (11, "одиннадцать")- , (12, "двенадцать")- , (13, "тринадцать")- , (14, "четырнадцать")- , (15, "пятнадцать")- , (16, "шестнадцать")- , (17, "семнадцать")- , (18, "восемнадцать")- , (19, "девятнадцать")- , (20, "двадцать")- , (21, "двадцать один")- , (22, "двадцать два")- , (23, "двадцать три")- , (24, "двадцать четыре")- , (25, "двадцать пять")- , (26, "двадцать шесть")- , (27, "двадцать семь")- , (28, "двадцать восемь")- , (29, "двадцать девять")- , (30, "тридцать")- , (31, "тридцать один")- , (32, "тридцать два")- , (33, "тридцать три")- , (34, "тридцать четыре")- , (35, "тридцать пять")- , (36, "тридцать шесть")- , (37, "тридцать семь")- , (38, "тридцать восемь")- , (39, "тридцать девять")- , (40, "сорок")- , (41, "сорок один")- , (42, "сорок два")- , (43, "сорок три")- , (44, "сорок четыре")- , (45, "сорок пять")- , (46, "сорок шесть")- , (47, "сорок семь")- , (48, "сорок восемь")- , (49, "сорок девять")- , (50, "пятьдесят")- , (51, "пятьдесят один")- , (52, "пятьдесят два")- , (53, "пятьдесят три")- , (54, "пятьдесят четыре")- , (55, "пятьдесят пять")- , (56, "пятьдесят шесть")- , (57, "пятьдесят семь")- , (58, "пятьдесят восемь")- , (59, "пятьдесят девять")- , (60, "шестьдесят")- , (61, "шестьдесят один")- , (62, "шестьдесят два")- , (63, "шестьдесят три")- , (64, "шестьдесят четыре")- , (65, "шестьдесят пять")- , (66, "шестьдесят шесть")- , (67, "шестьдесят семь")- , (68, "шестьдесят восемь")- , (69, "шестьдесят девять")- , (70, "семьдесят")- , (71, "семьдесят один")- , (72, "семьдесят два")- , (73, "семьдесят три")- , (74, "семьдесят четыре")- , (75, "семьдесят пять")- , (76, "семьдесят шесть")- , (77, "семьдесят семь")- , (78, "семьдесят восемь")- , (79, "семьдесят девять")- , (80, "восемьдесят")- , (81, "восемьдесят один")- , (82, "восемьдесят два")- , (83, "восемьдесят три")- , (84, "восемьдесят четыре")- , (85, "восемьдесят пять")- , (86, "восемьдесят шесть")- , (87, "восемьдесят семь")- , (88, "восемьдесят восемь")- , (89, "восемьдесят девять")- , (90, "девяносто")- , (91, "девяносто один")- , (92, "девяносто два")- , (93, "девяносто три")- , (94, "девяносто четыре")- , (95, "девяносто пять")- , (96, "девяносто шесть")- , (97, "девяносто семь")- , (98, "девяносто восемь")- , (99, "девяносто девять")- , (100, "сто")- , (101, "сто один")- , (108, "сто восемь")- , (110, "сто десять")- , (115, "сто пятнадцать")- , (121, "сто двадцать один")- , (133, "сто тридцать три")- , (147, "сто сорок семь")- , (200, "двести")- , (300, "триста")- , (400, "четыреста")- , (500, "пятьсот")- , (600, "шестьсот")- , (700, "семьсот")- , (800, "восемьсот")- , (900, "девятьсот")- , (1000, "тысяча")- , (2000, "две тысячи")- , (3000, "три тысячи")- , (5000, "пять тысяч")- , (6000, "шесть тысяч")- , (9000, "девять тысяч")- , (16000, "шестнадцать тысяч")- , (21000, "двадцать одна тысяча")- , (22000, "двадцать две тысячи")- , (23000, "двадцать три тысячи")- , (28000, "двадцать восемь тысяч")- , (41000, "сорок одна тысяча")- , (42000, "сорок две тысячи")- , (49000, "сорок девять тысяч")- , (100000, "сто тысяч")- , (200000, "двести тысяч")- , (300000, "триста тысяч")- , (300001, "триста тысяч один")- , (300020, "триста тысяч двадцать")- , (300825, "триста тысячь восемьсот двадцать пять")- , (dec 6, "один миллион")- , (2 ⋅ dec 6, "два миллиона")- , (5 ⋅ dec 6, "пять миллионов")- , (dec 9, "один миллиард")- , (2 ⋅ dec 9, "два миллиарда")- ]- )- ]
+ src-test/Text/Numeral/Language/RUS/TestData.hs view
@@ -0,0 +1,184 @@+{-|+[@ISO639-1@] ru++[@ISO639-2@] rus++[@ISO639-3@] rus++[@Native name@] Русский язык++[@English name@] Russian+-}++module Text.Numeral.Language.RUS.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://en.wikibooks.org/wiki/Russian/Numbers+ http://russian.speak7.com/russian_numbers.htm+ http://learningrussian.net/games_verbs_grammar3.php+ http://www.waytorussia.net/WhatIsRussia/Russian/Part1a.html+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "ноль")+ , (1, "один")+ , (2, "два")+ , (3, "три")+ , (4, "четыре")+ , (5, "пять")+ , (6, "шесть")+ , (7, "семь")+ , (8, "восемь")+ , (9, "девять")+ , (10, "десять")+ , (11, "одиннадцать")+ , (12, "двенадцать")+ , (13, "тринадцать")+ , (14, "четырнадцать")+ , (15, "пятнадцать")+ , (16, "шестнадцать")+ , (17, "семнадцать")+ , (18, "восемнадцать")+ , (19, "девятнадцать")+ , (20, "двадцать")+ , (21, "двадцать один")+ , (22, "двадцать два")+ , (23, "двадцать три")+ , (24, "двадцать четыре")+ , (25, "двадцать пять")+ , (26, "двадцать шесть")+ , (27, "двадцать семь")+ , (28, "двадцать восемь")+ , (29, "двадцать девять")+ , (30, "тридцать")+ , (31, "тридцать один")+ , (32, "тридцать два")+ , (33, "тридцать три")+ , (34, "тридцать четыре")+ , (35, "тридцать пять")+ , (36, "тридцать шесть")+ , (37, "тридцать семь")+ , (38, "тридцать восемь")+ , (39, "тридцать девять")+ , (40, "сорок")+ , (41, "сорок один")+ , (42, "сорок два")+ , (43, "сорок три")+ , (44, "сорок четыре")+ , (45, "сорок пять")+ , (46, "сорок шесть")+ , (47, "сорок семь")+ , (48, "сорок восемь")+ , (49, "сорок девять")+ , (50, "пятьдесят")+ , (51, "пятьдесят один")+ , (52, "пятьдесят два")+ , (53, "пятьдесят три")+ , (54, "пятьдесят четыре")+ , (55, "пятьдесят пять")+ , (56, "пятьдесят шесть")+ , (57, "пятьдесят семь")+ , (58, "пятьдесят восемь")+ , (59, "пятьдесят девять")+ , (60, "шестьдесят")+ , (61, "шестьдесят один")+ , (62, "шестьдесят два")+ , (63, "шестьдесят три")+ , (64, "шестьдесят четыре")+ , (65, "шестьдесят пять")+ , (66, "шестьдесят шесть")+ , (67, "шестьдесят семь")+ , (68, "шестьдесят восемь")+ , (69, "шестьдесят девять")+ , (70, "семьдесят")+ , (71, "семьдесят один")+ , (72, "семьдесят два")+ , (73, "семьдесят три")+ , (74, "семьдесят четыре")+ , (75, "семьдесят пять")+ , (76, "семьдесят шесть")+ , (77, "семьдесят семь")+ , (78, "семьдесят восемь")+ , (79, "семьдесят девять")+ , (80, "восемьдесят")+ , (81, "восемьдесят один")+ , (82, "восемьдесят два")+ , (83, "восемьдесят три")+ , (84, "восемьдесят четыре")+ , (85, "восемьдесят пять")+ , (86, "восемьдесят шесть")+ , (87, "восемьдесят семь")+ , (88, "восемьдесят восемь")+ , (89, "восемьдесят девять")+ , (90, "девяносто")+ , (91, "девяносто один")+ , (92, "девяносто два")+ , (93, "девяносто три")+ , (94, "девяносто четыре")+ , (95, "девяносто пять")+ , (96, "девяносто шесть")+ , (97, "девяносто семь")+ , (98, "девяносто восемь")+ , (99, "девяносто девять")+ , (100, "сто")+ , (101, "сто один")+ , (108, "сто восемь")+ , (110, "сто десять")+ , (115, "сто пятнадцать")+ , (121, "сто двадцать один")+ , (133, "сто тридцать три")+ , (147, "сто сорок семь")+ , (200, "двести")+ , (300, "триста")+ , (400, "четыреста")+ , (500, "пятьсот")+ , (600, "шестьсот")+ , (700, "семьсот")+ , (800, "восемьсот")+ , (900, "девятьсот")+ , (1000, "тысяча")+ , (2000, "две тысячи")+ , (3000, "три тысячи")+ , (5000, "пять тысяч")+ , (6000, "шесть тысяч")+ , (9000, "девять тысяч")+ , (16000, "шестнадцать тысяч")+ , (21000, "двадцать одна тысяча")+ , (22000, "двадцать две тысячи")+ , (23000, "двадцать три тысячи")+ , (28000, "двадцать восемь тысяч")+ , (41000, "сорок одна тысяча")+ , (42000, "сорок две тысячи")+ , (49000, "сорок девять тысяч")+ , (100000, "сто тысяч")+ , (200000, "двести тысяч")+ , (300000, "триста тысяч")+ , (300001, "триста тысяч один")+ , (300020, "триста тысяч двадцать")+ , (300825, "триста тысячь восемьсот двадцать пять")+ , (dec 6, "один миллион")+ , (2 * dec 6, "два миллиона")+ , (5 * dec 6, "пять миллионов")+ , (dec 9, "один миллиард")+ , (2 * dec 9, "два миллиарда")+ ]+ )+ ]
src-test/Text/Numeral/Language/SCO/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -23,8 +17,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -37,7 +30,7 @@ http://www.sf.airnet.ne.jp/~ts/language/number/scots.html -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/SME/TestData.hs view
@@ -0,0 +1,208 @@+{-|+[@ISO639-1@] se++[@ISO639-2@] sme++[@ISO639-3@] sme++[@Native name@] davvisámegiella++[@English name@] Northern Sami+-}+module Text.Numeral.Language.SME.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-northern-sami/en/sme/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "okta")+ , (2, "guokte")+ , (3, "golbma")+ , (4, "njeallje")+ , (5, "vihtta")+ , (6, "guhtta")+ , (7, "čieža")+ , (8, "gávcci")+ , (9, "ovcci")+ , (10, "logi")+ , (11, "oktanuppelohkái")+ , (12, "guoktenuppelohkái")+ , (13, "golbmanuppelohkái")+ , (14, "njealljenuppelohkái")+ , (15, "vihttanuppelohkái")+ , (16, "guhttanuppelohkái")+ , (17, "čiežanuppelohkái")+ , (18, "gávccinuppelohkái")+ , (19, "ovccinuppelohkái")+ , (20, "guoktelogi")+ , (21, "guoktelogiokta")+ , (22, "guoktelogiguokte")+ , (23, "guoktelogigolbma")+ , (24, "guokteloginjeallje")+ , (25, "guoktelogivihtta")+ , (26, "guoktelogiguhtta")+ , (27, "guoktelogičieža")+ , (28, "guoktelogigávcci")+ , (29, "guoktelogiovcci")+ , (30, "golbmalogi")+ , (31, "golbmalogiokta")+ , (32, "golbmalogiguokte")+ , (33, "golbmalogigolbma")+ , (34, "golbmaloginjeallje")+ , (35, "golbmalogivihtta")+ , (36, "golbmalogiguhtta")+ , (37, "golbmalogičieža")+ , (38, "golbmalogigávcci")+ , (39, "golbmalogiovcci")+ , (40, "njealljelogi")+ , (41, "njealljelogiokta")+ , (42, "njealljelogiguokte")+ , (43, "njealljelogigolbma")+ , (44, "njealljeloginjeallje")+ , (45, "njealljelogivihtta")+ , (46, "njealljelogiguhtta")+ , (47, "njealljelogičieža")+ , (48, "njealljelogigávcci")+ , (49, "njealljelogiovcci")+ , (50, "vihttalogi")+ , (51, "vihttalogiokta")+ , (52, "vihttalogiguokte")+ , (53, "vihttalogigolbma")+ , (54, "vihttaloginjeallje")+ , (55, "vihttalogivihtta")+ , (56, "vihttalogiguhtta")+ , (57, "vihttalogičieža")+ , (58, "vihttalogigávcci")+ , (59, "vihttalogiovcci")+ , (60, "guhttalogi")+ , (61, "guhttalogiokta")+ , (62, "guhttalogiguokte")+ , (63, "guhttalogigolbma")+ , (64, "guhttaloginjeallje")+ , (65, "guhttalogivihtta")+ , (66, "guhttalogiguhtta")+ , (67, "guhttalogičieža")+ , (68, "guhttalogigávcci")+ , (69, "guhttalogiovcci")+ , (70, "čiežalogi")+ , (71, "čiežalogiokta")+ , (72, "čiežalogiguokte")+ , (73, "čiežalogigolbma")+ , (74, "čiežaloginjeallje")+ , (75, "čiežalogivihtta")+ , (76, "čiežalogiguhtta")+ , (77, "čiežalogičieža")+ , (78, "čiežalogigávcci")+ , (79, "čiežalogiovcci")+ , (80, "gávccilogi")+ , (81, "gávccilogiokta")+ , (82, "gávccilogiguokte")+ , (83, "gávccilogigolbma")+ , (84, "gávcciloginjeallje")+ , (85, "gávccilogivihtta")+ , (86, "gávccilogiguhtta")+ , (87, "gávccilogičieža")+ , (88, "gávccilogigávcci")+ , (89, "gávccilogiovcci")+ , (90, "ovccilogi")+ , (91, "ovccilogiokta")+ , (92, "ovccilogiguokte")+ , (93, "ovccilogigolbma")+ , (94, "ovcciloginjeallje")+ , (95, "ovccilogivihtta")+ , (96, "ovccilogiguhtta")+ , (97, "ovccilogičieža")+ , (98, "ovccilogigávcci")+ , (99, "ovccilogiovcci")+ , (100, "čuođi")+ , (101, "čuođiokta")+ , (102, "čuođiguokte")+ , (103, "čuođigolbma")+ , (104, "čuođinjeallje")+ , (105, "čuođivihtta")+ , (106, "čuođiguhtta")+ , (107, "čuođičieža")+ , (108, "čuođigávcci")+ , (109, "čuođiovcci")+ , (110, "čuođilogi")+ , (123, "čuođiguoktelogigolbma")+ , (200, "guoktečuođi")+ , (300, "golbmačuođi")+ , (321, "golbmačuođiguoktelogiokta")+ , (400, "njeallječuođi")+ , (500, "vihttačuođi")+ , (600, "guhttačuođi")+ , (700, "čiežačuođi")+ , (800, "gávccičuođi")+ , (900, "ovccičuođi")+ , (909, "ovccičuođiovcci")+ , (990, "ovccičuođiovccilogi")+ , (999, "ovccičuođiovccilogiovcci")+ , (1000, "duhat")+ , (1001, "duhatokta")+ , (1008, "duhatgávcci")+ , (1234, "duhatguoktečuođigolbmaloginjeallje")+ , (2000, "guokteduhat")+ , (3000, "golbmaduhat")+ , (4000, "njealljeduhat")+ , (4321, "njealljeduhatgolbmačuođiguoktelogiokta")+ , (5000, "vihttaduhat")+ , (6000, "guhttaduhat")+ , (7000, "čiežaduhat")+ , (8000, "gávcciduhat")+ , (9000, "ovcciduhat")+ , (10000, "logi duhat")+ , (12345, "guoktenuppelohkái duhatgolbmačuođinjealljelogivihtta")+ , (20000, "guoktelogi duhat")+ , (30000, "golbmalogi duhat")+ , (40000, "njealljelogi duhat")+ , (50000, "vihttalogi duhat")+ , (54321, "vihttaloginjealljeduhatgolbmačuođiguoktelogiokta")+ , (60000, "guhttalogi duhat")+ , (70000, "čiežalogi duhat")+ , (80000, "gávccilogi duhat")+ , (90000, "ovccilogi duhat")+ , (100000, "čuođi duhat")+ , (123456, "čuođiguoktelogigolbmaduhatnjeallječuođivihttalogiguhtta")+ , (200000, "guoktečuođi duhat")+ , (300000, "golbmačuođi duhat")+ , (400000, "njeallječuođi duhat")+ , (500000, "vihttačuođi duhat")+ , (600000, "guhttačuođi duhat")+ , (654321, "guhttačuođivihttaloginjealljeduhatgolbmačuođiguoktelogiokta")+ , (700000, "čiežačuođi duhat")+ , (800000, "gávccičuođi duhat")+ , (900000, "ovccičuođi duhat")+ , (1000000, "miljon")+ , (1000001, "miljonokta")+ , (1234567, "miljonguoktečuođigolbmaloginjealljeduhatvihttačuođiguhttalogičieža")+ , (2000000, "guoktemiljovnna")+ , (3000000, "golbmamiljovnna")+ , (4000000, "njealljemiljovnna")+ , (5000000, "vihttamiljovnna")+ , (6000000, "guhttamiljovnna")+ , (7000000, "čiežamiljovnna")+ , (7654321, "čiežamiljovnnaguhttačuođivihttaloginjealljeduhatgolbmačuođiguoktelogiokta")+ , (8000000, "gávccimiljovnna")+ , (9000000, "ovccimiljovnna")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/SMN/TestData.hs view
@@ -0,0 +1,208 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] smn++[@ISO639-3@] smn++[@Native name@] anarâškielâ++[@English name@] Inari Sami+-}+module Text.Numeral.Language.SMN.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-inari-sami/en/smn/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "ohtâ")+ , (2, "kyehti")+ , (3, "kulmâ")+ , (4, "nelji")+ , (5, "vittâ")+ , (6, "kuttâ")+ , (7, "čiččâm")+ , (8, "käävci")+ , (9, "oovce")+ , (10, "love")+ , (11, "ohtunubáloh")+ , (12, "kyehtnubáloh")+ , (13, "kulmânubáloh")+ , (14, "neljinubáloh")+ , (15, "vittânubáloh")+ , (16, "kuttânubáloh")+ , (17, "čiččâmnubáloh")+ , (18, "käävcinubáloh")+ , (19, "oovcenubáloh")+ , (20, "kyehtlov")+ , (21, "kyehtlovohtâ")+ , (22, "kyehtlovkyehti")+ , (23, "kyehtlovkulmâ")+ , (24, "kyehtlovnelji")+ , (25, "kyehtlovvittâ")+ , (26, "kyehtlovkuttâ")+ , (27, "kyehtlovčiččâm")+ , (28, "kyehtlovkäävci")+ , (29, "kyehtlovoovce")+ , (30, "kulmâlov")+ , (31, "kulmâlovohtâ")+ , (32, "kulmâlovkyehti")+ , (33, "kulmâlovkulmâ")+ , (34, "kulmâlovnelji")+ , (35, "kulmâlovvittâ")+ , (36, "kulmâlovkuttâ")+ , (37, "kulmâlovčiččâm")+ , (38, "kulmâlovkäävci")+ , (39, "kulmâlovoovce")+ , (40, "neljilov")+ , (41, "neljilovohtâ")+ , (42, "neljilovkyehti")+ , (43, "neljilovkulmâ")+ , (44, "neljilovnelji")+ , (45, "neljilovvittâ")+ , (46, "neljilovkuttâ")+ , (47, "neljilovčiččâm")+ , (48, "neljilovkäävci")+ , (49, "neljilovoovce")+ , (50, "vittlov")+ , (51, "vittlovohtâ")+ , (52, "vittlovkyehti")+ , (53, "vittlovkulmâ")+ , (54, "vittlovnelji")+ , (55, "vittlovvittâ")+ , (56, "vittlovkuttâ")+ , (57, "vittlovčiččâm")+ , (58, "vittlovkäävci")+ , (59, "vittlovoovce")+ , (60, "kuttlov")+ , (61, "kuttlovohtâ")+ , (62, "kuttlovkyehti")+ , (63, "kuttlovkulmâ")+ , (64, "kuttlovnelji")+ , (65, "kuttlovvittâ")+ , (66, "kuttlovkuttâ")+ , (67, "kuttlovčiččâm")+ , (68, "kuttlovkäävci")+ , (69, "kuttlovoovce")+ , (70, "čiččâmlov")+ , (71, "čiččâmlovohtâ")+ , (72, "čiččâmlovkyehti")+ , (73, "čiččâmlovkulmâ")+ , (74, "čiččâmlovnelji")+ , (75, "čiččâmlovvittâ")+ , (76, "čiččâmlovkuttâ")+ , (77, "čiččâmlovčiččâm")+ , (78, "čiččâmlovkäävci")+ , (79, "čiččâmlovoovce")+ , (80, "kähcilov")+ , (81, "kähcilovohtâ")+ , (82, "kähcilovkyehti")+ , (83, "kähcilovkulmâ")+ , (84, "kähcilovnelji")+ , (85, "kähcilovvittâ")+ , (86, "kähcilovkuttâ")+ , (87, "kähcilovčiččâm")+ , (88, "kähcilovkäävci")+ , (89, "kähcilovoovce")+ , (90, "ohcelov")+ , (91, "ohcelovohtâ")+ , (92, "ohcelovkyehti")+ , (93, "ohcelovkulmâ")+ , (94, "ohcelovnelji")+ , (95, "ohcelovvittâ")+ , (96, "ohcelovkuttâ")+ , (97, "ohcelovčiččâm")+ , (98, "ohcelovkäävci")+ , (99, "ohcelovoovce")+ , (100, "čyeđe")+ , (101, "čyeđe ohtâ")+ , (102, "čyeđe kyehti")+ , (103, "čyeđe kulmâ")+ , (104, "čyeđe nelji")+ , (105, "čyeđe vittâ")+ , (106, "čyeđe kuttâ")+ , (107, "čyeđe čiččâm")+ , (108, "čyeđe käävci")+ , (109, "čyeđe oovce")+ , (110, "čyeđe love")+ , (123, "čyeđe kyehtlovkulmâ")+ , (200, "kyehtičyeđe")+ , (300, "kulmâčyeđe")+ , (321, "kulmâčyeđe kyehtlovohtâ")+ , (400, "neljičyeđe")+ , (500, "vittâčyeđe")+ , (600, "kuttâčyeđe")+ , (700, "čiččâmčyeđe")+ , (800, "käävcičyeđe")+ , (900, "oovcečyeđe")+ , (909, "oovcečyeđe oovce")+ , (990, "oovcečyeđe ohcelov")+ , (999, "oovcečyeđe ohcelovoovce")+ , (1000, "tuhhát")+ , (1001, "tuhhát ohtâ")+ , (1008, "tuhhát käävci")+ , (1234, "tuhhát kyehtičyeđe kulmâlovnelji")+ , (2000, "kyehttuhhát")+ , (3000, "kulmâtuhhát")+ , (4000, "neljituhhát")+ , (4321, "neljituhhát kulmâčyeđe kyehtlovohtâ")+ , (5000, "vittâtuhhát")+ , (6000, "kuttâtuhhát")+ , (7000, "čiččâmtuhhát")+ , (8000, "käävcituhhát")+ , (9000, "oovcetuhhát")+ , (10000, "love tuhhát")+ , (12345, "kyehtnubáloh tuhhát kulmâčyeđe neljilovvittâ")+ , (20000, "kyehtlov tuhhát")+ , (30000, "kulmâlov tuhhát")+ , (40000, "neljilov tuhhát")+ , (50000, "vittlov tuhhát")+ , (54321, "vittlovneljituhhát kulmâčyeđe kyehtlovohtâ")+ , (60000, "kuttlov tuhhát")+ , (70000, "čiččâmlov tuhhát")+ , (80000, "kähcilov tuhhát")+ , (90000, "ohcelov tuhhát")+ , (100000, "čyeđe tuhhát")+ , (123456, "čyeđe kyehtlovkulmâtuhhát neljičyeđe vittlovkuttâ")+ , (200000, "kyehtičyeđe tuhhát")+ , (300000, "kulmâčyeđe tuhhát")+ , (400000, "neljičyeđe tuhhát")+ , (500000, "vittâčyeđe tuhhát")+ , (600000, "kuttâčyeđe tuhhát")+ , (654321, "kuttâčyeđe vittlovneljituhhát kulmâčyeđe kyehtlovohtâ")+ , (700000, "čiččâmčyeđe tuhhát")+ , (800000, "käävcičyeđe tuhhát")+ , (900000, "oovcečyeđe tuhhát")+ , (1000000, "miljon")+ , (1000001, "miljon ohtâ")+ , (1234567, "miljon kyehtičyeđe kulmâlovneljituhhát vittâčyeđe kuttlovčiččâm")+ , (2000000, "kyehti miljona")+ , (3000000, "kulmâ miljona")+ , (4000000, "nelji miljona")+ , (5000000, "vittâ miljona")+ , (6000000, "kuttâ miljona")+ , (7000000, "čiččâm miljona")+ , (7654321, "čiččâm miljona kuttâčyeđe vittlovneljituhhát kulmâčyeđe kyehtlovohtâ")+ , (8000000, "käävci miljona")+ , (9000000, "oovce miljona")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/SPA/TestData.hs view
@@ -0,0 +1,273 @@+{-|+[@ISO639-1@] es++[@ISO639-2B@] spa++[@ISO639-3@] spa++[@Native name@] Español++[@English name@] Spanish+-}++module Text.Numeral.Language.SPA.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Prelude ( (+), Integral )+import "numerals" Text.Numeral.Misc ( dec )+import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources:+-- http://www.sf.airnet.ne.jp/~ts/language/number/spanish.html+-- http://spanish.about.com/cs/forbeginners/a/cardinalnum_beg.htm+-- http://www.learn-spanish-help.com/count-in-spanish.html+-- http://www.donquijote.org/spanishlanguage/numbers/numbers1.asp+-- http://en.wiktionary.org/wiki/Appendix:Spanish_numerals++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "neuter"+ , neuter defaultInflection+ , [ (-3, "menos tres")+ , (-2, "menos dos")+ , (-1, "menos uno")+ , (0, "cero")+ , (1, "uno")+ , (2, "dos")+ , (3, "tres")+ , (4, "cuatro")+ , (5, "cinco")+ , (6, "seis")+ , (7, "siete")+ , (8, "ocho")+ , (9, "nueve")+ , (10, "diez")+ , (11, "once")+ , (12, "doce")+ , (13, "trece")+ , (14, "catorce")+ , (15, "quince")+ , (16, "dieciséis")+ , (17, "diecisiete")+ , (18, "dieciocho")+ , (19, "diecinueve")+ , (20, "veinte")+ , (21, "veintiuno")+ , (22, "veintidós")+ , (23, "veintitrés")+ , (24, "veinticuatro")+ , (25, "veinticinco")+ , (26, "veintiséis")+ , (27, "veintisiete")+ , (28, "veintiocho")+ , (29, "veintinueve")+ , (30, "treinta")+ , (31, "treinta y uno")+ , (32, "treinta y dos")+ , (33, "treinta y tres")+ , (34, "treinta y cuatro")+ , (35, "treinta y cinco")+ , (36, "treinta y seis")+ , (37, "treinta y siete")+ , (38, "treinta y ocho")+ , (39, "treinta y nueve")+ , (40, "cuarenta")+ , (41, "cuarenta y uno")+ , (42, "cuarenta y dos")+ , (43, "cuarenta y tres")+ , (44, "cuarenta y cuatro")+ , (45, "cuarenta y cinco")+ , (46, "cuarenta y seis")+ , (47, "cuarenta y siete")+ , (48, "cuarenta y ocho")+ , (49, "cuarenta y nueve")+ , (50, "cincuenta")+ , (51, "cincuenta y uno")+ , (52, "cincuenta y dos")+ , (53, "cincuenta y tres")+ , (54, "cincuenta y cuatro")+ , (55, "cincuenta y cinco")+ , (56, "cincuenta y seis")+ , (57, "cincuenta y siete")+ , (58, "cincuenta y ocho")+ , (59, "cincuenta y nueve")+ , (60, "sesenta")+ , (61, "sesenta y uno")+ , (62, "sesenta y dos")+ , (63, "sesenta y tres")+ , (64, "sesenta y cuatro")+ , (65, "sesenta y cinco")+ , (66, "sesenta y seis")+ , (67, "sesenta y siete")+ , (68, "sesenta y ocho")+ , (69, "sesenta y nueve")+ , (70, "setenta")+ , (71, "setenta y uno")+ , (72, "setenta y dos")+ , (73, "setenta y tres")+ , (74, "setenta y cuatro")+ , (75, "setenta y cinco")+ , (76, "setenta y seis")+ , (77, "setenta y siete")+ , (78, "setenta y ocho")+ , (79, "setenta y nueve")+ , (80, "ochenta")+ , (81, "ochenta y uno")+ , (82, "ochenta y dos")+ , (83, "ochenta y tres")+ , (84, "ochenta y cuatro")+ , (85, "ochenta y cinco")+ , (86, "ochenta y seis")+ , (87, "ochenta y siete")+ , (88, "ochenta y ocho")+ , (89, "ochenta y nueve")+ , (90, "noventa")+ , (91, "noventa y uno")+ , (92, "noventa y dos")+ , (93, "noventa y tres")+ , (94, "noventa y cuatro")+ , (95, "noventa y cinco")+ , (96, "noventa y seis")+ , (97, "noventa y siete")+ , (98, "noventa y ocho")+ , (99, "noventa y nueve")+ , (100, "cien")+ , (101, "ciento uno")+ , (103, "ciento tres")+ , (114, "ciento catorce")+ , (127, "ciento veintisiete")+ , (165, "ciento sesenta y cinco")+ , (198, "ciento noventa y ocho")+ , (199, "ciento noventa y nueve")+ , (200, "doscientos")+ , (221, "doscientos veintiuno")+ , (256, "doscientos cincuenta y seis")+ , (300, "trescientos")+ , (400, "cuatrocientos")+ , (496, "cuatrocientos noventa y seis")+ , (500, "quinientos")+ , (512, "quinientos doce")+ , (600, "seiscientos")+ , (666, "seiscientos sesenta y seis")+ , (700, "setecientos")+ , (800, "ochocientos")+ , (900, "novecientos")+ , (1000, "mil")+ , (1002, "mil dos")+ , (1024, "mil veinticuatro")+ , (1729, "mil setecientos veintinueve")+ , (2000, "dos mil")+ , (2800, "dos mil ochocientos")+ , (3000, "tres mil")+ , (4000, "cuatro mil")+ , (5000, "cinco mil")+ , (6000, "seis mil")+ , (7000, "siete mil")+ , (8000, "ocho mil")+ , (9000, "nueve mil")+ , (dec 4, "diez mil")+ , (15000, "quince mil")+ , (18000, "dieciocho mil")+ , (22000, "veintidós mil")+ , (28000, "veintiocho mil")+ , (37000, "treinta y siete mil")+ , (85000, "ochenta y cinco mil")+ , (dec 5, "cien mil")+ , (108000, "ciento ocho mil")+ , (160000, "ciento sesenta mil")+ , (585000, "quinientos ochenta y cinco mil")+ , (999000, "novecientos noventa y nueve mil")+ , (dec 6, "un millón")+ , (dec 6 + 1, "un millón uno")+ , (21 * dec 6 + 21, "veintiún millones veintiuno")+ , (500 * dec 6, "quinientos millones")+ , (521 * dec 6 + 1, "quinientos veintiún millones uno")+ , (dec 7, "diez millones")+ , (dec 8, "cien millones")+ , (dec 9, "mil millones")+ , (dec 10, "diez mil millones")+ , (dec 11, "cien mil millones")+ , (dec 12, "un billón")+ , (dec 18, "un trillón")+ , (dec 24, "un cuatrillón")+ , (15936535897932384626433832795, "quince mil novecientos treinta y seis cuatrillones quinientos treinta y cinco mil ochocientos noventa y siete trillones novecientos treinta y dos mil trescientos ochenta y cuatro billones seiscientos veintiséis mil cuatrocientos treinta y tres millones ochocientos treinta y dos mil setecientos noventa y cinco")+ , (dec 30, "un quintillón")+ , (31415926535897932384626433832795, "treinta y un quintillones cuatrocientos quince mil novecientos veintiséis cuatrillones quinientos treinta y cinco mil ochocientos noventa y siete trillones novecientos treinta y dos mil trescientos ochenta y cuatro billones seiscientos veintiséis mil cuatrocientos treinta y tres millones ochocientos treinta y dos mil setecientos noventa y cinco")+ , (dec 36, "un sextillón")+ , (dec 42, "un septillón")+ , (dec 48, "un octillón")+ , (dec 54, "un nonillón")+ , (dec 60, "un decillón")+ , (dec 66, "un undecillón")+ , (dec 72, "un duodecillón")+ , (dec 78, "un tredecillón")+ , (dec 84, "un cuatordecillón")+ , (dec 90, "un quindecillón")+ , (dec 96, "un sexdecillón")+ , (dec 102, "un septendecillón")+ , (dec 108, "un octodecillón")+ , (dec 114, "un novendecillón")+ , (dec 120, "un vigintillón")+ ]+ )+ , ( "feminine"+ , feminine defaultInflection+ , [ (1, "una")+ , (11, "once")+ , (21, "veintiuna")+ , (31, "treinta y una")+ , (41, "cuarenta y una")+ , (51, "cincuenta y una")+ , (61, "sesenta y una")+ , (71, "setenta y una")+ , (81, "ochenta y una")+ , (91, "noventa y una")+ , (100, "cien")+ , (101, "ciento una")+ , (200, "doscientas")+ , (221, "doscientas veintiuna")+ , (300, "trescientas")+ , (400, "cuatrocientas")+ , (500, "quinientas")+ , (600, "seiscientas")+ , (700, "setecientas")+ , (800, "ochocientas")+ , (900, "novecientas")+ , (dec 6, "un millón")+ , (dec 6 + 1, "un millón una")+ , (21 * dec 6 + 21, "veintiún millones veintiuna")+ ]+ )+ , ( "masculine"+ , masculine defaultInflection+ , [ (1, "un")+ , (11, "once")+ , (21, "veintiún")+ , (31, "treinta y un")+ , (41, "cuarenta y un")+ , (51, "cincuenta y un")+ , (61, "sesenta y un")+ , (71, "setenta y un")+ , (81, "ochenta y un")+ , (91, "noventa y un")+ , (100, "cien")+ , (101, "ciento un")+ , (200, "doscientos")+ , (221, "doscientos veintiún")+ , (dec 6, "un millón")+ , (dec 6 + 1, "un millón un")+ , (21 * dec 6 + 21, "veintiún millones veintiún")+ ]+ )+ ]
− src-test/Text/Numeral/Language/SV/TestData.hs
@@ -1,308 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] sv--[@ISO639-2B@] swe--[@ISO639-3@] swe--[@Native name@] svenska--[@English name@] Swedish--}--module Text.Numeral.Language.SV.TestData- ( cardinals- , ordinals- , partitives- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Grammar ( neuter, common )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data------------------------------------------------------------------------------------- Sources:--- http://en.wikipedia.org/wiki/Swedish_grammar#Numerals--- http://publications.europa.eu/code/sv/sv-4100600sv.htm--- http://www.lysator.liu.se/language/Languages/Swedish/Grammar.html#numbers--- http://en.wikibooks.org/wiki/Swedish/Numerals--- http://www.speakswedish.co.uk/vocab/numbers--- http://aclweb.org/anthology/C/C73/C73-2031.pdf------ Rules for writing large words seem hard to come by online.--- http://publications.europa.eu/code/sv/sv-4100600sv.htm provides--- some guidelines:------ Rule 1: Even hundreds, thousands, and so on, are generally written--- as two words: två tusen, fyra hundra, sex miljoner------ Rule 2: Numbers smaller than one hundred are always written as one--- word, as are other number under one million: fyrtiosju,--- niotusenfemhundrasexton------ Rule 3: Numbers larger than one million should be written so that--- the words tusen, miljon, miljard, and so on always stand on their--- own: tjugofem miljarder tre miljoner--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "neuter"- , neuter defaultInflection- -- Rule 2 (one word)- , [ (0, "noll")- , (1, "ett")- , (2, "två")- , (3, "tre")- , (4, "fyra")- , (5, "fem")- , (6, "sex")- , (7, "sju")- , (8, "åtta")- , (9, "nio")- , (10, "tio")- , (11, "elva")- , (12, "tolv")- , (13, "tretton")- , (14, "fjorton")- , (15, "femton")- , (16, "sexton")- , (17, "sjutton")- , (18, "arton")- , (19, "nitton")- , (20, "tjugo")- , (21, "tjugoett")- , (22, "tjugotvå")- , (23, "tjugotre")- , (24, "tjugofyra")- , (25, "tjugofem")- , (26, "tjugosex")- , (27, "tjugosju")- , (28, "tjugoåtta")- , (29, "tjugonio")- , (30, "trettio")- , (31, "trettioett")- , (32, "trettiotvå")- , (33, "trettiotre")- , (34, "trettiofyra")- , (35, "trettiofem")- , (36, "trettiosex")- , (37, "trettiosju")- , (38, "trettioåtta")- , (39, "trettionio")- , (40, "fyrtio")- , (41, "fyrtioett")- , (42, "fyrtiotvå")- , (43, "fyrtiotre")- , (44, "fyrtiofyra")- , (45, "fyrtiofem")- , (46, "fyrtiosex")- , (47, "fyrtiosju")- , (48, "fyrtioåtta")- , (49, "fyrtionio")- , (50, "femtio")- , (51, "femtioett")- , (52, "femtiotvå")- , (53, "femtiotre")- , (54, "femtiofyra")- , (55, "femtiofem")- , (56, "femtiosex")- , (57, "femtiosju")- , (58, "femtioåtta")- , (59, "femtionio")- , (60, "sextio")- , (61, "sextioett")- , (62, "sextiotvå")- , (63, "sextiotre")- , (64, "sextiofyra")- , (65, "sextiofem")- , (66, "sextiosex")- , (67, "sextiosju")- , (68, "sextioåtta")- , (69, "sextionio")- , (70, "sjuttio")- , (71, "sjuttioett")- , (72, "sjuttiotvå")- , (73, "sjuttiotre")- , (74, "sjuttiofyra")- , (75, "sjuttiofem")- , (76, "sjuttiosex")- , (77, "sjuttiosju")- , (78, "sjuttioåtta")- , (79, "sjuttionio")- , (80, "åttio")- , (81, "åttioett")- , (82, "åttiotvå")- , (83, "åttiotre")- , (84, "åttiofyra")- , (85, "åttiofem")- , (86, "åttiosex")- , (87, "åttiosju")- , (88, "åttioåtta")- , (89, "åttionio")- , (90, "nittio")- , (91, "nittioett")- , (92, "nittiotvå")- , (93, "nittiotre")- , (94, "nittiofyra")- , (95, "nittiofem")- , (96, "nittiosex")- , (97, "nittiosju")- , (98, "nittioåtta")- , (99, "nittionio")- , (101, "etthundraett")- , (102, "etthundratvå")- , (549, "femhundrafyrtionio")- -- "ettusen" is a special spelling case where "ett tusen"- -- written as one word becomes ettusen, dropping one 't'.- , (1349, "ettusentrehundrafyrtionio")- , (3502, "tretusenfemhundratvå")- , (9516, "niotusenfemhundrasexton")- , (30934, "trettiotusenniohundratrettiofyra")- , (837132, "åttahundratrettiosjutusenetthundratrettiotvå")- , (999999, "niohundranittioniotusenniohundranittionio")- -- Rule 1 (even hundreds and so on)- , (100, "ett hundra")- , (200, "två hundra")- , (300, "tre hundra")- , (500, "fem hundra")- , (600, "sex hundra")- , (800, "åtta hundra")- , (1000, "ett tusen")- , (3000, "tre tusen")- , (5000, "fem tusen")- , (10000, "tio tusen")- , (20000, "tjugo tusen")- , (50000, "femtio tusen")- , (dec 5, "etthundra tusen")- , (dec 6, "en miljon")- , (2 ⋅ dec 6, "två miljoner")- , (10 ⋅ dec 6, "tio miljoner")- , (dec 8, "etthundra miljoner")- , (2 ⋅ dec 8, "tvåhundra miljoner")- , (dec 9, "en miljard")- , (dec 12, "en biljon")- , (dec 15, "en biljard")- , (dec 18, "en triljon")- , (dec 24, "en kvadriljon")- , (dec 30, "en kvintiljon")- , (dec 36, "en sextiljon")- , (dec 42, "en septiljon")- , (dec 48, "en oktiljon")- , (dec 54, "en noniljon")- , (dec 60, "en deciljon")- , (dec 66, "en undeciljon")- -- Rule 3: Numbers larger than one million split up on tusen, miljon, etc- , (123456789, "etthundratjugotre miljoner fyrahundrafemtiosex tusen sjuhundraåttionio")- , (37149204, "trettiosju miljoner etthundrafyrtionio tusen tvåhundrafyra")- , (302145568, "trehundratvå miljoner etthundrafyrtiofem tusen femhundrasextioåtta")- , (1000100, "en miljon etthundra")- , (1305100, "en miljon trehundrafem tusen etthundra")- , (300000102, "trehundra miljoner etthundratvå")- , (300500000, "trehundra miljoner femhundra tusen")- , (25003000000, "tjugofem miljarder tre miljoner")- ]- )- , ( "common"- , common defaultInflection- , [ (1, "en")- , (21, "tjugoen")- ]- )- ]--ordinals ∷ (Integral i) ⇒ TestData i-ordinals =- [ ( "neuter"- , neuter defaultInflection- , [ (0, "nollte")- , (1, "första")- , (2, "andra")- , (3, "tredje")- , (4, "fjärde")- , (5, "femte")- , (6, "sjätte")- , (7, "sjunde")- , (8, "åttonde")- , (9, "nionde")- , (10, "tionde")- , (11, "elfte")- , (12, "tolfte")- , (13, "trettonde")- , (14, "fjortonde")- , (15, "femtonde")- , (16, "sextonde")- , (17, "sjuttonde")- , (18, "artonde")- , (19, "nittonde")- , (20, "tjugonde")- , (21, "tjugoförsta")- , (22, "tjugoandra")- , (23, "tjugotredje")- , (30, "trettionde")- , (40, "fyrtionde")- , (50, "femtionde")- , (60, "sextionde")- , (70, "sjuttionde")- , (80, "åttionde")- , (90, "nittionde")- , (100, "ett hundrade")- , (200, "två hundrade")- , (500, "fem hundrade")- , (1000, "ett tusende")- , (2000, "två tusende")- , (5000, "fem tusende")- , (10000, "tio tusende")- , (20000, "tjugo tusende")- , (50000, "femtio tusende")- , (dec 6, "en miljonte")- , (dec 9, "en miljarte")- , (dec 12, "en biljonte")- , (dec 18, "en triljonte")- ]- )- ]--partitives ∷ (Integral i) ⇒ TestData (i, i)-partitives =- [ ( "default"- , defaultInflection- , [ ((1, 2), "en halv")- , ((1, 3), "en tredjedel")- , ((3, 4), "tre fjärdedelar")- , ((2, 5), "två femtedelar")- , ((5, 6), "fem sjättedelar")- , ((4, 7), "fyra sjundedelar")- , ((1, 8), "en åttondel")- , ((8, 9), "åtta niondelar")- , ((1, 10), "en tiondel")- , ((1, 11), "en elftedel")- , ((1, 12), "en tolftedel")- , ((1, 13), "en trettondel")- , ((1, 14), "en fjortondel")- , ((1, 15), "en femtondel")- , ((1, 16), "en sextondel")- , ((1, 17), "en sjuttondel")- , ((1, 18), "en artondel")- , ((1, 19), "en nittondel")- , ((1, 20), "en tjugondel")- ]- )- ]
+ src-test/Text/Numeral/Language/SWE/TestData.hs view
@@ -0,0 +1,300 @@+{-|+[@ISO639-1@] sv++[@ISO639-2B@] swe++[@ISO639-3@] swe++[@Native name@] svenska++[@English name@] Swedish+-}++module Text.Numeral.Language.SWE.TestData+ ( cardinals+ , ordinals+ , partitives+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( neuter, common )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++-- Sources:+-- http://en.wikipedia.org/wiki/Swedish_grammar#Numerals+-- http://publications.europa.eu/code/sv/sv-4100600sv.htm+-- http://www.lysator.liu.se/language/Languages/Swedish/Grammar.html#numbers+-- http://en.wikibooks.org/wiki/Swedish/Numerals+-- http://www.speakswedish.co.uk/vocab/numbers+-- http://aclweb.org/anthology/C/C73/C73-2031.pdf+--+-- Rules for writing large words seem hard to come by online.+-- http://publications.europa.eu/code/sv/sv-4100600sv.htm provides+-- some guidelines:+--+-- Rule 1: Even hundreds, thousands, and so on, are generally written+-- as two words: två tusen, fyra hundra, sex miljoner+--+-- Rule 2: Numbers smaller than one hundred are always written as one+-- word, as are other number under one million: fyrtiosju,+-- niotusenfemhundrasexton+--+-- Rule 3: Numbers larger than one million should be written so that+-- the words tusen, miljon, miljard, and so on always stand on their+-- own: tjugofem miljarder tre miljoner++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "neuter"+ , neuter defaultInflection+ -- Rule 2 (one word)+ , [ (0, "noll")+ , (1, "ett")+ , (2, "två")+ , (3, "tre")+ , (4, "fyra")+ , (5, "fem")+ , (6, "sex")+ , (7, "sju")+ , (8, "åtta")+ , (9, "nio")+ , (10, "tio")+ , (11, "elva")+ , (12, "tolv")+ , (13, "tretton")+ , (14, "fjorton")+ , (15, "femton")+ , (16, "sexton")+ , (17, "sjutton")+ , (18, "arton")+ , (19, "nitton")+ , (20, "tjugo")+ , (21, "tjugoett")+ , (22, "tjugotvå")+ , (23, "tjugotre")+ , (24, "tjugofyra")+ , (25, "tjugofem")+ , (26, "tjugosex")+ , (27, "tjugosju")+ , (28, "tjugoåtta")+ , (29, "tjugonio")+ , (30, "trettio")+ , (31, "trettioett")+ , (32, "trettiotvå")+ , (33, "trettiotre")+ , (34, "trettiofyra")+ , (35, "trettiofem")+ , (36, "trettiosex")+ , (37, "trettiosju")+ , (38, "trettioåtta")+ , (39, "trettionio")+ , (40, "fyrtio")+ , (41, "fyrtioett")+ , (42, "fyrtiotvå")+ , (43, "fyrtiotre")+ , (44, "fyrtiofyra")+ , (45, "fyrtiofem")+ , (46, "fyrtiosex")+ , (47, "fyrtiosju")+ , (48, "fyrtioåtta")+ , (49, "fyrtionio")+ , (50, "femtio")+ , (51, "femtioett")+ , (52, "femtiotvå")+ , (53, "femtiotre")+ , (54, "femtiofyra")+ , (55, "femtiofem")+ , (56, "femtiosex")+ , (57, "femtiosju")+ , (58, "femtioåtta")+ , (59, "femtionio")+ , (60, "sextio")+ , (61, "sextioett")+ , (62, "sextiotvå")+ , (63, "sextiotre")+ , (64, "sextiofyra")+ , (65, "sextiofem")+ , (66, "sextiosex")+ , (67, "sextiosju")+ , (68, "sextioåtta")+ , (69, "sextionio")+ , (70, "sjuttio")+ , (71, "sjuttioett")+ , (72, "sjuttiotvå")+ , (73, "sjuttiotre")+ , (74, "sjuttiofyra")+ , (75, "sjuttiofem")+ , (76, "sjuttiosex")+ , (77, "sjuttiosju")+ , (78, "sjuttioåtta")+ , (79, "sjuttionio")+ , (80, "åttio")+ , (81, "åttioett")+ , (82, "åttiotvå")+ , (83, "åttiotre")+ , (84, "åttiofyra")+ , (85, "åttiofem")+ , (86, "åttiosex")+ , (87, "åttiosju")+ , (88, "åttioåtta")+ , (89, "åttionio")+ , (90, "nittio")+ , (91, "nittioett")+ , (92, "nittiotvå")+ , (93, "nittiotre")+ , (94, "nittiofyra")+ , (95, "nittiofem")+ , (96, "nittiosex")+ , (97, "nittiosju")+ , (98, "nittioåtta")+ , (99, "nittionio")+ , (101, "etthundraett")+ , (102, "etthundratvå")+ , (549, "femhundrafyrtionio")+ -- "ettusen" is a special spelling case where "ett tusen"+ -- written as one word becomes ettusen, dropping one 't'.+ , (1349, "ettusentrehundrafyrtionio")+ , (3502, "tretusenfemhundratvå")+ , (9516, "niotusenfemhundrasexton")+ , (30934, "trettiotusenniohundratrettiofyra")+ , (837132, "åttahundratrettiosjutusenetthundratrettiotvå")+ , (999999, "niohundranittioniotusenniohundranittionio")+ -- Rule 1 (even hundreds and so on)+ , (100, "ett hundra")+ , (200, "två hundra")+ , (300, "tre hundra")+ , (500, "fem hundra")+ , (600, "sex hundra")+ , (800, "åtta hundra")+ , (1000, "ett tusen")+ , (3000, "tre tusen")+ , (5000, "fem tusen")+ , (10000, "tio tusen")+ , (20000, "tjugo tusen")+ , (50000, "femtio tusen")+ , (dec 5, "etthundra tusen")+ , (dec 6, "en miljon")+ , (2 * dec 6, "två miljoner")+ , (10 * dec 6, "tio miljoner")+ , (dec 8, "etthundra miljoner")+ , (2 * dec 8, "tvåhundra miljoner")+ , (dec 9, "en miljard")+ , (dec 12, "en biljon")+ , (dec 15, "en biljard")+ , (dec 18, "en triljon")+ , (dec 24, "en kvadriljon")+ , (dec 30, "en kvintiljon")+ , (dec 36, "en sextiljon")+ , (dec 42, "en septiljon")+ , (dec 48, "en oktiljon")+ , (dec 54, "en noniljon")+ , (dec 60, "en deciljon")+ , (dec 66, "en undeciljon")+ -- Rule 3: Numbers larger than one million split up on tusen, miljon, etc+ , (123456789, "etthundratjugotre miljoner fyrahundrafemtiosex tusen sjuhundraåttionio")+ , (37149204, "trettiosju miljoner etthundrafyrtionio tusen tvåhundrafyra")+ , (302145568, "trehundratvå miljoner etthundrafyrtiofem tusen femhundrasextioåtta")+ , (1000100, "en miljon etthundra")+ , (1305100, "en miljon trehundrafem tusen etthundra")+ , (300000102, "trehundra miljoner etthundratvå")+ , (300500000, "trehundra miljoner femhundra tusen")+ , (25003000000, "tjugofem miljarder tre miljoner")+ ]+ )+ , ( "common"+ , common defaultInflection+ , [ (1, "en")+ , (21, "tjugoen")+ ]+ )+ ]++ordinals :: (Integral i) => TestData i+ordinals =+ [ ( "neuter"+ , neuter defaultInflection+ , [ (0, "nollte")+ , (1, "första")+ , (2, "andra")+ , (3, "tredje")+ , (4, "fjärde")+ , (5, "femte")+ , (6, "sjätte")+ , (7, "sjunde")+ , (8, "åttonde")+ , (9, "nionde")+ , (10, "tionde")+ , (11, "elfte")+ , (12, "tolfte")+ , (13, "trettonde")+ , (14, "fjortonde")+ , (15, "femtonde")+ , (16, "sextonde")+ , (17, "sjuttonde")+ , (18, "artonde")+ , (19, "nittonde")+ , (20, "tjugonde")+ , (21, "tjugoförsta")+ , (22, "tjugoandra")+ , (23, "tjugotredje")+ , (30, "trettionde")+ , (40, "fyrtionde")+ , (50, "femtionde")+ , (60, "sextionde")+ , (70, "sjuttionde")+ , (80, "åttionde")+ , (90, "nittionde")+ , (100, "ett hundrade")+ , (200, "två hundrade")+ , (500, "fem hundrade")+ , (1000, "ett tusende")+ , (2000, "två tusende")+ , (5000, "fem tusende")+ , (10000, "tio tusende")+ , (20000, "tjugo tusende")+ , (50000, "femtio tusende")+ , (dec 6, "en miljonte")+ , (dec 9, "en miljarte")+ , (dec 12, "en biljonte")+ , (dec 18, "en triljonte")+ ]+ )+ ]++partitives :: (Integral i) => TestData (i, i)+partitives =+ [ ( "default"+ , defaultInflection+ , [ ((1, 2), "en halv")+ , ((1, 3), "en tredjedel")+ , ((3, 4), "tre fjärdedelar")+ , ((2, 5), "två femtedelar")+ , ((5, 6), "fem sjättedelar")+ , ((4, 7), "fyra sjundedelar")+ , ((1, 8), "en åttondel")+ , ((8, 9), "åtta niondelar")+ , ((1, 10), "en tiondel")+ , ((1, 11), "en elftedel")+ , ((1, 12), "en tolftedel")+ , ((1, 13), "en trettondel")+ , ((1, 14), "en fjortondel")+ , ((1, 15), "en femtondel")+ , ((1, 16), "en sextondel")+ , ((1, 17), "en sjuttondel")+ , ((1, 18), "en artondel")+ , ((1, 19), "en nittondel")+ , ((1, 20), "en tjugondel")+ ]+ )+ ]
src-test/Text/Numeral/Language/TAR/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -36,7 +30,7 @@ http://lingweb.eva.mpg.de/numeral/Tarahumara-Central.htm -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection@@ -121,16 +115,16 @@ , (79, "quicháosa macoy miná químacoy") -- The "osá naósa" is from Lowland Tarahumara, not Central -- Tarahumara. But this is the only available source.- , (80, "osá naósa macoy")- , (81, "osá naósa macoy miná biré")- , (82, "osá naósa macoy miná ocuá")- , (83, "osá naósa macoy miná biquiyá")- , (84, "osá naósa macoy miná nahuosa")- , (85, "osá naósa macoy miná marí")- , (86, "osá naósa macoy miná usani")- , (87, "osá naósa macoy miná quicháo")- , (88, "osá naósa macoy miná osá nahuó")- , (89, "osá naósa macoy miná químacoy")+ , (80, "osá nahuosa macoy")+ , (81, "osá nahuosa macoy miná biré")+ , (82, "osá nahuosa macoy miná ocuá")+ , (83, "osá nahuosa macoy miná biquiyá")+ , (84, "osá nahuosa macoy miná nahuosa")+ , (85, "osá nahuosa macoy miná marí")+ , (86, "osá nahuosa macoy miná usani")+ , (87, "osá nahuosa macoy miná quicháo")+ , (88, "osá nahuosa macoy miná osá nahuó")+ , (89, "osá nahuosa macoy miná químacoy") , (90, "que macoisa macoy") , (91, "que macoisa macoy miná biré") , (92, "que macoisa macoy miná ocuá")
+ src-test/Text/Numeral/Language/TGS/TestData.hs view
@@ -0,0 +1,161 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] tgs++[@Native name@] -++[@English name@] Nume+-}+module Text.Numeral.Language.TGS.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-nume/en/tgs/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "tuwal")+ , (2, "i-ru")+ , (3, "i-tol")+ , (4, "i-βet")+ , (5, "tiβi-lim")+ , (6, "leβe-te")+ , (7, "leβe-ru")+ , (8, "leβe-tol")+ , (9, "leβe-βet")+ , (10, "sanuβul tuwal")+ , (11, "sanuβul tuwal ndi win tuwal")+ , (12, "sanuβul tuwal ndi win ti-ru")+ , (13, "sanuβul tuwal ndi win ti-tol")+ , (14, "sanuβul tuwal ndi win ti-βet")+ , (15, "sanuβul tuwal ndi win tiβi-lim")+ , (16, "sanuβul tuwal ndi win ti-leβe-te")+ , (17, "sanuβul tuwal ndi win ti-leβe-ru")+ , (18, "sanuβul tuwal ndi win ti-leβe-tol")+ , (19, "sanuβul tuwal ndi win ti-leβe-βet")+ , (20, "sanuβul ru")+ , (21, "sanuβul ru ndi win tuwal")+ , (22, "sanuβul ru ndi win ti-ru")+ , (23, "sanuβul ru ndi win ti-tol")+ , (24, "sanuβul ru ndi win ti-βet")+ , (25, "sanuβul ru ndi win tiβi-lim")+ , (26, "sanuβul ru ndi win ti-leβe-te")+ , (27, "sanuβul ru ndi win ti-leβe-ru")+ , (28, "sanuβul ru ndi win ti-leβe-tol")+ , (29, "sanuβul ru ndi win ti-leβe-βet")+ , (30, "sanuβul tol")+ , (31, "sanuβul tol ndi win tuwal")+ , (32, "sanuβul tol ndi win ti-ru")+ , (33, "sanuβul tol ndi win ti-tol")+ , (34, "sanuβul tol ndi win ti-βet")+ , (35, "sanuβul tol ndi win tiβi-lim")+ , (36, "sanuβul tol ndi win ti-leβe-te")+ , (37, "sanuβul tol ndi win ti-leβe-ru")+ , (38, "sanuβul tol ndi win ti-leβe-tol")+ , (39, "sanuβul tol ndi win ti-leβe-βet")+ , (40, "sanuβul βet")+ , (41, "sanuβul βet ndi win tuwal")+ , (42, "sanuβul βet ndi win ti-ru")+ , (43, "sanuβul βet ndi win ti-tol")+ , (44, "sanuβul βet ndi win ti-βet")+ , (45, "sanuβul βet ndi win tiβi-lim")+ , (46, "sanuβul βet ndi win ti-leβe-te")+ , (47, "sanuβul βet ndi win ti-leβe-ru")+ , (48, "sanuβul βet ndi win ti-leβe-tol")+ , (49, "sanuβul βet ndi win ti-leβe-βet")+ , (50, "sanuβul tiβi-lim")+ , (51, "sanuβul tiβi-lim ndi win tuwal")+ , (52, "sanuβul tiβi-lim ndi win ti-ru")+ , (53, "sanuβul tiβi-lim ndi win ti-tol")+ , (54, "sanuβul tiβi-lim ndi win ti-βet")+ , (55, "sanuβul tiβi-lim ndi win tiβi-lim")+ , (56, "sanuβul tiβi-lim ndi win ti-leβe-te")+ , (57, "sanuβul tiβi-lim ndi win ti-leβe-ru")+ , (58, "sanuβul tiβi-lim ndi win ti-leβe-tol")+ , (59, "sanuβul tiβi-lim ndi win ti-leβe-βet")+ , (60, "sanuβul leβe-te")+ , (61, "sanuβul leβe-te ndi win tuwal")+ , (62, "sanuβul leβe-te ndi win ti-ru")+ , (63, "sanuβul leβe-te ndi win ti-tol")+ , (64, "sanuβul leβe-te ndi win ti-βet")+ , (65, "sanuβul leβe-te ndi win tiβi-lim")+ , (66, "sanuβul leβe-te ndi win ti-leβe-te")+ , (67, "sanuβul leβe-te ndi win ti-leβe-ru")+ , (68, "sanuβul leβe-te ndi win ti-leβe-tol")+ , (69, "sanuβul leβe-te ndi win ti-leβe-βet")+ , (70, "sanuβul leβe-ru")+ , (71, "sanuβul leβe-ru ndi win tuwal")+ , (72, "sanuβul leβe-ru ndi win ti-ru")+ , (73, "sanuβul leβe-ru ndi win ti-tol")+ , (74, "sanuβul leβe-ru ndi win ti-βet")+ , (75, "sanuβul leβe-ru ndi win tiβi-lim")+ , (76, "sanuβul leβe-ru ndi win ti-leβe-te")+ , (77, "sanuβul leβe-ru ndi win ti-leβe-ru")+ , (78, "sanuβul leβe-ru ndi win ti-leβe-tol")+ , (79, "sanuβul leβe-ru ndi win ti-leβe-βet")+ , (80, "sanuβul leβe-tol")+ , (81, "sanuβul leβe-tol ndi win tuwal")+ , (82, "sanuβul leβe-tol ndi win ti-ru")+ , (83, "sanuβul leβe-tol ndi win ti-tol")+ , (84, "sanuβul leβe-tol ndi win ti-βet")+ , (85, "sanuβul leβe-tol ndi win tiβi-lim")+ , (86, "sanuβul leβe-tol ndi win ti-leβe-te")+ , (87, "sanuβul leβe-tol ndi win ti-leβe-ru")+ , (88, "sanuβul leβe-tol ndi win ti-leβe-tol")+ , (89, "sanuβul leβe-tol ndi win ti-leβe-βet")+ , (90, "sanuβul leβe-βet")+ , (91, "sanuβul leβe-βet ndi win tuwal")+ , (92, "sanuβul leβe-βet ndi win ti-ru")+ , (93, "sanuβul leβe-βet ndi win ti-tol")+ , (94, "sanuβul leβe-βet ndi win ti-βet")+ , (95, "sanuβul leβe-βet ndi win tiβi-lim")+ , (96, "sanuβul leβe-βet ndi win ti-leβe-te")+ , (97, "sanuβul leβe-βet ndi win ti-leβe-ru")+ , (98, "sanuβul leβe-βet ndi win ti-leβe-tol")+ , (99, "sanuβul leβe-βet ndi win ti-leβe-βet")+ , (100, "muweldul")+ , (101, "muweldul ndi win tuwal")+ , (102, "muweldul ndi win ti-ru")+ , (103, "muweldul ndi win ti-tol")+ , (104, "muweldul ndi win ti-βet")+ , (105, "muweldul ndi win tiβi-lim")+ , (106, "muweldul ndi win ti-leβe-te")+ , (107, "muweldul ndi win ti-leβe-ru")+ , (108, "muweldul ndi win ti-leβe-tol")+ , (109, "muweldul ndi win ti-leβe-βet")+ , (110, "muweldul sanuβul tuwal")+ , (123, "muweldul sanuβul ru ndi win ti-tol")+ , (200, "muweldul i-ru")+ , (300, "muweldul i-tol")+ , (321, "muweldul i-tol sanuβul ru ndi win tuwal")+ , (400, "muweldul i-βet")+ , (500, "muweldul tiβi-lim")+ , (600, "muweldul leβe-te")+ , (700, "muweldul leβe-ru")+ , (800, "muweldul leβe-tol")+ , (900, "muweldul leβe-βet")+ , (909, "muweldul leβe-βet ndi win ti-leβe-βet")+ , (990, "muweldul leβe-βet sanuβul leβe-βet")+ , (999, "muweldul leβe-βet sanuβul leβe-βet ndi win ti-leβe-βet")+ ]+ )+ ]
− src-test/Text/Numeral/Language/TR/TestData.hs
@@ -1,262 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] tr--[@ISO639-2@] tur--[@ISO639-3@] tur--[@Native name@] Türkçe--[@English name@] Turkish--}--module Text.Numeral.Language.TR.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.languagesandnumbers.com/how-to-count-in-turkish/en/tur/- http://www.sf.airnet.ne.jp/~ts/language/number/turkish.html- http://www.turkishlanguage.co.uk/seasons.htm#article_15- http://www.turkeytravelplanner.com/details/LanguageGuide/100words_lessons/100Words_10.html- http://en.wikibooks.org/wiki/Turkish/Numbers- http://tr.wikipedia.org/wiki/B%C3%BCy%C3%BCk_say%C4%B1lar%C4%B1n_adlar%C4%B1--}--cardinals ∷ (Integral i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (0, "sıfır")- , (1, "bir")- , (2, "iki")- , (3, "üç")- , (4, "dört")- , (5, "beş")- , (6, "altı")- , (7, "yedi")- , (8, "sekiz")- , (9, "dokuz")- , (10, "on")- , (11, "on bir")- , (12, "on iki")- , (13, "on üç")- , (14, "on dört")- , (15, "on beş")- , (16, "on altı")- , (17, "on yedi")- , (18, "on sekiz")- , (19, "on dokuz")- , (20, "yirmi")- , (21, "yirmi bir")- , (22, "yirmi iki")- , (23, "yirmi üç")- , (24, "yirmi dört")- , (25, "yirmi beş")- , (26, "yirmi altı")- , (27, "yirmi yedi")- , (28, "yirmi sekiz")- , (29, "yirmi dokuz")- , (30, "otuz")- , (31, "otuz bir")- , (32, "otuz iki")- , (33, "otuz üç")- , (34, "otuz dört")- , (35, "otuz beş")- , (36, "otuz altı")- , (37, "otuz yedi")- , (38, "otuz sekiz")- , (39, "otuz dokuz")- , (40, "kırk")- , (41, "kırk bir")- , (42, "kırk iki")- , (43, "kırk üç")- , (44, "kırk dört")- , (45, "kırk beş")- , (46, "kırk altı")- , (47, "kırk yedi")- , (48, "kırk sekiz")- , (49, "kırk dokuz")- , (50, "elli")- , (51, "elli bir")- , (52, "elli iki")- , (53, "elli üç")- , (54, "elli dört")- , (55, "elli beş")- , (56, "elli altı")- , (57, "elli yedi")- , (58, "elli sekiz")- , (59, "elli dokuz")- , (60, "altmış")- , (61, "altmış bir")- , (62, "altmış iki")- , (63, "altmış üç")- , (64, "altmış dört")- , (65, "altmış beş")- , (66, "altmış altı")- , (67, "altmış yedi")- , (68, "altmış sekiz")- , (69, "altmış dokuz")- , (70, "yetmiş")- , (71, "yetmiş bir")- , (72, "yetmiş iki")- , (73, "yetmiş üç")- , (74, "yetmiş dört")- , (75, "yetmiş beş")- , (76, "yetmiş altı")- , (77, "yetmiş yedi")- , (78, "yetmiş sekiz")- , (79, "yetmiş dokuz")- , (80, "seksen")- , (81, "seksen bir")- , (82, "seksen iki")- , (83, "seksen üç")- , (84, "seksen dört")- , (85, "seksen beş")- , (86, "seksen altı")- , (87, "seksen yedi")- , (88, "seksen sekiz")- , (89, "seksen dokuz")- , (90, "doksan")- , (91, "doksan bir")- , (92, "doksan iki")- , (93, "doksan üç")- , (94, "doksan dört")- , (95, "doksan beş")- , (96, "doksan altı")- , (97, "doksan yedi")- , (98, "doksan sekiz")- , (99, "doksan dokuz")- , (100, "yüz")- , (200, "iki yüz")- , (300, "üç yüz")- , (400, "dört yüz")- , (500, "beş yüz")- , (600, "altı yüz")- , (700, "yedi yüz")- , (800, "sekiz yüz")- , (900, "dokuz yüz")- , (1000, "bin")- , (2000, "iki bin")- , (3000, "üç bin")- , (4000, "dört bin")- , (5000, "beş bin")- , (6000, "altı bin")- , (7000, "yedi bin")- , (8000, "sekiz bin")- , (9000, "dokuz bin")- , (10000, "on bin")- , (11000, "onbir bin")- , (12000, "oniki bin")- , (13000, "onüç bin")- , (14000, "ondört bin")- , (15000, "onbeş bin")- , (16000, "onaltı bin")- , (17000, "onyedi bin")- , (18000, "onsekiz bin")- , (19000, "ondokuz bin")- , (20000, "yirmi bin")- , (21000, "yirmi bir bin")- , (22000, "yirmi iki bin")- , (23000, "yirmi üç bin")- , (24000, "yirmi dört bin")- , (25000, "yirmi beş bin")- , (26000, "yirmi altı bin")- , (27000, "yirmi yedi bin")- , (28000, "yirmi sekiz bin")- , (30000, "otuz bin")- , (50000, "elli bin")- , (100000, "yüz bin")- , (523758, "beş yüz yirmi üç bin yedi yüz elli sekiz")- , (dec 6, "bir milyon")- , (123456789, "yüz yirmi üç milyon dört yüz elli altı bin yedi yüz seksen dokuz")- , (dec 9, "bir bilyon")- , (dec 12, "bir trilyon")- , (dec 15, "bir katrilyon")- , (dec 18, "bir kentilyon")- , (dec 21, "bir sekstilyon")- , (dec 24, "bir septilyon")- , (dec 27, "bir oktilyon")- , (dec 30, "bir nonilyon")- , (dec 33, "bir desilyon")- , (dec 36, "bir andesilyon")- , (dec 39, "bir dodesilyon")- , (dec 42, "bir tredesilyon")- , (dec 45, "bir katordesilyon")- , (dec 48, "bir kendesilyon")- , (dec 51, "bir seksdesilyon")- , (dec 54, "bir septendesilyon")- , (dec 57, "bir oktodesilyon")- , (dec 60, "bir novemdesilyon")- , (dec 63, "bir vigintilyon")- , (dec 66, "bir anvigintilyon")- , (dec 69, "bir dovigintilyon")- , (dec 72, "bir tresvigintilyon")- , (dec 75, "bir katorvigintilyon")- , (dec 78, "bir kenkavigintilyon")- , (dec 81, "bir sesvigintilyon")- , (dec 84, "bir septemvigintilyon")- , (dec 87, "bir oktovigintilyon")- , (dec 90, "bir novemvigintilyon")- , (dec 93, "bir trigintilyon")- , (dec 96, "bir antrigintilyon")- , (dec 99, "bir dotrigintilyon")- , (dec 102, "bir trestrigintilyon")- , (dec 105, "bir katortrigintilyon")- , (dec 108, "bir kenkatrigintilyon")- , (dec 111, "bir sestrigintilyon")- , (dec 114, "bir septemtrigintilyon")- , (dec 117, "bir oktotrigintilyon")- , (dec 120, "bir novemtrigintilyon")- , (dec 123, "bir katragintilyon")- , (dec 153, "bir kenkagintilyon")- , (dec 183, "bir seksagintilyon")- , (dec 213, "bir septegintilyon")- , (dec 243, "bir oktogintilyon")- , (dec 273, "bir nonagintilyon")- , (dec 303, "bir sentilyon")- , (dec 306, "bir ansentilyon")- , (dec 309, "bir dosentilyon")- , (dec 312, "bir tresentilyon")- , (dec 333, "bir desisentilyon")- , (dec 336, "bir andesisentilyon")- , (dec 363, "bir vigintisentilyon")- , (dec 366, "bir anvigintisentilyon")- , (dec 393, "bir trigintasentilyon")- , (dec 423, "bir katragintasentilyon")- , (dec 453, "bir kenkagintasentilyon")- , (dec 483, "bir seksagintasentilyon")- , (dec 513, "bir septegintasentilyon")- , (dec 543, "bir oktogintasentilyon")- , (dec 573, "bir nonagintasentilyon")- , (dec 603, "bir dusentilyon")- -- , (dec 903, "bir tresentilyon") -- same as 10 ^ 312- , (dec 1203, "bir katringentilyon")- , (dec 1503, "bir kengentilyon")- , (dec 1803, "bir sesentilyon")- , (dec 2103, "bir septingentilyon")- , (dec 2403, "bir oktingentilyon")- , (dec 2703, "bir nongentilyon")- ]- )- ]
+ src-test/Text/Numeral/Language/TUR/TestData.hs view
@@ -0,0 +1,255 @@+{-|+[@ISO639-1@] tr++[@ISO639-2@] tur++[@ISO639-3@] tur++[@Native name@] Türkçe++[@English name@] Turkish+-}++module Text.Numeral.Language.TUR.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-turkish/en/tur/+ http://www.sf.airnet.ne.jp/~ts/language/number/turkish.html+ http://www.turkishlanguage.co.uk/seasons.htm#article_15+ http://www.turkeytravelplanner.com/details/LanguageGuide/100words_lessons/100Words_10.html+ http://en.wikibooks.org/wiki/Turkish/Numbers+ http://tr.wikipedia.org/wiki/B%C3%BCy%C3%BCk_say%C4%B1lar%C4%B1n_adlar%C4%B1+-}++cardinals :: (Integral i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "sıfır")+ , (1, "bir")+ , (2, "iki")+ , (3, "üç")+ , (4, "dört")+ , (5, "beş")+ , (6, "altı")+ , (7, "yedi")+ , (8, "sekiz")+ , (9, "dokuz")+ , (10, "on")+ , (11, "on bir")+ , (12, "on iki")+ , (13, "on üç")+ , (14, "on dört")+ , (15, "on beş")+ , (16, "on altı")+ , (17, "on yedi")+ , (18, "on sekiz")+ , (19, "on dokuz")+ , (20, "yirmi")+ , (21, "yirmi bir")+ , (22, "yirmi iki")+ , (23, "yirmi üç")+ , (24, "yirmi dört")+ , (25, "yirmi beş")+ , (26, "yirmi altı")+ , (27, "yirmi yedi")+ , (28, "yirmi sekiz")+ , (29, "yirmi dokuz")+ , (30, "otuz")+ , (31, "otuz bir")+ , (32, "otuz iki")+ , (33, "otuz üç")+ , (34, "otuz dört")+ , (35, "otuz beş")+ , (36, "otuz altı")+ , (37, "otuz yedi")+ , (38, "otuz sekiz")+ , (39, "otuz dokuz")+ , (40, "kırk")+ , (41, "kırk bir")+ , (42, "kırk iki")+ , (43, "kırk üç")+ , (44, "kırk dört")+ , (45, "kırk beş")+ , (46, "kırk altı")+ , (47, "kırk yedi")+ , (48, "kırk sekiz")+ , (49, "kırk dokuz")+ , (50, "elli")+ , (51, "elli bir")+ , (52, "elli iki")+ , (53, "elli üç")+ , (54, "elli dört")+ , (55, "elli beş")+ , (56, "elli altı")+ , (57, "elli yedi")+ , (58, "elli sekiz")+ , (59, "elli dokuz")+ , (60, "altmış")+ , (61, "altmış bir")+ , (62, "altmış iki")+ , (63, "altmış üç")+ , (64, "altmış dört")+ , (65, "altmış beş")+ , (66, "altmış altı")+ , (67, "altmış yedi")+ , (68, "altmış sekiz")+ , (69, "altmış dokuz")+ , (70, "yetmiş")+ , (71, "yetmiş bir")+ , (72, "yetmiş iki")+ , (73, "yetmiş üç")+ , (74, "yetmiş dört")+ , (75, "yetmiş beş")+ , (76, "yetmiş altı")+ , (77, "yetmiş yedi")+ , (78, "yetmiş sekiz")+ , (79, "yetmiş dokuz")+ , (80, "seksen")+ , (81, "seksen bir")+ , (82, "seksen iki")+ , (83, "seksen üç")+ , (84, "seksen dört")+ , (85, "seksen beş")+ , (86, "seksen altı")+ , (87, "seksen yedi")+ , (88, "seksen sekiz")+ , (89, "seksen dokuz")+ , (90, "doksan")+ , (91, "doksan bir")+ , (92, "doksan iki")+ , (93, "doksan üç")+ , (94, "doksan dört")+ , (95, "doksan beş")+ , (96, "doksan altı")+ , (97, "doksan yedi")+ , (98, "doksan sekiz")+ , (99, "doksan dokuz")+ , (100, "yüz")+ , (200, "iki yüz")+ , (300, "üç yüz")+ , (400, "dört yüz")+ , (500, "beş yüz")+ , (600, "altı yüz")+ , (700, "yedi yüz")+ , (800, "sekiz yüz")+ , (900, "dokuz yüz")+ , (1000, "bin")+ , (2000, "iki bin")+ , (3000, "üç bin")+ , (4000, "dört bin")+ , (5000, "beş bin")+ , (6000, "altı bin")+ , (7000, "yedi bin")+ , (8000, "sekiz bin")+ , (9000, "dokuz bin")+ , (10000, "on bin")+ , (11000, "onbir bin")+ , (12000, "oniki bin")+ , (13000, "onüç bin")+ , (14000, "ondört bin")+ , (15000, "onbeş bin")+ , (16000, "onaltı bin")+ , (17000, "onyedi bin")+ , (18000, "onsekiz bin")+ , (19000, "ondokuz bin")+ , (20000, "yirmi bin")+ , (21000, "yirmi bir bin")+ , (22000, "yirmi iki bin")+ , (23000, "yirmi üç bin")+ , (24000, "yirmi dört bin")+ , (25000, "yirmi beş bin")+ , (26000, "yirmi altı bin")+ , (27000, "yirmi yedi bin")+ , (28000, "yirmi sekiz bin")+ , (30000, "otuz bin")+ , (50000, "elli bin")+ , (100000, "yüz bin")+ , (523758, "beş yüz yirmi üç bin yedi yüz elli sekiz")+ , (dec 6, "bir milyon")+ , (123456789, "yüz yirmi üç milyon dört yüz elli altı bin yedi yüz seksen dokuz")+ , (dec 9, "bir bilyon")+ , (dec 12, "bir trilyon")+ , (dec 15, "bir katrilyon")+ , (dec 18, "bir kentilyon")+ , (dec 21, "bir sekstilyon")+ , (dec 24, "bir septilyon")+ , (dec 27, "bir oktilyon")+ , (dec 30, "bir nonilyon")+ , (dec 33, "bir desilyon")+ , (dec 36, "bir andesilyon")+ , (dec 39, "bir dodesilyon")+ , (dec 42, "bir tredesilyon")+ , (dec 45, "bir katordesilyon")+ , (dec 48, "bir kendesilyon")+ , (dec 51, "bir seksdesilyon")+ , (dec 54, "bir septendesilyon")+ , (dec 57, "bir oktodesilyon")+ , (dec 60, "bir novemdesilyon")+ , (dec 63, "bir vigintilyon")+ , (dec 66, "bir anvigintilyon")+ , (dec 69, "bir dovigintilyon")+ , (dec 72, "bir tresvigintilyon")+ , (dec 75, "bir katorvigintilyon")+ , (dec 78, "bir kenkavigintilyon")+ , (dec 81, "bir sesvigintilyon")+ , (dec 84, "bir septemvigintilyon")+ , (dec 87, "bir oktovigintilyon")+ , (dec 90, "bir novemvigintilyon")+ , (dec 93, "bir trigintilyon")+ , (dec 96, "bir antrigintilyon")+ , (dec 99, "bir dotrigintilyon")+ , (dec 102, "bir trestrigintilyon")+ , (dec 105, "bir katortrigintilyon")+ , (dec 108, "bir kenkatrigintilyon")+ , (dec 111, "bir sestrigintilyon")+ , (dec 114, "bir septemtrigintilyon")+ , (dec 117, "bir oktotrigintilyon")+ , (dec 120, "bir novemtrigintilyon")+ , (dec 123, "bir katragintilyon")+ , (dec 153, "bir kenkagintilyon")+ , (dec 183, "bir seksagintilyon")+ , (dec 213, "bir septegintilyon")+ , (dec 243, "bir oktogintilyon")+ , (dec 273, "bir nonagintilyon")+ , (dec 303, "bir sentilyon")+ , (dec 306, "bir ansentilyon")+ , (dec 309, "bir dosentilyon")+ , (dec 312, "bir tresentilyon")+ , (dec 333, "bir desisentilyon")+ , (dec 336, "bir andesisentilyon")+ , (dec 363, "bir vigintisentilyon")+ , (dec 366, "bir anvigintisentilyon")+ , (dec 393, "bir trigintasentilyon")+ , (dec 423, "bir katragintasentilyon")+ , (dec 453, "bir kenkagintasentilyon")+ , (dec 483, "bir seksagintasentilyon")+ , (dec 513, "bir septegintasentilyon")+ , (dec 543, "bir oktogintasentilyon")+ , (dec 573, "bir nonagintasentilyon")+ , (dec 603, "bir dusentilyon")+ -- , (dec 903, "bir tresentilyon") -- same as 10 ^ 312+ , (dec 1203, "bir katringentilyon")+ , (dec 1503, "bir kengentilyon")+ , (dec 1803, "bir sesentilyon")+ , (dec 2103, "bir septingentilyon")+ , (dec 2403, "bir oktingentilyon")+ , (dec 2703, "bir nongentilyon")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/WMW/TestData.hs view
@@ -0,0 +1,174 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] wmw++[@Native name@] -++[@English name@] Mwani+-}+module Text.Numeral.Language.WMW.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-mwani/en/wmw/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "m’moja")+ , (2, "mbire")+ , (3, "natu")+ , (4, "n’né")+ , (5, "n’tano")+ , (6, "sita")+ , (7, "saba")+ , (8, "nane")+ , (9, "khénta")+ , (10, "kumi")+ , (11, "kumi na m’moja")+ , (12, "kumi na mbire")+ , (13, "kumi na natu")+ , (14, "kumi na n’né")+ , (15, "kumi na n’tano")+ , (16, "kumi na sita")+ , (17, "kumi na saba")+ , (18, "kumi na nane")+ , (19, "kumi na khénta")+ , (20, "shirini")+ , (21, "shirini na m’moja")+ , (22, "shirini na mbire")+ , (23, "shirini na natu")+ , (24, "shirini na n’né")+ , (25, "shirini na n’tano")+ , (26, "shirini na sita")+ , (27, "shirini na saba")+ , (28, "shirini na nane")+ , (29, "shirini na khénta")+ , (30, "talatini")+ , (31, "talatini na m’moja")+ , (32, "talatini na mbire")+ , (33, "talatini na natu")+ , (34, "talatini na n’né")+ , (35, "talatini na n’tano")+ , (36, "talatini na sita")+ , (37, "talatini na saba")+ , (38, "talatini na nane")+ , (39, "talatini na khénta")+ , (40, "arubaine")+ , (41, "arubaine na m’moja")+ , (42, "arubaine na mbire")+ , (43, "arubaine na natu")+ , (44, "arubaine na n’né")+ , (45, "arubaine na n’tano")+ , (46, "arubaine na sita")+ , (47, "arubaine na saba")+ , (48, "arubaine na nane")+ , (49, "arubaine na khénta")+ , (50, "amusine")+ , (51, "amusine na m’moja")+ , (52, "amusine na mbire")+ , (53, "amusine na natu")+ , (54, "amusine na n’né")+ , (55, "amusine na n’tano")+ , (56, "amusine na sita")+ , (57, "amusine na saba")+ , (58, "amusine na nane")+ , (59, "amusine na khénta")+ , (60, "sitine")+ , (61, "sitine na m’moja")+ , (62, "sitine na mbire")+ , (63, "sitine na natu")+ , (64, "sitine na n’né")+ , (65, "sitine na n’tano")+ , (66, "sitine na sita")+ , (67, "sitine na saba")+ , (68, "sitine na nane")+ , (69, "sitine na khénta")+ , (70, "sabine")+ , (71, "sabine na m’moja")+ , (72, "sabine na mbire")+ , (73, "sabine na natu")+ , (74, "sabine na n’né")+ , (75, "sabine na n’tano")+ , (76, "sabine na sita")+ , (77, "sabine na saba")+ , (78, "sabine na nane")+ , (79, "sabine na khénta")+ , (80, "tamanine")+ , (81, "tamanine na m’moja")+ , (82, "tamanine na mbire")+ , (83, "tamanine na natu")+ , (84, "tamanine na n’né")+ , (85, "tamanine na n’tano")+ , (86, "tamanine na sita")+ , (87, "tamanine na saba")+ , (88, "tamanine na nane")+ , (89, "tamanine na khénta")+ , (90, "tusuine")+ , (91, "tusuine na m’moja")+ , (92, "tusuine na mbire")+ , (93, "tusuine na natu")+ , (94, "tusuine na n’né")+ , (95, "tusuine na n’tano")+ , (96, "tusuine na sita")+ , (97, "tusuine na saba")+ , (98, "tusuine na nane")+ , (99, "tusuine na khénta")+ , (100, "mia")+ , (101, "mia na m’moja")+ , (102, "mia na mbire")+ , (103, "mia na natu")+ , (104, "mia na n’né")+ , (105, "mia na n’tano")+ , (106, "mia na sita")+ , (107, "mia na saba")+ , (108, "mia na nane")+ , (109, "mia na khénta")+ , (110, "mia na kumi")+ , (123, "mia na shirini na natu")+ , (200, "mia mbire")+ , (300, "mia natu")+ , (321, "mia natu na shirini na m’moja")+ , (400, "mia n’né")+ , (500, "mia n’tano")+ , (600, "mia sita")+ , (700, "mia saba")+ , (800, "mia nane")+ , (900, "mia khénta")+ , (909, "mia khénta na khénta")+ , (990, "mia khénta na tusuine")+ , (999, "mia khénta na tusuine na khénta")+ , (1000, "álufu")+ , (1001, "álufu m’moja na m’moja")+ , (1008, "álufu m’moja na nane")+ , (1234, "álufu m’moja na mia mbire na talatini na n’né")+ , (2000, "álufu mbire")+ , (3000, "álufu natu")+ , (4000, "álufu n’né")+ , (4321, "álufu n’né na mia natu na shirini na m’moja")+ , (5000, "álufu n’tano")+ , (6000, "álufu sita")+ , (7000, "álufu saba")+ , (8000, "álufu nane")+ , (9000, "álufu khénta")+ ]+ )+ ]
− src-test/Text/Numeral/Language/WO/TestData.hs
@@ -1,174 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] wo--[@ISO639-2@] wo1--[@ISO639-3@] wo1--[@Native name@] Wolof--[@English name@] Wolof--}--module Text.Numeral.Language.WO.TestData (cardinals) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "this" Text.Numeral.Test ( TestData )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://en.wikipedia.org/wiki/Wolof_language#Numerals- http://www.sf.airnet.ne.jp/~ts/language/number/wolof.html--}--cardinals ∷ (Num i) ⇒ TestData i-cardinals =- [ ( "default"- , defaultInflection- , [ (1, "benn")- , (2, "ñaar")- , (3, "ñett")- , (4, "ñeent")- , (5, "juróom")- , (6, "juróom-benn")- , (7, "juróom-ñaar")- , (8, "juróom-ñett")- , (9, "juróom-ñeent")- , (10, "fukk")- , (11, "fukk ak benn")- , (12, "fukk ak ñaar")- , (13, "fukk ak ñett")- , (14, "fukk ak ñeent")- , (15, "fukk ak juróom")- , (16, "fukk ak juróom-benn")- , (17, "fukk ak juróom-ñaar")- , (18, "fukk ak juróom-ñett")- , (19, "fukk ak juróom-ñeent")- , (20, "ñaar-fukk")- , (21, "ñaar-fukk ak benn")- , (22, "ñaar-fukk ak ñaar")- , (23, "ñaar-fukk ak ñett")- , (24, "ñaar-fukk ak ñeent")- , (25, "ñaar-fukk ak juróom")- , (26, "ñaar-fukk ak juróom-benn")- , (27, "ñaar-fukk ak juróom-ñaar")- , (28, "ñaar-fukk ak juróom-ñett")- , (29, "ñaar-fukk ak juróom-ñeent")- , (30, "ñett-fukk")- , (31, "ñett-fukk ak benn")- , (32, "ñett-fukk ak ñaar")- , (33, "ñett-fukk ak ñett")- , (34, "ñett-fukk ak ñeent")- , (35, "ñett-fukk ak juróom")- , (36, "ñett-fukk ak juróom-benn")- , (37, "ñett-fukk ak juróom-ñaar")- , (38, "ñett-fukk ak juróom-ñett")- , (39, "ñett-fukk ak juróom-ñeent")- , (40, "ñeent-fukk")- , (41, "ñeent-fukk ak benn")- , (42, "ñeent-fukk ak ñaar")- , (43, "ñeent-fukk ak ñett")- , (44, "ñeent-fukk ak ñeent")- , (45, "ñeent-fukk ak juróom")- , (46, "ñeent-fukk ak juróom-benn")- , (47, "ñeent-fukk ak juróom-ñaar")- , (48, "ñeent-fukk ak juróom-ñett")- , (49, "ñeent-fukk ak juróom-ñeent")- , (50, "juróom-fukk")- , (51, "juróom-fukk ak benn")- , (52, "juróom-fukk ak ñaar")- , (53, "juróom-fukk ak ñett")- , (54, "juróom-fukk ak ñeent")- , (55, "juróom-fukk ak juróom")- , (56, "juróom-fukk ak juróom-benn")- , (57, "juróom-fukk ak juróom-ñaar")- , (58, "juróom-fukk ak juróom-ñett")- , (59, "juróom-fukk ak juróom-ñeent")- , (60, "juróom-benn-fukk")- , (61, "juróom-benn-fukk ak benn")- , (62, "juróom-benn-fukk ak ñaar")- , (63, "juróom-benn-fukk ak ñett")- , (64, "juróom-benn-fukk ak ñeent")- , (65, "juróom-benn-fukk ak juróom")- , (66, "juróom-benn-fukk ak juróom-benn")- , (67, "juróom-benn-fukk ak juróom-ñaar")- , (68, "juróom-benn-fukk ak juróom-ñett")- , (69, "juróom-benn-fukk ak juróom-ñeent")- , (70, "juróom-ñaar-fukk")- , (71, "juróom-ñaar-fukk ak benn")- , (72, "juróom-ñaar-fukk ak ñaar")- , (73, "juróom-ñaar-fukk ak ñett")- , (74, "juróom-ñaar-fukk ak ñeent")- , (75, "juróom-ñaar-fukk ak juróom")- , (76, "juróom-ñaar-fukk ak juróom-benn")- , (77, "juróom-ñaar-fukk ak juróom-ñaar")- , (78, "juróom-ñaar-fukk ak juróom-ñett")- , (79, "juróom-ñaar-fukk ak juróom-ñeent")- , (80, "juróom-ñett-fukk")- , (81, "juróom-ñett-fukk ak benn")- , (82, "juróom-ñett-fukk ak ñaar")- , (83, "juróom-ñett-fukk ak ñett")- , (84, "juróom-ñett-fukk ak ñeent")- , (85, "juróom-ñett-fukk ak juróom")- , (86, "juróom-ñett-fukk ak juróom-benn")- , (87, "juróom-ñett-fukk ak juróom-ñaar")- , (88, "juróom-ñett-fukk ak juróom-ñett")- , (89, "juróom-ñett-fukk ak juróom-ñeent")- , (90, "juróom-ñeent-fukk")- , (91, "juróom-ñeent-fukk ak benn")- , (92, "juróom-ñeent-fukk ak ñaar")- , (93, "juróom-ñeent-fukk ak ñett")- , (94, "juróom-ñeent-fukk ak ñeent")- , (95, "juróom-ñeent-fukk ak juróom")- , (96, "juróom-ñeent-fukk ak juróom-benn")- , (97, "juróom-ñeent-fukk ak juróom-ñaar")- , (98, "juróom-ñeent-fukk ak juróom-ñett")- , (99, "juróom-ñeent-fukk ak juróom-ñeent")- , (100, "téeméer")- , (101, "téeméer ak benn")- , (106, "téeméer ak juróom-benn")- , (110, "téeméer ak fukk")- , (200, "ñaari téeméer")- , (300, "ñetti téeméer")- , (400, "ñeenti téeméer")- , (500, "juróomi téeméer")- , (600, "juróom-benni téeméer")- , (700, "juróom-ñaari téeméer")- , (800, "juróom-ñetti téeméer")- , (900, "juróom-ñeenti téeméer")- , (1000, "junni")- , (1100, "junni ak téeméer")- , (1600, "junni ak juróom-benni téeméer")- , (1945, "junni ak juróom-ñeenti téeméer ak ñeent-fukk ak juróom")- , (1969, "junni ak juróom-ñeenti téeméer ak juróom-benn-fukk ak juróom-ñeent")- , (2000, "ñaari junni")- , (3000, "ñetti junni")- , (4000, "ñeenti junni")- , (5000, "juróomi junni")- , (6000, "juróom-benni junni")- , (7000, "juróom-ñaari junni")- , (8000, "juróom-ñetti junni")- , (9000, "juróom-ñeenti junni")- , (10000, "fukki junni")- , (100000, "téeméeri junni")- , (1000000, "tamndareet")- ]- )- ]
+ src-test/Text/Numeral/Language/WOL/TestData.hs view
@@ -0,0 +1,167 @@+{-|+[@ISO639-1@] wo++[@ISO639-2@] wo1++[@ISO639-3@] wo1++[@Native name@] Wolof++[@English name@] Wolof+-}++module Text.Numeral.Language.WOL.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://en.wikipedia.org/wiki/Wolof_language#Numerals+ http://www.sf.airnet.ne.jp/~ts/language/number/wolof.html+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "benn")+ , (2, "ñaar")+ , (3, "ñett")+ , (4, "ñeent")+ , (5, "juróom")+ , (6, "juróom-benn")+ , (7, "juróom-ñaar")+ , (8, "juróom-ñett")+ , (9, "juróom-ñeent")+ , (10, "fukk")+ , (11, "fukk ak benn")+ , (12, "fukk ak ñaar")+ , (13, "fukk ak ñett")+ , (14, "fukk ak ñeent")+ , (15, "fukk ak juróom")+ , (16, "fukk ak juróom-benn")+ , (17, "fukk ak juróom-ñaar")+ , (18, "fukk ak juróom-ñett")+ , (19, "fukk ak juróom-ñeent")+ , (20, "ñaar-fukk")+ , (21, "ñaar-fukk ak benn")+ , (22, "ñaar-fukk ak ñaar")+ , (23, "ñaar-fukk ak ñett")+ , (24, "ñaar-fukk ak ñeent")+ , (25, "ñaar-fukk ak juróom")+ , (26, "ñaar-fukk ak juróom-benn")+ , (27, "ñaar-fukk ak juróom-ñaar")+ , (28, "ñaar-fukk ak juróom-ñett")+ , (29, "ñaar-fukk ak juróom-ñeent")+ , (30, "ñett-fukk")+ , (31, "ñett-fukk ak benn")+ , (32, "ñett-fukk ak ñaar")+ , (33, "ñett-fukk ak ñett")+ , (34, "ñett-fukk ak ñeent")+ , (35, "ñett-fukk ak juróom")+ , (36, "ñett-fukk ak juróom-benn")+ , (37, "ñett-fukk ak juróom-ñaar")+ , (38, "ñett-fukk ak juróom-ñett")+ , (39, "ñett-fukk ak juróom-ñeent")+ , (40, "ñeent-fukk")+ , (41, "ñeent-fukk ak benn")+ , (42, "ñeent-fukk ak ñaar")+ , (43, "ñeent-fukk ak ñett")+ , (44, "ñeent-fukk ak ñeent")+ , (45, "ñeent-fukk ak juróom")+ , (46, "ñeent-fukk ak juróom-benn")+ , (47, "ñeent-fukk ak juróom-ñaar")+ , (48, "ñeent-fukk ak juróom-ñett")+ , (49, "ñeent-fukk ak juróom-ñeent")+ , (50, "juróom-fukk")+ , (51, "juróom-fukk ak benn")+ , (52, "juróom-fukk ak ñaar")+ , (53, "juróom-fukk ak ñett")+ , (54, "juróom-fukk ak ñeent")+ , (55, "juróom-fukk ak juróom")+ , (56, "juróom-fukk ak juróom-benn")+ , (57, "juróom-fukk ak juróom-ñaar")+ , (58, "juróom-fukk ak juróom-ñett")+ , (59, "juróom-fukk ak juróom-ñeent")+ , (60, "juróom-benn-fukk")+ , (61, "juróom-benn-fukk ak benn")+ , (62, "juróom-benn-fukk ak ñaar")+ , (63, "juróom-benn-fukk ak ñett")+ , (64, "juróom-benn-fukk ak ñeent")+ , (65, "juróom-benn-fukk ak juróom")+ , (66, "juróom-benn-fukk ak juróom-benn")+ , (67, "juróom-benn-fukk ak juróom-ñaar")+ , (68, "juróom-benn-fukk ak juróom-ñett")+ , (69, "juróom-benn-fukk ak juróom-ñeent")+ , (70, "juróom-ñaar-fukk")+ , (71, "juróom-ñaar-fukk ak benn")+ , (72, "juróom-ñaar-fukk ak ñaar")+ , (73, "juróom-ñaar-fukk ak ñett")+ , (74, "juróom-ñaar-fukk ak ñeent")+ , (75, "juróom-ñaar-fukk ak juróom")+ , (76, "juróom-ñaar-fukk ak juróom-benn")+ , (77, "juróom-ñaar-fukk ak juróom-ñaar")+ , (78, "juróom-ñaar-fukk ak juróom-ñett")+ , (79, "juróom-ñaar-fukk ak juróom-ñeent")+ , (80, "juróom-ñett-fukk")+ , (81, "juróom-ñett-fukk ak benn")+ , (82, "juróom-ñett-fukk ak ñaar")+ , (83, "juróom-ñett-fukk ak ñett")+ , (84, "juróom-ñett-fukk ak ñeent")+ , (85, "juróom-ñett-fukk ak juróom")+ , (86, "juróom-ñett-fukk ak juróom-benn")+ , (87, "juróom-ñett-fukk ak juróom-ñaar")+ , (88, "juróom-ñett-fukk ak juróom-ñett")+ , (89, "juróom-ñett-fukk ak juróom-ñeent")+ , (90, "juróom-ñeent-fukk")+ , (91, "juróom-ñeent-fukk ak benn")+ , (92, "juróom-ñeent-fukk ak ñaar")+ , (93, "juróom-ñeent-fukk ak ñett")+ , (94, "juróom-ñeent-fukk ak ñeent")+ , (95, "juróom-ñeent-fukk ak juróom")+ , (96, "juróom-ñeent-fukk ak juróom-benn")+ , (97, "juróom-ñeent-fukk ak juróom-ñaar")+ , (98, "juróom-ñeent-fukk ak juróom-ñett")+ , (99, "juróom-ñeent-fukk ak juróom-ñeent")+ , (100, "téeméer")+ , (101, "téeméer ak benn")+ , (106, "téeméer ak juróom-benn")+ , (110, "téeméer ak fukk")+ , (200, "ñaari téeméer")+ , (300, "ñetti téeméer")+ , (400, "ñeenti téeméer")+ , (500, "juróomi téeméer")+ , (600, "juróom-benni téeméer")+ , (700, "juróom-ñaari téeméer")+ , (800, "juróom-ñetti téeméer")+ , (900, "juróom-ñeenti téeméer")+ , (1000, "junni")+ , (1100, "junni ak téeméer")+ , (1600, "junni ak juróom-benni téeméer")+ , (1945, "junni ak juróom-ñeenti téeméer ak ñeent-fukk ak juróom")+ , (1969, "junni ak juróom-ñeenti téeméer ak juróom-benn-fukk ak juróom-ñeent")+ , (2000, "ñaari junni")+ , (3000, "ñetti junni")+ , (4000, "ñeenti junni")+ , (5000, "juróomi junni")+ , (6000, "juróom-benni junni")+ , (7000, "juróom-ñaari junni")+ , (8000, "juróom-ñetti junni")+ , (9000, "juróom-ñeenti junni")+ , (10000, "fukki junni")+ , (100000, "téeméeri junni")+ , (1000000, "tamndareet")+ ]+ )+ ]
+ src-test/Text/Numeral/Language/XPQ/TestData.hs view
@@ -0,0 +1,138 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] xpq++[@Native name@] -++[@English name@] Mohegan-Pequot+-}+module Text.Numeral.Language.XPQ.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-mohegan-pequot/en/xpq/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "nuqut")+ , (2, "nis")+ , (3, "shwi")+ , (4, "yáw")+ , (5, "nupáw")+ , (6, "qutôsk")+ , (7, "nisôsk")+ , (8, "shwôsk")+ , (9, "pásukokun")+ , (10, "páyaq")+ , (11, "páyaq napni nuqut")+ , (12, "páyaq napni nis")+ , (13, "páyaq napni shwi")+ , (14, "páyaq napni yáw")+ , (15, "páyaq napni nupáw")+ , (16, "páyaq napni qutôsk")+ , (17, "páyaq napni nisôsk")+ , (18, "páyaq napni shwôsk")+ , (19, "páyaq napni pásukokun")+ , (20, "nisuncák")+ , (21, "nisuncák napni nuqut")+ , (22, "nisuncák napni nis")+ , (23, "nisuncák napni shwi")+ , (24, "nisuncák napni yáw")+ , (25, "nisuncák napni nupáw")+ , (26, "nisuncák napni qutôsk")+ , (27, "nisuncák napni nisôsk")+ , (28, "nisuncák napni shwôsk")+ , (29, "nisuncák napni pásukokun")+ , (30, "swuncák")+ , (31, "swuncák napni nuqut")+ , (32, "swuncák napni nis")+ , (33, "swuncák napni shwi")+ , (34, "swuncák napni yáw")+ , (35, "swuncák napni nupáw")+ , (36, "swuncák napni qutôsk")+ , (37, "swuncák napni nisôsk")+ , (38, "swuncák napni shwôsk")+ , (39, "swuncák napni pásukokun")+ , (40, "yáwuncák")+ , (41, "yáwuncák napni nuqut")+ , (42, "yáwuncák napni nis")+ , (43, "yáwuncák napni shwi")+ , (44, "yáwuncák napni yáw")+ , (45, "yáwuncák napni nupáw")+ , (46, "yáwuncák napni qutôsk")+ , (47, "yáwuncák napni nisôsk")+ , (48, "yáwuncák napni shwôsk")+ , (49, "yáwuncák napni pásukokun")+ , (50, "nupáw-cahshuncák")+ , (51, "nupáw-cahshuncák napni nuqut")+ , (52, "nupáw-cahshuncák napni nis")+ , (53, "nupáw-cahshuncák napni shwi")+ , (54, "nupáw-cahshuncák napni yáw")+ , (55, "nupáw-cahshuncák napni nupáw")+ , (56, "nupáw-cahshuncák napni qutôsk")+ , (57, "nupáw-cahshuncák napni nisôsk")+ , (58, "nupáw-cahshuncák napni shwôsk")+ , (59, "nupáw-cahshuncák napni pásukokun")+ , (60, "qutôsk-cahshuncák")+ , (61, "qutôsk-cahshuncák napni nuqut")+ , (62, "qutôsk-cahshuncák napni nis")+ , (63, "qutôsk-cahshuncák napni shwi")+ , (64, "qutôsk-cahshuncák napni yáw")+ , (65, "qutôsk-cahshuncák napni nupáw")+ , (66, "qutôsk-cahshuncák napni qutôsk")+ , (67, "qutôsk-cahshuncák napni nisôsk")+ , (68, "qutôsk-cahshuncák napni shwôsk")+ , (69, "qutôsk-cahshuncák napni pásukokun")+ , (70, "nisôsk-cahshuncák")+ , (71, "nisôsk-cahshuncák napni nuqut")+ , (72, "nisôsk-cahshuncák napni nis")+ , (73, "nisôsk-cahshuncák napni shwi")+ , (74, "nisôsk-cahshuncák napni yáw")+ , (75, "nisôsk-cahshuncák napni nupáw")+ , (76, "nisôsk-cahshuncák napni qutôsk")+ , (77, "nisôsk-cahshuncák napni nisôsk")+ , (78, "nisôsk-cahshuncák napni shwôsk")+ , (79, "nisôsk-cahshuncák napni pásukokun")+ , (80, "shwôsk-cahshuncák")+ , (81, "shwôsk-cahshuncák napni nuqut")+ , (82, "shwôsk-cahshuncák napni nis")+ , (83, "shwôsk-cahshuncák napni shwi")+ , (84, "shwôsk-cahshuncák napni yáw")+ , (85, "shwôsk-cahshuncák napni nupáw")+ , (86, "shwôsk-cahshuncák napni qutôsk")+ , (87, "shwôsk-cahshuncák napni nisôsk")+ , (88, "shwôsk-cahshuncák napni shwôsk")+ , (89, "shwôsk-cahshuncák napni pásukokun")+ , (90, "pásukokun-cahshuncák")+ , (91, "pásukokun-cahshuncák napni nuqut")+ , (92, "pásukokun-cahshuncák napni nis")+ , (93, "pásukokun-cahshuncák napni shwi")+ , (94, "pásukokun-cahshuncák napni yáw")+ , (95, "pásukokun-cahshuncák napni nupáw")+ , (96, "pásukokun-cahshuncák napni qutôsk")+ , (97, "pásukokun-cahshuncák napni nisôsk")+ , (98, "pásukokun-cahshuncák napni shwôsk")+ , (99, "pásukokun-cahshuncák napni pásukokun")+ , (100, "pásuq")+ ]+ )+ ]
src-test/Text/Numeral/Language/YOR/TestData.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] yo @@ -23,8 +17,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -32,7 +25,7 @@ -- Test data -------------------------------------------------------------------------------- -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection@@ -148,4 +141,3 @@ ] ) ]-
+ src-test/Text/Numeral/Language/ZAI/TestData.hs view
@@ -0,0 +1,174 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] zai++[@Native name@] diidxazá++[@English name@] Isthmus Zapotec+-}+module Text.Numeral.Language.ZAI.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-isthmus-zapotec/en/zai/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "tobi")+ , (2, "chupa")+ , (3, "chonna")+ , (4, "tapa")+ , (5, "gaayu’")+ , (6, "xhoopa’")+ , (7, "gadxe")+ , (8, "xhono")+ , (9, "ga’")+ , (10, "chii")+ , (11, "chii ne tobi")+ , (12, "chii ne chupa")+ , (13, "chii ne chonna")+ , (14, "chii ne tapa")+ , (15, "chii ne gaayu’")+ , (16, "chii ne xhoopa’")+ , (17, "chii ne gadxe")+ , (18, "chii ne xhono")+ , (19, "chii ne ga’")+ , (20, "gande")+ , (21, "gande ne tobi")+ , (22, "gande ne chupa")+ , (23, "gande ne chonna")+ , (24, "gande ne tapa")+ , (25, "gande ne gaayu’")+ , (26, "gande ne xhoopa’")+ , (27, "gande ne gadxe")+ , (28, "gande ne xhono")+ , (29, "gande ne ga’")+ , (30, "gande chii")+ , (31, "gande chii ne tobi")+ , (32, "gande chii ne chupa")+ , (33, "gande chii ne chonna")+ , (34, "gande chii ne tapa")+ , (35, "gande chii ne gaayu’")+ , (36, "gande chii ne xhoopa’")+ , (37, "gande chii ne gadxe")+ , (38, "gande chii ne xhono")+ , (39, "gande chii ne ga’")+ , (40, "chupa late gande")+ , (41, "chupa late gande ne tobi")+ , (42, "chupa late gande ne chupa")+ , (43, "chupa late gande ne chonna")+ , (44, "chupa late gande ne tapa")+ , (45, "chupa late gande ne gaayu’")+ , (46, "chupa late gande ne xhoopa’")+ , (47, "chupa late gande ne gadxe")+ , (48, "chupa late gande ne xhono")+ , (49, "chupa late gande ne ga’")+ , (50, "chupa late gande chii")+ , (51, "chupa late gande chii ne tobi")+ , (52, "chupa late gande chii ne chupa")+ , (53, "chupa late gande chii ne chonna")+ , (54, "chupa late gande chii ne tapa")+ , (55, "chupa late gande chii ne gaayu’")+ , (56, "chupa late gande chii ne xhoopa’")+ , (57, "chupa late gande chii ne gadxe")+ , (58, "chupa late gande chii ne xhono")+ , (59, "chupa late gande chii ne ga’")+ , (60, "chonna late gande")+ , (61, "chonna late gande ne tobi")+ , (62, "chonna late gande ne chupa")+ , (63, "chonna late gande ne chonna")+ , (64, "chonna late gande ne tapa")+ , (65, "chonna late gande ne gaayu’")+ , (66, "chonna late gande ne xhoopa’")+ , (67, "chonna late gande ne gadxe")+ , (68, "chonna late gande ne xhono")+ , (69, "chonna late gande ne ga’")+ , (70, "chonna late gande chii")+ , (71, "chonna late gande chii ne tobi")+ , (72, "chonna late gande chii ne chupa")+ , (73, "chonna late gande chii ne chonna")+ , (74, "chonna late gande chii ne tapa")+ , (75, "chonna late gande chii ne gaayu’")+ , (76, "chonna late gande chii ne xhoopa’")+ , (77, "chonna late gande chii ne gadxe")+ , (78, "chonna late gande chii ne xhono")+ , (79, "chonna late gande chii ne ga’")+ , (80, "tapa late gande")+ , (81, "tapa late gande ne tobi")+ , (82, "tapa late gande ne chupa")+ , (83, "tapa late gande ne chonna")+ , (84, "tapa late gande ne tapa")+ , (85, "tapa late gande ne gaayu’")+ , (86, "tapa late gande ne xhoopa’")+ , (87, "tapa late gande ne gadxe")+ , (88, "tapa late gande ne xhono")+ , (89, "tapa late gande ne ga’")+ , (90, "tapa late gande chii")+ , (91, "tapa late gande chii ne tobi")+ , (92, "tapa late gande chii ne chupa")+ , (93, "tapa late gande chii ne chonna")+ , (94, "tapa late gande chii ne tapa")+ , (95, "tapa late gande chii ne gaayu’")+ , (96, "tapa late gande chii ne xhoopa’")+ , (97, "tapa late gande chii ne gadxe")+ , (98, "tapa late gande chii ne xhono")+ , (99, "tapa late gande chii ne ga’")+ , (100, "ti gayuaa")+ , (101, "ti gayuaa tobi")+ , (102, "ti gayuaa chupa")+ , (103, "ti gayuaa chonna")+ , (104, "ti gayuaa tapa")+ , (105, "ti gayuaa gaayu’")+ , (106, "ti gayuaa xhoopa’")+ , (107, "ti gayuaa gadxe")+ , (108, "ti gayuaa xhono")+ , (109, "ti gayuaa ga’")+ , (110, "ti gayuaa chii")+ , (123, "ti gayuaa gande ne chonna")+ , (200, "chupa gayuaa")+ , (300, "chonna gayuaa")+ , (321, "chonna gayuaa gande ne tobi")+ , (400, "tapa gayuaa")+ , (500, "gaayu’ gayuaa")+ , (600, "xhoopa’ gayuaa")+ , (700, "gadxe gayuaa")+ , (800, "xhono gayuaa")+ , (900, "ga’ gayuaa")+ , (909, "ga’ gayuaa ga’")+ , (990, "ga’ gayuaa tapa late gande chii")+ , (999, "ga’ gayuaa tapa late gande chii ne ga’")+ , (1000, "ti mil")+ , (1001, "ti mil ne tobi")+ , (1008, "ti mil ne xhono")+ , (1234, "ti mil ne chupa gayuaa gande chii ne tapa")+ , (2000, "chupa mil")+ , (3000, "chonna mil")+ , (4000, "tapa mil")+ , (4321, "tapa mil ne chonna gayuaa gande ne tobi")+ , (5000, "gaayu’ mil")+ , (6000, "xhoopa’ mil")+ , (7000, "gadxe mil")+ , (8000, "xhono mil")+ , (9000, "ga’ mil")+ ]+ )+ ]
src-test/Text/Numeral/Language/ZAQ/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-aloapam-zapotec/en/zaq/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
− src-test/Text/Numeral/Language/ZH/TestData.hs
@@ -1,349 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] zh--[@ISO639-2B@] chi--[@ISO639-2T@] zho--[@ISO639-3@] cmn--[@Native name@] 官話--[@English name@] Chinese--}--module Text.Numeral.Language.ZH.TestData- ( trad_cardinals- , simpl_cardinals- , finance_trad_cardinals- , finance_simpl_cardinals- , pinyin_cardinals- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )-import "numerals" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Test ( TestData )-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- Test data-----------------------------------------------------------------------------------{--Sources:- http://www.sf.airnet.ne.jp/~ts/language/number/mandarin.html--}---- | Cardinal numbers that are written the same using either--- traditional or simplified characters.-trad_simpl_cardinals ∷ (Integral i) ⇒ [(i, Text)]-trad_simpl_cardinals =- [ (0, "零")- , (1, "一")- , (2, "二")- , (3, "三")- , (4, "四")- , (5, "五")- , (6, "六")- , (7, "七")- , (8, "八")- , (9, "九")- , (10, "十")- , (11, "十一")- , (12, "十二")- , (13, "十三")- , (14, "十四")- , (15, "十五")- , (16, "十六")- , (17, "十七")- , (18, "十八")- , (19, "十九")- , (20, "二十")- , (21, "二十一")- , (22, "二十二")- , (23, "二十三")- , (24, "二十四")- , (25, "二十五")- , (26, "二十六")- , (27, "二十七")- , (28, "二十八")- , (29, "二十九")- , (30, "三十")- , (31, "三十一")- , (32, "三十二")- , (33, "三十三")- , (34, "三十四")- , (35, "三十五")- , (36, "三十六")- , (37, "三十七")- , (38, "三十八")- , (39, "三十九")- , (40, "四十")- , (41, "四十一")- , (42, "四十二")- , (43, "四十三")- , (44, "四十四")- , (45, "四十五")- , (46, "四十六")- , (47, "四十七")- , (48, "四十八")- , (49, "四十九")- , (50, "五十")- , (51, "五十一")- , (52, "五十二")- , (53, "五十三")- , (54, "五十四")- , (55, "五十五")- , (56, "五十六")- , (57, "五十七")- , (58, "五十八")- , (59, "五十九")- , (60, "六十")- , (61, "六十一")- , (62, "六十二")- , (63, "六十三")- , (64, "六十四")- , (65, "六十五")- , (66, "六十六")- , (67, "六十七")- , (68, "六十八")- , (69, "六十九")- , (100, "一百")- , (114, "一百十四")- , (200, "二百")- , (205, "二百〇五")- , (208, "二百〇八")- , (280, "二百八十")- , (301, "三百〇一")- , (310, "三百十")- , (1000, "一千")- , (dec 12, "一兆")- , (dec 16, "一京")- , (dec 20, "一垓")- , (dec 24, "一秭")- , (dec 28, "一穰")- , (dec 32, "一溝")- , (dec 36, "一澗")- , (dec 40, "一正")- , (dec 44, "一載")- ]--trad_cardinals ∷ (Integral i) ⇒ TestData i-trad_cardinals =- [ ( "default"- , defaultInflection- , trad_simpl_cardinals- ⊕ [ (2000, "兩千")- , (2008, "兩千〇八")- , (2080, "兩千〇八十")- , (2362, "兩千三百六十二")- , (2800, "兩千八百")- , (dec 4, "一萬")- , (10020, "一萬〇二十")- , (97375, "九萬七千三百七十五")- , (100004, "十萬〇四")- , (8734072, "八百七十三萬四千〇七十二")- , (10050026, "一千〇五萬〇二十六")- , (dec 8, "一億")- , (12345678902345, "十二兆三千四百五十六億七千八百九十萬兩千三百四十五")- ]- )- ]--simpl_cardinals ∷ (Integral i) ⇒ TestData i-simpl_cardinals =- [ ( "default"- , defaultInflection- , trad_simpl_cardinals- ⊕ [ (2000, "两千")- , (2008, "两千〇八")- , (2080, "两千〇八十")- , (2362, "两千三百六十二")- , (2800, "两千八百")- , (dec 4, "一万")- , (dec 8, "一亿")- ]- )- ]--finance_trad_cardinals ∷ (Integral i) ⇒ TestData i-finance_trad_cardinals =- [ ( "default"- , defaultInflection- , [ (0, "零")- , (1, "壹")- , (2, "貳")- , (3, "参")- , (4, "肆")- , (5, "伍")- , (6, "陸")- , (7, "柒")- , (8, "捌")- , (9, "玖")- , (10, "拾")- , (100, "壹伯")- , (1000, "壹仟")- , (dec 4, "壹萬")- , (dec 8, "壹億")- ]- )- ]--finance_simpl_cardinals ∷ (Integral i) ⇒ TestData i-finance_simpl_cardinals =- [ ( "default"- , defaultInflection- , [ (0, "零")- , (1, "壹")- , (2, "贰")- , (3, "参")- , (4, "肆")- , (5, "伍")- , (6, "陆")- , (7, "柒")- , (8, "捌")- , (9, "玖")- , (10, "拾")- , (100, "壹伯")- , (1000, "壹仟")- , (dec 4, "壹万")- , (dec 8, "壹亿")- ]- )- ]--pinyin_cardinals ∷ (Integral i) ⇒ TestData i-pinyin_cardinals =- [ ( "default"- , defaultInflection- , [ (0, "líng")- , (1, "yī")- , (2, "èr")- , (3, "sān")- , (4, "sì")- , (5, "wǔ")- , (6, "liù")- , (7, "qī")- , (8, "bā")- , (9, "jiǔ")- , (10, "shí")- , (11, "shíyī")- , (12, "shíèr")- , (13, "shísān")- , (14, "shísì")- , (15, "shíwǔ")- , (16, "shíliù")- , (17, "shíqī")- , (18, "shíbā")- , (19, "shíjiǔ")- , (20, "èrshí")- , (21, "èrshí yī")- , (22, "èrshí èr")- , (23, "èrshí sān")- , (24, "èrshí sì")- , (25, "èrshí wǔ")- , (26, "èrshí liù")- , (27, "èrshí qī")- , (28, "èrshí bā")- , (29, "èrshí jiǔ")- , (30, "sānshí")- , (31, "sānshí yī")- , (32, "sānshí èr")- , (33, "sānshí sān")- , (34, "sānshí sì")- , (35, "sānshí wǔ")- , (36, "sānshí liù")- , (37, "sānshí qī")- , (38, "sānshí bā")- , (39, "sānshí jiǔ")- , (40, "sìshí")- , (41, "sìshí yī")- , (42, "sìshí èr")- , (43, "sìshí sān")- , (44, "sìshí sì")- , (45, "sìshí wǔ")- , (46, "sìshí liù")- , (47, "sìshí qī")- , (48, "sìshí bā")- , (49, "sìshí jiǔ")- , (50, "wǔshí")- , (51, "wǔshí yī")- , (52, "wǔshí èr")- , (53, "wǔshí sān")- , (54, "wǔshí sì")- , (55, "wǔshí wǔ")- , (56, "wǔshí liù")- , (57, "wǔshí qī")- , (58, "wǔshí bā")- , (59, "wǔshí jiǔ")- , (60, "liùshí")- , (61, "liùshí yī")- , (62, "liùshí èr")- , (63, "liùshí sān")- , (64, "liùshí sì")- , (65, "liùshí wǔ")- , (66, "liùshí liù")- , (67, "liùshí qī")- , (68, "liùshí bā")- , (69, "liùshí jiǔ")- , (70, "qīshí")- , (71, "qīshí yī")- , (72, "qīshí èr")- , (73, "qīshí sān")- , (74, "qīshí sì")- , (75, "qīshí wǔ")- , (76, "qīshí liù")- , (77, "qīshí qī")- , (78, "qīshí bā")- , (79, "qīshí jiǔ")- , (80, "bāshí")- , (81, "bāshí yī")- , (82, "bāshí èr")- , (83, "bāshí sān")- , (84, "bāshí sì")- , (85, "bāshí wǔ")- , (86, "bāshí liù")- , (87, "bāshí qī")- , (88, "bāshí bā")- , (89, "bāshí jiǔ")- , (90, "jiǔshí")- , (91, "jiǔshí yī")- , (92, "jiǔshí èr")- , (93, "jiǔshí sān")- , (94, "jiǔshí sì")- , (95, "jiǔshí wǔ")- , (96, "jiǔshí liù")- , (97, "jiǔshí qī")- , (98, "jiǔshí bā")- , (99, "jiǔshí jiǔ")- , (100, "yībǎi")- , (208, "èrbǎi líng bā")- , (280, "èrbǎi bāshí")- , (1000, "yīqiān")- , (1002, "yīqiān líng èr")- , (1020, "yīqiān líng èrshí")- , (1200, "yīqiān èrbǎi")- , (1203, "yīqiān èrbǎi líng sān")- , (1230, "yīqiān èrbǎi sānshí")- , (1234, "yīqiān èrbǎi sānshí sì")- , (2008, "liǎngqiān líng bā")- , (2080, "liǎngqiān líng bāshí")- , (2800, "liǎngqiān bābǎi")- , (97375, "jiǔwàn qīqiān sānbǎi qīshí wǔ")- ]- )- ]
+ src-test/Text/Numeral/Language/ZHO/TestData.hs view
@@ -0,0 +1,342 @@+{-|+[@ISO639-1@] zh++[@ISO639-2B@] chi++[@ISO639-2T@] zho++[@ISO639-3@] cmn++[@Native name@] 官話++[@English name@] Chinese+-}++module Text.Numeral.Language.ZHO.TestData+ ( trad_cardinals+ , simpl_cardinals+ , finance_trad_cardinals+ , finance_simpl_cardinals+ , pinyin_cardinals+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Monoid ( (<>) )+import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "numerals" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Test ( TestData )+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.sf.airnet.ne.jp/~ts/language/number/mandarin.html+-}++-- | Cardinal numbers that are written the same using either+-- traditional or simplified characters.+trad_simpl_cardinals :: (Integral i) => [(i, Text)]+trad_simpl_cardinals =+ [ (0, "零")+ , (1, "一")+ , (2, "二")+ , (3, "三")+ , (4, "四")+ , (5, "五")+ , (6, "六")+ , (7, "七")+ , (8, "八")+ , (9, "九")+ , (10, "十")+ , (11, "十一")+ , (12, "十二")+ , (13, "十三")+ , (14, "十四")+ , (15, "十五")+ , (16, "十六")+ , (17, "十七")+ , (18, "十八")+ , (19, "十九")+ , (20, "二十")+ , (21, "二十一")+ , (22, "二十二")+ , (23, "二十三")+ , (24, "二十四")+ , (25, "二十五")+ , (26, "二十六")+ , (27, "二十七")+ , (28, "二十八")+ , (29, "二十九")+ , (30, "三十")+ , (31, "三十一")+ , (32, "三十二")+ , (33, "三十三")+ , (34, "三十四")+ , (35, "三十五")+ , (36, "三十六")+ , (37, "三十七")+ , (38, "三十八")+ , (39, "三十九")+ , (40, "四十")+ , (41, "四十一")+ , (42, "四十二")+ , (43, "四十三")+ , (44, "四十四")+ , (45, "四十五")+ , (46, "四十六")+ , (47, "四十七")+ , (48, "四十八")+ , (49, "四十九")+ , (50, "五十")+ , (51, "五十一")+ , (52, "五十二")+ , (53, "五十三")+ , (54, "五十四")+ , (55, "五十五")+ , (56, "五十六")+ , (57, "五十七")+ , (58, "五十八")+ , (59, "五十九")+ , (60, "六十")+ , (61, "六十一")+ , (62, "六十二")+ , (63, "六十三")+ , (64, "六十四")+ , (65, "六十五")+ , (66, "六十六")+ , (67, "六十七")+ , (68, "六十八")+ , (69, "六十九")+ , (100, "一百")+ , (114, "一百十四")+ , (200, "二百")+ , (205, "二百〇五")+ , (208, "二百〇八")+ , (280, "二百八十")+ , (301, "三百〇一")+ , (310, "三百十")+ , (1000, "一千")+ , (dec 12, "一兆")+ , (dec 16, "一京")+ , (dec 20, "一垓")+ , (dec 24, "一秭")+ , (dec 28, "一穰")+ , (dec 32, "一溝")+ , (dec 36, "一澗")+ , (dec 40, "一正")+ , (dec 44, "一載")+ ]++trad_cardinals :: (Integral i) => TestData i+trad_cardinals =+ [ ( "default"+ , defaultInflection+ , trad_simpl_cardinals+ <> [ (2000, "兩千")+ , (2008, "兩千〇八")+ , (2080, "兩千〇八十")+ , (2362, "兩千三百六十二")+ , (2800, "兩千八百")+ , (dec 4, "一萬")+ , (10020, "一萬〇二十")+ , (97375, "九萬七千三百七十五")+ , (100004, "十萬〇四")+ , (8734072, "八百七十三萬四千〇七十二")+ , (10050026, "一千〇五萬〇二十六")+ , (dec 8, "一億")+ , (12345678902345, "十二兆三千四百五十六億七千八百九十萬兩千三百四十五")+ ]+ )+ ]++simpl_cardinals :: (Integral i) => TestData i+simpl_cardinals =+ [ ( "default"+ , defaultInflection+ , trad_simpl_cardinals+ <> [ (2000, "两千")+ , (2008, "两千〇八")+ , (2080, "两千〇八十")+ , (2362, "两千三百六十二")+ , (2800, "两千八百")+ , (dec 4, "一万")+ , (dec 8, "一亿")+ ]+ )+ ]++finance_trad_cardinals :: (Integral i) => TestData i+finance_trad_cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "零")+ , (1, "壹")+ , (2, "貳")+ , (3, "参")+ , (4, "肆")+ , (5, "伍")+ , (6, "陸")+ , (7, "柒")+ , (8, "捌")+ , (9, "玖")+ , (10, "拾")+ , (100, "壹伯")+ , (1000, "壹仟")+ , (dec 4, "壹萬")+ , (dec 8, "壹億")+ ]+ )+ ]++finance_simpl_cardinals :: (Integral i) => TestData i+finance_simpl_cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "零")+ , (1, "壹")+ , (2, "贰")+ , (3, "参")+ , (4, "肆")+ , (5, "伍")+ , (6, "陆")+ , (7, "柒")+ , (8, "捌")+ , (9, "玖")+ , (10, "拾")+ , (100, "壹伯")+ , (1000, "壹仟")+ , (dec 4, "壹万")+ , (dec 8, "壹亿")+ ]+ )+ ]++pinyin_cardinals :: (Integral i) => TestData i+pinyin_cardinals =+ [ ( "default"+ , defaultInflection+ , [ (0, "líng")+ , (1, "yī")+ , (2, "èr")+ , (3, "sān")+ , (4, "sì")+ , (5, "wǔ")+ , (6, "liù")+ , (7, "qī")+ , (8, "bā")+ , (9, "jiǔ")+ , (10, "shí")+ , (11, "shíyī")+ , (12, "shíèr")+ , (13, "shísān")+ , (14, "shísì")+ , (15, "shíwǔ")+ , (16, "shíliù")+ , (17, "shíqī")+ , (18, "shíbā")+ , (19, "shíjiǔ")+ , (20, "èrshí")+ , (21, "èrshí yī")+ , (22, "èrshí èr")+ , (23, "èrshí sān")+ , (24, "èrshí sì")+ , (25, "èrshí wǔ")+ , (26, "èrshí liù")+ , (27, "èrshí qī")+ , (28, "èrshí bā")+ , (29, "èrshí jiǔ")+ , (30, "sānshí")+ , (31, "sānshí yī")+ , (32, "sānshí èr")+ , (33, "sānshí sān")+ , (34, "sānshí sì")+ , (35, "sānshí wǔ")+ , (36, "sānshí liù")+ , (37, "sānshí qī")+ , (38, "sānshí bā")+ , (39, "sānshí jiǔ")+ , (40, "sìshí")+ , (41, "sìshí yī")+ , (42, "sìshí èr")+ , (43, "sìshí sān")+ , (44, "sìshí sì")+ , (45, "sìshí wǔ")+ , (46, "sìshí liù")+ , (47, "sìshí qī")+ , (48, "sìshí bā")+ , (49, "sìshí jiǔ")+ , (50, "wǔshí")+ , (51, "wǔshí yī")+ , (52, "wǔshí èr")+ , (53, "wǔshí sān")+ , (54, "wǔshí sì")+ , (55, "wǔshí wǔ")+ , (56, "wǔshí liù")+ , (57, "wǔshí qī")+ , (58, "wǔshí bā")+ , (59, "wǔshí jiǔ")+ , (60, "liùshí")+ , (61, "liùshí yī")+ , (62, "liùshí èr")+ , (63, "liùshí sān")+ , (64, "liùshí sì")+ , (65, "liùshí wǔ")+ , (66, "liùshí liù")+ , (67, "liùshí qī")+ , (68, "liùshí bā")+ , (69, "liùshí jiǔ")+ , (70, "qīshí")+ , (71, "qīshí yī")+ , (72, "qīshí èr")+ , (73, "qīshí sān")+ , (74, "qīshí sì")+ , (75, "qīshí wǔ")+ , (76, "qīshí liù")+ , (77, "qīshí qī")+ , (78, "qīshí bā")+ , (79, "qīshí jiǔ")+ , (80, "bāshí")+ , (81, "bāshí yī")+ , (82, "bāshí èr")+ , (83, "bāshí sān")+ , (84, "bāshí sì")+ , (85, "bāshí wǔ")+ , (86, "bāshí liù")+ , (87, "bāshí qī")+ , (88, "bāshí bā")+ , (89, "bāshí jiǔ")+ , (90, "jiǔshí")+ , (91, "jiǔshí yī")+ , (92, "jiǔshí èr")+ , (93, "jiǔshí sān")+ , (94, "jiǔshí sì")+ , (95, "jiǔshí wǔ")+ , (96, "jiǔshí liù")+ , (97, "jiǔshí qī")+ , (98, "jiǔshí bā")+ , (99, "jiǔshí jiǔ")+ , (100, "yībǎi")+ , (208, "èrbǎi líng bā")+ , (280, "èrbǎi bāshí")+ , (1000, "yīqiān")+ , (1002, "yīqiān líng èr")+ , (1020, "yīqiān líng èrshí")+ , (1200, "yīqiān èrbǎi")+ , (1203, "yīqiān èrbǎi líng sān")+ , (1230, "yīqiān èrbǎi sānshí")+ , (1234, "yīqiān èrbǎi sānshí sì")+ , (2008, "liǎngqiān líng bā")+ , (2080, "liǎngqiān líng bāshí")+ , (2800, "liǎngqiān bābǎi")+ , (97375, "jiǔwàn qīqiān sānbǎi qīshí wǔ")+ ]+ )+ ]
src-test/Text/Numeral/Language/ZPC/TestData.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -21,8 +16,7 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Num )-import "numerals" Text.Numeral.Grammar.Reified ( defaultInflection )+import "numerals" Text.Numeral.Grammar ( defaultInflection ) import "this" Text.Numeral.Test ( TestData ) @@ -35,7 +29,7 @@ http://www.languagesandnumbers.com/how-to-count-in-choapan-zapotec/en/zpc/ -} -cardinals ∷ (Num i) ⇒ TestData i+cardinals :: (Num i) => TestData i cardinals = [ ( "default" , defaultInflection
+ src-test/Text/Numeral/Language/ZPL/TestData.hs view
@@ -0,0 +1,161 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] zpl++[@Native name@] East Sola de Vega Zapotec++[@English name@] Lachixío Zapotec+-}+module Text.Numeral.Language.ZPL.TestData (cardinals) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "numerals" Text.Numeral.Grammar ( defaultInflection )+import "this" Text.Numeral.Test ( TestData )+++--------------------------------------------------------------------------------+-- Test data+--------------------------------------------------------------------------------++{-+Sources:+ http://www.languagesandnumbers.com/how-to-count-in-lachixio-zapotec/en/zpl/+-}++cardinals :: (Num i) => TestData i+cardinals =+ [ ( "default"+ , defaultInflection+ , [ (1, "tucu")+ , (2, "chiucu")+ , (3, "chuna")+ , (4, "tacu")+ , (5, "ayu’")+ , (6, "xu’cu")+ , (7, "achi")+ , (8, "xunu")+ , (9, "quie’")+ , (10, "chi’i")+ , (11, "chi’i tucu")+ , (12, "chi’i chiucu")+ , (13, "chi’i chuna")+ , (14, "chi’i tacu")+ , (15, "chi’i ayu’")+ , (16, "chi’i xu’cu")+ , (17, "chi’i achi")+ , (18, "chi’i xunu")+ , (19, "chi’i quie’")+ , (20, "ala")+ , (21, "ala tucu")+ , (22, "ala chiucu")+ , (23, "ala chuna")+ , (24, "ala tacu")+ , (25, "ala ayu’")+ , (26, "ala xu’cu")+ , (27, "ala achi")+ , (28, "ala xunu")+ , (29, "ala quie’")+ , (30, "ala llichi’i")+ , (31, "ala llichi’i tucu")+ , (32, "ala llichi’i chiucu")+ , (33, "ala llichi’i chuna")+ , (34, "ala llichi’i tacu")+ , (35, "ala llichi’i ayu’")+ , (36, "ala llichi’i xu’cu")+ , (37, "ala llichi’i achi")+ , (38, "ala llichi’i xunu")+ , (39, "ala llichi’i quie’")+ , (40, "chiu’a")+ , (41, "chiu’a tucu")+ , (42, "chiu’a chiucu")+ , (43, "chiu’a chuna")+ , (44, "chiu’a tacu")+ , (45, "chiu’a ayu’")+ , (46, "chiu’a xu’cu")+ , (47, "chiu’a achi")+ , (48, "chiu’a xunu")+ , (49, "chiu’a quie’")+ , (50, "chiu’a nu’ chi’i")+ , (51, "chiu’a nu’ chi’i tucu")+ , (52, "chiu’a nu’ chi’i chiucu")+ , (53, "chiu’a nu’ chi’i chuna")+ , (54, "chiu’a nu’ chi’i tacu")+ , (55, "chiu’a nu’ chi’i ayu’")+ , (56, "chiu’a nu’ chi’i xu’cu")+ , (57, "chiu’a nu’ chi’i achi")+ , (58, "chiu’a nu’ chi’i xunu")+ , (59, "chiu’a nu’ chi’i quie’")+ , (60, "ayuna")+ , (61, "ayuna tucu")+ , (62, "ayuna chiucu")+ , (63, "ayuna chuna")+ , (64, "ayuna tacu")+ , (65, "ayuna ayu’")+ , (66, "ayuna xu’cu")+ , (67, "ayuna achi")+ , (68, "ayuna xunu")+ , (69, "ayuna quie’")+ , (70, "ayuna nu’ chi’i")+ , (71, "ayuna nu’ chi’i tucu")+ , (72, "ayuna nu’ chi’i chiucu")+ , (73, "ayuna nu’ chi’i chuna")+ , (74, "ayuna nu’ chi’i tacu")+ , (75, "ayuna nu’ chi’i ayu’")+ , (76, "ayuna nu’ chi’i xu’cu")+ , (77, "ayuna nu’ chi’i achi")+ , (78, "ayuna nu’ chi’i xunu")+ , (79, "ayuna nu’ chi’i quie’")+ , (80, "tacu nu’ ala")+ , (81, "tacu nu’ ala tucu")+ , (82, "tacu nu’ ala chiucu")+ , (83, "tacu nu’ ala chuna")+ , (84, "tacu nu’ ala tacu")+ , (85, "tacu nu’ ala ayu’")+ , (86, "tacu nu’ ala xu’cu")+ , (87, "tacu nu’ ala achi")+ , (88, "tacu nu’ ala xunu")+ , (89, "tacu nu’ ala quie’")+ , (90, "chuna ala lli chi’i")+ , (91, "chuna ala lli chi’i tucu")+ , (92, "chuna ala lli chi’i chiucu")+ , (93, "chuna ala lli chi’i chuna")+ , (94, "chuna ala lli chi’i tacu")+ , (95, "chuna ala lli chi’i ayu’")+ , (96, "chuna ala lli chi’i xu’cu")+ , (97, "chuna ala lli chi’i achi")+ , (98, "chuna ala lli chi’i xunu")+ , (99, "chuna ala lli chi’i quie’")+ , (100, "tucu ayu’u")+ , (101, "tucu ayu’u tucu")+ , (102, "tucu ayu’u chiucu")+ , (103, "tucu ayu’u chuna")+ , (104, "tucu ayu’u tacu")+ , (105, "tucu ayu’u ayu’")+ , (106, "tucu ayu’u xu’cu")+ , (107, "tucu ayu’u achi")+ , (108, "tucu ayu’u xunu")+ , (109, "tucu ayu’u quie’")+ , (110, "tucu ayu’u chi’i")+ , (123, "tucu ayu’u ala chuna")+ , (200, "chiucu ayu’u")+ , (300, "chuna ayu’u")+ , (321, "chuna ayu’u ala tucu")+ , (400, "tacu ayu’u")+ , (500, "ayu’ ayu’u")+ , (600, "xu’cu ayu’u")+ , (700, "achi ayu’u")+ , (800, "xunu ayu’u")+ , (900, "quie’ ayu’u")+ , (909, "quie’ ayu’u quie’")+ , (990, "quie’ ayu’u chuna ala lli chi’i")+ , (999, "quie’ ayu’u chuna ala lli chi’i quie’")+ ]+ )+ ]
src-test/Text/Numeral/Test.hs view
@@ -5,7 +5,7 @@ module Text.Numeral.Test ( TestData ) where import "base" Data.String ( String )-import "numerals" Text.Numeral.Grammar.Reified ( Inflection )+import "numerals" Text.Numeral.Grammar ( Inflection ) import "text" Data.Text ( Text ) type TestData n = [(String, Inflection, [(n, Text)])]
src-test/test.hs view
@@ -1,10 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}-- module Main where @@ -12,25 +5,15 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Control.Monad ( (=<<), when )-import "base" Data.Bool ( Bool(True) )-import "base" Data.Function ( ($), on )-import "base" Data.List ( filter, groupBy, head, intercalate, length, map, sortBy )-import "base" Data.Maybe ( Maybe(Just), fromMaybe )-import "base" Data.Ord ( (<), (>), compare )-import "base" Data.Tuple ( fst, snd )-import "base" Prelude ( (+), (-), String )+import "base" Control.Monad ( when )+import "base" Data.Function ( on )+import "base" Data.List ( groupBy, intercalate, sortBy )+import "base" Data.Maybe ( fromMaybe ) import "base" System.Environment ( getArgs )-import "base" System.IO ( IO ) import "base" Text.Printf ( printf )-import "base" Text.Show ( Show, show )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡), (≢) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ, (⋅) ) import "HUnit" Test.HUnit ( Assertion, assertFailure, assertBool )-import "numerals" Text.Numeral.Grammar-import qualified "numerals" Text.Numeral.Grammar.Reified as GR-import "numerals" Text.Numeral.Misc ( dec, intLog )+import "numerals" Text.Numeral.Grammar+import "numerals" Text.Numeral.Misc ( dec, intLog ) import "QuickCheck" Test.QuickCheck.Modifiers ( Positive(Positive), NonNegative(NonNegative) ) import "test-framework" Test.Framework ( defaultMainWithOpts@@ -44,125 +27,169 @@ import "text" Data.Text ( Text ) import qualified "text" Data.Text as T ( unpack ) -import qualified "numerals" Text.Numeral.Language.AF as AF+import qualified "numerals" Text.Numeral.Language.AFR as AFR import qualified "numerals" Text.Numeral.Language.AMP as AMP-import qualified "numerals" Text.Numeral.Language.BG as BG+import qualified "numerals" Text.Numeral.Language.BUL as BUL+import qualified "numerals" Text.Numeral.Language.CES as CES import qualified "numerals" Text.Numeral.Language.CHN as CHN import qualified "numerals" Text.Numeral.Language.CHR as CHR import qualified "numerals" Text.Numeral.Language.CLM as CLM-import qualified "numerals" Text.Numeral.Language.CS as CS-import qualified "numerals" Text.Numeral.Language.DE as DE-import qualified "numerals" Text.Numeral.Language.EN as EN-import qualified "numerals" Text.Numeral.Language.EO as EO-import qualified "numerals" Text.Numeral.Language.ES as ES-import qualified "numerals" Text.Numeral.Language.FI as FI-import qualified "numerals" Text.Numeral.Language.FR as FR+import qualified "numerals" Text.Numeral.Language.CRO as CRO+import qualified "numerals" Text.Numeral.Language.DEU as DEU+import qualified "numerals" Text.Numeral.Language.ENG as ENG+import qualified "numerals" Text.Numeral.Language.EPO as EPO+import qualified "numerals" Text.Numeral.Language.FIN as FIN+import qualified "numerals" Text.Numeral.Language.FRA as FRA import qualified "numerals" Text.Numeral.Language.FUR as FUR+import qualified "numerals" Text.Numeral.Language.GLV as GLV import qualified "numerals" Text.Numeral.Language.GSW as GSW-import qualified "numerals" Text.Numeral.Language.GV as GV-import qualified "numerals" Text.Numeral.Language.HE as HE+import qualified "numerals" Text.Numeral.Language.HEB as HEB import qualified "numerals" Text.Numeral.Language.HOP as HOP-import qualified "numerals" Text.Numeral.Language.IT as IT-import qualified "numerals" Text.Numeral.Language.JA as JA-import qualified "numerals" Text.Numeral.Language.LA as LA+import qualified "numerals" Text.Numeral.Language.ITA as ITA+import qualified "numerals" Text.Numeral.Language.JPN as JPN+import qualified "numerals" Text.Numeral.Language.LAT as LAT import qualified "numerals" Text.Numeral.Language.LLD as LLD-import qualified "numerals" Text.Numeral.Language.MG as MG-import qualified "numerals" Text.Numeral.Language.NL as NL-import qualified "numerals" Text.Numeral.Language.NO as NO+import qualified "numerals" Text.Numeral.Language.MLG as MLG+import qualified "numerals" Text.Numeral.Language.NEN as NEN+import qualified "numerals" Text.Numeral.Language.NLD as NLD+import qualified "numerals" Text.Numeral.Language.NOB as NOB import qualified "numerals" Text.Numeral.Language.NQM as NQM-import qualified "numerals" Text.Numeral.Language.OJ as OJ+import qualified "numerals" Text.Numeral.Language.OJI as OJI import qualified "numerals" Text.Numeral.Language.PDC as PDC-import qualified "numerals" Text.Numeral.Language.PL as PL-import qualified "numerals" Text.Numeral.Language.PT as PT-import qualified "numerals" Text.Numeral.Language.RU as RU+import qualified "numerals" Text.Numeral.Language.POL as POL+import qualified "numerals" Text.Numeral.Language.POR as POR+import qualified "numerals" Text.Numeral.Language.RUS as RUS import qualified "numerals" Text.Numeral.Language.SCO as SCO-import qualified "numerals" Text.Numeral.Language.SV as SV-import qualified "numerals" Text.Numeral.Language.TR as TR-import qualified "numerals" Text.Numeral.Language.WO as WO+import qualified "numerals" Text.Numeral.Language.SPA as SPA+import qualified "numerals" Text.Numeral.Language.SWE as SWE+import qualified "numerals" Text.Numeral.Language.TUR as TUR+import qualified "numerals" Text.Numeral.Language.WOL as WOL import qualified "numerals" Text.Numeral.Language.YOR as YOR-import qualified "numerals" Text.Numeral.Language.ZH as ZH+import qualified "numerals" Text.Numeral.Language.ZHO as ZHO import qualified "this" Text.Numeral.Language.ACH.TestData as ACH import qualified "this" Text.Numeral.Language.ADY.TestData as ADY-import qualified "this" Text.Numeral.Language.AF.TestData as AF+import qualified "this" Text.Numeral.Language.AFR.TestData as AFR import qualified "this" Text.Numeral.Language.AMP.TestData as AMP import qualified "this" Text.Numeral.Language.ARI.TestData as ARI+import qualified "this" Text.Numeral.Language.ARN.TestData as ARN import qualified "this" Text.Numeral.Language.AST.TestData as AST-import qualified "this" Text.Numeral.Language.AZ.TestData as AZ-import qualified "this" Text.Numeral.Language.BA.TestData as BA-import qualified "this" Text.Numeral.Language.BG.TestData as BG-import qualified "this" Text.Numeral.Language.BM.TestData as BM-import qualified "this" Text.Numeral.Language.CA.TestData as CA+import qualified "this" Text.Numeral.Language.AZE.TestData as AZE+import qualified "this" Text.Numeral.Language.BAK.TestData as BAK+import qualified "this" Text.Numeral.Language.BAM.TestData as BAM+import qualified "this" Text.Numeral.Language.BUL.TestData as BUL import qualified "this" Text.Numeral.Language.CAF.TestData as CAF+import qualified "this" Text.Numeral.Language.CAR.TestData as CAR+import qualified "this" Text.Numeral.Language.CAT.TestData as CAT import qualified "this" Text.Numeral.Language.CBK.TestData as CBK+import qualified "this" Text.Numeral.Language.CES.TestData as CES import qualified "this" Text.Numeral.Language.CHN.TestData as CHN import qualified "this" Text.Numeral.Language.CHR.TestData as CHR+import qualified "this" Text.Numeral.Language.CKU.TestData as CKU import qualified "this" Text.Numeral.Language.CLM.TestData as CLM-import qualified "this" Text.Numeral.Language.CO.TestData as CO+import qualified "this" Text.Numeral.Language.CRO.TestData as CRO import qualified "this" Text.Numeral.Language.COD.TestData as COD import qualified "this" Text.Numeral.Language.COO.TestData as COO-import qualified "this" Text.Numeral.Language.CS.TestData as CS-import qualified "this" Text.Numeral.Language.CY.TestData as CY-import qualified "this" Text.Numeral.Language.DE.TestData as DE+import qualified "this" Text.Numeral.Language.COS.TestData as COS+import qualified "this" Text.Numeral.Language.CRG.TestData as CRG+import qualified "this" Text.Numeral.Language.CYM.TestData as CYM+import qualified "this" Text.Numeral.Language.DEU.TestData as DEU import qualified "this" Text.Numeral.Language.DJK.TestData as DJK-import qualified "this" Text.Numeral.Language.EN.TestData as EN-import qualified "this" Text.Numeral.Language.EO.TestData as EO-import qualified "this" Text.Numeral.Language.ES.TestData as ES-import qualified "this" Text.Numeral.Language.ET.TestData as ET-import qualified "this" Text.Numeral.Language.FI.TestData as FI-import qualified "this" Text.Numeral.Language.FO.TestData as FO-import qualified "this" Text.Numeral.Language.FR.TestData as FR+import qualified "this" Text.Numeral.Language.EKK.TestData as EKK+import qualified "this" Text.Numeral.Language.EMI.TestData as EMI+import qualified "this" Text.Numeral.Language.ENG.TestData as ENG+import qualified "this" Text.Numeral.Language.EPO.TestData as EPO+import qualified "this" Text.Numeral.Language.FAO.TestData as FAO+import qualified "this" Text.Numeral.Language.FIN.TestData as FIN+import qualified "this" Text.Numeral.Language.FRA.TestData as FRA+import qualified "this" Text.Numeral.Language.FRA_JER.TestData as FRA_JER+import qualified "this" Text.Numeral.Language.FRR.TestData as FRR import qualified "this" Text.Numeral.Language.FUR.TestData as FUR import qualified "this" Text.Numeral.Language.GCF_MTQ.TestData as GCF_MTQ import qualified "this" Text.Numeral.Language.GIL.TestData as GIL-import qualified "this" Text.Numeral.Language.GL.TestData as GL+import qualified "this" Text.Numeral.Language.GLG.TestData as GLG+import qualified "this" Text.Numeral.Language.GLV.TestData as GLV import qualified "this" Text.Numeral.Language.GSW.TestData as GSW-import qualified "this" Text.Numeral.Language.GV.TestData as GV import qualified "this" Text.Numeral.Language.HAI.TestData as HAI-import qualified "this" Text.Numeral.Language.HE.TestData as HE+import qualified "this" Text.Numeral.Language.HAT.TestData as HAT+import qualified "this" Text.Numeral.Language.HEB.TestData as HEB import qualified "this" Text.Numeral.Language.HOP.TestData as HOP-import qualified "this" Text.Numeral.Language.HR.TestData as HR-import qualified "this" Text.Numeral.Language.HU.TestData as HU-import qualified "this" Text.Numeral.Language.HY.TestData as HY-import qualified "this" Text.Numeral.Language.IT.TestData as IT-import qualified "this" Text.Numeral.Language.JA.TestData as JA+import qualified "this" Text.Numeral.Language.HRV.TestData as HRV+import qualified "this" Text.Numeral.Language.HUN.TestData as HUN+import qualified "this" Text.Numeral.Language.HUP.TestData as HUP+import qualified "this" Text.Numeral.Language.HUR.TestData as HUR+import qualified "this" Text.Numeral.Language.HYE.TestData as HYE+import qualified "this" Text.Numeral.Language.IBO.TestData as IBO+import qualified "this" Text.Numeral.Language.IND.TestData as IND+import qualified "this" Text.Numeral.Language.INH.TestData as INH+import qualified "this" Text.Numeral.Language.ITA.TestData as ITA+import qualified "this" Text.Numeral.Language.IZH.TestData as IZH+import qualified "this" Text.Numeral.Language.JPN.TestData as JPN import qualified "this" Text.Numeral.Language.KAP.TestData as KAP import qualified "this" Text.Numeral.Language.KEA.TestData as KEA-import qualified "this" Text.Numeral.Language.LA.TestData as LA+import qualified "this" Text.Numeral.Language.KLB.TestData as KLB+import qualified "this" Text.Numeral.Language.KMR.TestData as KMR+import qualified "this" Text.Numeral.Language.KRL.TestData as KRL+import qualified "this" Text.Numeral.Language.LAT.TestData as LAT+import qualified "this" Text.Numeral.Language.LAV.TestData as LAV+import qualified "this" Text.Numeral.Language.LIN.TestData as LIN+import qualified "this" Text.Numeral.Language.LIT.TestData as LIT+import qualified "this" Text.Numeral.Language.LIV.TestData as LIV import qualified "this" Text.Numeral.Language.LLD.TestData as LLD-import qualified "this" Text.Numeral.Language.MG.TestData as MG+import qualified "this" Text.Numeral.Language.LMO.TestData as LMO+import qualified "this" Text.Numeral.Language.LTZ.TestData as LTZ+import qualified "this" Text.Numeral.Language.MIC.TestData as MIC+import qualified "this" Text.Numeral.Language.MIN.TestData as MIN+import qualified "this" Text.Numeral.Language.MLG.TestData as MLG+import qualified "this" Text.Numeral.Language.MNK.TestData as MNK import qualified "this" Text.Numeral.Language.MOH.TestData as MOH-import qualified "this" Text.Numeral.Language.NL.TestData as NL-import qualified "this" Text.Numeral.Language.NO.TestData as NO+import qualified "this" Text.Numeral.Language.NAV.TestData as NAV+import qualified "this" Text.Numeral.Language.NEE.TestData as NEE+import qualified "this" Text.Numeral.Language.NEN.TestData as NEN+import qualified "this" Text.Numeral.Language.NLD.TestData as NLD+import qualified "this" Text.Numeral.Language.NOB.TestData as NOB import qualified "this" Text.Numeral.Language.NQM.TestData as NQM-import qualified "this" Text.Numeral.Language.OJ.TestData as OJ+import qualified "this" Text.Numeral.Language.OCI.TestData as OCI+import qualified "this" Text.Numeral.Language.OJI.TestData as OJI+import qualified "this" Text.Numeral.Language.ONE.TestData as ONE+import qualified "this" Text.Numeral.Language.ORM.TestData as ORM import qualified "this" Text.Numeral.Language.PAA.TestData as PAA import qualified "this" Text.Numeral.Language.PDC.TestData as PDC-import qualified "this" Text.Numeral.Language.PL.TestData as PL-import qualified "this" Text.Numeral.Language.PT.TestData as PT+import qualified "this" Text.Numeral.Language.POL.TestData as POL+import qualified "this" Text.Numeral.Language.POR.TestData as POR import qualified "this" Text.Numeral.Language.RMN_DZA.TestData as RMN_DZA-import qualified "this" Text.Numeral.Language.RO.TestData as RO-import qualified "this" Text.Numeral.Language.RU.TestData as RU+import qualified "this" Text.Numeral.Language.RMY_KAL.TestData as RMY_KAL+import qualified "this" Text.Numeral.Language.RON.TestData as RON+import qualified "this" Text.Numeral.Language.RUS.TestData as RUS import qualified "this" Text.Numeral.Language.SCO.TestData as SCO-import qualified "this" Text.Numeral.Language.SV.TestData as SV+import qualified "this" Text.Numeral.Language.SME.TestData as SME+import qualified "this" Text.Numeral.Language.SMN.TestData as SMN+import qualified "this" Text.Numeral.Language.SPA.TestData as SPA+import qualified "this" Text.Numeral.Language.SQI.TestData as SQI+import qualified "this" Text.Numeral.Language.SWE.TestData as SWE import qualified "this" Text.Numeral.Language.TAR.TestData as TAR-import qualified "this" Text.Numeral.Language.TR.TestData as TR-import qualified "this" Text.Numeral.Language.WO.TestData as WO+import qualified "this" Text.Numeral.Language.TGS.TestData as TGS+import qualified "this" Text.Numeral.Language.TUR.TestData as TUR+import qualified "this" Text.Numeral.Language.WMW.TestData as WMW+import qualified "this" Text.Numeral.Language.WOL.TestData as WOL+import qualified "this" Text.Numeral.Language.XPQ.TestData as XPQ import qualified "this" Text.Numeral.Language.YOR.TestData as YOR+import qualified "this" Text.Numeral.Language.ZAI.TestData as ZAI import qualified "this" Text.Numeral.Language.ZAQ.TestData as ZAQ-import qualified "this" Text.Numeral.Language.ZH.TestData as ZH+import qualified "this" Text.Numeral.Language.ZHO.TestData as ZHO import qualified "this" Text.Numeral.Language.ZPC.TestData as ZPC+import qualified "this" Text.Numeral.Language.ZPL.TestData as ZPL -------------------------------------------------------------------------------- -- Test suite -------------------------------------------------------------------------------- -main ∷ IO ()-main = do opts ← interpretArgsOrExit =<< getArgs+main :: IO ()+main = do opts <- interpretArgsOrExit =<< getArgs defaultMainWithOpts tests opts { ropt_hide_successes = Just True } -tests ∷ [Test]+tests :: [Test] tests = [ testGroup "Grammar" [ testGroup "Case"@@ -200,394 +227,564 @@ ] , testGroup "ACH" [ testGroup "unique data"- [testUnique "cardinal" (ACH.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (ACH.cardinals :: TestData Integer)] ] , testGroup "ADY" [ testGroup "unique data"- [testUnique "cardinal" (ADY.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (ADY.cardinals :: TestData Integer)] ] , testGroup "AF" [ testGroup "unique data"- [ testUnique "cardinal" (AF.cardinals ∷ TestData ℤ)- , testUnique "ordinal" (AF.ordinals ∷ TestData ℤ)+ [ testUnique "cardinal" (AFR.cardinals :: TestData Integer)+ , testUnique "ordinal" (AFR.ordinals :: TestData Integer) ]- , mkTests "cardinal" AF.cardinal (AF.cardinals ∷ TestData ℤ)- , mkTests "ordinal" AF.ordinal (AF.ordinals ∷ TestData ℤ)+ , mkTests "cardinal" AFR.cardinal (AFR.cardinals :: TestData Integer)+ , mkTests "ordinal" AFR.ordinal (AFR.ordinals :: TestData Integer) ] , testGroup "AMP" [ testGroup "unique data"- [testUnique "cardinal" (AMP.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" AMP.cardinal (AMP.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (AMP.cardinals :: TestData Integer)]+ , mkTests "cardinal" AMP.cardinal (AMP.cardinals :: TestData Integer) ] , testGroup "ARI" [ testGroup "unique data"- [testUnique "cardinal" (ARI.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (ARI.cardinals :: TestData Integer)] ]+ , testGroup "ARN"+ [ testGroup "unique data"+ [testUnique "cardinal" (ARN.cardinals :: TestData Integer)]+ ] , testGroup "AST" [ testGroup "unique data"- [testUnique "cardinal" (AST.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (AST.cardinals :: TestData Integer)] ]- , testGroup "AZ"+ , testGroup "AZE" [ testGroup "unique data"- [testUnique "cardinal" (AZ.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (AZE.cardinals :: TestData Integer)] ]- , testGroup "BA"+ , testGroup "BAK" [ testGroup "unique data"- [testUnique "cardinal" (BA.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (BAK.cardinals :: TestData Integer)] ]- , testGroup "BG"+ , testGroup "BUL" [ testGroup "unique data"- [testUnique "cardinal" (BG.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" BG.cardinal (BG.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (BUL.cardinals :: TestData Integer)]+ , mkTests "cardinal" BUL.cardinal (BUL.cardinals :: TestData Integer) ]- , testGroup "BM"+ , testGroup "BAM" [ testGroup "unique data"- [testUnique "cardinal" (BM.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (BAM.cardinals :: TestData Integer)] ]- , testGroup "CA"+ , testGroup "CAT" [ testGroup "unique data"- [testUnique "cardinal" (CA.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (CAT.cardinals :: TestData Integer)] ] , testGroup "CAF" [ testGroup "unique data"- [ testUnique "cardinal" (CAF.cardinals ∷ TestData ℤ)- , testUnique "cardinal (syllabic)" (CAF.syllabic_cardinals ∷ TestData ℤ)+ [ testUnique "cardinal" (CAF.cardinals :: TestData Integer)+ , testUnique "cardinal (syllabic)" (CAF.syllabic_cardinals :: TestData Integer) ] ]+ , testGroup "CAR"+ [ testGroup "unique data"+ [testUnique "cardinal" (CAR.cardinals :: TestData Integer)]+ ] , testGroup "CBK" [ testGroup "unique data"- [testUnique "cardinal" (CBK.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (CBK.cardinals :: TestData Integer)] ] , testGroup "CHN" [ testGroup "unique data"- [testUnique "cardinal" (CHN.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" CHN.cardinal (CHN.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (CHN.cardinals :: TestData Integer)]+ , mkTests "cardinal" CHN.cardinal (CHN.cardinals :: TestData Integer) ] , testGroup "CHR" [ testGroup "unique data"- [testUnique "cardinal" (CHR.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" CHR.cardinal (CHR.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (CHR.cardinals :: TestData Integer)]+ , mkTests "cardinal" CHR.cardinal (CHR.cardinals :: TestData Integer) ]+ , testGroup "CKU"+ [ testGroup "unique data"+ [testUnique "cardinal" (CKU.cardinals :: TestData Integer)]+ ] , testGroup "CLM" [ testGroup "unique data"- [testUnique "cardinal" (CLM.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" CLM.cardinal (CLM.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (CLM.cardinals :: TestData Integer)]+ , mkTests "cardinal" CLM.cardinal (CLM.cardinals :: TestData Integer) ]- , testGroup "CO"+ , testGroup "CRO" [ testGroup "unique data"- [testUnique "cardinal" (CO.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (CRO.cardinals :: TestData Integer)]+ , mkTests "cardinal" CRO.cardinal (CRO.cardinals :: TestData Integer) ]+ , testGroup "COS"+ [ testGroup "unique data"+ [testUnique "cardinal" (COS.cardinals :: TestData Integer)]+ ] , testGroup "COD" [ testGroup "unique data"- [testUnique "cardinal" (COD.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (COD.cardinals :: TestData Integer)] ] , testGroup "COO" [ testGroup "unique data"- [testUnique "cardinal" (COO.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (COO.cardinals :: TestData Integer)] ]- , testGroup "CS"+ , testGroup "CRG" [ testGroup "unique data"- [testUnique "cardinal" (CS.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" CS.cardinal (CS.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (CRG.cardinals :: TestData Integer)] ]- , testGroup "CY"+ , testGroup "CES" [ testGroup "unique data"- [testUnique "cardinal" (CY.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (CES.cardinals :: TestData Integer)]+ , mkTests "cardinal" CES.cardinal (CES.cardinals :: TestData Integer) ]- , testGroup "DE"+ , testGroup "CYM" [ testGroup "unique data"- [ testUnique "cardinal" (DE.cardinals ∷ TestData ℤ)- , testUnique "ordinal" (DE.ordinals ∷ TestData ℤ)+ [testUnique "cardinal" (CYM.cardinals :: TestData Integer)]+ ]+ , testGroup "DEU"+ [ testGroup "unique data"+ [ testUnique "cardinal" (DEU.cardinals :: TestData Integer)+ , testUnique "ordinal" (DEU.ordinals :: TestData Integer) ]- , mkTests "cardinal" DE.cardinal (DE.cardinals ∷ TestData ℤ)- , mkTests "ordinal" DE.ordinal (DE.ordinals ∷ TestData ℤ)+ , mkTests "cardinal" DEU.cardinal (DEU.cardinals :: TestData Integer)+ , mkTests "ordinal" DEU.ordinal (DEU.ordinals :: TestData Integer) ] , testGroup "DJK" [ testGroup "unique data"- [testUnique "cardinal" (DJK.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (DJK.cardinals :: TestData Integer)] ]- , testGroup "EN"+ , testGroup "EMI"+ [ testGroup "unique data"+ [testUnique "cardinal" (EMI.cardinals :: TestData Integer)]+ ]+ , testGroup "ENG" [ testGroup "GB" [ testGroup "unique data"- [ testUnique "cardinal" (EN.gb_cardinals ∷ TestData ℤ)- , testUnique "ordinal" (EN.gb_ordinals ∷ TestData ℤ)+ [ testUnique "cardinal" (ENG.gb_cardinals :: TestData Integer)+ , testUnique "ordinal" (ENG.gb_ordinals :: TestData Integer) ]- , mkTests "cardinal" EN.gb_cardinal (EN.gb_cardinals ∷ TestData ℤ)- , mkTests "ordinal" EN.gb_ordinal (EN.gb_ordinals ∷ TestData ℤ)+ , mkTests "cardinal" ENG.gb_cardinal (ENG.gb_cardinals :: TestData Integer)+ , mkTests "ordinal" ENG.gb_ordinal (ENG.gb_ordinals :: TestData Integer) ] , testGroup "US" [ testGroup "unique data"- [ testUnique "cardinal" (EN.us_cardinals ∷ TestData ℤ)- , testUnique "ordinal" (EN.us_ordinals ∷ TestData ℤ)+ [ testUnique "cardinal" (ENG.us_cardinals :: TestData Integer)+ , testUnique "ordinal" (ENG.us_ordinals :: TestData Integer) ]- , mkTests "cardinal" EN.us_cardinal (EN.us_cardinals ∷ TestData ℤ)- , mkTests "ordinal" EN.us_ordinal (EN.us_ordinals ∷ TestData ℤ)+ , mkTests "cardinal" ENG.us_cardinal (ENG.us_cardinals :: TestData Integer)+ , mkTests "ordinal" ENG.us_ordinal (ENG.us_ordinals :: TestData Integer) ] ]- , testGroup "EO"+ , testGroup "EPO" [ testGroup "unique data"- [testUnique "cardinal" (EO.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" EO.cardinal (EO.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (EPO.cardinals :: TestData Integer)]+ , mkTests "cardinal" EPO.cardinal (EPO.cardinals :: TestData Integer) ]- , testGroup "ES"+ , testGroup "SPA" [ testGroup "unique data"- [testUnique "cardinal" (ES.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" ES.cardinal (ES.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (SPA.cardinals :: TestData Integer)]+ , mkTests "cardinal" SPA.cardinal (SPA.cardinals :: TestData Integer) ]- , testGroup "ET"+ , testGroup "SQI" [ testGroup "unique data"- [testUnique "cardinal" (ET.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (SQI.cardinals :: TestData Integer)] ]- , testGroup "FI"+ , testGroup "EKK" [ testGroup "unique data"- [ testUnique "cardinal" (FI.cardinals ∷ TestData ℤ)- , testUnique "ordinal" (FI.ordinals ∷ TestData ℤ)+ [testUnique "cardinal" (EKK.cardinals :: TestData Integer)]+ ]+ , testGroup "FIN"+ [ testGroup "unique data"+ [ testUnique "cardinal" (FIN.cardinals :: TestData Integer)+ , testUnique "ordinal" (FIN.ordinals :: TestData Integer) ]- , mkTests "cardinal" FI.cardinal (FI.cardinals ∷ TestData ℤ)- , mkTests "ordinal" FI.ordinal (FI.ordinals ∷ TestData ℤ)+ , mkTests "cardinal" FIN.cardinal (FIN.cardinals :: TestData Integer)+ , mkTests "ordinal" FIN.ordinal (FIN.ordinals :: TestData Integer) ]- , testGroup "FO"+ , testGroup "FAO" [ testGroup "unique data"- [testUnique "cardinal" (FO.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (FAO.cardinals :: TestData Integer)] ]- , testGroup "FR"+ , testGroup "FRA" [ testGroup "unique data"- [ testUnique "cardinal" (FR.cardinals ∷ TestData ℤ)- , testUnique "ordinal" (FR.ordinals ∷ TestData ℤ)+ [ testUnique "cardinal" (FRA.cardinals :: TestData Integer)+ , testUnique "ordinal" (FRA.ordinals :: TestData Integer) ]- , mkTests "cardinal" FR.cardinal (FR.cardinals ∷ TestData ℤ)- , mkTests "ordinal" FR.ordinal (FR.ordinals ∷ TestData ℤ)+ , mkTests "cardinal" FRA.cardinal (FRA.cardinals :: TestData Integer)+ , mkTests "ordinal" FRA.ordinal (FRA.ordinals :: TestData Integer) ]+ , testGroup "FRR"+ [ testGroup "unique data"+ [testUnique "cardinal" (FRR.cardinals :: TestData Integer)]+ ]+ , testGroup "FRA_JER"+ [ testGroup "unique data"+ [testUnique "cardinal" (FRA_JER.cardinals :: TestData Integer)]+ ] , testGroup "FUR" [ testGroup "unique data"- [testUnique "cardinal" (FUR.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" FUR.cardinal (FUR.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (FUR.cardinals :: TestData Integer)]+ , mkTests "cardinal" FUR.cardinal (FUR.cardinals :: TestData Integer) ] , testGroup "GCF_MTQ" [ testGroup "unique data"- [testUnique "cardinal" (GCF_MTQ.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (GCF_MTQ.cardinals :: TestData Integer)] ] , testGroup "GIL" [ testGroup "unique data"- [testUnique "cardinal" (GIL.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (GIL.cardinals :: TestData Integer)] ]- , testGroup "GL"+ , testGroup "GLG" [ testGroup "unique data"- [testUnique "cardinal" (GL.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (GLG.cardinals :: TestData Integer)] ] , testGroup "GSW" [ testGroup "unique data"- [testUnique "cardinal" (GSW.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" GSW.cardinal (GSW.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (GSW.cardinals :: TestData Integer)]+ , mkTests "cardinal" GSW.cardinal (GSW.cardinals :: TestData Integer) ]- , testGroup "GV"+ , testGroup "GLV" [ testGroup "unique data"- [testUnique "cardinal" (GV.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" GV.cardinal (GV.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (GLV.cardinals :: TestData Integer)]+ , mkTests "cardinal" GLV.cardinal (GLV.cardinals :: TestData Integer) ] , testGroup "HAI" [ testGroup "unique data"- [testUnique "cardinal" (HAI.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (HAI.cardinals :: TestData Integer)] ]- , testGroup "HE"+ , testGroup "HEB" [ testGroup "unique data"- [testUnique "cardinal" (HE.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" HE.cardinal (HE.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (HEB.cardinals :: TestData Integer)]+ , mkTests "cardinal" HEB.cardinal (HEB.cardinals :: TestData Integer) ] , testGroup "HOP" [ testGroup "unique data"- [testUnique "cardinal" (HOP.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" HOP.cardinal (HOP.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (HOP.cardinals :: TestData Integer)]+ , mkTests "cardinal" HOP.cardinal (HOP.cardinals :: TestData Integer) ]- , testGroup "HR"+ , testGroup "HRV" [ testGroup "unique data"- [testUnique "cardinal" (HR.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (HRV.cardinals :: TestData Integer)] ]- , testGroup "HU"+ , testGroup "HAT" [ testGroup "unique data"- [testUnique "cardinal" (HU.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (HAT.cardinals :: TestData Integer)] ]- , testGroup "HY"+ , testGroup "HUN" [ testGroup "unique data"- [testUnique "cardinal" (HY.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (HUN.cardinals :: TestData Integer)] ]- , testGroup "IT"+ , testGroup "HUP" [ testGroup "unique data"- [testUnique "cardinal" (IT.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" IT.cardinal (IT.cardinals ∷ TestData ℤ)- , mkTests "ordinal" IT.ordinal (IT.ordinals ∷ TestData ℤ)+ [testUnique "cardinal" (HUP.cardinals :: TestData Integer)] ]- , testGroup "JA"+ , testGroup "HUR"+ [ testGroup "unique data"+ [testUnique "cardinal" (HUR.cardinals :: TestData Integer)]+ ]+ , testGroup "HYE"+ [ testGroup "unique data"+ [testUnique "cardinal" (HYE.cardinals :: TestData Integer)]+ ]+ , testGroup "IND"+ [ testGroup "unique data"+ [testUnique "cardinal" (IND.cardinals :: TestData Integer)]+ ]+ , testGroup "IBO"+ [ testGroup "unique data"+ [testUnique "cardinal" (IBO.cardinals :: TestData Integer)]+ ]+ , testGroup "INH"+ [ testGroup "unique data"+ [testUnique "cardinal" (INH.cardinals :: TestData Integer)]+ ]+ , testGroup "ITA"+ [ testGroup "unique data"+ [testUnique "cardinal" (ITA.cardinals :: TestData Integer)]+ , mkTests "cardinal" ITA.cardinal (ITA.cardinals :: TestData Integer)+ , mkTests "ordinal" ITA.ordinal (ITA.ordinals :: TestData Integer)+ ]+ , testGroup "IZH"+ [ testGroup "unique data"+ [testUnique "cardinal" (IZH.cardinals :: TestData Integer)]+ ]+ , testGroup "JPN" [ testGroup "preferred" [ testGroup "unique data"- [testUnique "cardinal" (JA.preferred_cardinals ∷ TestData ℤ)]- , mkTests "cardinal" JA.preferred_cardinal- (JA.preferred_cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (JPN.preferred_cardinals :: TestData Integer)]+ , mkTests "cardinal" JPN.preferred_cardinal+ (JPN.preferred_cardinals :: TestData Integer) ] , testGroup "kanji" [ testGroup "unique data"- [testUnique "cardinal" (JA.kanji_cardinals ∷ TestData ℤ)]- , mkTests "cardinal" JA.kanji_cardinal (JA.kanji_cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (JPN.kanji_cardinals :: TestData Integer)]+ , mkTests "cardinal" JPN.kanji_cardinal (JPN.kanji_cardinals :: TestData Integer) ] , testGroup "daiji" [ testGroup "unique data"- [testUnique "cardinal" (JA.daiji_cardinals ∷ TestData ℤ)]- , mkTests "cardinal" JA.daiji_cardinal (JA.daiji_cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (JPN.daiji_cardinals :: TestData Integer)]+ , mkTests "cardinal" JPN.daiji_cardinal (JPN.daiji_cardinals :: TestData Integer) ] ] , testGroup "KAP" [ testGroup "unique data"- [testUnique "cardinal" (KAP.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (KAP.cardinals :: TestData Integer)] ] , testGroup "KEA" [ testGroup "unique data"- [testUnique "cardinal" (KEA.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (KEA.cardinals :: TestData Integer)] ]- , testGroup "LA"+ , testGroup "KLB" [ testGroup "unique data"- [testUnique "cardinal" (LA.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" LA.cardinal (LA.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (KLB.cardinals :: TestData Integer)] ]+ , testGroup "KMR"+ [ testGroup "unique data"+ [testUnique "cardinal" (KMR.cardinals :: TestData Integer)]+ ]+ , testGroup "KRL"+ [ testGroup "unique data"+ [testUnique "cardinal" (KRL.cardinals :: TestData Integer)]+ ]+ , testGroup "LAT"+ [ testGroup "unique data"+ [testUnique "cardinal" (LAT.cardinals :: TestData Integer)]+ , mkTests "cardinal" LAT.cardinal (LAT.cardinals :: TestData Integer)+ ]+ , testGroup "LTZ"+ [ testGroup "unique data"+ [testUnique "cardinal" (LTZ.cardinals :: TestData Integer)]+ ]+ , testGroup "LIV"+ [ testGroup "unique data"+ [testUnique "cardinal" (LIV.cardinals :: TestData Integer)]+ ] , testGroup "LLD" [ testGroup "unique data"- [testUnique "cardinal" (LLD.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" LLD.cardinal (LLD.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (LLD.cardinals :: TestData Integer)]+ , mkTests "cardinal" LLD.cardinal (LLD.cardinals :: TestData Integer) ]- , testGroup "MG"+ , testGroup "LMO" [ testGroup "unique data"- [testUnique "cardinal" (MG.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" MG.cardinal (MG.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (LMO.cardinals :: TestData Integer)] ]+ , testGroup "LIN"+ [ testGroup "unique data"+ [testUnique "cardinal" (LIN.cardinals :: TestData Integer)]+ ]+ , testGroup "LIT"+ [ testGroup "unique data"+ [testUnique "cardinal" (LIT.cardinals :: TestData Integer)]+ ]+ , testGroup "LAV"+ [ testGroup "unique data"+ [testUnique "cardinal" (LAV.cardinals :: TestData Integer)]+ ]+ , testGroup "MLG"+ [ testGroup "unique data"+ [testUnique "cardinal" (MLG.cardinals :: TestData Integer)]+ , mkTests "cardinal" MLG.cardinal (MLG.cardinals :: TestData Integer)+ ]+ , testGroup "MIC"+ [ testGroup "unique data"+ [testUnique "cardinal" (MIC.cardinals :: TestData Integer)]+ ]+ , testGroup "MIN"+ [ testGroup "unique data"+ [testUnique "cardinal" (MIN.cardinals :: TestData Integer)]+ ]+ , testGroup "MNK"+ [ testGroup "unique data"+ [testUnique "cardinal" (MNK.cardinals :: TestData Integer)]+ ] , testGroup "MOH" [ testGroup "unique data"- [testUnique "cardinal" (MOH.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (MOH.cardinals :: TestData Integer)] ]- , testGroup "NL"+ , testGroup "NEE" [ testGroup "unique data"- [ testUnique "cardinal" (NL.cardinals ∷ TestData ℤ)- , testUnique "ordinal" (NL.ordinals ∷ TestData ℤ)- , testUnique "partitive" (NL.partitives ∷ TestData (ℤ, ℤ))- , testUnique "multiplicative" (NL.multiplicatives ∷ TestData ℤ)+ [testUnique "cardinal" (NEE.cardinals :: TestData Integer)]+ ]+ , testGroup "NEN"+ [ testGroup "unique data"+ [testUnique "cardinal" (NEN.cardinals :: TestData Integer)]+ , mkTests "cardinal" NEN.cardinal (NEN.cardinals :: TestData Integer)+ ]+ , testGroup "NLD"+ [ testGroup "unique data"+ [ testUnique "cardinal" (NLD.cardinals :: TestData Integer)+ , testUnique "ordinal" (NLD.ordinals :: TestData Integer)+ , testUnique "partitive" (NLD.partitives :: TestData (Integer, Integer))+ , testUnique "multiplicative" (NLD.multiplicatives :: TestData Integer) ]- , mkTests "cardinal" NL.cardinal (NL.cardinals ∷ TestData ℤ)- , mkTests "ordinal" NL.ordinal (NL.ordinals ∷ TestData ℤ)- , mkTests "partitive" NL.partitive (NL.partitives ∷ TestData (ℤ, ℤ))- , mkTests "multiplicative" NL.multiplicative (NL.multiplicatives ∷ TestData ℤ)+ , mkTests "cardinal" NLD.cardinal (NLD.cardinals :: TestData Integer)+ , mkTests "ordinal" NLD.ordinal (NLD.ordinals :: TestData Integer)+ , mkTests "partitive" NLD.partitive (NLD.partitives :: TestData (Integer, Integer))+ , mkTests "multiplicative" NLD.multiplicative (NLD.multiplicatives :: TestData Integer) ]- , testGroup "NO"+ , testGroup "NOB" [ testGroup "unique data"- [testUnique "cardinal" (NO.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" NO.cardinal (NO.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (NOB.cardinals :: TestData Integer)]+ , mkTests "cardinal" NOB.cardinal (NOB.cardinals :: TestData Integer) ] , testGroup "NQM" [ testGroup "unique data"- [testUnique "cardinal" (NQM.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" NQM.cardinal (NQM.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (NQM.cardinals :: TestData Integer)]+ , mkTests "cardinal" NQM.cardinal (NQM.cardinals :: TestData Integer) ]- , testGroup "OJ"+ , testGroup "NAV" [ testGroup "unique data"- [testUnique "cardinal" (OJ.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" OJ.cardinal (OJ.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (NAV.cardinals :: TestData Integer)] ]+ , testGroup "OCI"+ [ testGroup "unique data"+ [testUnique "cardinal" (OCI.cardinals :: TestData Integer)]+ ]+ , testGroup "OJI"+ [ testGroup "unique data"+ [testUnique "cardinal" (OJI.cardinals :: TestData Integer)]+ , mkTests "cardinal" OJI.cardinal (OJI.cardinals :: TestData Integer)+ ]+ , testGroup "ONE"+ [ testGroup "unique data"+ [testUnique "cardinal" (ONE.cardinals :: TestData Integer)]+ ]+ , testGroup "ORM"+ [ testGroup "unique data"+ [testUnique "cardinal" (ORM.cardinals :: TestData Integer)]+ ] , testGroup "PAA" [ testGroup "unique data"- [testUnique "cardinal" (PAA.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (PAA.cardinals :: TestData Integer)] ] , testGroup "PDC" [ testGroup "unique data"- [testUnique "cardinal" (PDC.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" PDC.cardinal (PDC.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (PDC.cardinals :: TestData Integer)]+ , mkTests "cardinal" PDC.cardinal (PDC.cardinals :: TestData Integer) ]- , testGroup "PL"+ , testGroup "POL" [ testGroup "unique data"- [testUnique "cardinal" (PL.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" PL.cardinal (PL.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (POL.cardinals :: TestData Integer)]+ , mkTests "cardinal" POL.cardinal (POL.cardinals :: TestData Integer) ]- , testGroup "PT"+ , testGroup "POR" [ testGroup "unique data"- [testUnique "cardinal" (PT.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" PT.cardinal (PT.cardinals ∷ TestData ℤ)- , mkTests "ordinal" PT.ordinal (PT.ordinals ∷ TestData ℤ)+ [testUnique "cardinal" (POR.cardinals :: TestData Integer)]+ , mkTests "cardinal" POR.cardinal (POR.cardinals :: TestData Integer)+ , mkTests "ordinal" POR.ordinal (POR.ordinals :: TestData Integer) ] , testGroup "RMN_DZA" [ testGroup "unique data"- [testUnique "cardinal" (RMN_DZA.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (RMN_DZA.cardinals :: TestData Integer)] ]- , testGroup "RO"+ , testGroup "RMY_KAL" [ testGroup "unique data"- [testUnique "cardinal" (RO.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (RMY_KAL.cardinals :: TestData Integer)] ]- , testGroup "RU"+ , testGroup "RON" [ testGroup "unique data"- [testUnique "cardinal" (RU.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" RU.cardinal (RU.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (RON.cardinals :: TestData Integer)] ]+ , testGroup "RUS"+ [ testGroup "unique data"+ [testUnique "cardinal" (RUS.cardinals :: TestData Integer)]+ , mkTests "cardinal" RUS.cardinal (RUS.cardinals :: TestData Integer)+ ] , testGroup "SCO" [ testGroup "unique data"- [testUnique "cardinal" (SCO.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" SCO.cardinal (SCO.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (SCO.cardinals :: TestData Integer)]+ , mkTests "cardinal" SCO.cardinal (SCO.cardinals :: TestData Integer) ]- , testGroup "SV"+ , testGroup "SME" [ testGroup "unique data"- [ testUnique "cardinal" (SV.cardinals ∷ TestData ℤ)- , testUnique "ordinal" (SV.ordinals ∷ TestData ℤ)+ [testUnique "cardinal" (SME.cardinals :: TestData Integer)]+ ]+ , testGroup "SMN"+ [ testGroup "unique data"+ [testUnique "cardinal" (SMN.cardinals :: TestData Integer)]+ ]+ , testGroup "SWE"+ [ testGroup "unique data"+ [ testUnique "cardinal" (SWE.cardinals :: TestData Integer)+ , testUnique "ordinal" (SWE.ordinals :: TestData Integer) ]- , mkTests "cardinal" SV.cardinal (SV.cardinals ∷ TestData ℤ)- , mkTests "ordinal" SV.ordinal (SV.ordinals ∷ TestData ℤ)+ , mkTests "cardinal" SWE.cardinal (SWE.cardinals :: TestData Integer)+ , mkTests "ordinal" SWE.ordinal (SWE.ordinals :: TestData Integer) ] , testGroup "TAR" [ testGroup "unique data"- [testUnique "cardinal" (TAR.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (TAR.cardinals :: TestData Integer)] ]- , testGroup "TR"+ , testGroup "TGS" [ testGroup "unique data"- [testUnique "cardinal" (TR.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" TR.cardinal (TR.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (TGS.cardinals :: TestData Integer)] ]- , testGroup "WO"+ , testGroup "TUR" [ testGroup "unique data"- [testUnique "cardinal" (WO.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" WO.cardinal (WO.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (TUR.cardinals :: TestData Integer)]+ , mkTests "cardinal" TUR.cardinal (TUR.cardinals :: TestData Integer) ]+ , testGroup "WMW"+ [ testGroup "unique data"+ [testUnique "cardinal" (WMW.cardinals :: TestData Integer)]+ ]+ , testGroup "WOL"+ [ testGroup "unique data"+ [testUnique "cardinal" (WOL.cardinals :: TestData Integer)]+ , mkTests "cardinal" WOL.cardinal (WOL.cardinals :: TestData Integer)+ ]+ , testGroup "XPQ"+ [ testGroup "unique data"+ [testUnique "cardinal" (XPQ.cardinals :: TestData Integer)]+ ] , testGroup "YOR" [ testGroup "unique data"- [testUnique "cardinal" (YOR.cardinals ∷ TestData ℤ)]- , mkTests "cardinal" YOR.cardinal (YOR.cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (YOR.cardinals :: TestData Integer)]+ , mkTests "cardinal" YOR.cardinal (YOR.cardinals :: TestData Integer) ]+ , testGroup "ZAI"+ [ testGroup "unique data"+ [testUnique "cardinal" (ZAI.cardinals :: TestData Integer)]+ ] , testGroup "ZAQ" [ testGroup "unique data"- [testUnique "cardinal" (ZAQ.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (ZAQ.cardinals :: TestData Integer)] ]- , testGroup "ZH"+ , testGroup "ZHO" [ testGroup "characters (traditional)" [ testGroup "unique data"- [testUnique "cardinal" (ZH.trad_cardinals ∷ TestData ℤ)]- , mkTests "cardinal" ZH.trad_cardinal (ZH.trad_cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (ZHO.trad_cardinals :: TestData Integer)]+ , mkTests "cardinal" ZHO.trad_cardinal (ZHO.trad_cardinals :: TestData Integer) ] , testGroup "characters (simplified)" [ testGroup "unique data"- [testUnique "cardinal" (ZH.simpl_cardinals ∷ TestData ℤ)]- , mkTests "cardinal" ZH.simpl_cardinal (ZH.simpl_cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (ZHO.simpl_cardinals :: TestData Integer)]+ , mkTests "cardinal" ZHO.simpl_cardinal (ZHO.simpl_cardinals :: TestData Integer) ] , testGroup "financial characters (traditional)" [ testGroup "unique data"- [testUnique "cardinal" (ZH.finance_trad_cardinals ∷ TestData ℤ)]- , mkTests "cardinal" ZH.finance_trad_cardinal (ZH.finance_trad_cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (ZHO.finance_trad_cardinals :: TestData Integer)]+ , mkTests "cardinal" ZHO.finance_trad_cardinal (ZHO.finance_trad_cardinals :: TestData Integer) ] , testGroup "financial characters (simplified)" [ testGroup "unique data"- [testUnique "cardinal" (ZH.finance_simpl_cardinals ∷ TestData ℤ)]- , mkTests "cardinal" ZH.finance_simpl_cardinal (ZH.finance_simpl_cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (ZHO.finance_simpl_cardinals :: TestData Integer)]+ , mkTests "cardinal" ZHO.finance_simpl_cardinal (ZHO.finance_simpl_cardinals :: TestData Integer) ] , testGroup "pinyin" [ testGroup "unique data"- [testUnique "cardinal" (ZH.pinyin_cardinals ∷ TestData ℤ)]- , mkTests "cardinal" ZH.pinyin_cardinal (ZH.pinyin_cardinals ∷ TestData ℤ)+ [testUnique "cardinal" (ZHO.pinyin_cardinals :: TestData Integer)]+ , mkTests "cardinal" ZHO.pinyin_cardinal (ZHO.pinyin_cardinals :: TestData Integer) ]+ ] , testGroup "ZPC" [ testGroup "unique data"- [testUnique "cardinal" (ZPC.cardinals ∷ TestData ℤ)]+ [testUnique "cardinal" (ZPC.cardinals :: TestData Integer)] ]+ , testGroup "ZPL"+ [ testGroup "unique data"+ [testUnique "cardinal" (ZPL.cardinals :: TestData Integer)] ] ] @@ -598,7 +795,7 @@ {- -- TODO: this takes way to long for large values (10 ^ 60000 - 1)-testBounds ∷ Text → (ℤ → Maybe Text) → (ℤ, ℤ) → Test+testBounds :: Text -> (Integer -> Maybe Text) -> (Integer, Integer) -> Test testBounds name conversion bounds@(lo, hi) = testGroup name [ testCase "lower bound" $ assertBool "conversion error" $ checkConv lo@@ -606,68 +803,68 @@ -- , testProperty "in between" $ forAll (choose bounds) checkConv ] where- checkConv ∷ ℤ → Bool- checkConv = isJust ∘ conversion+ checkConv :: Integer -> Bool+ checkConv = isJust . conversion -} -testInf ∷ (GR.Inflection → GR.Inflection) → (GR.Inflection → Bool) → Assertion-testInf set test = assertBool "False" $ test $ set GR.defaultInflection+testInf :: (Inflection -> Inflection) -> (Inflection -> Bool) -> Assertion+testInf set test = assertBool "False" $ test $ set defaultInflection -intLog_pow10 ∷ Positive ℤ → Bool-intLog_pow10 (Positive x) = x ≡ intLog (dec x)+intLog_pow10 :: Positive Integer -> Bool+intLog_pow10 (Positive x) = x == intLog (dec x) -intLog_pow10m1 ∷ NonNegative ℤ → Bool-intLog_pow10m1 (NonNegative x) = x - 1 ≡ intLog (dec x) - 1+intLog_pow10m1 :: NonNegative Integer -> Bool+intLog_pow10m1 (NonNegative x) = x - 1 == intLog (dec x) - 1 -intLog_mul ∷ Positive ℤ → Positive ℤ → Bool-intLog_mul (Positive x) (Positive y) = intLog (dec x ⋅ dec y) ≡ intLog (dec x) + intLog (dec y)+intLog_mul :: Positive Integer -> Positive Integer -> Bool+intLog_mul (Positive x) (Positive y) = intLog (dec x * dec y) == intLog (dec x) + intLog (dec y) -mkTests ∷ ∀ α. (Show α)- ⇒ String- → (GR.Inflection → α → Maybe Text)- → TestData α- → Test-mkTests name f = testGroup name ∘ map perInflection+mkTests :: forall a. (Show a)+ => String+ -> (Inflection -> a -> Maybe Text)+ -> TestData a+ -> Test+mkTests name f = testGroup name . map perInflection where- perInflection ∷ (String, GR.Inflection, [(α, Text)]) → Test+ perInflection :: (String, Inflection, [(a, Text)]) -> Test perInflection (infName, inf, xs) = testGroup infName $ map (perValue inf) xs - perValue ∷ GR.Inflection → (α, Text) → Test+ perValue :: Inflection -> (a, Text) -> Test perValue inf (n, s) = testCase (show n) $ testConversion f inf n s -- | Tests whether the test data contains duplicates (different -- numbers with the same representation).-testUnique ∷ ∀ α. (Show α) ⇒ String → TestData α → Test-testUnique name = testGroup name ∘ map perInflection+testUnique :: forall a. (Show a) => String -> TestData a -> Test+testUnique name = testGroup name . map perInflection where- perInflection ∷ (String, inf, [(α, Text)]) → Test+ perInflection :: (String, inf, [(a, Text)]) -> Test perInflection (infName, _, xs) = testCase infName $ unique xs - unique ∷ [(α, Text)] → Assertion+ unique :: [(a, Text)] -> Assertion unique xs = when (length ys > 0) $ assertFailure $ intercalate "\n" $ map msg ys where- ys ∷ [[(α, Text)]]- ys = filter ((1 <) ∘ length)- $ groupBy ((≡) `on` snd)+ ys :: [[(a, Text)]]+ ys = filter ((1 <) . length)+ $ groupBy ((==) `on` snd) $ sortBy (compare `on` snd) xs - msg ∷ [(α, Text)] → String+ msg :: [(a, Text)] -> String msg xs = let (_, s) = head xs in printf "The string \"%s\" is associated with multiple values: %s" (T.unpack s)- (intercalate ", " $ map (show ∘ fst) xs)+ (intercalate ", " $ map (show . fst) xs) -testConversion ∷ (Show α)- ⇒ (GR.Inflection → α → Maybe Text)- → GR.Inflection- → α- → Text- → Assertion+testConversion :: (Show a)+ => (Inflection -> a -> Maybe Text)+ -> Inflection+ -> a+ -> Text+ -> Assertion testConversion f inf n s = let r = f inf n- in when (r ≢ Just s)+ in when (r /= Just s) $ assertFailure $ printf "Expected %s = \"%s\" but got \"%s\"" (show n)
+ src/GHC/Integer/Logarithms/Compat.hs view
@@ -0,0 +1,120 @@+{-# LANGUAGE CPP, MagicHash, UnboxedTuples #-}++module GHC.Integer.Logarithms.Compat+ ( integerLog2#+ , wordLog2#+ ) where++#if __GLASGOW_HASKELL__ >= 702+import GHC.Integer.Logarithms (integerLog2#, wordLog2#)+#else+#include "MachDeps.h"++import GHC.Integer.GMP.Internals (Integer(S#, J#))++import GHC.Base ( indexWordArray#, uncheckedIShiftL#, indexInt8Array#+ , word2Int#, ByteArray#, newByteArray#, writeInt8Array#+ , (==#), (<#), (+#), (*#)+ , unsafeFreezeByteArray#, realWorld#+ , neWord#, (-#), uncheckedShiftRL#+ , Int#, Word#, int2Word#+ )++#if (WORD_SIZE_IN_BITS != 32) && (WORD_SIZE_IN_BITS != 64)+#error Only word sizes 32 and 64 are supported.+#endif+++#if WORD_SIZE_IN_BITS == 32++#define WSHIFT 5+#define MMASK 31++#else++#define WSHIFT 6+#define MMASK 63++#endif++-- | Calculate the integer base 2 logarithm of an 'Integer'.+-- The calculation is much more efficient than for the general case.+--+-- The argument must be strictly positive, that condition is /not/ checked.+integerLog2# :: Integer -> Int#+integerLog2# (S# i) = wordLog2# (int2Word# i)+integerLog2# (J# s ba) = check (s -# 1#)+ where+ check i = case indexWordArray# ba i of+ 0## -> check (i -# 1#)+ w -> wordLog2# w +# (uncheckedIShiftL# i WSHIFT#)++-- | This function calculates the integer base 2 logarithm of a 'Word#'.+-- @'wordLog2#' 0## = -1#@.+{-# INLINE wordLog2# #-}+wordLog2# :: Word# -> Int#+wordLog2# w =+ case leadingZeros of+ BA lz ->+ let zeros u = indexInt8Array# lz (word2Int# u) in+#if WORD_SIZE_IN_BITS == 64+ case uncheckedShiftRL# w 56# of+ a ->+ if a `neWord#` 0##+ then 64# -# zeros a+ else+ case uncheckedShiftRL# w 48# of+ b ->+ if b `neWord#` 0##+ then 56# -# zeros b+ else+ case uncheckedShiftRL# w 40# of+ c ->+ if c `neWord#` 0##+ then 48# -# zeros c+ else+ case uncheckedShiftRL# w 32# of+ d ->+ if d `neWord#` 0##+ then 40# -# zeros d+ else+#endif+ case uncheckedShiftRL# w 24# of+ e ->+ if e `neWord#` 0##+ then 32# -# zeros e+ else+ case uncheckedShiftRL# w 16# of+ f ->+ if f `neWord#` 0##+ then 24# -# zeros f+ else+ case uncheckedShiftRL# w 8# of+ g ->+ if g `neWord#` 0##+ then 16# -# zeros g+ else 8# -# zeros w++-- Lookup table+data BA = BA ByteArray#++leadingZeros :: BA+leadingZeros =+ let mkArr s =+ case newByteArray# 256# s of+ (# s1, mba #) ->+ case writeInt8Array# mba 0# 9# s1 of+ s2 ->+ let fillA lim val idx st =+ if idx ==# 256#+ then st+ else if idx <# lim+ then case writeInt8Array# mba idx val st of+ nx -> fillA lim val (idx +# 1#) nx+ else fillA (2# *# lim) (val -# 1#) idx st+ in case fillA 2# 8# 1# s2 of+ s3 -> case unsafeFreezeByteArray# mba s3 of+ (# _, ba #) -> ba+ in case mkArr realWorld# of+ b -> BA b+#endif
+ src/Math/NumberTheory/Logarithms.hs view
@@ -0,0 +1,74 @@+{-# LANGUAGE CPP, MagicHash, UnboxedTuples #-}++-- | Integer logarithm, copied from Daniel Fischer's @arithmoi@+module Math.NumberTheory.Logarithms ( integerLog10' ) where++#if defined(INTEGER_SIMPLE) && __GLASGOW_HASKELL__ < 702+import GHC.Integer.Logarithms (integerLogBase#)+import GHC.Base (Int(I#))++-- | Only defined for positive inputs!+integerLog10' :: Integer -> Int+integerLog10' m = I# (integerLogBase# 10 m)++#else+import GHC.Base ( Int(I#), Word#, Int#+ , int2Word#, eqWord#, neWord#, (-#), and#, uncheckedShiftRL#++#if __GLASGOW_HASKELL__ >= 707+ , isTrue#+#endif+ )++import GHC.Integer.Logarithms.Compat (integerLog2#, wordLog2#)++-- | Only defined for positive inputs!+integerLog10' :: Integer -> Int+integerLog10' n+ | n < 10 = 0+ | n < 100 = 1+ | otherwise = ex + integerLog10' (n `quot` integerPower 10 ex)+ where+ ln = I# (integerLog2# n)+ -- u/v is a good approximation of log 2/log 10+ u = 1936274+ v = 6432163+ -- so ex is a good approximation to integerLogBase 10 n+ ex = fromInteger ((u * fromIntegral ln) `quot` v)++-- | Power of an 'Integer' by the left-to-right repeated squaring algorithm.+-- This needs two multiplications in each step while the right-to-left+-- algorithm needs only one multiplication for 0-bits, but here the+-- two factors always have approximately the same size, which on average+-- gains a bit when the result is large.+--+-- For small results, it is unlikely to be any faster than '(^)', quite+-- possibly slower (though the difference shouldn't be large), and for+-- exponents with few bits set, the same holds. But for exponents with+-- many bits set, the speedup can be significant.+--+-- /Warning:/ No check for the negativity of the exponent is performed,+-- a negative exponent is interpreted as a large positive exponent.+integerPower :: Integer -> Int -> Integer+integerPower b (I# e#) = power b (int2Word# e#)++power :: Integer -> Word# -> Integer+power b w#+ | isTrue# (w# `eqWord#` 0##) = 1+ | isTrue# (w# `eqWord#` 1##) = b+ | otherwise = go (wordLog2# w# -# 1#) b (b*b)+ where+ go 0# l h = if isTrue# ((w# `and#` 1##) `eqWord#` 0##) then l*l else (l*h)+ go i# l h+ | w# `hasBit#` i# = go (i# -# 1#) (l*h) (h*h)+ | otherwise = go (i# -# 1#) (l*l) (l*h)++-- | A raw version of testBit for 'Word#'.+hasBit# :: Word# -> Int# -> Bool+hasBit# w# i# = isTrue# (((w# `uncheckedShiftRL#` i#) `and#` 1##) `neWord#` 0##)++#if __GLASGOW_HASKELL__ < 707+isTrue# :: Bool -> Bool+isTrue# = id+#endif+#endif
src/Text/Numeral.hs view
@@ -13,9 +13,13 @@ -- ** Rendering -- $render - module Text.Numeral.Exp.Reified+ -- ** Examples+ -- $examples++ module Text.Numeral.Exp , module Text.Numeral.Render , module Text.Numeral.Rules+ , module Text.Numeral.Grammar ) where @@ -23,50 +27,100 @@ -- Imports ------------------------------------------------------------------------------- -import "this" Text.Numeral.Exp.Reified+import "this" Text.Numeral.Exp import "this" Text.Numeral.Render import "this" Text.Numeral.Rules+import "this" Text.Numeral.Grammar ------------------------------------------------------------------------------- -- 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 'Text' value.-+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 'Text' value. -} {- $dsl- Numerals are represented by a small expression language defined in the-"Text.Numeral.Exp" module. This language is also reified as the-concrete type 'Exp' in the "Text.Numeral.Exp.Reified" module.-+"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.-+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. -} {- $render+Finally, the "Text.Numeral.Render" module is responsible for converting the+numeral expression language to a 'Text' value. This happens via the 'render'+function. Render is parametrised with a 'Repr' value and with an+'Inflection'. The 'Repr' contains all the knowledge on how to convert the+abstract expression to a concrete 'Text' value. The 'Inflection' is used for+languages where number words change based on a number of grammatical categories+such as case, gender or number.+-} -Finally, the "Text.Numeral.Render" module is responsible for-converting the numeral expression language to a 'Text' value. This-happens via the 'render' function. Render is parametrised with a-'Repr' value and with an 'Inflection'. The 'Repr' contains all the-knowledge on how to convert the abstract expression to a concrete-'Text' value. The 'Inflection' is used for languages where number-words change based on a number of grammatical categories such as case,-gender or number. The expression itself is passed as a concrete 'Exp'-value.+{- $examples+The use of this package is best understood with some examples. First some+English number names, both British and US variants: +>>> import qualified Text.Numeral.Language.EN as EN+>>> EN.uk_cardinal defaultInflection 123 :: Maybe Text+Just "one hundred and twenty-three"+>>> EN.us_cardinal defaultInflection (10^50 + 42) :: Maybe Text+Just "one hundred quindecillion forty-two"++French, which contains some traces of a base 20 system:++>>> import qualified Text.Numeral.Language.FR as FR+>>> FR.cardinal defaultInflection (-99) :: Maybe Text+Just "moins quatre-vingt-dix-neuf"++Conversions can fail. Alamblak, a language spoken by a few people in Papua New+Guinea, has no representation for negative numbers:++>>> import qualified Text.Numeral.Language.AMP as AMP+>>> AMP.cardinal defaultInflection (-3) :: Maybe Text+Nothing++Some languages have multiple scripts and methods for writing number names. Take+Chinese for example, which can be written using Han characters or transcribed to+the Latin script using Pinyin.++Traditional Chinese characters:++>>> import qualified Text.Numeral.Language.ZH as ZH+>>> ZH.trad_cardinal defaultInflection 123456 :: Maybe Text+Just "十二萬三千四百五十六"++Simplified characters for use in financial contexts:++>>> ZH.finance_simpl_cardinal defaultInflection 123456 :: Maybe Text+Just "拾贰万参仟肆伯伍拾陆"++Transcribed using Pinyin:++>>> ZH.pinyin_cardinal defaultInflection 123456 :: Maybe Text+Just "shíèrwàn sānqiān sìbǎi wǔshí liù"++Using the 'struct' functions you can see the grammatical structure of number+names. Because the results of these functions are polymorphic you need to+specify a specific type.++>>> import qualified Text.Numeral.Language.NL as NL+>>> NL.struct 123 :: Integer+123+>>> import Text.Numeral+>>> NL.struct 123 :: Exp+Add (Lit 100) (Add (Lit 3) (Mul (Lit 2) (Lit 10)))++Compare with:++>>> NL.cardinal defaultInflection 123 :: Maybe Text+Just "honderddrieëntwintig"++100 (honderd) + (3 (drie) + (ën) 2 (twin) * 10 (tig)) -}
src/Text/Numeral/BigNum.hs view
@@ -1,9 +1,3 @@-{-# LANGUAGE NoImplicitPrelude- , OverloadedStrings- , PackageImports- , UnicodeSyntax- #-}- module Text.Numeral.BigNum ( cardinal , rule@@ -24,21 +18,11 @@ -- Imports ------------------------------------------------------------------------------- -import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Functor ( (<$>) )-import "base" Data.Maybe ( Maybe(Nothing, Just) )-import "base" Prelude ( Integral, (-) )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.List.Unicode ( (∈) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import "containers-unicode-symbols" Data.Map.Unicode ( (∪) )-import "this" Text.Numeral-import "this" Text.Numeral.Misc ( dec )-import qualified "containers" Data.Map as M ( Map, fromList, lookup )-import qualified "this" Text.Numeral.Exp as E+import "base" Data.Function ( fix )+import "base" Data.Monoid ( (<>) )+import qualified "containers" Data.Map as M+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec ) import "text" Data.Text ( Text ) @@ -46,10 +30,10 @@ -- Language of Big Numbers -------------------------------------------------------------------------------- -cardinal ∷ (Integral α) ⇒ inf → α → Maybe Text-cardinal inf = render cardinalRepr inf ∘ (pos $ fix rule)+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = render cardinalRepr inf . (pos $ fix rule) -rule ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ Rule α β+rule :: (Integral a) => Rule a rule = findRule ( 1, lit ) [ ( 11, add 10 L ) , ( 20, mul 10 L L)@@ -62,14 +46,14 @@ ] (dec 4 - 1) -cardinalRepr ∷ Repr inf+cardinalRepr :: Repr cardinalRepr =- defaultRepr { reprValue = \_ n → M.lookup n symMap- , reprAdd = Just $ \_ _ _ → ""- , reprMul = Just $ \_ _ _ → ""+ defaultRepr { reprValue = \_ n -> M.lookup n symMap+ , reprAdd = Just $ \_ _ _ -> ""+ , reprMul = Just $ \_ _ _ -> "" } -symMap ∷ (Integral α) ⇒ M.Map α (Ctx (Exp i) → Text)+symMap :: (Integral a) => M.Map a (Ctx Exp -> Text) symMap = M.fromList [ (1, forms "m" "un" "un" "" "") , (2, forms "b" "duo" "duo" "vi" "du")@@ -80,29 +64,29 @@ , (7, forms "sept" "septen" "septem" "septua" "septin") , (8, forms "oct" "octo" "octo" "octo" "octin") , (9, forms "non" "novem" "novem" "nona" "non")- , (10, \c → case c of- CtxAdd _ (Lit 100) _ → "deci"- CtxMul _ _ (CtxAdd L (Lit 100) _) → "ginta"- CtxMul {} → "gint"- _ → "dec"+ , (10, \c -> case c of+ CtxAdd _ (Lit 100) _ -> "deci"+ CtxMul _ _ (CtxAdd L (Lit 100) _) -> "ginta"+ CtxMul {} -> "gint"+ _ -> "dec" )- , (100, \c → case c of+ , (100, \c -> case c of CtxMul _ (Lit n) _- | n ∈ [2,3,6] → "cent"- | otherwise → "gent"- _ → "cent"+ | n `elem` [2,3,6] -> "cent"+ | otherwise -> "gent"+ _ -> "cent" ) , (1000, const "millin") ] -forms ∷ Text → Text → Text → Text → Text → Ctx (Exp i) → Text+forms :: Text -> Text -> Text -> Text -> Text -> Ctx Exp -> Text forms t a1 a2 m1 m2 ctx = case ctx of- CtxAdd _ (Lit 10) _ → a1- CtxAdd {} → a2- CtxMul _ (Lit 10) _ → m1- CtxMul {} → m2- _ → t+ CtxAdd _ (Lit 10) _ -> a1+ CtxAdd {} -> a2+ CtxMul _ (Lit 10) _ -> m1+ CtxMul {} -> m2+ _ -> t --------------------------------------------------------------------------------@@ -112,42 +96,42 @@ -- | Function that renders the postfix part of a large number name. Or -- more simply put, this calculates the \"illion\" part of -- \"million\", \"billion\", etc.-type PostfixRepr i = i -- ^ Current inflection.- → Ctx (Exp i) -- ^ Context.- → Text -- ^ Postfix representation.+type PostfixRepr = Inflection -- ^ Current inflection.+ -> Ctx Exp -- ^ Context.+ -> Text -- ^ Postfix representation. -scaleRepr ∷ PostfixRepr i- → [(ℤ, Ctx (Exp i) → Text)] -- ^ Additional symbol map entries.- → ScaleRepr i-scaleRepr pf syms inf _ _ e ctx = (⊕ pf inf ctx) <$> render repr inf e+scaleRepr :: PostfixRepr+ -> [(Integer, Ctx Exp -> Text)] -- ^ Additional symbol map entries.+ -> ScaleRepr+scaleRepr pf syms inf _ _ e ctx = (<> pf inf ctx) <$> render repr inf e where- repr = cardinalRepr { reprValue = \_ n → M.lookup n syms' }- syms' = M.fromList syms ∪ symMap+ repr = cardinalRepr { reprValue = \_ n -> M.lookup n syms' }+ syms' = M.fromList syms `M.union` symMap -pelletierRepr ∷ PostfixRepr i -- ^Postfix for offset 0 names.- → PostfixRepr i -- ^Postfix for offset 3 names.- → [(ℤ, Ctx (Exp i) → Text)] -- ^ Additional symbol map entries.- → ScaleRepr i+pelletierRepr :: PostfixRepr -- ^Postfix for offset 0 names.+ -> PostfixRepr -- ^Postfix for offset 3 names.+ -> [(Integer, Ctx Exp -> Text)] -- ^ Additional symbol map entries.+ -> ScaleRepr pelletierRepr pf0 pf3 syms inf- b o e ctx | o ≡ 0 = scaleRepr pf0 syms inf b o e ctx- | o ≡ 3 = scaleRepr pf3 syms inf b o e ctx+ b o e ctx | o == 0 = scaleRepr pf0 syms inf b o e ctx+ | o == 3 = scaleRepr pf3 syms inf b o e ctx | otherwise = Nothing -quantityName ∷ Text → Text → PostfixRepr i+quantityName :: Text -> Text -> PostfixRepr quantityName s p _ ctx = case ctx of- CtxMul _ (Lit 1) _ → s- CtxMul {} → p- _ → s+ CtxMul _ (Lit 1) _ -> s+ CtxMul {} -> p+ _ -> s -ordQuantityName ∷ Text → Text → Text → Text → PostfixRepr i+ordQuantityName :: Text -> Text -> Text -> Text -> PostfixRepr ordQuantityName sc so pc po _ ctx = case ctx of- CtxMul _ (Lit 1) _ | outside → so- | otherwise → sc- CtxMul {} | outside → po- | otherwise → pc- _ | outside → so- | otherwise → sc+ CtxMul _ (Lit 1) _ | outside -> so+ | otherwise -> sc+ CtxMul {} | outside -> po+ | otherwise -> pc+ _ | outside -> so+ | otherwise -> sc where outside = isOutside R ctx
src/Text/Numeral/Entry.hs view
@@ -1,7 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- module Text.Numeral.Entry ( Conversion(..) , Entry(..)@@ -12,10 +8,8 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Maybe ( Maybe(Nothing) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import "this" Text.Numeral.Exp.Reified ( Exp )-import "this" Text.Numeral.Grammar.Reified ( Inflection )+import "this" Text.Numeral.Exp ( Exp )+import "this" Text.Numeral.Grammar ( Inflection ) import "text" Data.Text ( Text ) @@ -23,25 +17,25 @@ -- Language entry -------------------------------------------------------------------------------- -data Conversion α = Conversion- { toNumeral ∷ Inflection → α → Maybe Text- , toStructure ∷ α → Exp Inflection+data Conversion a = Conversion+ { toNumeral :: Inflection -> a -> Maybe Text+ , toStructure :: a -> Exp } data Entry = Entry- { entIso639_1 ∷ Maybe Text- , entIso639_2 ∷ [Text]- , entIso639_3 ∷ Maybe Text- , entNativeNames ∷ [Text]- , entEnglishName ∷ Maybe Text- , entVariant ∷ Maybe Text- , entCardinal ∷ Maybe (Conversion ℤ)- , entOrdinal ∷ Maybe (Conversion ℤ)- , entPartitive ∷ Maybe (Conversion (ℤ, ℤ))- , entMultiplicative ∷ Maybe (Conversion ℤ)+ { entIso639_1 :: Maybe Text+ , entIso639_2 :: [Text]+ , entIso639_3 :: Maybe Text+ , entNativeNames :: [Text]+ , entEnglishName :: Maybe Text+ , entVariant :: Maybe Text+ , entCardinal :: Maybe (Conversion Integer)+ , entOrdinal :: Maybe (Conversion Integer)+ , entPartitive :: Maybe (Conversion (Integer, Integer))+ , entMultiplicative :: Maybe (Conversion Integer) } -emptyEntry ∷ Entry+emptyEntry :: Entry emptyEntry = Entry { entIso639_1 = Nothing , entIso639_2 = []
src/Text/Numeral/Exp.hs view
@@ -1,144 +1,124 @@-{-# LANGUAGE NoImplicitPrelude- , PackageImports- , TypeFamilies- , TypeSynonymInstances- , UnicodeSyntax- #-}- module Text.Numeral.Exp- ( Unknown(unknown, isUnknown)- , Lit(lit)- , Neg(neg)- , Add(add)- , Mul(mul)- , Sub(sub)- , Frac(frac)- , Scale(scale)- , Dual(dual)- , Plural(plural)- , Inflection(..)+ ( Exp(..)+ , showExp+ -- , eval+ , evalScale+ , Side(L, R) ) where ------------------------------------------------------------------------------- -- Imports ------------------------------------------------------------------------------- -import "base" Data.Bool ( Bool(False) )-import "base" Data.Function ( const )-import "base" Prelude ( (+), (*), (^), subtract, negate, fromInteger, error )-import "base-unicode-symbols" Prelude.Unicode ( ℤ, (⋅) )-+import qualified "this" Text.Numeral.Grammar as G ---------------------------------------------------------------------------------- Expressions+-- Expression type ------------------------------------------------------------------------------- --- | An unknown value. This is used to signal that a value can not be--- represented in the expression language.------ Law: isUnknown unknown == True-class Unknown α where- unknown ∷ α- isUnknown ∷ α → Bool---- | A literal value.------ Example in English:------ > "three" = lit 3-class Lit α where lit ∷ ℤ → α---- | Negation of a value.------ Example in English:------ > "minus two" = neg (lit 2)-class Neg α where neg ∷ α → α---- | Addition of two values.------ Example in English:------ > "fifteen" = lit 5 `add` lit 10-class Add α where add ∷ α → α → α---- | Multiplication of two values.------ Example in English:------ > "thirty" = lit 3 `mul` lit 10-class Mul α where mul ∷ α → α → α---- | One value subtracted from another value.------ Example in Latin:------ > "duodēvīgintī" = lit 2 `sub` (lit 2 `mul` lit 10)-class Sub α where sub ∷ α → α → α---- | A fraction.------ Example in English:------ > "two thirds" = `frac` (lit 2) (lit 3)-class Frac α where frac ∷ α → α → α---- | A step in a scale of large values.------ Should be interpreted as @10 ^ (rank * base + offset)@.------ Example in English:------ > "quadrillion" = scale 3 3 4-class Scale α where- scale ∷ ℤ -- ^ Base.- → ℤ -- ^ Offset.- → α -- ^ Rank.- → α---- | A dual of a value.------ This is used in some languages that express some values as the dual--- of a smaller value. For instance, in Hebrew the number 20 is--- expressed as the dual of 10.-class Dual α where dual ∷ α → α+-- | An expression that represents the structure of a numeral.+data Exp+ = Unknown+ -- ^ An unknown value. This is used to signal that a value can+ -- not be represented in the expression language.+ | Lit Integer+ -- ^ A literal value.+ --+ -- Example in English:+ --+ -- > "three" = Lit 3+ | Neg Exp+ -- ^ Negation of an expression.+ --+ -- Example in English:+ --+ -- > "minus two" = Neg (Lit 2)+ | Add Exp Exp+ -- ^ Addition of two expressions.+ --+ -- Example in English:+ --+ -- > "fifteen" = Lit 5 `Add` Lit 10+ | Mul Exp Exp+ -- ^ Multiplication of two expressions.+ --+ -- Example in English:+ --+ -- > "thirty" = Lit 3 `Mul` Lit 10+ | Sub Exp Exp+ -- ^ One expression subtracted from another expression.+ --+ -- Example in Latin:+ --+ -- > "duodēvīgintī" = Lit 2 `Sub` (Lit 2 `Mul` Lit 10)+ | Frac Exp Exp+ -- ^ A fraction.+ --+ -- Example in English:+ --+ -- > "two thirds" = `Frac` (Lit 2) (Lit 3)+ | Scale Integer Integer Exp+ -- ^ A step in a scale of large values.+ --+ -- Should be interpreted as @10 ^ (rank * base + offset)@.+ --+ -- Example in English:+ --+ -- > "quadrillion" = Scale 3 3 4+ | ChangeCase (Maybe G.Case ) Exp+ | ChangeGender (Maybe G.Gender) Exp+ -- ^ A change of grammatical gender.+ --+ -- This is used in a language like Spanish where the inflection+ -- of a number word is not always constant. Specifically, in+ -- Spanish, large number names always have the masculine+ -- gender. So 'millón', 'billón' and the like are all+ -- masculine. This can result in the following number word:+ -- 10000001 = "un (masculine) millón una (feminine)"+ --+ -- Example in Spanish (with the context being Feminine):+ --+ -- > "un millón una" = ChangeGender (Just Masculine) (Lit 1) `Mul` Scale 3 3 1 `Add` Lit 1+ | ChangeNumber (Maybe G.Number) Exp --- | A plural of a value.------ This is used in some languages that express some values as the--- plural of a smaller value. For instance, in Hebrew the numbers--- [30,40..90] are expressed as the plurals of [3..9].-class Plural α where plural ∷ α → α+infixl 6 `Add`+infixl 6 `Sub`+infixl 7 `Mul` --- | A change of inflection.------ This is used in a language like Spanish where the inflection of a--- number word is not always constant. Specifically, in Spanish, large--- number names always have the masculine gender. So 'millón',--- 'billón' and the like are all masculine. This can result in the--- following number word: 10000001 = "un (masculine) millón una--- (feminine)"-class Inflection α where- type Inf α- inflection ∷ (Inf α → Inf α) → α → α+showExp :: Exp -> String+showExp Unknown = "Unknown"+showExp (Lit n) = "Lit " ++ show n+showExp (Neg x) = "Neg (" ++ showExp x ++ ")"+showExp (Add x y) = "Add (" ++ showExp x ++ ") (" ++ showExp y ++ ")"+showExp (Mul x y) = "Mul (" ++ showExp x ++ ") (" ++ showExp y ++ ")"+showExp (Sub x y) = "Sub (" ++ showExp x ++ ") (" ++ showExp y ++ ")"+showExp (Frac x y) = "Frac (" ++ showExp x ++ ") (" ++ showExp y ++ ")"+showExp (Scale b o r) = "Scale " ++ show b ++ " " ++ show o ++ " (" ++ showExp r ++ ")"+showExp (ChangeCase mbC x) = "Case is " ++ show mbC ++ " in (" ++ showExp x ++ ")"+showExp (ChangeGender mbG x) = "Gender is " ++ show mbG ++ " in (" ++ showExp x ++ ")"+showExp (ChangeNumber mbN x) = "Number is " ++ show mbN ++ " in (" ++ showExp x ++ ")" -infixl 6 `add`-infixl 6 `sub`-infixl 7 `mul`+evalScale :: (Integral a) => a -> a -> a -> a+evalScale b o r = 10 ^ (r*b + o) +-- eval :: (Fractional a) => Exp -> Maybe a+-- eval (Lit x) = pure x+-- eval (Add x y) = (+) <$> eval x <*> eval y+-- eval (Mul x y) = (*) <$> eval x <*> eval y+-- eval (Sub x y) = subtract <$> eval x <*> eval y+-- eval (Neg x) = negate <$> eval x+-- eval (Frac n d) = (/) <$> eval n <*> eval d+-- eval (Scale b o r) = evalScale (fromInteger b) (fromInteger o) <$> eval r+-- eval (ChangeCase _ x) = eval x+-- eval (ChangeGender _ x) = eval x+-- eval (ChangeNumber _ x) = eval x+-- eval Unknown = Nothing ---------------------------------------------------------------------------------- Integer instances+-- Side ------------------------------------------------------------------------------- -instance Unknown ℤ where- unknown = error "unknown"- isUnknown = const False-instance Lit ℤ where lit = fromInteger-instance Neg ℤ where neg = negate-instance Add ℤ where add = (+)-instance Mul ℤ where mul = (*)-instance Sub ℤ where sub = subtract-instance Scale ℤ where scale b o r = 10 ^ (r⋅b + o)---- TODO: instances for ℚ?+-- | A side or direction, either 'L'eft or 'R'ight.+data Side = L -- ^ Left.+ | R -- ^ Right.+ deriving (Eq, Show)
− src/Text/Numeral/Exp/Reified.hs
@@ -1,111 +0,0 @@-{-# LANGUAGE CPP- , NoImplicitPrelude- , PackageImports- , TypeFamilies- , UnicodeSyntax- #-}--module Text.Numeral.Exp.Reified ( Exp(..), showExp, Side(L, R) ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Bool ( Bool(False, True) )-import "base" Data.Eq ( Eq )-import "base" Data.List ( (++) )-import "base" Prelude ( String )-import "base" Text.Show ( Show, show )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import qualified "this" Text.Numeral.Exp as E------------------------------------------------------------------------------------- Reified expression type------------------------------------------------------------------------------------ | An expression that represents the structure of a numeral.-data Exp i- -- | An unknown value.- = Unknown- -- | A literal value.- | Lit ℤ- -- | Negation of an expression.- | Neg (Exp i)- -- | Addition of two expressions.- | Add (Exp i) (Exp i)- -- | Multiplication of two expressions.- | Mul (Exp i) (Exp i)- -- | One expression subtracted from another expression.- | Sub (Exp i) (Exp i)- -- | A fraction.- | Frac (Exp i) (Exp i)- -- | A step in a scale of large values.- | Scale ℤ ℤ (Exp i)- -- | A dual form of an expression.- | Dual (Exp i)- -- | A plural form of an expression.- | Plural (Exp i)- -- | A change of inflection.- | Inflection (i → i) (Exp i)--infixl 6 `Add`-infixl 6 `Sub`-infixl 7 `Mul`--showExp ∷ Exp i → String-showExp Unknown = "Unknown"-showExp (Lit n) = "Lit " ++ show n-showExp (Neg x) = "Neg (" ++ showExp x ++ ")"-showExp (Add x y) = "Add (" ++ showExp x ++ ") (" ++ showExp y ++ ")"-showExp (Mul x y) = "Mul (" ++ showExp x ++ ") (" ++ showExp y ++ ")"-showExp (Sub x y) = "Sub (" ++ showExp x ++ ") (" ++ showExp y ++ ")"-showExp (Frac x y) = "Frac (" ++ showExp x ++ ") (" ++ showExp y ++ ")"-showExp (Scale b o r) = "Scale " ++ show b ++ " " ++ show o ++ " (" ++ showExp r ++ ")"-showExp (Dual x) = "Dual (" ++ showExp x ++ ")"-showExp (Plural x) = "Plural (" ++ showExp x ++ ")"-showExp (Inflection _ x) = "Inflection <func> (" ++ showExp x ++ ")"----- | Precisely the 'Unknown' constructor.-instance E.Unknown (Exp i) where- unknown = Unknown- isUnknown Unknown = True- isUnknown _ = False--- | Precisely the 'Lit' constructor.-instance E.Lit (Exp i) where lit = Lit--- | Precisely the 'Neg' constructor.-instance E.Neg (Exp i) where neg = Neg--- | Precisely the 'Add' constructor.-instance E.Add (Exp i) where add = Add--- | Precisely the 'Mul' constructor.-instance E.Mul (Exp i) where mul = Mul--- | Precisely the 'Sub' constructor.-instance E.Sub (Exp i) where sub = Sub--- | Precisely the 'Frac' constructor.-instance E.Frac (Exp i) where frac = Frac--- | Precisely the 'Scale' constructor.-instance E.Scale (Exp i) where scale = Scale--- | Precisely the 'Dual' constructor.-instance E.Dual (Exp i) where dual = Dual--- | Precisely the 'Plural' constructor.-instance E.Plural (Exp i) where plural = Plural--- | Precisely the 'Inflection' constructor.-instance E.Inflection (Exp i) where-#if __GLASGOW_HASKELL__ < 704- type E.Inf (Exp i) = i-#else- type Inf (Exp i) = i-#endif- inflection = Inflection------------------------------------------------------------------------------------- Side------------------------------------------------------------------------------------ | A side or direction, either 'L'eft or 'R'ight.-data Side = L -- ^ Left.- | R -- ^ Right.- deriving (Eq, Show)
src/Text/Numeral/Grammar.hs view
@@ -1,329 +1,471 @@-{-# LANGUAGE NoImplicitPrelude- , UnicodeSyntax- , PackageImports- #-}+{-# LANGUAGE NamedFieldPuns #-} module Text.Numeral.Grammar ( -- * Inflection- Inflection+ Inflection(..)+ , defaultInflection -- * Grammatical categories+ , Case(..)+ , Gender(..)+ , Number(..)++ -- * Grammatical categories -- ** Case- , NoCase (noCase, hasNoCase)- , Ablative (ablative, isAblative)- , Abessive (abessive, isAbessive)- , Accusative (accusative, isAccusative)- , Comitative (comitative, isComitative)- , Dative (dative, isDative)- , Delative (delative, isDelative)- , Distributive (distributive, isDistributive)- , DistributiveTemporal (distributiveTemporal, isDistributiveTemporal)- , Essive (essive, isEssive)- , Genitive (genitive, isGenitive)- , Instrumental (instrumental, isInstrumental)- , Instructive (instructive, isInstructive)- , Lative (lative, isLative)- , Locative (locative, isLocative)- , Multiplicative (multiplicative, isMultiplicative)- , Nominative (nominative, isNominative)- , Partitive (partitive, isPartitive)- , SuperEssive (superEssive, isSuperEssive)- , Sublative (sublative, isSublative)- , Translative (translative, isTranslative)- , Vocative (vocative, isVocative)+ , noCase, hasNoCase+ , ablative, isAblative+ , abessive, isAbessive+ , accusative, isAccusative+ , comitative, isComitative+ , dative, isDative+ , delative, isDelative+ , distributive, isDistributive+ , distributiveTemporal, isDistributiveTemporal+ , essive, isEssive+ , genitive, isGenitive+ , instrumental, isInstrumental+ , instructive, isInstructive+ , lative, isLative+ , locative, isLocative+ , multiplicative, isMultiplicative+ , nominative, isNominative+ , partitive, isPartitive+ , superEssive, isSuperEssive+ , sublative, isSublative+ , translative, isTranslative+ , vocative, isVocative -- *** Locative cases- , LocativeInessive (locativeInessive, isLocativeInessive)- , LocativeElative (locativeElative, isLocativeElative)- , LocativeIllative (locativeIllative, isLocativeIllative)- , LocativeAdessive (locativeAdessive, isLocativeAdessive)- , LocativeAblative (locativeAblative, isLocativeAblative)- , LocativeAllative (locativeAllative, isLocativeAllative)+ , locativeInessive, isLocativeInessive+ , locativeElative, isLocativeElative+ , locativeIllative, isLocativeIllative+ , locativeAdessive, isLocativeAdessive+ , locativeAblative, isLocativeAblative+ , locativeAllative, isLocativeAllative -- ** Gender- , NoGender (noGender, hasNoGender)- , Neuter (neuter, isNeuter)- , Masculine (masculine, isMasculine)- , Feminine (feminine, isFeminine)- , Common (common, isCommon)+ , noGender, hasNoGender+ , neuter, isNeuter+ , masculine, isMasculine+ , feminine, isFeminine+ , common, isCommon -- ** Number- , NoNumber (noNumber, hasNoNumber)- , Singular (singular, isSingular)- , Dual (dual, isDual)- , Trial (trial, isTrial)- , Paucal (paucal, isPaucal)- , Plural (plural, isPlural)+ , noNumber, hasNoNumber+ , singular, isSingular+ , dual, isDual+ , trial, isTrial+ , paucal, isPaucal+ , plural, isPlural ) where +-------------------------------------------------------------------------------+-- Inflection+------------------------------------------------------------------------------- ------------------------------------------------------------------------------------ Imports---------------------------------------------------------------------------------+data Inflection+ = Inflection+ { iCase :: Maybe Case+ , iGender :: Maybe Gender+ , iNumber :: Maybe Number+ } deriving (Show, Eq) -import "base" Data.Bool ( Bool )+defaultInflection :: Inflection+defaultInflection = Inflection Nothing Nothing Nothing ------------------------------------------------------------------------------------ Inflection---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+-- Grammatical categories+------------------------------------------------------------------------------- --- | Base class for various kinds of inflections.-class Inflection α+data Case+ = Abessive+ -- ^ In linguistics, abessive (abbreviated abe or abess), caritive and+ -- privative (abbreviated priv) are names for a grammatical case expressing+ -- the lack or absence of the marked noun.+ | Ablative+ -- ^ The ablative case (abbreviated abl) indicates movement from something,+ -- or cause.+ | Accusative+ -- ^ The accusative case (abbreviated acc) indicates the direct object of a+ -- verb.+ | Comitative+ -- ^ The comitative case (abbreviated com), also known as the associative+ -- case (abbreviated ass), is a grammatical case that denotes+ -- companionship, and is used where English would typically use preposition+ -- "with" in the sense of "in company with" or "together with" (other uses+ -- of "with," e.g. with the meaning of "using," "by means of" (I cut bread+ -- with a knife) would correspond to the instrumental case or related+ -- cases).+ | Dative+ -- ^ The dative case (abbreviated dat, or sometimes d when it is a core+ -- argument) indicates the indirect object of a verb.+ | Delative+ -- ^ The delative case (abbreviated del; from Latin deferre "to bear or+ -- bring away or down") in the Hungarian language can originally express+ -- the movement from the surface of something (e.g. "off the table"), but+ -- it is used in several other meanings (e.g. "about people"), some of them+ -- related to the original (e.g. "from the post office").+ | Distributive+ -- ^ The distributive case (abbreviated distr) is used on nouns for the+ -- meanings of per or each.+ | DistributiveTemporal+ -- ^ The distributive-temporal case specifies when something is done.+ | Essive+ -- ^ The essive or similaris case (abbreviated ess) carries the meaning of+ -- a temporary location or state of being, often equivalent to the English+ -- "as a (child)".+ | Genitive+ -- ^ The genitive case (abbreviated gen; also called the possessive case or+ -- second case), which roughly corresponds to English's possessive case and+ -- preposition of, indicates the possessor of another noun.+ | Instrumental+ -- ^ The instrumental case (abbreviated ins or instr; also called the+ -- eighth case) indicates an object used in performing an action.+ | Instructive+ -- ^ In the Finnish language and Estonian language, the instructive case+ -- has the basic meaning of "by means of". It is a comparatively rarely+ -- used case, though it is found in some commonly used expressions, such as+ -- omin silmin -> "with one's own eyes".+ | Lative+ -- ^ Lative (abbreviated lat) is a case which indicates motion to a+ -- location. It corresponds to the English prepositions "to" and+ -- "into". The lative case belongs to the group of the general local cases+ -- together with the locative and separative case. The term derives from+ -- the Latin lat-, the participle stem of ferre, "to bring".+ | Locative (Maybe Locative)+ -- ^ The locative case (abbreviated loc) indicates a location.+ | Multiplicative+ -- ^ The multiplicative case is a grammatical case used for marking a+ -- number of something ("three times").+ | Nominative+ -- ^ The nominative case (abbreviated nom) indicates the subject of a+ -- finite verb.+ | Partitive+ -- ^ The partitive case (abbreviated ptv or more ambiguously part) denotes+ -- "partialness", "without result", or "without specific identity". It is+ -- also used in contexts where a subgroup is selected from a larger group,+ -- or with numbers.+ | Sublative+ -- ^ The term sublative case (abbreviated subl) is used to refer to+ -- grammatical cases expressing different situations: In Hungarian, it+ -- expresses the destination of the movement, originally to the surface of+ -- something (e.g. sit down on the ground, climb the tree), but in other+ -- figurative meanings as well (e.g. to university, for two nights), while+ -- in Tsez and other Northeast Caucasian languages it denotes a movement+ -- towards the bottomsides or the area under an object. The sublative case+ -- is used in the Finnish, Tsez and Hungarian languages.+ | SuperEssive+ -- ^ The Superessive case (abbreviated supe) is a grammatical declension+ -- indicating location on top of, or on the surface of something. Its name+ -- comes from Latin supersum, superesse: to be over and above.+ | Translative+ -- ^ The translative case (abbreviated transl) is a grammatical case that+ -- indicates a change in state of a noun, with the general sense of+ -- "becoming X" or "change to X".+ | Vocative+ -- ^ The vocative case indicates an addressee.+ deriving (Eq, Show) +data Locative+ = LocativeIllative+ -- ^ Illative (abbreviated ill; from Latin illatus "brought in") is, in the+ -- Finnish language, Estonian language and the Hungarian language, the+ -- third of the locative cases with the basic meaning of "into (the inside+ -- of)".+ | LocativeInessive+ -- ^ Inessive case (abbreviated ine; from Latin inesse "to be in or at") is+ -- a locative grammatical case. This case carries the basic meaning of+ -- "in".+ | LocativeElative+ -- ^ Elative (abbreviated ela; from Latin efferre "to bring or carry out")+ -- is a locative case with the basic meaning "out of".+ | LocativeAllative+ -- ^ Allative case (abbreviated all; from Latin allāt-, afferre "to bring+ -- to") is a type of the locative cases used in several languages. The term+ -- allative is generally used for the lative case in the majority of+ -- languages which do not make finer distinctions.+ | LocativeAdessive+ -- ^ In Uralic languages, such as Finnish, Estonian and Hungarian, the+ -- adessive case (abbreviated ade; from Latin adesse "to be present") is+ -- the fourth of the locative cases with the basic meaning of "on".+ | LocativeAblative+ -- ^ In linguistics, ablative case (abbreviated abl) is a name given to+ -- cases in various languages whose common characteristic is that they mark+ -- motion away from something, though the details in each language may+ -- differ. The name "ablative" derives from the Latin ablatus, the+ -- (irregular) perfect passive participle of auferre "to carry away".+ deriving (Eq, Show) ------------------------------------------------------------------------------------ Case---------------------------------------------------------------------------------+data Gender+ = Neuter+ | Masculine+ | Feminine+ | Common+ deriving (Eq, Show) -class Inflection α ⇒ NoCase α where- noCase ∷ α → α- hasNoCase ∷ α → Bool+data Number+ = Singular+ | Dual+ | Trial+ | Paucal+ | Plural+ deriving (Eq, Show) --- | The ablative case (abbreviated abl) indicates movement from--- something, or cause.-class Inflection α ⇒ Ablative α where- ablative ∷ α → α- isAblative ∷ α → Bool+-------------------------------------------------------------------------------+-- Smart case constructors+------------------------------------------------------------------------------- --- | In linguistics, abessive (abbreviated abe or abess), caritive and privative--- (abbreviated priv) are names for a grammatical case expressing the lack or--- absence of the marked noun.-class Inflection α ⇒ Abessive α where- abessive ∷ α → α- isAbessive ∷ α → Bool+noCase :: Inflection -> Inflection+noCase inf = inf { iCase = Nothing } --- | The accusative case (abbreviated acc) indicates the direct object--- of a verb.-class Inflection α ⇒ Accusative α where- accusative ∷ α → α- isAccusative ∷ α → Bool+hasNoCase :: Inflection -> Bool+hasNoCase (Inflection {iCase}) = iCase == Nothing --- | The comitative case (abbreviated com), also known as the associative case--- (abbreviated ass), is a grammatical case that denotes companionship, and is--- used where English would typically use preposition "with" in the sense of "in--- company with" or "together with" (other uses of "with," e.g. with the meaning--- of "using," "by means of" (I cut bread with a knife) would correspond to the--- instrumental case or related cases).-class Inflection α ⇒ Comitative α where- comitative ∷ α → α- isComitative ∷ α → Bool+ablative :: Inflection -> Inflection+ablative inf = inf { iCase = Just Ablative } --- | The dative case (abbreviated dat, or sometimes d when it is a--- core argument) indicates the indirect object of a verb.-class Inflection α ⇒ Dative α where- dative ∷ α → α- isDative ∷ α → Bool+isAblative :: Inflection -> Bool+isAblative (Inflection {iCase}) = iCase == Just Ablative --- | The delative case (abbreviated del; from Latin deferre "to bear or bring--- away or down") in the Hungarian language can originally express the movement--- from the surface of something (e.g. "off the table"), but it is used in--- several other meanings (e.g. "about people"), some of them related to the--- original (e.g. "from the post office").-class Inflection α ⇒ Delative α where- delative ∷ α → α- isDelative ∷ α → Bool+abessive :: Inflection -> Inflection+abessive inf = inf { iCase = Just Abessive } --- | The distributive case (abbreviated distr) is used on nouns for the meanings--- of per or each.-class Inflection α ⇒ Distributive α where- distributive ∷ α → α- isDistributive ∷ α → Bool+isAbessive :: Inflection -> Bool+isAbessive (Inflection {iCase}) = iCase == Just Abessive --- | The distributive-temporal case specifies when something is done.-class Inflection α ⇒ DistributiveTemporal α where- distributiveTemporal ∷ α → α- isDistributiveTemporal ∷ α → Bool+accusative :: Inflection -> Inflection+accusative inf = inf { iCase = Just Accusative } --- | The essive or similaris case (abbreviated ess) carries the meaning of a--- temporary location or state of being, often equivalent to the English "as a--- (child)".-class Inflection α ⇒ Essive α where- essive ∷ α → α- isEssive ∷ α → Bool+isAccusative :: Inflection -> Bool+isAccusative (Inflection {iCase}) = iCase == Just Accusative --- | The genitive case (abbreviated gen; also called the possessive--- case or second case), which roughly corresponds to English's--- possessive case and preposition of, indicates the possessor of--- another noun.-class Inflection α ⇒ Genitive α where- genitive ∷ α → α- isGenitive ∷ α → Bool+comitative :: Inflection -> Inflection+comitative inf = inf { iCase = Just Comitative } --- | The instrumental case (abbreviated ins or instr; also called the--- eighth case) indicates an object used in performing an action.-class Inflection α ⇒ Instrumental α where- instrumental ∷ α → α- isInstrumental ∷ α → Bool+isComitative :: Inflection -> Bool+isComitative (Inflection {iCase}) = iCase == Just Comitative --- | In the Finnish language and Estonian language, the instructive case has the--- basic meaning of "by means of". It is a comparatively rarely used case,--- though it is found in some commonly used expressions, such as omin silmin →--- "with one's own eyes".-class Inflection α ⇒ Instructive α where- instructive ∷ α → α- isInstructive ∷ α → Bool+dative :: Inflection -> Inflection+dative inf = inf { iCase = Just Dative } --- | Lative (abbreviated lat) is a case which indicates motion to a location. It--- corresponds to the English prepositions "to" and "into". The lative case--- belongs to the group of the general local cases together with the locative--- and separative case. The term derives from the Latin lat-, the participle--- stem of ferre, "to bring".-class Inflection α ⇒ Lative α where- lative ∷ α → α- isLative ∷ α → Bool+isDative :: Inflection -> Bool+isDative (Inflection {iCase}) = iCase == Just Dative --- | The locative case (abbreviated loc) indicates a location.-class Inflection α ⇒ Locative α where- locative ∷ α → α- isLocative ∷ α → Bool+delative :: Inflection -> Inflection+delative inf = inf { iCase = Just Delative } --- | The multiplicative case is a grammatical case used for marking a number of--- something ("three times").-class Inflection α ⇒ Multiplicative α where- multiplicative ∷ α → α- isMultiplicative ∷ α → Bool+isDelative :: Inflection -> Bool+isDelative (Inflection {iCase}) = iCase == Just Delative --- | The nominative case (abbreviated nom) indicates the subject of a--- finite verb.-class Inflection α ⇒ Nominative α where- nominative ∷ α → α- isNominative ∷ α → Bool+distributive :: Inflection -> Inflection+distributive inf = inf { iCase = Just Distributive } --- | The partitive case (abbreviated ptv or more ambiguously part)--- denotes "partialness", "without result", or "without specific--- identity". It is also used in contexts where a subgroup is selected--- from a larger group, or with numbers.-class Inflection α ⇒ Partitive α where- partitive ∷ α → α- isPartitive ∷ α → Bool+isDistributive :: Inflection -> Bool+isDistributive (Inflection {iCase}) = iCase == Just Distributive --- | The Superessive case (abbreviated supe) is a grammatical declension--- indicating location on top of, or on the surface of something. Its name comes--- from Latin supersum, superesse: to be over and above.-class Inflection α ⇒ SuperEssive α where- superEssive ∷ α → α- isSuperEssive ∷ α → Bool+distributiveTemporal :: Inflection -> Inflection+distributiveTemporal inf = inf { iCase = Just DistributiveTemporal } --- | The term sublative case (abbreviated subl) is used to refer to grammatical--- cases expressing different situations: In Hungarian, it expresses the--- destination of the movement, originally to the surface of something (e.g. sit--- down on the ground, climb the tree), but in other figurative meanings as well--- (e.g. to university, for two nights), while in Tsez and other Northeast--- Caucasian languages it denotes a movement towards the bottomsides or the area--- under an object. The sublative case is used in the Finnish, Tsez and--- Hungarian languages.-class Inflection α ⇒ Sublative α where- sublative ∷ α → α- isSublative ∷ α → Bool+isDistributiveTemporal :: Inflection -> Bool+isDistributiveTemporal (Inflection {iCase}) = iCase == Just DistributiveTemporal --- | The translative case (abbreviated transl) is a grammatical case that--- indicates a change in state of a noun, with the general sense of "becoming X"--- or "change to X".-class Inflection α ⇒ Translative α where- translative ∷ α → α- isTranslative ∷ α → Bool+essive :: Inflection -> Inflection+essive inf = inf { iCase = Just Essive } --- | The vocative case indicates an addressee.-class Inflection α ⇒ Vocative α where- vocative ∷ α → α- isVocative ∷ α → Bool+isEssive :: Inflection -> Bool+isEssive (Inflection {iCase}) = iCase == Just Essive +genitive :: Inflection -> Inflection+genitive inf = inf { iCase = Just Genitive } ------------------------------------------------------------------------------------ Locative cases---------------------------------------------------------------------------------+isGenitive :: Inflection -> Bool+isGenitive (Inflection {iCase}) = iCase == Just Genitive --- | Inessive case (abbreviated ine; from Latin inesse "to be in or at") is a--- locative grammatical case. This case carries the basic meaning of "in".-class Locative α ⇒ LocativeInessive α where- locativeInessive ∷ α → α- isLocativeInessive ∷ α → Bool+instrumental :: Inflection -> Inflection+instrumental inf = inf { iCase = Just Instrumental } --- | Elative (abbreviated ela; from Latin efferre "to bring or carry out") is a--- locative case with the basic meaning "out of".-class Locative α ⇒ LocativeElative α where- locativeElative ∷ α → α- isLocativeElative ∷ α → Bool+isInstrumental :: Inflection -> Bool+isInstrumental (Inflection {iCase}) = iCase == Just Instrumental --- | Illative (abbreviated ill; from Latin illatus "brought in") is, in the--- Finnish language, Estonian language and the Hungarian language, the third of--- the locative cases with the basic meaning of "into (the inside of)".-class Locative α ⇒ LocativeIllative α where- locativeIllative ∷ α → α- isLocativeIllative ∷ α → Bool+instructive :: Inflection -> Inflection+instructive inf = inf { iCase = Just Instructive } --- | In Uralic languages, such as Finnish, Estonian and Hungarian, the adessive--- case (abbreviated ade; from Latin adesse "to be present") is the fourth of--- the locative cases with the basic meaning of "on".-class Locative α ⇒ LocativeAdessive α where- locativeAdessive ∷ α → α- isLocativeAdessive ∷ α → Bool+isInstructive :: Inflection -> Bool+isInstructive (Inflection {iCase}) = iCase == Just Instructive --- | In linguistics, ablative case (abbreviated abl) is a name given to cases in--- various languages whose common characteristic is that they mark motion away--- from something, though the details in each language may differ. The name--- "ablative" derives from the Latin ablatus, the (irregular) perfect passive--- participle of auferre "to carry away".-class Locative α ⇒ LocativeAblative α where- locativeAblative ∷ α → α- isLocativeAblative ∷ α → Bool+lative :: Inflection -> Inflection+lative inf = inf { iCase = Just Lative } --- | Allative case (abbreviated all; from Latin allāt-, afferre "to bring to")--- is a type of the locative cases used in several languages. The term allative--- is generally used for the lative case in the majority of languages which do--- not make finer distinctions.-class Locative α ⇒ LocativeAllative α where- locativeAllative ∷ α → α- isLocativeAllative ∷ α → Bool+isLative :: Inflection -> Bool+isLative (Inflection {iCase}) = iCase == Just Lative +locative :: Inflection -> Inflection+locative inf = inf { iCase = Just (Locative Nothing) } ------------------------------------------------------------------------------------ Gender---------------------------------------------------------------------------------+isLocative :: Inflection -> Bool+isLocative (Inflection {iCase}) =+ case iCase of+ Just (Locative _) -> True+ _ -> False -class Inflection α ⇒ NoGender α where- noGender ∷ α → α- hasNoGender ∷ α → Bool+multiplicative :: Inflection -> Inflection+multiplicative inf = inf { iCase = Just Multiplicative } -class Inflection α ⇒ Neuter α where- neuter ∷ α → α- isNeuter ∷ α → Bool+isMultiplicative :: Inflection -> Bool+isMultiplicative (Inflection {iCase}) = iCase == Just Multiplicative -class Inflection α ⇒ Masculine α where- masculine ∷ α → α- isMasculine ∷ α → Bool+nominative :: Inflection -> Inflection+nominative inf = inf { iCase = Just Nominative } -class Inflection α ⇒ Feminine α where- feminine ∷ α → α- isFeminine ∷ α → Bool+isNominative :: Inflection -> Bool+isNominative (Inflection {iCase}) = iCase == Just Nominative -class Inflection α ⇒ Common α where- common ∷ α → α- isCommon ∷ α → Bool+partitive :: Inflection -> Inflection+partitive inf = inf { iCase = Just Partitive } +isPartitive :: Inflection -> Bool+isPartitive (Inflection {iCase}) = iCase == Just Partitive ------------------------------------------------------------------------------------ Number---------------------------------------------------------------------------------+superEssive :: Inflection -> Inflection+superEssive inf = inf { iCase = Just SuperEssive } -class Inflection α ⇒ NoNumber α where- noNumber ∷ α → α- hasNoNumber ∷ α → Bool+isSuperEssive :: Inflection -> Bool+isSuperEssive (Inflection {iCase}) = iCase == Just SuperEssive -class Inflection α ⇒ Singular α where- singular ∷ α → α- isSingular ∷ α → Bool+sublative :: Inflection -> Inflection+sublative inf = inf { iCase = Just Sublative } -class Inflection α ⇒ Dual α where- dual ∷ α → α- isDual ∷ α → Bool+isSublative :: Inflection -> Bool+isSublative (Inflection {iCase}) = iCase == Just Sublative -class Inflection α ⇒ Trial α where- trial ∷ α → α- isTrial ∷ α → Bool+translative :: Inflection -> Inflection+translative inf = inf { iCase = Just Translative } -class Inflection α ⇒ Paucal α where- paucal ∷ α → α- isPaucal ∷ α → Bool+isTranslative :: Inflection -> Bool+isTranslative (Inflection {iCase}) = iCase == Just Translative -class Inflection α ⇒ Plural α where- plural ∷ α → α- isPlural ∷ α → Bool+vocative :: Inflection -> Inflection+vocative inf = inf { iCase = Just Vocative } +isVocative :: Inflection -> Bool+isVocative (Inflection {iCase}) = iCase == Just Vocative+++-------------------------------------------------------------------------------+-- Smart locative case constructors+-------------------------------------------------------------------------------++locativeInessive :: Inflection -> Inflection+locativeInessive inf = inf {iCase = Just $ Locative $ Just LocativeInessive}++isLocativeInessive :: Inflection -> Bool+isLocativeInessive (Inflection {iCase}) =+ iCase == (Just $ Locative $ Just LocativeInessive)++locativeElative :: Inflection -> Inflection+locativeElative inf = inf {iCase = Just $ Locative $ Just LocativeElative}++isLocativeElative :: Inflection -> Bool+isLocativeElative (Inflection {iCase}) =+ iCase == (Just $ Locative $ Just LocativeElative)++locativeIllative :: Inflection -> Inflection+locativeIllative inf = inf {iCase = Just $ Locative $ Just LocativeIllative}++isLocativeIllative :: Inflection -> Bool+isLocativeIllative (Inflection {iCase}) =+ iCase == (Just $ Locative $ Just LocativeIllative)++locativeAdessive :: Inflection -> Inflection+locativeAdessive inf = inf {iCase = Just $ Locative $ Just LocativeAdessive}++isLocativeAdessive :: Inflection -> Bool+isLocativeAdessive (Inflection {iCase}) =+ iCase == (Just $ Locative $ Just LocativeAdessive)++locativeAblative :: Inflection -> Inflection+locativeAblative inf = inf {iCase = Just $ Locative $ Just LocativeAblative}++isLocativeAblative :: Inflection -> Bool+isLocativeAblative (Inflection {iCase}) =+ iCase == (Just $ Locative $ Just LocativeAblative)++locativeAllative :: Inflection -> Inflection+locativeAllative inf = inf {iCase = Just $ Locative $ Just LocativeAllative}++isLocativeAllative :: Inflection -> Bool+isLocativeAllative (Inflection {iCase}) =+ iCase == (Just $ Locative $ Just LocativeAllative)+++-------------------------------------------------------------------------------+-- Smart gender constructors+-------------------------------------------------------------------------------++noGender :: Inflection -> Inflection+noGender inf = inf { iGender = Nothing }++hasNoGender :: Inflection -> Bool+hasNoGender (Inflection {iGender}) = iGender == Nothing++neuter :: Inflection -> Inflection+neuter inf = inf { iGender = Just Neuter }++isNeuter :: Inflection -> Bool+isNeuter (Inflection {iGender}) = iGender == Just Neuter++masculine :: Inflection -> Inflection+masculine inf = inf { iGender = Just Masculine }++isMasculine :: Inflection -> Bool+isMasculine (Inflection {iGender}) = iGender == Just Masculine++feminine :: Inflection -> Inflection+feminine inf = inf { iGender = Just Feminine }++isFeminine :: Inflection -> Bool+isFeminine (Inflection {iGender}) = iGender == Just Feminine++common :: Inflection -> Inflection+common inf = inf { iGender = Just Common }++isCommon :: Inflection -> Bool+isCommon (Inflection {iGender}) = iGender == Just Common+++-------------------------------------------------------------------------------+-- Smart number constructors+-------------------------------------------------------------------------------++noNumber :: Inflection -> Inflection+noNumber inf = inf { iNumber = Nothing }++hasNoNumber :: Inflection -> Bool+hasNoNumber (Inflection {iNumber}) = iNumber == Nothing++singular :: Inflection -> Inflection+singular inf = inf { iNumber = Just Singular }++isSingular :: Inflection -> Bool+isSingular (Inflection {iNumber}) = iNumber == Just Singular++dual :: Inflection -> Inflection+dual inf = inf { iNumber = Just Dual }++isDual :: Inflection -> Bool+isDual (Inflection {iNumber}) = iNumber == Just Dual++trial :: Inflection -> Inflection+trial inf = inf { iNumber = Just Trial }++isTrial :: Inflection -> Bool+isTrial (Inflection {iNumber}) = iNumber == Just Trial++paucal :: Inflection -> Inflection+paucal inf = inf { iNumber = Just Paucal }++isPaucal :: Inflection -> Bool+isPaucal (Inflection {iNumber}) = iNumber == Just Paucal++plural :: Inflection -> Inflection+plural inf = inf { iNumber = Just Plural }++isPlural :: Inflection -> Bool+isPlural (Inflection {iNumber}) = iNumber == Just Plural
− src/Text/Numeral/Grammar/Reified.hs
@@ -1,277 +0,0 @@-{-# LANGUAGE NamedFieldPuns- , NoImplicitPrelude- , UnicodeSyntax- , PackageImports- #-}--module Text.Numeral.Grammar.Reified- ( -- * Inflection- Inflection(..)- , defaultInflection- -- * Grammatical categories- , Case(..)- , Gender(..)- , Number(..)- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Bool ( Bool(False, True) )-import "base" Data.Eq ( Eq )-import "base" Data.Function ( ($) )-import "base" Data.Maybe ( Maybe(Nothing, Just) )-import "base" Text.Show ( Show )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import qualified "this" Text.Numeral.Grammar as G------------------------------------------------------------------------------------- Inflection----------------------------------------------------------------------------------data Inflection = Inflection { iCase ∷ Maybe Case- , iGender ∷ Maybe Gender- , iNumber ∷ Maybe Number- } deriving (Show, Eq)--instance G.Inflection Inflection--defaultInflection ∷ Inflection-defaultInflection = Inflection Nothing Nothing Nothing------------------------------------------------------------------------------------- Grammatical categories----------------------------------------------------------------------------------data Case = Abessive- | Ablative- | Accusative- | Comitative- | Dative- | Delative- | Distributive- | DistributiveTemporal- | Essive- | Genitive- | Instrumental- | Instructive- | Lative- | Locative (Maybe Locative)- | Multiplicative- | Nominative- | Partitive- | Sublative- | SuperEssive- | Translative- | Vocative- deriving (Eq, Show)--data Locative = LocativeIllative- | LocativeInessive- | LocativeElative- | LocativeAllative- | LocativeAdessive- | LocativeAblative- deriving (Eq, Show)--data Gender = Neuter- | Masculine- | Feminine- | Common- deriving (Eq, Show)--data Number = Singular- | Dual- | Trial- | Paucal- | Plural- deriving (Eq, Show)------------------------------------------------------------------------------------- Case instances----------------------------------------------------------------------------------instance G.NoCase Inflection where- noCase inf = inf { iCase = Nothing }- hasNoCase (Inflection {iCase}) = iCase ≡ Nothing--instance G.Ablative Inflection where- ablative inf = inf { iCase = Just Ablative }- isAblative (Inflection {iCase}) = iCase ≡ Just Ablative--instance G.Abessive Inflection where- abessive inf = inf { iCase = Just Abessive }- isAbessive (Inflection {iCase}) = iCase ≡ Just Abessive--instance G.Accusative Inflection where- accusative inf = inf { iCase = Just Accusative }- isAccusative (Inflection {iCase}) = iCase ≡ Just Accusative--instance G.Comitative Inflection where- comitative inf = inf { iCase = Just Comitative }- isComitative (Inflection {iCase}) = iCase ≡ Just Comitative--instance G.Dative Inflection where- dative inf = inf { iCase = Just Dative }- isDative (Inflection {iCase}) = iCase ≡ Just Dative--instance G.Delative Inflection where- delative inf = inf { iCase = Just Delative }- isDelative (Inflection {iCase}) = iCase ≡ Just Delative--instance G.Distributive Inflection where- distributive inf = inf { iCase = Just Distributive }- isDistributive (Inflection {iCase}) = iCase ≡ Just Distributive--instance G.DistributiveTemporal Inflection where- distributiveTemporal inf = inf { iCase = Just DistributiveTemporal }- isDistributiveTemporal (Inflection {iCase}) = iCase ≡ Just DistributiveTemporal--instance G.Essive Inflection where- essive inf = inf { iCase = Just Essive }- isEssive (Inflection {iCase}) = iCase ≡ Just Essive--instance G.Genitive Inflection where- genitive inf = inf { iCase = Just Genitive }- isGenitive (Inflection {iCase}) = iCase ≡ Just Genitive--instance G.Instrumental Inflection where- instrumental inf = inf { iCase = Just Instrumental }- isInstrumental (Inflection {iCase}) = iCase ≡ Just Instrumental--instance G.Instructive Inflection where- instructive inf = inf { iCase = Just Instructive }- isInstructive (Inflection {iCase}) = iCase ≡ Just Instructive--instance G.Lative Inflection where- lative inf = inf { iCase = Just Lative }- isLative (Inflection {iCase}) = iCase ≡ Just Lative--instance G.Locative Inflection where- locative inf = inf { iCase = Just (Locative Nothing) }- isLocative (Inflection {iCase}) =- case iCase of- Just (Locative _) → True- _ → False--instance G.Multiplicative Inflection where- multiplicative inf = inf { iCase = Just Multiplicative }- isMultiplicative (Inflection {iCase}) = iCase ≡ Just Multiplicative--instance G.Nominative Inflection where- nominative inf = inf { iCase = Just Nominative }- isNominative (Inflection {iCase}) = iCase ≡ Just Nominative--instance G.Partitive Inflection where- partitive inf = inf { iCase = Just Partitive }- isPartitive (Inflection {iCase}) = iCase ≡ Just Partitive--instance G.SuperEssive Inflection where- superEssive inf = inf { iCase = Just SuperEssive }- isSuperEssive (Inflection {iCase}) = iCase ≡ Just SuperEssive--instance G.Sublative Inflection where- sublative inf = inf { iCase = Just Sublative }- isSublative (Inflection {iCase}) = iCase ≡ Just Sublative--instance G.Translative Inflection where- translative inf = inf { iCase = Just Translative }- isTranslative (Inflection {iCase}) = iCase ≡ Just Translative--instance G.Vocative Inflection where- vocative inf = inf { iCase = Just Vocative }- isVocative (Inflection {iCase}) = iCase ≡ Just Vocative------------------------------------------------------------------------------------- Locative case instances----------------------------------------------------------------------------------instance G.LocativeInessive Inflection where- locativeInessive inf = inf {iCase = Just $ Locative $ Just LocativeInessive}- isLocativeInessive (Inflection {iCase}) =- iCase ≡ (Just $ Locative $ Just LocativeInessive)--instance G.LocativeElative Inflection where- locativeElative inf = inf {iCase = Just $ Locative $ Just LocativeElative}- isLocativeElative (Inflection {iCase}) =- iCase ≡ (Just $ Locative $ Just LocativeElative)--instance G.LocativeIllative Inflection where- locativeIllative inf = inf {iCase = Just $ Locative $ Just LocativeIllative}- isLocativeIllative (Inflection {iCase}) =- iCase ≡ (Just $ Locative $ Just LocativeIllative)--instance G.LocativeAdessive Inflection where- locativeAdessive inf = inf {iCase = Just $ Locative $ Just LocativeAdessive}- isLocativeAdessive (Inflection {iCase}) =- iCase ≡ (Just $ Locative $ Just LocativeAdessive)--instance G.LocativeAblative Inflection where- locativeAblative inf = inf {iCase = Just $ Locative $ Just LocativeAblative}- isLocativeAblative (Inflection {iCase}) =- iCase ≡ (Just $ Locative $ Just LocativeAblative)--instance G.LocativeAllative Inflection where- locativeAllative inf = inf {iCase = Just $ Locative $ Just LocativeAllative}- isLocativeAllative (Inflection {iCase}) =- iCase ≡ (Just $ Locative $ Just LocativeAllative)------------------------------------------------------------------------------------- Gender instances----------------------------------------------------------------------------------instance G.NoGender Inflection where- noGender inf = inf { iGender = Nothing }- hasNoGender (Inflection {iGender}) = iGender ≡ Nothing--instance G.Neuter Inflection where- neuter inf = inf { iGender = Just Neuter }- isNeuter (Inflection {iGender}) = iGender ≡ Just Neuter--instance G.Masculine Inflection where- masculine inf = inf { iGender = Just Masculine }- isMasculine (Inflection {iGender}) = iGender ≡ Just Masculine--instance G.Feminine Inflection where- feminine inf = inf { iGender = Just Feminine }- isFeminine (Inflection {iGender}) = iGender ≡ Just Feminine--instance G.Common Inflection where- common inf = inf { iGender = Just Common }- isCommon (Inflection {iGender}) = iGender ≡ Just Common------------------------------------------------------------------------------------- Number instances----------------------------------------------------------------------------------instance G.NoNumber Inflection where- noNumber inf = inf { iNumber = Nothing }- hasNoNumber (Inflection {iNumber}) = iNumber ≡ Nothing--instance G.Singular Inflection where- singular inf = inf { iNumber = Just Singular }- isSingular (Inflection {iNumber}) = iNumber ≡ Just Singular--instance G.Dual Inflection where- dual inf = inf { iNumber = Just Dual }- isDual (Inflection {iNumber}) = iNumber ≡ Just Dual--instance G.Trial Inflection where- trial inf = inf { iNumber = Just Trial }- isTrial (Inflection {iNumber}) = iNumber ≡ Just Trial--instance G.Paucal Inflection where- paucal inf = inf { iNumber = Just Paucal }- isPaucal (Inflection {iNumber}) = iNumber ≡ Just Paucal--instance G.Plural Inflection where- plural inf = inf { iNumber = Just Plural }- isPlural (Inflection {iNumber}) = iNumber ≡ Just Plural
− src/Text/Numeral/Language/AF.hs
@@ -1,207 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] af--[@ISO639-2@] afr--[@ISO639-3@] afr--[@Native name@] Afrikaans--[@English name@] Afrikaans--}--module Text.Numeral.Language.AF- ( -- * Language entry- entry- -- * Conversions- , cardinal- , ordinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- AF-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "af"- , entIso639_2 = ["afr"]- , entIso639_3 = Just "afr"- , entNativeNames = ["Afrikaans"]- , entEnglishName = Just "Afrikaans"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- , entOrdinal = Just Conversion- { toNumeral = ordinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--ordinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-ordinal inf = ordinalRepr inf ∘ struct--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-struct = pos- $ fix- $ findRule ( 0, lit )- [ ( 13, add 10 L )- , ( 20, mul 10 L L)- , ( 100, step1 100 10 R L)- , (1000, step1 1000 1000 R L)- ]- (dec 6 - 1)- `combine` pelletierScale1 R L BN.rule--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--genericRepr ∷ Repr i-genericRepr = defaultRepr- { reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "min "- }- where- (_ ⊞ Lit 10) _ = ""- (Lit n ⊞ _) _ | n < 10 = "-en-"- | otherwise = ""- (_ ⊞ _) _ = " "-- (_ ⊡ Lit _) _ = ""- (_ ⊡ _ ) _ = " "--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render genericRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.pelletierRepr (\_ _ → "iljoen")- (\_ _ → "iljard")- []- }- where- syms =- M.fromList- [ (0, const "nul")- , (1, const "een")- , (2, forms "twee" "twin")- , (3, forms "drie" "der")- , (4, forms "vier" "veer")- , (5, const "vyf")- , (6, const "ses")- , (7, forms "sewe" "sewen")- , (8, \c → case c of- CtxMul _ (Lit 10) _ → "tag"- _ → "ag"- )- , (9, \c → case c of- CtxAdd _ (Lit 10) _ → "negen"- CtxMul _ (Lit 10) _ → "neën"- _ → "nege"- )- , (10, \c → case c of- CtxMul R _ _ → "tig"- _ → "tien"- )- , (11, const "elf")- , (12, const "twaalf")- , (100, const "honderd")- , (1000, const "duisend")- ]-- forms ∷ s → s → Ctx (Exp i) → s- forms n t ctx = case ctx of- CtxMul _ (Lit 10) _ → t- CtxAdd _ (Lit 10) _ → t- CtxAdd _ (Lit _) _ → n- _ → n--ordinalRepr ∷ i → Exp i → Maybe Text-ordinalRepr = render genericRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.pelletierRepr (\_ _ → "iljoen")- (\_ _ → "iljard")- []- }- where- syms =- M.fromList- [ (0, const "nul")- , (1, \c → case c of- CtxEmpty → "eerste"- _ | isOutside R c → "eende"- | otherwise → "een"- )- , (2, forms "tweede" "twee" "twin")- , (3, forms "derde" "drie" "der")- , (4, forms "vierde" "vier" "veer")- , (5, \c → if isOutside R c then "vyfde" else "vyf")- , (6, \c → if isOutside R c then "sesde" else "ses")- , (7, forms "sewende" "sewe" "sewen")- , (8, \c → case c of- _ | isOutside R c → "agtste"- CtxMul _ (Lit 10) _ → "tag"- _ → "ag"- )- , (9, \c → case c of- _ | isOutside R c → "negende"- CtxAdd _ (Lit 10) _ → "negen"- CtxMul _ (Lit 10) _ → "neën"- _ → "nege"- )- , (10, \c → case c of- CtxMul R _ _ | isOutside R c → "tigste"- | otherwise → "tig"- _ | isOutside R c → "tiende"- | otherwise → "tien"- )- , (11, \c → if isOutside R c then "elfde" else "elf")- , (12, \c → if isOutside R c then "twaalfde" else "twaalf")- , (100, \c → if isOutside R c then "honderste" else "honderd")- , (1000, \c → if isOutside R c then "duisendste" else "duisend")- ]-- forms ∷ s → s → s → Ctx (Exp i) → s- forms o c t ctx = case ctx of- _ | isOutside R ctx → o- CtxMul _ (Lit 10) _ → t- CtxAdd _ (Lit 10) _ → t- CtxAdd _ (Lit _) _ → c- _ → c
+ src/Text/Numeral/Language/AFR.hs view
@@ -0,0 +1,191 @@+{-|+[@ISO639-1@] af++[@ISO639-2@] afr++[@ISO639-3@] afr++[@Native name@] Afrikaans++[@English name@] Afrikaans+-}++module Text.Numeral.Language.AFR+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ , ordinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- AF+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "af"+ , entIso639_2 = ["afr"]+ , entIso639_3 = Just "afr"+ , entNativeNames = ["Afrikaans"]+ , entEnglishName = Just "Afrikaans"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ , entOrdinal = Just Conversion+ { toNumeral = ordinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++ordinal :: (Integral a) => Inflection -> a -> Maybe Text+ordinal inf = ordinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule ( 0, lit )+ [ ( 13, add 10 L )+ , ( 20, mul 10 L L)+ , ( 100, step1 100 10 R L)+ , (1000, step1 1000 1000 R L)+ ]+ (dec 6 - 1)+ `combine` pelletierScale1 R L BN.rule++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++genericRepr :: Repr+genericRepr = defaultRepr+ { reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "min "+ }+ where+ (_ ⊞ Lit 10) _ = ""+ (Lit n ⊞ _) _ | n < 10 = "-en-"+ | otherwise = ""+ (_ ⊞ _) _ = " "++ (_ ⊡ Lit _) _ = ""+ (_ ⊡ _ ) _ = " "++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render genericRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.pelletierRepr (\_ _ -> "iljoen")+ (\_ _ -> "iljard")+ []+ }+ where+ syms =+ M.fromList+ [ (0, const "nul")+ , (1, const "een")+ , (2, forms "twee" "twin")+ , (3, forms "drie" "der")+ , (4, forms "vier" "veer")+ , (5, const "vyf")+ , (6, const "ses")+ , (7, forms "sewe" "sewen")+ , (8, \c -> case c of+ CtxMul _ (Lit 10) _ -> "tag"+ _ -> "ag"+ )+ , (9, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "negen"+ CtxMul _ (Lit 10) _ -> "neën"+ _ -> "nege"+ )+ , (10, \c -> case c of+ CtxMul R _ _ -> "tig"+ _ -> "tien"+ )+ , (11, const "elf")+ , (12, const "twaalf")+ , (100, const "honderd")+ , (1000, const "duisend")+ ]++ forms :: s -> s -> Ctx Exp -> s+ forms n t ctx = case ctx of+ CtxMul _ (Lit 10) _ -> t+ CtxAdd _ (Lit 10) _ -> t+ CtxAdd _ (Lit _) _ -> n+ _ -> n++ordinalRepr :: Inflection -> Exp -> Maybe Text+ordinalRepr = render genericRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.pelletierRepr (\_ _ -> "iljoen")+ (\_ _ -> "iljard")+ []+ }+ where+ syms =+ M.fromList+ [ (0, const "nul")+ , (1, \c -> case c of+ CtxEmpty -> "eerste"+ _ | isOutside R c -> "eende"+ | otherwise -> "een"+ )+ , (2, forms "tweede" "twee" "twin")+ , (3, forms "derde" "drie" "der")+ , (4, forms "vierde" "vier" "veer")+ , (5, \c -> if isOutside R c then "vyfde" else "vyf")+ , (6, \c -> if isOutside R c then "sesde" else "ses")+ , (7, forms "sewende" "sewe" "sewen")+ , (8, \c -> case c of+ _ | isOutside R c -> "agtste"+ CtxMul _ (Lit 10) _ -> "tag"+ _ -> "ag"+ )+ , (9, \c -> case c of+ _ | isOutside R c -> "negende"+ CtxAdd _ (Lit 10) _ -> "negen"+ CtxMul _ (Lit 10) _ -> "neën"+ _ -> "nege"+ )+ , (10, \c -> case c of+ CtxMul R _ _ | isOutside R c -> "tigste"+ | otherwise -> "tig"+ _ | isOutside R c -> "tiende"+ | otherwise -> "tien"+ )+ , (11, \c -> if isOutside R c then "elfde" else "elf")+ , (12, \c -> if isOutside R c then "twaalfde" else "twaalf")+ , (100, \c -> if isOutside R c then "honderste" else "honderd")+ , (1000, \c -> if isOutside R c then "duisendste" else "duisend")+ ]++ forms :: s -> s -> s -> Ctx Exp -> s+ forms o c t ctx = case ctx of+ _ | isOutside R ctx -> o+ CtxMul _ (Lit 10) _ -> t+ CtxAdd _ (Lit 10) _ -> t+ CtxAdd _ (Lit _) _ -> c+ _ -> c
src/Text/Numeral/Language/AMP.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,14 +26,10 @@ -- Imports ------------------------------------------------------------------------------- -import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )+import "base" Data.Function ( fix ) import qualified "containers" Data.Map as M ( fromList, lookup ) import "this" Text.Numeral import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection ) import "this" Text.Numeral.Entry import "text" Data.Text ( Text ) @@ -47,7 +38,7 @@ -- AMP ------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_3 = Just "amp" , entEnglishName = Just "Alamblak"@@ -57,10 +48,10 @@ } } -cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β+struct :: (Integral a) => a -> E.Exp struct = checkPos $ fix $ findRule ( 1, lit )@@ -74,14 +65,14 @@ ] 399 -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (1, 399) -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms+ { reprValue = \_ n -> M.lookup n syms , reprAdd = Just (⊞)- , reprMul = Just $ \_ _ _ → " "+ , reprMul = Just $ \_ _ _ -> " " } where (Lit 2 ⊞ Lit _) _ = "i"@@ -91,12 +82,12 @@ M.fromList [ (1, const "rpat") , (2, const "hosf")- , (5, \c → case c of- CtxMul L _ _ → "tir"- _ → "tir yohtt"+ , (5, \c -> case c of+ CtxMul L _ _ -> "tir"+ _ -> "tir yohtt" )- , (20, \c → case c of- CtxMul L _ _ → "yima"- _ → "yima yohtt"+ , (20, \c -> case c of+ CtxMul L _ _ -> "yima"+ _ -> "yima yohtt" ) ]
− src/Text/Numeral/Language/BG.hs
@@ -1,185 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] bg--[@ISO639-2@] bul--[@ISO639-3@] bul--[@Native name@] Български език--[@English name@] Bulgarian--}--module Text.Numeral.Language.BG- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- BG-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "bg"- , entIso639_2 = ["bul"]- , entIso639_3 = Just "bul"- , entNativeNames = ["Български език"]- , entEnglishName = Just "Bulgarian"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (G.Neuter i, G.Feminine i, G.Masculine i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Masculine (E.Inf β)- )- ⇒ α → β-struct = pos $ fix $ rule `combine` shortScale1_bg- where- rule = findRule ( 0, lit )- [ ( 13, add 10 L )- , ( 20, mul 10 R L )- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)---- | Like 'shortScale1' but forces the right-hand-side to have--- masculine gender.-shortScale1_bg ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Masculine (E.Inf β)- )- ⇒ Rule α β-shortScale1_bg = mulScale_ bgMul 3 3 R L rule- where- bgMul f m scale' _ = masculineMul (f m) scale'- masculineMul x y = E.inflection G.masculine $ E.mul x y- rule = findRule (1, lit) [] 14--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 48 - 1 in (negate x, x)--cardinalRepr ∷ (G.Neuter i, G.Feminine i, G.Masculine i) ⇒ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = shortScaleRepr- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "минус "- }- where- (Lit 100 ⊞ Lit _) _ = " и "- (_ ⊞ Add _ (Lit 10)) _ = " и "- (_ ⊞ Mul _ (Lit 10)) _ = " и "- (_ ⊞ Lit 10) _ = ""- ((_ `Mul` Lit _) ⊞ Lit _) _ = " и "- (Inflection _ _ ⊞ Lit _) _ = " и "- (_ ⊞ _ ) _ = " "-- (_ ⊡ Lit n) _ | n ≤ 100 = ""- (_ ⊡ _ ) _ = " "-- syms inf =- M.fromList- [ (0, const "нула")- , (1, const $ if G.isFeminine inf- then "една"- else if G.isMasculine inf- then "един"- else "едно"- )- , (2, \c → case c of- CtxMul _ (Lit 10) _ → "два"- CtxMul _ (Lit 100) _ → "две"- CtxMul _ (Lit 1000) _ → "две"- _ | G.isMasculine inf → "два"- | otherwise → "две"- )- , (3, const "три")- , (4, const "четири")- , (5, const "пет")- , (6, const "шест")- , (7, const "седем")- , (8, const "осем")- , (9, const "девет")- , (10, \c → case c of- CtxAdd _ (Lit n) _ | n ≤ 9 → "надесет"- _ → "десет"- )- , (11, const "единадесет")- , (12, const "дванадесет")- , (100, \c → case c of- CtxMul _ (Lit 2) _ → "ста"- CtxMul _ (Lit 3) _ → "ста"- CtxMul R _ _ → "стотин"- _ → "сто"- )- , (1000, \c → case c of- CtxMul R _ _ → "хиляди"- _ → "хиляда"- )- ]--shortScaleRepr ∷ i → ℤ → ℤ → (Exp i) → Ctx (Exp i) → Maybe Text-shortScaleRepr inf b o e- = case e of- Lit 2 → BN.scaleRepr (BN.quantityName "илиард" "илиарда") syms inf b o e- _ → BN.scaleRepr (BN.quantityName "илион" "илиона") syms inf b o e- where- syms = [ ( 1, const "м")- , ( 2, const "м")- , ( 3, const "тр")- , ( 4, const "квадр")- , ( 5, const "квинт")- , ( 6, const "секст")- , ( 7, const "септ")- , ( 8, const "окт")- , ( 9, const "нон")- , (10, const "дец")- , (11, const "индец")- , (12, const "дуодец")- , (13, const "тридец")- , (14, const "куадродец")- ]
+ src/Text/Numeral/Language/BUL.hs view
@@ -0,0 +1,163 @@+{-|+[@ISO639-1@] bg++[@ISO639-2@] bul++[@ISO639-3@] bul++[@Native name@] Български език++[@English name@] Bulgarian+-}++module Text.Numeral.Language.BUL+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import qualified "this" Text.Numeral.BigNum as BN+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- BUL+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "bg"+ , entIso639_2 = ["bul"]+ , entIso639_3 = Just "bul"+ , entNativeNames = ["Български език"]+ , entEnglishName = Just "Bulgarian"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos $ fix $ rule `combine` shortScale1_bg+ where+ rule = findRule ( 0, lit )+ [ ( 13, add 10 L )+ , ( 20, mul 10 R L )+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++-- | Like 'shortScale1' but forces the right-hand-side to have+-- masculine gender.+shortScale1_bg :: (Integral a) => Rule a+shortScale1_bg = mulScale_ bgMul 3 3 R L rule+ where+ bgMul f m scale' _ = masculineMul (f m) scale'+ masculineMul x y = ChangeGender (Just Masculine) $ Mul x y+ rule = findRule (1, lit) [] 14++bounds :: (Integral a) => (a, a)+bounds = let x = dec 48 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = shortScaleRepr+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "минус "+ }+ where+ (Lit 100 ⊞ Lit _) _ = " и "+ (_ ⊞ Add _ (Lit 10)) _ = " и "+ (_ ⊞ Mul _ (Lit 10)) _ = " и "+ (_ ⊞ Lit 10) _ = ""+ ((_ `Mul` Lit _) ⊞ Lit _) _ = " и "+ (ChangeGender _ _ ⊞ Lit _) _ = " и "+ (_ ⊞ _ ) _ = " "++ (_ ⊡ Lit n) _ | n <= 100 = ""+ (_ ⊡ _ ) _ = " "++ syms inf =+ M.fromList+ [ (0, const "нула")+ , (1, const $ if isFeminine inf+ then "една"+ else if isMasculine inf+ then "един"+ else "едно"+ )+ , (2, \c -> case c of+ CtxMul _ (Lit 10) _ -> "два"+ CtxMul _ (Lit 100) _ -> "две"+ CtxMul _ (Lit 1000) _ -> "две"+ _ | isMasculine inf -> "два"+ | otherwise -> "две"+ )+ , (3, const "три")+ , (4, const "четири")+ , (5, const "пет")+ , (6, const "шест")+ , (7, const "седем")+ , (8, const "осем")+ , (9, const "девет")+ , (10, \c -> case c of+ CtxAdd _ (Lit n) _+ | n <= 9 -> "надесет"+ _ -> "десет"+ )+ , (11, const "единадесет")+ , (12, const "дванадесет")+ , (100, \c -> case c of+ CtxMul _ (Lit 2) _ -> "ста"+ CtxMul _ (Lit 3) _ -> "ста"+ CtxMul R _ _ -> "стотин"+ _ -> "сто"+ )+ , (1000, \c -> case c of+ CtxMul R _ _ -> "хиляди"+ _ -> "хиляда"+ )+ ]++shortScaleRepr :: Inflection -> Integer -> Integer -> Exp -> Ctx Exp -> Maybe Text+shortScaleRepr inf b o e+ = case e of+ Lit 2 -> BN.scaleRepr (BN.quantityName "илиард" "илиарда") syms inf b o e+ _ -> BN.scaleRepr (BN.quantityName "илион" "илиона") syms inf b o e+ where+ syms = [ ( 1, const "м")+ , ( 2, const "м")+ , ( 3, const "тр")+ , ( 4, const "квадр")+ , ( 5, const "квинт")+ , ( 6, const "секст")+ , ( 7, const "септ")+ , ( 8, const "окт")+ , ( 9, const "нон")+ , (10, const "дец")+ , (11, const "индец")+ , (12, const "дуодец")+ , (13, const "тридец")+ , (14, const "куадродец")+ ]
+ src/Text/Numeral/Language/CES.hs view
@@ -0,0 +1,140 @@+{-|+[@ISO639-1@] cs++[@ISO639-2B@] cze++[@ISO639-2T@] ces++[@ISO639-3@] ces++[@Native name@] Čeština++[@English name@] Czech+-}++module Text.Numeral.Language.CES+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import qualified "containers" Data.Map as M+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "this" Text.Numeral.Language.POL ( struct )+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- CES+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "cs"+ , entIso639_2 = ["cze", "ces"]+ , entIso639_3 = Just "ces"+ , entNativeNames = ["Čeština"]+ , entEnglishName = Just "Czech"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.pelletierRepr (quantityRepr "ilión" "ilióny" "iliónů")+ (quantityRepr "iliarda" "iliarda" "iliarda")+ []+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ }+ where+ (Lit n ⊞ Lit 10) _ | n <= 9 = ""+ (_ ⊞ _ ) _ = " "++ (_ ⊡ Lit 10 ) _ = ""+ (_ ⊡ Lit 100) _ = " "+ (_ ⊡ _ ) _ = " "++ quantityRepr :: Text -> Text -> Text -> BN.PostfixRepr+ quantityRepr s p1 p2 _ ctx =+ case ctx of+ CtxMul _ (Lit 1) _ -> s+ CtxMul _ (Lit n) _ | n <= 4 -> p1+ CtxMul {} -> p2+ _ -> s++ syms =+ M.fromList+ [ (0, const "nula")+ , (1, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "jede"+ CtxAdd {} -> "jedna"+ _ -> "jeden"+ )+ , (2, \c -> case c of+ CtxMul _ (Lit 100) _ -> "dvě"+ _ -> "dva"+ )+ , (3, const "tři")+ , (4, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "ctr"+ _ -> "čtyři"+ )+ , (5, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "pat"+ CtxMul _ (Lit 10) _ -> "pa"+ _ -> "pět"+ )+ , (6, \c -> case c of+ CtxMul _ (Lit 10) _ -> "še"+ _ -> "šest"+ )+ , (7, const "sedm")+ , (8, const "osm")+ , (9, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "devate"+ CtxMul _ (Lit 10) _ -> "devá"+ _ -> "devět"+ )+ , (10, \c -> case c of+ CtxAdd R (Lit n) _+ | n <= 9 -> "náct"+ CtxMul R (Lit n) _+ | n <= 4 -> "cet"+ | otherwise -> "desát"+ _ -> "deset"+ )+ , (100, \c -> case c of+ CtxMul _ (Lit n) _+ | n == 2 -> "stě"+ | n <= 4 -> "sta"+ | n <= 9 -> "set"+ _ -> "sto"+ )+ , (1000, \c -> case c of+ CtxMul _ (Lit n) _ | n <= 4 -> "tisíce"+ _ -> "tisíc"+ )+ ]
src/Text/Numeral/Language/CHN.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,14 +26,9 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )+import "base" Data.Function ( fix ) import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )+import "this" Text.Numeral import "this" Text.Numeral.Entry import "text" Data.Text ( Text ) @@ -47,7 +37,7 @@ -- CHN -------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_2 = ["chn"] , entIso639_3 = Just "chn"@@ -59,10 +49,10 @@ } } -cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β+struct :: (Integral a) => a -> Exp struct = checkPos $ fix $ findRule ( 0, lit )@@ -71,14 +61,14 @@ ] 100 -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (0, 100) -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just $ \_ _ _ → " pe "- , reprMul = Just $ \_ _ _ → " "+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just $ \_ _ _ -> " pe "+ , reprMul = Just $ \_ _ _ -> " " } where syms =
src/Text/Numeral/Language/CHR.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -33,16 +28,10 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Char ( Char )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), String )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )+import "base" Data.Function ( fix ) import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec ) import "this" Text.Numeral.Entry import "text" Data.Text ( Text ) import qualified "text" Data.Text as T ( concatMap, singleton )@@ -52,7 +41,7 @@ -- CHR -------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_2 = ["chr"] , entIso639_3 = Just "chr"@@ -64,10 +53,10 @@ } } -cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β+struct :: (Integral a) => a -> Exp struct = checkPos $ fix $ findRule ( 0, lit )@@ -78,12 +67,12 @@ ] (dec 6 - 1) -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (0, dec 6 - 1) -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms+ { reprValue = \_ n -> M.lookup n syms , reprAdd = Just (⊞) , reprMul = Just (⊡) }@@ -100,50 +89,50 @@ syms = M.fromList [ (0, const "Ꮭ ᎪᏍᏗ")- , (1, \c → case c of- CtxAdd L (Lit 10) _ → "Ꮜ"- CtxAdd R _ _ → "ᏌᏬ"- _ → "ᏐᏬ"+ , (1, \c -> case c of+ CtxAdd L (Lit 10) _ -> "Ꮜ"+ CtxAdd R _ _ -> "ᏌᏬ"+ _ -> "ᏐᏬ" ) , (2, const "ᏔᎵ")- , (3, \c → case c of- CtxAdd L (Lit 10) _ → "ᏦᎦ"- CtxMul _ (Lit 100) CtxEmpty → "Ꮶ"- CtxMul _ (Lit 100) _ → "ᏦᎢ"- _ → "ᏦᎢ"+ , (3, \c -> case c of+ CtxAdd L (Lit 10) _ -> "ᏦᎦ"+ CtxMul _ (Lit 100) CtxEmpty -> "Ꮶ"+ CtxMul _ (Lit 100) _ -> "ᏦᎢ"+ _ -> "ᏦᎢ" )- , (4, \c → case c of- CtxAdd L (Lit 10) _ → "ᏂᎦ"- _ → "ᏅᎩ"+ , (4, \c -> case c of+ CtxAdd L (Lit 10) _ -> "ᏂᎦ"+ _ -> "ᏅᎩ" )- , (5, \c → case c of- CtxAdd L (Lit 10) _ → "ᎯᏍᎦ"- _ → "ᎯᏍᎩ"+ , (5, \c -> case c of+ CtxAdd L (Lit 10) _ -> "ᎯᏍᎦ"+ _ -> "ᎯᏍᎩ" )- , (6, \c → case c of- CtxAdd L (Lit 10) _ → "ᏓᎳ"- _ → "ᏑᏓᎵ"+ , (6, \c -> case c of+ CtxAdd L (Lit 10) _ -> "ᏓᎳ"+ _ -> "ᏑᏓᎵ" )- , (7, \c → case c of- CtxAdd L (Lit 10) _ → "ᎦᎵᏆ"- CtxMul _ (Lit 100) CtxEmpty → "ᎦᎵᏆ"- CtxMul _ (Lit 100) _ → "ᎦᎵᏉᎩ"- CtxMul _ _ _ → "ᎦᎵᏆ"- _ → "ᎦᎵᏉᎩ"+ , (7, \c -> case c of+ CtxAdd L (Lit 10) _ -> "ᎦᎵᏆ"+ CtxMul _ (Lit 100) CtxEmpty -> "ᎦᎵᏆ"+ CtxMul _ (Lit 100) _ -> "ᎦᎵᏉᎩ"+ CtxMul _ _ _ -> "ᎦᎵᏆ"+ _ -> "ᎦᎵᏉᎩ" )- , (8, \c → case c of- CtxAdd L (Lit 10) _ → "ᏁᎳ"- CtxMul _ (Lit 100) CtxEmpty → "ᏧᏁᎵ"- _ → "ᏧᏁᎳ"+ , (8, \c -> case c of+ CtxAdd L (Lit 10) _ -> "ᏁᎳ"+ CtxMul _ (Lit 100) CtxEmpty -> "ᏧᏁᎵ"+ _ -> "ᏧᏁᎳ" )- , (9, \c → case c of- CtxMul _ (Lit 100) _ → "ᏐᏁᎵ"- _ → "ᏐᏁᎳ"+ , (9, \c -> case c of+ CtxMul _ (Lit 100) _ -> "ᏐᏁᎵ"+ _ -> "ᏐᏁᎳ" )- , (10, \c → case c of- CtxAdd R (Lit _) _ → "Ꮪ"- CtxMul R (Lit _) (CtxAdd {}) → "ᏍᎪ"- _ → "ᏍᎪᎯ"+ , (10, \c -> case c of+ CtxAdd R (Lit _) _ -> "Ꮪ"+ CtxMul R (Lit _) (CtxAdd {}) -> "ᏍᎪ"+ _ -> "ᏍᎪᎯ" ) , (100, const "ᏍᎪᎯᏥᏆ") , (1000, const "ᎢᏯᎦᏴᎵ")@@ -151,10 +140,10 @@ -- | Transliterates a string written in the Cherokee syllabary to the -- latin alphabet.-transliterate ∷ Text → Text+transliterate :: Text -> Text transliterate xs = T.concatMap f xs where- f ∷ Char → Text+ f :: Char -> Text f 'Ꭰ' = "a" f 'Ꭱ' = "e" f 'Ꭲ' = "i"@@ -241,4 +230,3 @@ f 'Ᏻ' = "yu" f 'Ᏼ' = "yv" f c = T.singleton c-
src/Text/Numeral/Language/CLM.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,14 +26,9 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )+import "base" Data.Function ( fix ) import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )+import "this" Text.Numeral import "this" Text.Numeral.Entry import "text" Data.Text ( Text ) @@ -47,7 +37,7 @@ -- CLM -------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_3 = Just "clm" , entNativeNames = ["nəxʷsƛ̕ay̕əmúcən"]@@ -58,10 +48,10 @@ } } -cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β+struct :: (Integral a) => a -> Exp struct = fix $ findRule ( 1, lit ) [ ( 11, add 10 R )@@ -74,13 +64,13 @@ ] 1000 -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (1, 1000) -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just $ \_ _ _ → " ʔiʔ "+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just $ \_ _ _ -> " ʔiʔ " , reprMul = Just (⊡) } where@@ -98,18 +88,18 @@ , (7, forms "c̕úʔkʷs" "c̕aʔkʷs") , (8, forms "táʔcs" "taʔcs" ) , (9, forms "tə́kʷxʷ" "təkʷxʷ")- , (10, \c → case c of- CtxMul R _ _ → "ɬšáʔ"- _ → "ʔúpən"+ , (10, \c -> case c of+ CtxMul R _ _ -> "ɬšáʔ"+ _ -> "ʔúpən" ) , (20, const "nəc̕xʷk̕ʷə́s") , (100, const "snáč̕əwəč") ] - forms ∷ s- → s- → Ctx (Exp i)- → s+ forms :: s+ -> s+ -> Ctx Exp+ -> s forms n t ctx = case ctx of- CtxMul _ (Lit 10) _ → t- _ → n+ CtxMul _ (Lit 10) _ -> t+ _ -> n
+ src/Text/Numeral/Language/CRO.hs view
@@ -0,0 +1,144 @@+{-|+[@ISO639-1@] hr++[@ISO639-2B@] cro++[@ISO639-3@] cro++[@Native name@] Hrvatski++[@English name@] Croatian+-}++module Text.Numeral.Language.CRO+ ( -- * Language entries+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , shortScaleStruct+ , pelletierScaleStruct+ -- * Bounds+ , bounds+ ) where++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- CRO+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "hr"+ , entIso639_2 = ["cro"]+ , entIso639_3 = Just "cro"+ , entNativeNames = ["Hrvatski"]+ , entEnglishName = Just "Croatian"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++struct :: (Integral a) => a -> Exp+struct = pos $ fix $ rule++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = render (cardinalRepr "minus " hr_add) inf . shortScaleStruct++shortScaleStruct :: (Integral a) => a -> Exp+shortScaleStruct = pos $ fix $ rule `combine` shortScale1 R L BN.rule++pelletierScaleStruct :: (Integral a) => a -> Exp+pelletierScaleStruct = pos $ fix $ rule `combine` pelletierScale1 R L BN.rule++rule :: (Integral a) => Rule a+rule = findRule ( 0, lit )+ [ ( 11, add 10 L )+ , ( 20, mul 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ] (dec 6 - 1)++bounds :: (Integral a) => (a, a)+bounds = let x = dec 30003 - 1 in (negate x, x)++genericRepr :: (Exp -> Exp -> Ctx Exp -> Text) -- ^ Add representation.+ -> Repr+genericRepr _ =+ defaultRepr+ { reprAdd = Just (hr_add)+ , reprMul = Just (⊞)+ }+ where+ (_ ⊞ Lit 10) _ = ""+ (_ ⊞ Lit 100) _ = ""+ (_ ⊞ _ ) _ = " "++hr_add :: Exp -> Exp -> Ctx Exp -> Text+((Lit 100) `hr_add` _) _ = " "+((Lit 1000) `hr_add`_) _ = " "+((_ `Mul` _ ) `hr_add` _) _ = " "+(_ `hr_add` _) _ = ""+++cardinalRepr :: Text -- ^ Negative number prefix.+ -> (Exp -> Exp -> Ctx Exp -> Text)+ -> Repr+cardinalRepr neg f =+ (genericRepr f)+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.scaleRepr (\_ _ -> "ljun") []+ , reprNeg = Just $ \_ _ -> neg+ }+ where+ syms =+ M.fromList+ [ (0, const "nula")+ , (1, ten "jedan" "jeda" "jedan")+ , (2, hun "dva" "dva" "dvje" "dva")+ , (3, const "tri")+ , (4, ten "četiri" "četr" "četr")+ , (5, ten "pet" "pet" "pe")+ , (6, hun "šest" "šes" "še" "šes")+ , (7, const "sedam")+ , (8, const "osam")+ , (9, ten "devet" "devet" "deve")+ , (10, \c -> case c of+ CtxAdd _ (Lit 100) _ -> "deset"+ CtxAdd _ (Lit _) _ -> "naest"+ _ -> "deset"+ )+ , (60, const "šedeset")+ , (100, const "sto")+ , (1000, \c -> case c of+ CtxMul R _ _ -> "tisuća"+ _ -> "tisuću")+ ]++ ten :: Text -> Text -> Text -> Ctx Exp -> Text+ ten n a m = \c -> case c of+ CtxAdd _ (Lit 10) _ -> a+ CtxMul _ (Lit 10) _ -> m+ _ -> n++ hun :: Text -> Text -> Text -> Text -> Ctx Exp -> Text+ hun n a h m = \c -> case c of+ CtxAdd _ (Lit 10) _ -> a+ CtxMul _ (Lit 10) _ -> m+ CtxMul _ (Lit 100) _ -> h+ _ -> n++
− src/Text/Numeral/Language/CS.hs
@@ -1,154 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] cs--[@ISO639-2B@] cze--[@ISO639-2T@] ces--[@ISO639-3@] ces--[@Native name@] Čeština--[@English name@] Czech--}--module Text.Numeral.Language.CS- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( const )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "this" Text.Numeral.Language.PL ( struct )-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- CS----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "cs"- , entIso639_2 = ["cze", "ces"]- , entIso639_3 = Just "ces"- , entNativeNames = ["Čeština"]- , entEnglishName = Just "Czech"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.pelletierRepr (quantityRepr "ilión" "ilióny" "iliónů")- (quantityRepr "iliarda" "iliarda" "iliarda")- []- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- }- where- (Lit n ⊞ Lit 10) _ | n ≤ 9 = ""- (_ ⊞ _ ) _ = " "-- (_ ⊡ Lit 10 ) _ = ""- (_ ⊡ Lit 100) _ = " "- (_ ⊡ _ ) _ = " "-- quantityRepr ∷ Text → Text → Text → BN.PostfixRepr i- quantityRepr s p1 p2 _ ctx =- case ctx of- CtxMul _ (Lit 1) _ → s- CtxMul _ (Lit n) _ | n ≤ 4 → p1- CtxMul {} → p2- _ → s-- syms =- M.fromList- [ (0, const "nula")- , (1, \c → case c of- CtxAdd _ (Lit 10) _ → "jede"- CtxAdd {} → "jedna"- _ → "jeden"- )- , (2, \c → case c of- CtxMul _ (Lit 100) _ → "dvě"- _ → "dva"- )- , (3, const "tři")- , (4, \c → case c of- CtxAdd _ (Lit 10) _ → "ctr"- _ → "čtyři"- )- , (5, \c → case c of- CtxAdd _ (Lit 10) _ → "pat"- CtxMul _ (Lit 10) _ → "pa"- _ → "pět"- )- , (6, \c → case c of- CtxMul _ (Lit 10) _ → "še"- _ → "šest"- )- , (7, const "sedm")- , (8, const "osm")- , (9, \c → case c of- CtxAdd _ (Lit 10) _ → "devate"- CtxMul _ (Lit 10) _ → "devá"- _ → "devět"- )- , (10, \c → case c of- CtxAdd R (Lit n) _- | n ≤ 9 → "náct"- CtxMul R (Lit n) _- | n ≤ 4 → "cet"- | otherwise → "desát"- _ → "deset"- )- , (100, \c → case c of- CtxMul _ (Lit n) _- | n ≡ 2 → "stě"- | n ≤ 4 → "sta"- | n ≤ 9 → "set"- _ → "sto"- )- , (1000, \c → case c of- CtxMul _ (Lit n) _ | n ≤ 4 → "tisíce"- _ → "tisíc"- )- ]
− src/Text/Numeral/Language/DE.hs
@@ -1,241 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] de--[@ISO639-2B@] ger--[@ISO639-2T@] deu--[@ISO639-3@] deu--[@Native name@] Deutsch--[@English name@] German--}--module Text.Numeral.Language.DE- ( -- * Language entry- entry- -- * Conversions- , cardinal- , ordinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.List.Unicode ( (∈) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤), (≥) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- DE----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "de"- , entIso639_2 = ["ger", "deu"]- , entIso639_3 = Just "deu"- , entNativeNames = ["Deutsch"]- , entEnglishName = Just "German"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- , entOrdinal = Just Conversion- { toNumeral = ordinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--ordinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-ordinal inf = ordinalRepr inf ∘ struct--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-struct = pos- $ fix- $ findRule ( 0, lit )- [ ( 13, add 10 L )- , ( 20, mul 10 L L)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)- `combine` pelletierScale R L BN.rule--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--genericRepr ∷ Repr i-genericRepr = defaultRepr- { reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "minus "- }- where- (Lit n ⊞ (_ `Mul` Lit 10)) _ | n ≤ 9 = "und"- (_ ⊞ _ ) _ = ""-- (_ ⊡ Scale _ _ _) _ = " "- (_ ⊡ _) _ = ""---cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render genericRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.pelletierRepr (BN.quantityName "illion" "illionen")- (BN.quantityName "illiarde" "illiarden")- bigNumSyms- }- where- syms =- M.fromList- [ (0, const "null")- , (1, \c → case c of- CtxAdd R _ _ → "eins"- CtxAdd L _ _ → "ein"- CtxMul _ (Lit n) _- | n ≥ dec 6 → "eine"- | n ≥ 100 → "ein"- _ → "eins"- )- , (2, \c → case c of- CtxMul _ (Lit 10) _ → "zwan"- _ → "zwei"- )- , (3, const "drei")- , (4, const "vier")- , (5, const "fünf")- , (6, \c → case c of- CtxAdd _ (Lit 10) _ → "sech"- CtxMul _ (Lit 10) _ → "sech"- _ → "sechs"- )- , (7, \c → case c of- CtxAdd _ (Lit 10) _ → "sieb"- CtxMul _ (Lit 10) _ → "sieb"- _ → "sieben"- )- , (8, const "acht")- , (9, const "neun")- , (10, \c → case c of- CtxMul _ (Lit 3) _ → "ßig"- CtxMul R (Lit _) _ → "zig"- _ → "zehn"- )- , (11, const "elf")- , (12, const "zwölf")- , (100, const "hundert")- , (1000, const "tausend")- ]--ordinalRepr ∷ i → Exp i → Maybe Text-ordinalRepr = render genericRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.pelletierRepr (BN.ordQuantityName "illion" "illionste"- "illion" "illionste"- )- (BN.ordQuantityName "illiarde" "illiardste"- "illiarde" "illiardste"- )- bigNumSyms- }- where- syms =- M.fromList- [ (0, \c → case c of- CtxEmpty → "nullte"- _ → "null"- )- , (1, \c → case c of- _ | isOutside R c → "erste"- CtxAdd {} → "ein"- CtxMul _ (Lit n) _- | n ≥ dec 6 → "eine"- | n ≥ 100 → "ein"- _ → "eins"- )- , (2, \c → case c of- _ | isOutside R c → "zweite"- CtxMul _ (Lit 10) _ → "zwan"- _ → "zwei"- )- , (3, \c → if isOutside R c then "dritte" else "drei")- , (4, \c → if isOutside R c then "vierte" else "vier")- , (5, \c → if isOutside R c then "fünfte" else "fünf")- , (6, \c → case c of- _ | isOutside R c → "sechste"- CtxAdd _ (Lit 10) _ → "sech"- CtxMul _ (Lit 10) _ → "sech"- _ → "sechs"- )- , (7, \c → case c of- _ | isOutside R c → "siebte"- CtxAdd _ (Lit 10) _ → "sieb"- CtxMul _ (Lit 10) _ → "sieb"- _ → "sieben"- )- , (8, \c → if isOutside R c then "achte" else "acht")- , (9, \c → if isOutside R c then "neunte" else "neun")- , (10, \c → case c of- CtxMul _ (Lit 3) _ | isOutside R c → "ßigste"- | otherwise → "ßig"- CtxMul R (Lit _) _ | isOutside R c → "zigste"- | otherwise → "zig"- _ | isOutside R c → "zehnte"- | otherwise → "zehn"- )- , (11, \c → if isOutside R c then "elfte" else "elf")- , (12, \c → if isOutside R c then "zwölfte" else "zwölf")- , (100, \c → if isOutside R c then "hundertste" else "hundert")- , (1000, \c → if isOutside R c then "tausendste" else "tausend")- ]--bigNumSyms ∷ [(ℤ, Ctx (Exp i) → Text)]-bigNumSyms =- [ (8, BN.forms "okt" "okto" "okto" "okto" "oktin")- , (10, \c → case c of- CtxAdd _ (Lit 100) _ → "dezi"- CtxMul _ _ (CtxAdd _ (Lit 100) _) → "ginta"- CtxMul {} → "gint"- _ → "dez"- )- , (100, \c → case c of- CtxMul _ (Lit n) _- | n ∈ [2,3,6] → "zent"- | otherwise → "gent"- _ → "zent"- )- ]
+ src/Text/Numeral/Language/DEU.hs view
@@ -0,0 +1,223 @@+{-|+[@ISO639-1@] de++[@ISO639-2B@] ger++[@ISO639-2T@] deu++[@ISO639-3@] deu++[@Native name@] Deutsch++[@English name@] German+-}++module Text.Numeral.Language.DEU+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ , ordinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- DEU+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "de"+ , entIso639_2 = ["ger", "deu"]+ , entIso639_3 = Just "deu"+ , entNativeNames = ["Deutsch"]+ , entEnglishName = Just "German"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ , entOrdinal = Just Conversion+ { toNumeral = ordinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++ordinal :: (Integral a) => Inflection -> a -> Maybe Text+ordinal inf = ordinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule ( 0, lit )+ [ ( 13, add 10 L )+ , ( 20, mul 10 L L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)+ `combine` pelletierScale R L BN.rule++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++genericRepr :: Repr+genericRepr = defaultRepr+ { reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "minus "+ }+ where+ (Lit n ⊞ (_ `Mul` Lit 10)) _ | n <= 9 = "und"+ (_ ⊞ _ ) _ = ""++ (_ ⊡ Scale _ _ _) _ = " "+ (_ ⊡ _) _ = ""+++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render genericRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.pelletierRepr (BN.quantityName "illion" "illionen")+ (BN.quantityName "illiarde" "illiarden")+ bigNumSyms+ }+ where+ syms =+ M.fromList+ [ (0, const "null")+ , (1, \c -> case c of+ CtxAdd R _ _ -> "eins"+ CtxAdd L _ _ -> "ein"+ CtxMul _ (Lit n) _+ | n >= dec 6 -> "eine"+ | n >= 100 -> "ein"+ _ -> "eins"+ )+ , (2, \c -> case c of+ CtxMul _ (Lit 10) _ -> "zwan"+ _ -> "zwei"+ )+ , (3, const "drei")+ , (4, const "vier")+ , (5, const "fünf")+ , (6, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "sech"+ CtxMul _ (Lit 10) _ -> "sech"+ _ -> "sechs"+ )+ , (7, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "sieb"+ CtxMul _ (Lit 10) _ -> "sieb"+ _ -> "sieben"+ )+ , (8, const "acht")+ , (9, const "neun")+ , (10, \c -> case c of+ CtxMul _ (Lit 3) _ -> "ßig"+ CtxMul R (Lit _) _ -> "zig"+ _ -> "zehn"+ )+ , (11, const "elf")+ , (12, const "zwölf")+ , (100, const "hundert")+ , (1000, const "tausend")+ ]++ordinalRepr :: Inflection -> Exp -> Maybe Text+ordinalRepr = render genericRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.pelletierRepr (BN.ordQuantityName "illion" "illionste"+ "illion" "illionste"+ )+ (BN.ordQuantityName "illiarde" "illiardste"+ "illiarde" "illiardste"+ )+ bigNumSyms+ }+ where+ syms =+ M.fromList+ [ (0, \c -> case c of+ CtxEmpty -> "nullte"+ _ -> "null"+ )+ , (1, \c -> case c of+ _ | isOutside R c -> "erste"+ CtxAdd {} -> "ein"+ CtxMul _ (Lit n) _+ | n >= dec 6 -> "eine"+ | n >= 100 -> "ein"+ _ -> "eins"+ )+ , (2, \c -> case c of+ _ | isOutside R c -> "zweite"+ CtxMul _ (Lit 10) _ -> "zwan"+ _ -> "zwei"+ )+ , (3, \c -> if isOutside R c then "dritte" else "drei")+ , (4, \c -> if isOutside R c then "vierte" else "vier")+ , (5, \c -> if isOutside R c then "fünfte" else "fünf")+ , (6, \c -> case c of+ _ | isOutside R c -> "sechste"+ CtxAdd _ (Lit 10) _ -> "sech"+ CtxMul _ (Lit 10) _ -> "sech"+ _ -> "sechs"+ )+ , (7, \c -> case c of+ _ | isOutside R c -> "siebte"+ CtxAdd _ (Lit 10) _ -> "sieb"+ CtxMul _ (Lit 10) _ -> "sieb"+ _ -> "sieben"+ )+ , (8, \c -> if isOutside R c then "achte" else "acht")+ , (9, \c -> if isOutside R c then "neunte" else "neun")+ , (10, \c -> case c of+ CtxMul _ (Lit 3) _ | isOutside R c -> "ßigste"+ | otherwise -> "ßig"+ CtxMul R (Lit _) _ | isOutside R c -> "zigste"+ | otherwise -> "zig"+ _ | isOutside R c -> "zehnte"+ | otherwise -> "zehn"+ )+ , (11, \c -> if isOutside R c then "elfte" else "elf")+ , (12, \c -> if isOutside R c then "zwölfte" else "zwölf")+ , (100, \c -> if isOutside R c then "hundertste" else "hundert")+ , (1000, \c -> if isOutside R c then "tausendste" else "tausend")+ ]++bigNumSyms :: [(Integer, Ctx Exp -> Text)]+bigNumSyms =+ [ (8, BN.forms "okt" "okto" "okto" "okto" "oktin")+ , (10, \c -> case c of+ CtxAdd _ (Lit 100) _ -> "dezi"+ CtxMul _ _ (CtxAdd _ (Lit 100) _) -> "ginta"+ CtxMul {} -> "gint"+ _ -> "dez"+ )+ , (100, \c -> case c of+ CtxMul _ (Lit n) _+ | n `elem` [2,3,6] -> "zent"+ | otherwise -> "gent"+ _ -> "zent"+ )+ ]
− src/Text/Numeral/Language/EN.hs
@@ -1,266 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] en--[@ISO639-2B@] eng--[@ISO639-3@] eng--[@Native name@] English--[@English name@] English--}--module Text.Numeral.Language.EN- ( -- * Language entries- gb_entry- , us_entry- -- * Conversions- , gb_cardinal- , gb_ordinal- , gbPelletier_cardinal- , us_cardinal- , us_ordinal- -- * Structure- , shortScaleStruct- , pelletierScaleStruct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<) )-import "base" Prelude ( (+), (-), div, subtract, negate, (^), error, Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ, (⋅) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- EN-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "en"- , entIso639_2 = ["eng"]- , entIso639_3 = Just "eng"- , entNativeNames = ["English"]- , entEnglishName = Just "English"- }--gb_entry ∷ Entry-gb_entry = entry- { entVariant = Just "en-GB"- , entCardinal = Just Conversion- { toNumeral = gb_cardinal- , toStructure = shortScaleStruct- }- , entOrdinal = Just Conversion- { toNumeral = gb_ordinal- , toStructure = shortScaleStruct- }- }--us_entry ∷ Entry-us_entry = entry- { entVariant = Just "en-US"- , entCardinal = Just Conversion- { toNumeral = us_cardinal- , toStructure = shortScaleStruct- }- , entOrdinal = Just Conversion- { toNumeral = us_ordinal- , toStructure = shortScaleStruct- }- }--gb_cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-gb_cardinal inf = render (cardinalRepr "minus " gb_add) inf ∘ shortScaleStruct--gb_ordinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-gb_ordinal inf = render (ordinalRepr gb_add) inf ∘ shortScaleStruct--gbPelletier_cardinal ∷ (Inflection i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-gbPelletier_cardinal inf = render (cardinalRepr "minus " gb_add) { reprScale = pelletierRepr } inf- ∘ pelletierScaleStruct- where- pelletierRepr = BN.pelletierRepr (\_ _ → "illion")- (\_ _ → "illiard")- []--us_cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-us_cardinal inf = render (cardinalRepr "negative " us_add) inf ∘ shortScaleStruct--us_ordinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-us_ordinal inf = render (ordinalRepr us_add) inf ∘ shortScaleStruct--shortScaleStruct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-shortScaleStruct = pos $ fix $ rule `combine` shortScale1 R L BN.rule--pelletierScaleStruct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-pelletierScaleStruct = pos $ fix $ rule `combine` pelletierScale1 R L BN.rule--rule ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ Rule α β-rule = findRule ( 0, lit )- [ ( 13, add 10 L )- , ( 20, mul 10 R L)- , ( 100, step1 100 10 R L)- , (1000, step1 1000 1000 R L)- ]- (dec 6 - 1)--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 30003 - 1 in (negate x, x)--genericRepr ∷ (Exp i → Exp i → Ctx (Exp i) → Text) -- ^ Add representation.- → Repr i-genericRepr f =- defaultRepr- { reprAdd = Just f- , reprMul = Just (⊞)- }- where- (_ ⊞ Lit 10) _ = ""- (_ ⊞ _ ) _ = " "--eval ∷ Exp i → ℤ-eval (Lit x) = x-eval (Add x y) = eval x + eval y-eval (Mul x y) = eval x ⋅ eval y-eval (Sub x y) = subtract (eval x) (eval y)-eval (Neg x) = negate (eval x)-eval (Frac n d) = eval n `div` eval d-eval (Scale b o r) = 10 ^ (eval r ⋅ b + o)-eval (Dual x) = eval x-eval (Plural x) = eval x-eval (Inflection _ x) = eval x-eval Unknown = error "eval: unknown"---gb_add ∷ Exp i → Exp i → Ctx (Exp i) → Text-((_ `Mul` Lit 10) `gb_add` _) _ = "-"-((_ `Mul` _ ) `gb_add` x) _- | eval x < (100 ∷ ℤ) = " and "- | otherwise = " "-(_ `gb_add` _) _ = ""--us_add ∷ Exp i → Exp i → Ctx (Exp i) → Text-((_ `Mul` Lit 10) `us_add` _) _ = "-"-((_ `Mul` _ ) `us_add` _) _ = " "-(_ `us_add` _) _ = ""--cardinalRepr ∷ Text -- ^ Negative number prefix.- → (Exp i → Exp i → Ctx (Exp i) → Text)- → Repr i-cardinalRepr neg f =- (genericRepr f)- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.scaleRepr (\_ _ → "illion") []- , reprNeg = Just $ \_ _ → neg- }- where- syms =- M.fromList- [ (0, const "zero")- , (1, const "one")- , (2, ten "two" "two" "twen")- , (3, ten "three" "thir" "thir")- , (4, ten "four" "four" "for")- , (5, ten "five" "fif" "fif")- , (6, const "six")- , (7, const "seven")- , (8, ten "eight" "eigh" "eigh")- , (9, const "nine")- , (10, \c → case c of- CtxAdd _ (Lit _) _ → "teen"- CtxMul R _ _ → "ty"- _ → "ten"- )- , (11, const "eleven")- , (12, const "twelve")- , (100, const "hundred")- , (1000, const "thousand")- ]-- ten ∷ s → s → s → Ctx (Exp i) → s- ten n a m = \c → case c of- CtxAdd _ (Lit 10) _ → a- CtxMul _ (Lit 10) _ → m- _ → n--ordinalRepr ∷ (Exp i → Exp i → Ctx (Exp i) → Text) → Repr i-ordinalRepr f = (genericRepr f)- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.scaleRepr (BN.ordQuantityName "illion" "illionth"- "illion" "illionth"- )- []- }- where- syms =- M.fromList- [ (0, const "zeroth")- , (1, \c → case c of- _ | isOutside R c → "first"- | otherwise → "one"- )- , (2, ten "second" "two" "two" "twen")- , (3, ten "third" "three" "thir" "thir")- , (4, ten "fourth" "four" "four" "for")- , (5, ten "fifth" "five" "fif" "fif")- , (6, \c → if isOutside R c then "sixth" else "six")- , (7, \c → if isOutside R c then "seventh" else "seven")- , (8, ten "eighth" "eight" "eigh" "eigh")- , (9, \c → if isOutside R c then "ninth" else "nine")- , (10, \c → case c of- CtxAdd _ (Lit _) _ | isOutside R c → "teenth"- | otherwise → "teen"- CtxMul R _ _ | isOutside R c → "tieth"- | otherwise → "ty"- _ | isOutside R c → "tenth"- | otherwise → "ten"- )- , (11, \c → if isOutside R c then "eleventh" else "eleven")- , (12, \c → if isOutside R c then "twelfth" else "twelf")- , (100, \c → if isOutside R c then "hundreth" else "hundred")- , (1000, \c → if isOutside R c then "thousandth" else "thousand")- ]-- ten ∷ s -- ^ Ordinal form.- → s -- ^ Cardinal form; normal.- → s -- ^ Cardinal form; added to ten.- → s -- ^ Cardinal form; multiplied with ten.- → Ctx (Exp i)- → s- ten o n a m ctx = case ctx of- _ | isOutside R ctx → o- CtxAdd _ (Lit 10) _ → a- CtxMul _ (Lit 10) _ → m- _ → n
+ src/Text/Numeral/Language/ENG.hs view
@@ -0,0 +1,232 @@+{-|+[@ISO639-1@] en++[@ISO639-2B@] eng++[@ISO639-3@] eng++[@Native name@] English++[@English name@] English+-}++module Text.Numeral.Language.ENG+ ( -- * Language entries+ gb_entry+ , us_entry+ -- * Conversions+ , gb_cardinal+ , gb_ordinal+ , gbPelletier_cardinal+ , us_cardinal+ , us_ordinal+ -- * Structure+ , shortScaleStruct+ , pelletierScaleStruct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- ENG+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "en"+ , entIso639_2 = ["eng"]+ , entIso639_3 = Just "eng"+ , entNativeNames = ["English"]+ , entEnglishName = Just "English"+ }++gb_entry :: Entry+gb_entry = entry+ { entVariant = Just "en-GB"+ , entCardinal = Just Conversion+ { toNumeral = gb_cardinal+ , toStructure = shortScaleStruct+ }+ , entOrdinal = Just Conversion+ { toNumeral = gb_ordinal+ , toStructure = shortScaleStruct+ }+ }++us_entry :: Entry+us_entry = entry+ { entVariant = Just "en-US"+ , entCardinal = Just Conversion+ { toNumeral = us_cardinal+ , toStructure = shortScaleStruct+ }+ , entOrdinal = Just Conversion+ { toNumeral = us_ordinal+ , toStructure = shortScaleStruct+ }+ }++gb_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+gb_cardinal inf = render (cardinalRepr "minus " gb_add) inf . shortScaleStruct++gb_ordinal :: (Integral a) => Inflection -> a -> Maybe Text+gb_ordinal inf = render (ordinalRepr gb_add) inf . shortScaleStruct++gbPelletier_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+gbPelletier_cardinal inf = render (cardinalRepr "minus " gb_add) { reprScale = pelletierRepr } inf+ . pelletierScaleStruct+ where+ pelletierRepr = BN.pelletierRepr (\_ _ -> "illion")+ (\_ _ -> "illiard")+ []++us_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+us_cardinal inf = render (cardinalRepr "negative " us_add) inf . shortScaleStruct++us_ordinal :: (Integral a) => Inflection -> a -> Maybe Text+us_ordinal inf = render (ordinalRepr us_add) inf . shortScaleStruct++shortScaleStruct :: (Integral a) => a -> Exp+shortScaleStruct = pos $ fix $ rule `combine` shortScale1 R L BN.rule++pelletierScaleStruct :: (Integral a) => a -> Exp+pelletierScaleStruct = pos $ fix $ rule `combine` pelletierScale1 R L BN.rule++rule :: (Integral a) => Rule a+rule = findRule ( 0, lit )+ [ ( 13, add 10 L )+ , ( 20, mul 10 R L)+ , ( 100, step1 100 10 R L)+ , (1000, step1 1000 1000 R L)+ ]+ (dec 6 - 1)++bounds :: (Integral a) => (a, a)+bounds = let x = dec 30003 - 1 in (negate x, x)++genericRepr :: (Exp -> Exp -> Ctx Exp -> Text) -- ^ Add representation.+ -> Repr+genericRepr f =+ defaultRepr+ { reprAdd = Just f+ , reprMul = Just (⊞)+ }+ where+ (_ ⊞ Lit 10) _ = ""+ (_ ⊞ _ ) _ = " "++gb_add :: Exp -> Exp -> Ctx Exp -> Text+((_ `Mul` Lit 10) `gb_add` _) _ = "-"+((_ `Mul` _ ) `gb_add` _x) _+ -- | eval x < (100 :: Integer) = " and "+ | otherwise = " "+(_ `gb_add` _) _ = ""++us_add :: Exp -> Exp -> Ctx Exp -> Text+((_ `Mul` Lit 10) `us_add` _) _ = "-"+((_ `Mul` _ ) `us_add` _) _ = " "+(_ `us_add` _) _ = ""++cardinalRepr :: Text -- ^ Negative number prefix.+ -> (Exp -> Exp -> Ctx Exp -> Text)+ -> Repr+cardinalRepr neg f =+ (genericRepr f)+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.scaleRepr (\_ _ -> "illion") []+ , reprNeg = Just $ \_ _ -> neg+ }+ where+ syms =+ M.fromList+ [ (0, const "zero")+ , (1, const "one")+ , (2, ten "two" "two" "twen")+ , (3, ten "three" "thir" "thir")+ , (4, ten "four" "four" "for")+ , (5, ten "five" "fif" "fif")+ , (6, const "six")+ , (7, const "seven")+ , (8, ten "eight" "eigh" "eigh")+ , (9, const "nine")+ , (10, \c -> case c of+ CtxAdd _ (Lit _) _ -> "teen"+ CtxMul R _ _ -> "ty"+ _ -> "ten"+ )+ , (11, const "eleven")+ , (12, const "twelve")+ , (100, const "hundred")+ , (1000, const "thousand")+ ]++ ten :: s -> s -> s -> Ctx Exp -> s+ ten n a m = \c -> case c of+ CtxAdd _ (Lit 10) _ -> a+ CtxMul _ (Lit 10) _ -> m+ _ -> n++ordinalRepr :: (Exp -> Exp -> Ctx Exp -> Text) -> Repr+ordinalRepr f = (genericRepr f)+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.scaleRepr (BN.ordQuantityName "illion" "illionth"+ "illion" "illionth"+ )+ []+ }+ where+ syms =+ M.fromList+ [ (0, const "zeroth")+ , (1, \c -> case c of+ _ | isOutside R c -> "first"+ | otherwise -> "one"+ )+ , (2, ten "second" "two" "two" "twen")+ , (3, ten "third" "three" "thir" "thir")+ , (4, ten "fourth" "four" "four" "for")+ , (5, ten "fifth" "five" "fif" "fif")+ , (6, \c -> if isOutside R c then "sixth" else "six")+ , (7, \c -> if isOutside R c then "seventh" else "seven")+ , (8, ten "eighth" "eight" "eigh" "eigh")+ , (9, \c -> if isOutside R c then "ninth" else "nine")+ , (10, \c -> case c of+ CtxAdd _ (Lit _) _ | isOutside R c -> "teenth"+ | otherwise -> "teen"+ CtxMul R _ _ | isOutside R c -> "tieth"+ | otherwise -> "ty"+ _ | isOutside R c -> "tenth"+ | otherwise -> "ten"+ )+ , (11, \c -> if isOutside R c then "eleventh" else "eleven")+ , (12, \c -> if isOutside R c then "twelfth" else "twelf")+ , (100, \c -> if isOutside R c then "hundreth" else "hundred")+ , (1000, \c -> if isOutside R c then "thousandth" else "thousand")+ ]++ ten :: s -- ^ Ordinal form.+ -> s -- ^ Cardinal form; normal.+ -> s -- ^ Cardinal form; added to ten.+ -> s -- ^ Cardinal form; multiplied with ten.+ -> Ctx Exp+ -> s+ ten o n a m ctx =+ case ctx of+ _ | isOutside R ctx -> o+ CtxAdd _ (Lit 10) _ -> a+ CtxMul _ (Lit 10) _ -> m+ _ -> n
− src/Text/Numeral/Language/EO.hs
@@ -1,100 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] eo--[@ISO639-2B@] epo--[@ISO639-3@] epo--[@Native name@] Esperanto--[@English name@] Esperanto--}--module Text.Numeral.Language.EO- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- EO-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "eo"- , entIso639_2 = ["epo"]- , entIso639_3 = Just "epo"- , entNativeNames = ["Esperanto"]- , entEnglishName = Just "Esperanto"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β-struct = checkPos- $ fix- $ findRule ( 0, lit )- [ ( 11, step 10 10 R L)- , (100, step 100 10 R L)- ]- 1000--bounds ∷ (Integral α) ⇒ (α, α)-bounds = (0, 1000)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just $ \_ _ _ → " "- , reprMul = Just $ \_ _ _ → ""- }- where- syms =- M.fromList- [ (0, const "nul")- , (1, const "unu")- , (2, const "du")- , (3, const "tri")- , (4, const "kvar")- , (5, const "kvin")- , (6, const "ses")- , (7, const "sep")- , (8, const "ok")- , (9, const "naŭ")- , (10, const "dek")- , (100, const "cent")- , (1000, const "mil")- ]
+ src/Text/Numeral/Language/EPO.hs view
@@ -0,0 +1,90 @@+{-|+[@ISO639-1@] eo++[@ISO639-2B@] epo++[@ISO639-3@] epo++[@Native name@] Esperanto++[@English name@] Esperanto+-}++module Text.Numeral.Language.EPO+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- EPO+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "eo"+ , entIso639_2 = ["epo"]+ , entIso639_3 = Just "epo"+ , entNativeNames = ["Esperanto"]+ , entEnglishName = Just "Esperanto"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = checkPos+ $ fix+ $ findRule ( 0, lit )+ [ ( 11, step 10 10 R L)+ , (100, step 100 10 R L)+ ]+ 1000++bounds :: (Integral a) => (a, a)+bounds = (0, 1000)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just $ \_ _ _ -> " "+ , reprMul = Just $ \_ _ _ -> ""+ }+ where+ syms =+ M.fromList+ [ (0, const "nul")+ , (1, const "unu")+ , (2, const "du")+ , (3, const "tri")+ , (4, const "kvar")+ , (5, const "kvin")+ , (6, const "ses")+ , (7, const "sep")+ , (8, const "ok")+ , (9, const "naŭ")+ , (10, const "dek")+ , (100, const "cent")+ , (1000, const "mil")+ ]
− src/Text/Numeral/Language/ES.hs
@@ -1,207 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] es--[@ISO639-2B@] spa--[@ISO639-3@] spa--[@Native name@] Español--[@English name@] Spanish--}--module Text.Numeral.Language.ES- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------ Imports----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<) )-import "base" Prelude ( (-), negate, Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- ES----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "es"- , entIso639_2 = ["spa"]- , entIso639_3 = Just "spa"- , entNativeNames = ["Español"]- , entEnglishName = Just "Spanish"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ ( G.Feminine i, G.Masculine i- , Integral α, E.Scale α- )- ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Masculine (E.Inf β)- )- ⇒ α → β-struct = pos $ fix $ rule `combine` longScale1_es- where- rule = findRule ( 0, lit )- [ ( 11, add 10 L )- , ( 16, add 10 R )- , ( 20, lit )- , ( 21, add 20 R )- , ( 30, mul 10 R L)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)---- | Like 'longScale1' with the difference that all scale elements are--- masculine.-longScale1_es ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Masculine (E.Inf β)- )- ⇒ Rule α β-longScale1_es = mulScale1_es 6 0 R L BN.rule- where- mulScale1_es = mulScale_ $ \f m s _ → masculineMul (f m) s- masculineMul x y = E.inflection (G.masculine) $ E.mul x y--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--cardinalRepr ∷ ( G.Feminine i, G.Masculine i)- ⇒ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = longScaleRepr- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "menos "- }- where- (_ ⊞ Lit 10) _ = ""- (Lit 10 ⊞ _ ) _ = ""- (Lit 20 ⊞ _ ) _ = ""- ((Lit _ `Mul` Lit 10) ⊞ _ ) _ = " y "- (_ ⊞ _ ) _ = " "-- (_ ⊡ Lit n) _ | n < 1000 = ""- (_ ⊡ _ ) _ = " "-- syms inf =- M.fromList- [ (0, const "cero")- , (1, \c → case c of- CtxAdd _ (Lit 10) _ → "on"- CtxAdd _ (Lit 20) _- | G.isMasculine inf → "ún"- _ | G.isFeminine inf → "una"- | G.isMasculine inf → "un"- | otherwise → "uno"- )- , (2, \c → case c of- CtxAdd _ (Lit 10) _ → "do"- CtxAdd _ (Lit 20) _ → "dós"- _ → "dos"- )- , (3, \c → case c of- CtxAdd _ (Lit 10) _ → "tre"- CtxAdd _ (Lit 20) _ → "trés"- CtxMul _ (Lit 10) _ → "trein"- _ → "tres"- )- , (4, \c → case c of- CtxAdd _ (Lit 10) _ → "cator"- CtxMul _ (Lit 10) _ → "cuaren"- _ → "cuatro"- )- , (5, \c → case c of- CtxAdd _ (Lit 10) _ → "quin"- CtxMul _ (Lit 10) _ → "cincuen"- CtxMul _ (Lit 100) _ → "quin"- _ → "cinco"- )- , (6, \c → case c of- CtxAdd _ (Lit 10) _ → "séis"- CtxAdd _ (Lit 20) _ → "séis"- CtxMul _ (Lit 10) _ → "sesen"- _ → "seis"- )- , (7, \c → case c of- CtxMul _ (Lit 10) _ → "seten"- CtxMul _ (Lit 100) _ → "sete"- _ → "siete"- )- , (8, \c → case c of- CtxMul _ (Lit 10) _ → "ochen"- _ → "ocho"- )- , (9, \c → case c of- CtxMul _ (Lit 10) _ → "noven"- CtxMul _ (Lit 100) _ → "nove"- _ → "nueve"- )- , (10, \c → case c of- CtxAdd R (Lit _) _ → "ce"- CtxAdd L (Lit _) _ → "dieci"- CtxMul R _ _ → "ta"- _ → "diez"- )- , (20, \c → case c of- CtxAdd _ (Lit _) _ → "veinti"- _ → "veinte"- )- , (100, \c → case c of- CtxEmpty → "cien"- CtxAdd {} → "ciento"- CtxMul _ (Lit 5) _- | G.isFeminine inf → "ientas"- | otherwise → "ientos"- CtxMul L _ _ → "cien"- _ | G.isFeminine inf → "cientas"- | otherwise → "cientos"- )- , (1000, const "mil")- ]--longScaleRepr ∷ i → ℤ → ℤ → (Exp i) → Ctx (Exp i) → Maybe Text-longScaleRepr =- BN.scaleRepr (BN.quantityName "illón" "illones")- [ (4, BN.forms "cuatr" "cuator" "cuator" "cuatra" "cuatri")- , (9, BN.forms "non" "noven" "noven" "nona" "non")- ]
src/Text/Numeral/Language/Entries.hs view
@@ -10,108 +10,96 @@ -------------------------------------------------------------------------------- import "this" Text.Numeral.Entry ( Entry(..) )-import qualified "this" Text.Numeral.Language.AF as AF+import qualified "this" Text.Numeral.Language.AFR as AFR import qualified "this" Text.Numeral.Language.AMP as AMP-import qualified "this" Text.Numeral.Language.BG as BG+import qualified "this" Text.Numeral.Language.BUL as BUL+import qualified "this" Text.Numeral.Language.CES as CES import qualified "this" Text.Numeral.Language.CHN as CHN import qualified "this" Text.Numeral.Language.CHR as CHR import qualified "this" Text.Numeral.Language.CLM as CLM-import qualified "this" Text.Numeral.Language.CS as CS--- import qualified "this" Text.Numeral.Language.CY as CY--- import qualified "this" Text.Numeral.Language.DA as DA-import qualified "this" Text.Numeral.Language.DE as DE-import qualified "this" Text.Numeral.Language.EN as EN-import qualified "this" Text.Numeral.Language.EO as EO-import qualified "this" Text.Numeral.Language.ES as ES--- import qualified "this" Text.Numeral.Language.ET as ET-import qualified "this" Text.Numeral.Language.FI as FI-import qualified "this" Text.Numeral.Language.FR as FR+import qualified "this" Text.Numeral.Language.DEU as DEU+import qualified "this" Text.Numeral.Language.ENG as ENG+import qualified "this" Text.Numeral.Language.EPO as EPO+import qualified "this" Text.Numeral.Language.FIN as FIN+import qualified "this" Text.Numeral.Language.FRA as FRA import qualified "this" Text.Numeral.Language.FUR as FUR+import qualified "this" Text.Numeral.Language.GLV as GLV import qualified "this" Text.Numeral.Language.GSW as GSW-import qualified "this" Text.Numeral.Language.GV as GV-import qualified "this" Text.Numeral.Language.HE as HE+import qualified "this" Text.Numeral.Language.HEB as HEB import qualified "this" Text.Numeral.Language.HOP as HOP--- import qualified "this" Text.Numeral.Language.HR as HR--- import qualified "this" Text.Numeral.Language.HU as HU-import qualified "this" Text.Numeral.Language.IT as IT-import qualified "this" Text.Numeral.Language.JA as JA-import qualified "this" Text.Numeral.Language.LA as LA+import qualified "this" Text.Numeral.Language.ITA as ITA+import qualified "this" Text.Numeral.Language.JPN as JPN+import qualified "this" Text.Numeral.Language.LAT as LAT import qualified "this" Text.Numeral.Language.LLD as LLD-import qualified "this" Text.Numeral.Language.MG as MG-import qualified "this" Text.Numeral.Language.NL as NL-import qualified "this" Text.Numeral.Language.NO as NO+import qualified "this" Text.Numeral.Language.MLG as MLG+import qualified "this" Text.Numeral.Language.NEN as NEN+import qualified "this" Text.Numeral.Language.NLD as NLD+import qualified "this" Text.Numeral.Language.NOB as NOB import qualified "this" Text.Numeral.Language.NQM as NQM-import qualified "this" Text.Numeral.Language.OJ as OJ--- import qualified "this" Text.Numeral.Language.PAA as PAA+import qualified "this" Text.Numeral.Language.OJI as OJI import qualified "this" Text.Numeral.Language.PDC as PDC-import qualified "this" Text.Numeral.Language.PL as PL-import qualified "this" Text.Numeral.Language.PT as PT--- import qualified "this" Text.Numeral.Language.RO as RO-import qualified "this" Text.Numeral.Language.RU as RU+import qualified "this" Text.Numeral.Language.POL as POL+import qualified "this" Text.Numeral.Language.POR as POR+import qualified "this" Text.Numeral.Language.RUS as RUS import qualified "this" Text.Numeral.Language.SCO as SCO-import qualified "this" Text.Numeral.Language.SV as SV-import qualified "this" Text.Numeral.Language.TR as TR-import qualified "this" Text.Numeral.Language.WO as WO+import qualified "this" Text.Numeral.Language.SPA as SPA+import qualified "this" Text.Numeral.Language.SWE as SWE+import qualified "this" Text.Numeral.Language.TUR as TUR+import qualified "this" Text.Numeral.Language.WOL as WOL import qualified "this" Text.Numeral.Language.YOR as YOR-import qualified "this" Text.Numeral.Language.ZH as ZH+import qualified "this" Text.Numeral.Language.ZHO as ZHO -------------------------------------------------------------------------------- -- Language entries -------------------------------------------------------------------------------- -entries ∷ [Entry]+entries :: [Entry] entries =- [ AF.entry+ [ AFR.entry , AMP.entry- , BG.entry+ , BUL.entry , CHN.entry , CHR.entry , CLM.entry- , CS.entry---, CY.entry---, DA.entry- , DE.entry- , EN.gb_entry- , EN.us_entry- , EO.entry- , ES.entry---, ET.entry- , FI.entry- , FR.entry+ , CES.entry+ , DEU.entry+ , ENG.gb_entry+ , ENG.us_entry+ , EPO.entry+ , SPA.entry+ , FIN.entry+ , FRA.entry , FUR.entry , GSW.entry- , GV.entry- , HE.entry+ , GLV.entry+ , HEB.entry , HOP.entry---, HR.entry---, HU.entry- , IT.entry- , JA.daiji_entry- , JA.kanji_entry- , JA.on'yomi_entry- , JA.preferred_entry- , LA.entry+ , ITA.entry+ , JPN.daiji_entry+ , JPN.kanji_entry+ , JPN.on'yomi_entry+ , JPN.preferred_entry+ , LAT.entry , LLD.entry- , MG.entry- , NL.entry- , NO.entry+ , MLG.entry+ , NEN.entry+ , NLD.entry+ , NOB.entry , NQM.entry- , OJ.entry---, PAA.entry+ , OJI.entry , PDC.entry- , PL.entry- , PT.entry---, RO.entry- , RU.entry+ , POL.entry+ , POR.entry+ , RUS.entry , SCO.entry- , SV.entry- , TR.entry- , WO.entry+ , SWE.entry+ , TUR.entry+ , WOL.entry , YOR.entry- , ZH.finance_simpl_entry- , ZH.finance_trad_entry- , ZH.pinyin_entry- , ZH.simpl_entry- , ZH.trad_entry+ , ZHO.finance_simpl_entry+ , ZHO.finance_trad_entry+ , ZHO.pinyin_entry+ , ZHO.simpl_entry+ , ZHO.trad_entry ]
− src/Text/Numeral/Language/FI.hs
@@ -1,960 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] fi--[@ISO639-2B@] fin--[@ISO639-3@] fin--[@Native name@] suomi--[@English name@] Finnish--}--module Text.Numeral.Language.FI- ( -- * Language entry- entry- -- * Conversions- , cardinal- , ordinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), fix, flip )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Num, Integral, (-), negate, divMod )-import "base-unicode-symbols" Data.Bool.Unicode ( (∧) )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- FI----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "fi"- , entIso639_2 = ["fin"]- , entIso639_3 = Just "fin"- , entNativeNames = ["suomi"]- , entEnglishName = Just "Finnish"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- , entOrdinal = Just Conversion- { toNumeral = ordinal- , toStructure = struct- }- }--cardinal ∷ ( G.Singular i, G.Plural i- , G.Abessive i- , G.Accusative i- , G.Comitative i- , G.Delative i- , G.Distributive i- , G.DistributiveTemporal i- , G.Essive i- , G.Genitive i- , G.Instructive i- , G.Lative i- , G.LocativeInessive i- , G.LocativeElative i- , G.LocativeIllative i- , G.LocativeAdessive i- , G.LocativeAblative i- , G.LocativeAllative i- , G.Multiplicative i- , G.Nominative i- , G.Partitive i- , G.Sublative i- , G.SuperEssive i- , G.Translative i- , Integral α, E.Scale α- )- ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--ordinal ∷ ( G.Singular i, G.Plural i- , G.Abessive i- , G.Accusative i- , G.Comitative i- , G.Delative i- , G.Distributive i- , G.DistributiveTemporal i- , G.Essive i- , G.Genitive i- , G.Instructive i- , G.Lative i- , G.LocativeInessive i- , G.LocativeElative i- , G.LocativeIllative i- , G.LocativeAdessive i- , G.LocativeAblative i- , G.LocativeAllative i- , G.Multiplicative i- , G.Nominative i- , G.Partitive i- , G.Sublative i- , G.SuperEssive i- , G.Translative i- , Integral α, E.Scale α- )- ⇒ i → α → Maybe Text-ordinal inf = ordinalRepr inf ∘ struct--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Add β, E.Mul β- , E.Inflection β, E.Scale β- , G.Singular (E.Inf β)- , G.Nominative (E.Inf β)- , G.Accusative (E.Inf β)- , G.Partitive (E.Inf β)- )- ⇒ α → β-struct = fix $ rule `combine` pelletierScale R L BN.rule- where- rule = findRule ( 0, lit)- [ ( 11, add 10 L)- , ( 20, fi_mul 10)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)---- | Like the normal 'mul' rule with the difference that the value--- that is multiplied is changed to the partitive case.-fi_mul ∷ ( Integral α- , E.Add β, E.Mul β, E.Inflection β- , G.Singular (E.Inf β)- , G.Nominative (E.Inf β)- , G.Accusative (E.Inf β)- , G.Partitive (E.Inf β)- )- ⇒ α → Rule α β-fi_mul val =- \f n → let (m, a) = n `divMod` val- mval = E.mul (f m) (E.inflection toPartitive $ f val)- in if a ≡ 0- then mval- else (flip E.add) (f a) mval- where- toPartitive ∷ (G.Singular i, G.Nominative i, G.Accusative i, G.Partitive i)- ⇒ i → i- toPartitive inf | G.isSingular inf ∧ G.isNominative inf = G.partitive inf- | G.isSingular inf ∧ G.isAccusative inf = G.partitive inf- | otherwise = inf--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 15 - 1 in (negate x, x)--cardinalRepr ∷ ( G.Singular i, G.Plural i- , G.Abessive i- , G.Accusative i- , G.Comitative i- , G.Delative i- , G.Distributive i- , G.DistributiveTemporal i- , G.Essive i- , G.Genitive i- , G.Instructive i- , G.Lative i- , G.LocativeInessive i- , G.LocativeElative i- , G.LocativeIllative i- , G.LocativeAdessive i- , G.LocativeAblative i- , G.LocativeAllative i- , G.Multiplicative i- , G.Nominative i- , G.Partitive i- , G.Sublative i- , G.SuperEssive i- , G.Translative i- )- ⇒ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = BN.pelletierRepr- (BN.quantityName "iljoona" "iljoonaa")- (BN.quantityName "iljardi" "iljardia")- []- , reprAdd = Just $ \_ _ _ → ""- , reprMul = Just $ \_ _ _ → ""- }- where- syms inf =- M.fromList- [ (0, \c → infForms inf c- -- singular- "nolla" {- nom -} "nolla" {- acc -}- "nollan" {- gen -} "nollaa" {- ptv -}- "nollana" {- ess -} "nollaksi" {- transl -}- "nollassa" {- ine -} "nollasta" {- ela -}- "nollaan" {- ill -} "nollalla" {- ade -}- "nollalta" {- abl -} "nollalle" {- all -}- "nollatta" {- abe -}- "?" {- other -}- -- plural- "nollat" {- nom -} "nollat" {- acc -}- "nollien" {- gen -} "nollia" {- ptv -}- "nollina" {- ess -} "nolliksi" {- transl -}- "nollissa" {- ine -} "nollista" {- ela -}- "nolliin" {- ill -} "nollilla" {- ade -}- "nollilta" {- abl -} "nollille" {- all -}- "nollitta" {- abe -} "nolline" {- com -}- "nollin" {- instr -}- "?" {- other -}- )- , (1, \c → infForms inf c- -- singular- "yksi" {- nom -} "yksi" {- acc -}- "yhden" {- gen -} "yhtä" {- ptv -}- "yhtenä" {- ess -} "yhdeksi" {- transl -}- "yhdessä" {- ine -} "yhdestä" {- ela -}- "yhteen" {- ill -} "yhdellä" {- ade -}- "yhdeltä" {- abl -} "yhdelle" {- all -}- "yhdettä" {- abe -}- (case inf of- _ | G.isSuperEssive inf → "yhtäällä"- | G.isDelative inf → "yhtäältä"- | G.isSublative inf → "yhtäälle"- | G.isLative inf → "yhä"- | G.isMultiplicative inf → "yhdesti"- | otherwise → "?"- )- -- plural- "yhdet" {- nom -} "yhdet" {- acc -}- "yksien" {- gen -} "yksiä" {- ptv -}- "yksinä" {- ess -} "yksiksi" {- transl -}- "yksissä" {- ine -} "yksistä" {- ela -}- "yksiin" {- ill -} "yksillä" {- ade -}- "yksiltä" {- abl -} "yksille" {- all -}- "yksittä" {- abe -} "yksine" {- com -}- "yksin" {- instr -}- (case inf of- _ | G.isDistributive inf → "yksittäin"- | otherwise → "?"- )- )- , (2, \c → infForms inf c- -- singular- "kaksi" {- nom -} "kaksi" {- acc -}- "kahden" {- gen -} "kahta" {- ptv -}- "kahtena" {- ess -} "kahdeksi" {- transl -}- "kahdessa" {- ine -} "kahdesta" {- ela -}- "kahteen" {- ill -} "kahdella" {- ade -}- "kahdelta" {- abl -} "kahdelle" {- all -}- "kahdetta" {- abe -}- (case inf of- _ | G.isInstructive inf → "kahden"- | G.isSuperEssive inf → "kahtaalla"- | G.isDelative inf → "kahtaalta"- | G.isSublative inf → "kahtaalle"- | G.isLative inf → "kahtia"- | G.isMultiplicative inf → "kahdesti"- | otherwise → "?"- )- -- plural- "kahdet" {- nom -} "kahdet" {- acc -}- "kaksien" {- gen -} "kaksia" {- ptv -}- "kaksina" {- ess -} "kaksiksi" {- transl -}- "kaksissa" {- ine -} "kaksista" {- ela -}- "kaksiin" {- ill -} "kaksilla" {- ade -}- "kaksilta" {- abl -} "kaksille" {- all -}- "kaksitta" {- abe -} "kaksine" {- com -}- "kaksin" {- instr -}- (case inf of- _ | G.isDistributive inf → "kaksittain"- | otherwise → "?"- )- )- , (3, \c → infForms inf c- -- singular- "kolme" {- nom -} "kolme" {- acc -}- "kolmen" {- gen -} "kolmea" {- ptv -}- "kolmena" {- ess -} "kolmeksi" {- transl -}- "kolmessa" {- ine -} "kolmesta" {- ela -}- "kolmeen" {- ill -} "kolmella" {- ade -}- "kolmelta" {- abl -} "kolmelle" {- all -}- "kolmetta" {- abe -}- (case inf of- _ | G.isInstructive inf → "kolmen"- | G.isLative inf → "kolmia"- | G.isMultiplicative inf → "kolmesti"- | otherwise → "?"- )- -- plural- "kolmet" {- nom -} "kolmet" {- acc -}- "kolmien" {- gen -} "kolmia" {- ptv -}- "kolmina" {- ess -} "kolmiksi" {- transl -}- "kolmissa" {- ine -} "kolmista" {- ela -}- "kolmiin" {- ill -} "kolmilla" {- ade -}- "kolmilta" {- abl -} "kolmille" {- all -}- "kolmitta" {- abe -} "kolmine" {- com -}- "kolmin" {- instr -}- (case inf of- _ | G.isDistributive inf → "kolmittain"- | G.isDistributiveTemporal inf → "kolmisin"- | otherwise → "?"- )- )- , (4, \c → infForms inf c- -- singular- "neljä" {- nom -} "neljä" {- acc -}- "neljän" {- gen -} "neljää" {- ptv -}- "neljänä" {- ess -} "neljäksi" {- transl -}- "neljässä" {- ine -} "neljästä" {- ela -}- "neljään" {- ill -} "neljällä" {- ade -}- "neljältä" {- abl -} "neljälle" {- all -}- "neljättä" {- abe -}- "?" {- other -}- -- plural- "neljät" {- nom -} "neljät" {- acc -}- "neljien" {- gen -} "neljiä" {- ptv -}- "neljinä" {- ess -} "neljiksi" {- transl -}- "neljissä" {- ine -} "neljistä" {- ela -}- "neljiin" {- ill -} "neljillä" {- ade -}- "neljiltä" {- abl -} "neljille" {- all -}- "neljittä" {- abe -} "neljine" {- com -}- "neljin" {- instr -}- "?" {- other -}- )- , (5, \c → infForms inf c- -- singular- "viisi" {- nom -} "viisi" {- acc -}- "viiden" {- gen -} "viittä" {- ptv -}- "viitenä" {- ess -} "viideksi" {- transl -}- "viidessä" {- ine -} "viidestä" {- ela -}- "viiteen" {- ill -} "viidellä" {- ade -}- "viideltä" {- abl -} "viidelle" {- all -}- "viidettä" {- abe -}- "?" {- other -}- -- plural- "viidet" {- nom -} "viidet" {- acc -}- "viisien" {- gen -} "viisiä" {- ptv -}- "viisinä" {- ess -} "viisiksi" {- transl -}- "viisissä" {- ine -} "viisistä" {- ela -}- "viisiin" {- ill -} "viisillä" {- ade -}- "viisiltä" {- abl -} "viisille" {- all -}- "viisittä" {- abe -} "viisine" {- com -}- "viisin" {- instr -}- "?" {- other -}- )- , (6, \c → infForms inf c- -- singular- "kuusi" {- nom -} "kuusi" {- acc -}- "kuuden" {- gen -} "kuutta" {- ptv -}- "kuutena" {- ess -} "kuudeksi" {- transl -}- "kuudessa" {- ine -} "kuudesta" {- ela -}- "kuuteen" {- ill -} "kuudella" {- ade -}- "kuudelta" {- abl -} "kuudelle" {- all -}- "kuudetta" {- abe -}- "?" {- other -}- -- plural- "kuudet" {- nom -} "kuudet" {- acc -}- "kuusien" {- gen -} "kuusia" {- ptv -}- "kuusina" {- ess -} "kuusiksi" {- transl -}- "kuusissa" {- ine -} "kuusista" {- ela -}- "kuusiin" {- ill -} "kuusilla" {- ade -}- "kuusilta" {- abl -} "kuusille" {- all -}- "kuusitta" {- abe -} "kuusine" {- com -}- "kuusin" {- instr -}- "?" {- other -}- )- , (7, \c → infForms inf c- -- singular- "seitsemän" {- nom -} "seitsemän" {- acc -}- "seitsemän" {- gen -} "seitsemää" {- ptv -}- "seitsemänä" {- ess -} "seitsemäksi" {- transl -}- "seitsemässä" {- ine -} "seitsemästä" {- ela -}- "seitsemään" {- ill -} "seitsemällä" {- ade -}- "seitsemältä" {- abl -} "seitsemälle" {- all -}- "seitsemättä" {- abe -}- "?" {- other -}- -- plural- "seitsemät" {- nom -} "seitsemät" {- acc -}- "seitsemien" {- gen -} "seitsemiä" {- ptv -}- "seitseminä" {- ess -} "seitsemiksi" {- transl -}- "seitsemissä" {- ine -} "seitsemistä" {- ela -}- "seitsemiin" {- ill -} "seitsemillä" {- ade -}- "seitsemiltä" {- abl -} "seitsemille" {- all -}- "seitsemittä" {- abe -} "seitsemine" {- com -}- "seitsemin" {- instr -}- "?" {- other -}- )- , (8, \c → infForms inf c- -- singular- "kahdeksan" {- nom -} "kahdeksan" {- acc -}- "kahdeksan" {- gen -} "kahdeksaa" {- ptv -}- "kahdeksana" {- ess -} "kahdeksaksi" {- transl -}- "kahdeksassa" {- ine -} "kahdeksasta" {- ela -}- "kahdeksaan" {- ill -} "kahdeksalla" {- ade -}- "kahdeksalta" {- abl -} "kahdeksalle" {- all -}- "kahdeksatta" {- abe -}- "?" {- other -}- -- plural- "kahdeksat" {- nom -} "kahdeksat" {- acc -}- "kahdeksien" {- gen -} "kahdeksia" {- ptv -}- "kahdeksina" {- ess -} "kahdeksiksi" {- transl -}- "kahdeksissa" {- ine -} "kahdeksista" {- ela -}- "kahdeksiin" {- ill -} "kahdeksilla" {- ade -}- "kahdeksilta" {- abl -} "kahdeksille" {- all -}- "kahdeksitta" {- abe -} "kahdeksine" {- com -}- "kahdeksin" {- instr -}- "?" {- other -}- )- , (9, \c → infForms inf c- -- singular- "yhdeksän" {- nom -} "yhdeksän" {- acc -}- "yhdeksän" {- gen -} "yhdeksää" {- ptv -}- "yhdeksänä" {- ess -} "yhdeksäksi" {- transl -}- "yhdeksässä" {- ine -} "yhdeksästä" {- ela -}- "yhdeksään" {- ill -} "yhdeksällä" {- ade -}- "yhdeksältä" {- abl -} "yhdeksälle" {- all -}- "yhdeksättä" {- abe -}- "?" {- other -}- -- plural- "yhdeksät" {- nom -} "yhdeksät" {- acc -}- "yhdeksien" {- gen -} "yhdeksiä" {- ptv -}- "yhdeksinä" {- ess -} "yhdeksiksi" {- transl -}- "yhdeksissä" {- ine -} "yhdeksistä" {- ela -}- "yhdeksiin" {- ill -} "yhdeksillä" {- ade -}- "yhdeksiltä" {- abl -} "yhdeksille" {- all -}- "yhdeksittä" {- abe -} "yhdeksine" {- com -}- "yhdeksin" {- instr -}- "?" {- other -}- )-- , (10, \c → case c of- CtxAdd _ (Lit _) _ → "toista" -- singular partitive ordinal 2- _ → infForms inf c- -- singular- "kymmenen" {- nom -} "kymmenen" {- acc -}- "kymmenen" {- gen -} "kymmentä" {- ptv -}- "kymmenenä" {- ess -} "kymmeneksi" {- transl -}- "kymmenessä" {- ine -} "kymmenestä" {- ela -}- "kymmeneen" {- ill -} "kymmenellä" {- ade -}- "kymmeneltä" {- abl -} "kymmenelle" {- all -}- "kymmenettä" {- abe -}- "?" {- other -}- -- plural- "kymmenet" {- nom -} "kymmenet" {- acc -}- "kymmenien" {- gen -} "kymmeniä" {- ptv -}- "kymmeninä" {- ess -} "kymmeniksi" {- transl -}- "kymmenissä" {- ine -} "kymmenistä" {- ela -}- "kymmeniin" {- ill -} "kymmenillä" {- ade -}- "kymmeniltä" {- abl -} "kymmenille" {- all -}- "kymmenittä" {- abe -} "kymmenine" {- com -}- "kymmenin" {- instr -}- "?" {- other -}- )- , (100, \c → case c of- CtxMul _ (Lit n) _- | n ≤ 9 → "sataa"- _ → infForms inf c- -- singular- "sata" {- nom -} "sata" {- acc -}- "sadan" {- gen -} "sataa" {- ptv -}- "satana" {- ess -} "sadaksi" {- transl -}- "sadassa" {- ine -} "sadasta" {- ela -}- "sataan" {- ill -} "sadalla" {- ade -}- "sadalta" {- abl -} "sadalle" {- all -}- "sadatta" {- abe -}- "?" {- other -}- -- plural- "sadat" {- nom -} "sadat" {- acc -}- "satojen" {- gen -} "satoja" {- ptv -}- "satoina" {- ess -} "sadoiksi" {- transl -}- "sadoissa" {- ine -} "sadoista" {- ela -}- "satoihin" {- ill -} "sadoilla" {- ade -}- "sadoilta" {- abl -} "sadoille" {- all -}- "sadoitta" {- abe -} "satoine" {- com -}- "sadoin" {- instr -}- "?" {- other -}- )- , (1000, \c → case c of- CtxMul {} → "tuhatta"- _ → infForms inf c- -- singular- "tuhat" {- nom -} "tuhat" {- acc -}- "tuhannen" {- gen -} "tuhatta" {- ptv -}- "tuhantena" {- ess -} "tuhanneksi" {- transl -}- "tuhannessa" {- ine -} "tuhannesta" {- ela -}- "tuhanteen" {- ill -} "tuhannella" {- ade -}- "tuhannelta" {- abl -} "tuhannelle" {- all -}- "tuhannetta" {- abe -}- "?" {- other -}- -- plural- "tuhannet" {- nom -} "tuhannet" {- acc -}- "tuhansien" {- gen -} "tuhansia" {- ptv -}- "tuhansina" {- ess -} "tuhansiksi" {- transl -}- "tuhansissa" {- ine -} "tuhansista" {- ela -}- "tuhansiin" {- ill -} "tuhansilla" {- ade -}- "tuhansilta" {- abl -} "tuhansille" {- all -}- "tuhansitta" {- abe -} "tuhansine" {- com -}- "tuhansin" {- instr -}- "?" {- other -}- )- ]--ordinalRepr ∷ ( G.Singular i, G.Plural i- , G.Abessive i- , G.Accusative i- , G.Comitative i- , G.Delative i- , G.Distributive i- , G.DistributiveTemporal i- , G.Essive i- , G.Genitive i- , G.Instructive i- , G.Lative i- , G.LocativeInessive i- , G.LocativeElative i- , G.LocativeIllative i- , G.LocativeAdessive i- , G.LocativeAblative i- , G.LocativeAllative i- , G.Multiplicative i- , G.Nominative i- , G.Partitive i- , G.Sublative i- , G.SuperEssive i- , G.Translative i- )- ⇒ i → Exp i → Maybe Text-ordinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = BN.pelletierRepr- (BN.quantityName "iljoona" "iljoonaa")- (BN.quantityName "iljardi" "iljardia")- []- , reprAdd = Just $ \_ _ _ → ""- , reprMul = Just $ \_ _ _ → ""- }- where- syms inf =- M.fromList- [ (0, \c → infForms inf c- -- singular- "nollas" {- nom -} "nollas" {- acc -}- "nollannen" {- gen -} "nollatta" {- ptv -}- "nollantena" {- ess -} "nollanneksi" {- transl -}- "nollannessa" {- ine -} "nollannesta" {- ela -}- "nollanteen" {- ill -} "nollannella" {- ade -}- "nollannelta" {- abl -} "nollannelle" {- all -}- "nollannetta" {- abe -}- "?" {- other -}- -- plural- "nollannet" {- nom -} "nollannet" {- acc -}- "nollansien" {- gen -} "nollansia" {- ptv -}- "nollansina" {- ess -} "nollansiksi" {- transl -}- "nollansissa" {- ine -} "nollansista" {- ela -}- "nollansiin" {- ill -} "nollansilla" {- ade -}- "nollansilta" {- abl -} "nollansille" {- all -}- "nollansitta" {- abe -} "nollansine" {- com -}- "nollansin" {- instr -}- "?" {- other -}- )- , (1, \c → case c of- CtxAdd _ (Lit 10) _ →- infForms inf c- -- singular- "yhdes" {- nom -} "yhdes" {- acc -}- "yhdennen" {- gen -} "yhdettä" {- ptv -}- "yhdennessä" {- ess -} "yhdenneksi" {- transl -}- "yhdennessä" {- ine -} "yhdennestä" {- ela -}- "yhdenteen" {- ill -} "yhdennellä" {- ade -}- "yhdenneltä" {- abl -} "yhdennelle" {- all -}- "yhdennettä" {- abe -}- "?" {- other -}- -- plural- "yhdennet" {- nom -} "yhdennet" {- acc -}- "yhdensien" {- gen -} "yhdensiä" {- ptv -}- "yhdensinä" {- ess -} "yhdensiksi" {- transl -}- "yhdensissä" {- ine -} "yhdensistä" {- ela -}- "yhdensiin" {- ill -} "yhdensillä" {- ade -}- "yhdensitlä" {- abl -} "yhdensiin" {- all -}- "yhdensittä" {- abe -} "yhdensine" {- com -}- "yhdensin" {- instr -}- "?" {- other -}- _ → infForms inf c- -- singular- "ensimmäinen" {- nom -} "ensimmäinen" {- acc -}- "ensimmäisen" {- gen -} "ensimmäistä" {- ptv -}- "ensimmmäisenä" {- ess -} "ensimmäiseksi" {- transl -}- "ensimmäisessä" {- ine -} "ensimmäisestä" {- ela -}- "ensimmäiseen" {- ill -} "ensimmäisellä" {- ade -}- "ensimmäiseltä" {- abl -} "ensimmäiselle" {- all -}- "ensimmäisettä" {- abe -}- "?" {- other -}- -- plural- "ensimmäiset" {- nom -} "ensimmäiset" {- acc -}- "ensimmäisten" {- gen -} "ensimmäisiä" {- ptv -}- "ensimmäisinä" {- ess -} "ensimmäisiksi" {- transl -}- "ensimmäisissä" {- ine -} "ensimmäisistä" {- ela -}- "ensimmäisiin" {- ill -} "ensimmäisillä" {- ade -}- "ensimmäisiltä" {- abl -} "ensimmäisille" {- all -}- "ensimmäisittä" {- abe -} "ensimmäisine" {- com -}- "ensimmäisin" {- instr -}- "?" {- other -}- )- , (2, \c → case c of- CtxAdd _ (Lit 10) _ →- infForms inf c- -- singular- "kahdes" {- nom -} "kahdes" {- acc -}- "kahdennen" {- gen -} "kahdetta" {- ptv -}- "kahdentena" {- ess -} "kahdenneksi" {- transl -}- "kahdennessa" {- ine -} "kahdennesta" {- ela -}- "kahdenteen" {- ill -} "kahdennella" {- ade -}- "kahdennelta" {- abl -} "kahdennelle" {- all -}- "kahdennetta" {- abe -}- "?" {- other -}- -- plural- "kahdennet" {- nom -} "kahdennet" {- acc -}- "kahdensien" {- gen -} "kahdensia" {- ptv -}- "kahdensina" {- ess -} "kahdensiksi" {- transl -}- "kahdensissa" {- ine -} "kahdensista" {- ela -}- "kahdensiin" {- ill -} "kahdensilla" {- ade -}- "kahdensilta" {- abl -} "kahdensille" {- all -}- "kahdensitta" {- abe -} "kahdensine" {- com -}- "kahdensin" {- instr -}- "?" {- other -}- _ → infForms inf c- -- singular- "toinen" {- nom -} "toinen" {- acc -}- "toisen" {- gen -} "toista" {- ptv -}- "toisena" {- ess -} "toiseksi" {- transl -}- "toisessa" {- ine -} "toisesta" {- ela -}- "toiseen" {- ill -} "toisella" {- ade -}- "toiselta" {- abl -} "toiselle" {- all -}- "toisetta" {- abe -}- "?" {- other -}- -- plural- "toiset" {- nom -} "toiset" {- acc -}- "toisten" {- gen -} "toisia" {- ptv -}- "toisina" {- ess -} "toisiksi" {- transl -}- "toisissa" {- ine -} "toisista" {- ela -}- "toisiin" {- ill -} "toisilla" {- ade -}- "toisilta" {- abl -} "toisille" {- all -}- "toisitta" {- abe -} "toisine" {- com -}- "toisin" {- instr -}- "?" {- other -}- )- , (3, \c → infForms inf c- -- singular- "kolmas" {- nom -} "kolmas" {- acc -}- "kolmannen" {- gen -} "kolmatta" {- ptv -}- "kolmantena" {- ess -} "kolmanneksi" {- transl -}- "kolmannessa" {- ine -} "kolmannesta" {- ela -}- "kolmanteen" {- ill -} "kolmannella" {- ade -}- "kolmannelta" {- abl -} "kolmannelle" {- all -}- "kolmannetta" {- abe -}- "?" {- other -}- -- plural- "kolmannet" {- nom -} "kolmannet" {- acc -}- "kolmansien" {- gen -} "kolmansia" {- ptv -}- "kolmansina" {- ess -} "kolmansiksi" {- transl -}- "kolmansissa" {- ine -} "kolmansista" {- ela -}- "kolmansiin" {- ill -} "kolmansilla" {- ade -}- "kolmansilta" {- abl -} "kolmansille" {- all -}- "kolmansitta" {- abe -} "kolmansine" {- com -}- "kolmansin" {- instr -}- "?" {- other -}- )- , (4, \c → infForms inf c- -- singular- "neljäs" {- nom -} "neljäs" {- acc -}- "neljännen" {- gen -} "neljättä" {- ptv -}- "neljäntenä" {- ess -} "neljänneksi" {- transl -}- "neljännessä" {- ine -} "neljännestä" {- ela -}- "neljänteen" {- ill -} "neljännellä" {- ade -}- "neljänneltä" {- abl -} "neljännelle" {- all -}- "neljännettä" {- abe -}- (case inf of- _ | G.isComitative inf → "neljänsine"- | G.isInstructive inf → "neljänsin"- | otherwise → "?"- )- -- plural- "neljännet" {- nom -} "neljännet" {- acc -}- "neljänsien" {- gen -} "neljänsiä" {- ptv -}- "neljänsinä" {- ess -} "neljänsiksi" {- transl -}- "neljänsissä" {- ine -} "neljänsistä" {- ela -}- "neljänsiin" {- ill -} "neljänsillä" {- ade -}- "neljänsiltä" {- abl -} "neljänsille" {- all -}- "neljänsittä" {- abe -} "neljänsine" {- com -}- "neljänsin" {- instr -}- "?" {- other -}- )- , (5, \c → infForms inf c- -- singular- "viides" {- nom -} "viides" {- acc -}- "viidennen" {- gen -} "viidettä" {- ptv -}- "viidentenä" {- ess -} "viidenneksi" {- transl -}- "viidennessä" {- ine -} "viidennestä" {- ela -}- "viidenteen" {- ill -} "viidennellä" {- ade -}- "viidenneltä" {- abl -} "viidennelle" {- all -}- "viidennettä" {- abe -}- "?" {- other -}- -- plural- "viidennet" {- nom -} "viidennet" {- acc -}- "viidensien" {- gen -} "viidensiä" {- ptv -}- "viidensinä" {- ess -} "viidensiksi" {- transl -}- "viidensissä" {- ine -} "viidensistä" {- ela -}- "viidensiin" {- ill -} "viidensillä" {- ade -}- "viidensiltä" {- abl -} "viidensille" {- all -}- "viidensittä" {- abe -} "viidensine" {- com -}- "viidensin" {- instr -}- "?" {- other -}- )- , (6, \c → infForms inf c- -- singular- "kuudes" {- nom -} "kuudes" {- acc -}- "kuudennen" {- gen -} "kuudetta" {- ptv -}- "kuudentena" {- ess -} "kuudenneksi" {- transl -}- "kuudennessa" {- ine -} "kuudennesta" {- ela -}- "kuudenteen" {- ill -} "kuudennella" {- ade -}- "kuudennelta" {- abl -} "kuudennelle" {- all -}- "kuudennetta" {- abe -}- "?" {- other -}- -- plural- "kuudennet" {- nom -} "kuudennet" {- acc -}- "kuudensien" {- gen -} "kuudensia" {- ptv -}- "kuudensina" {- ess -} "kuudensiksi" {- transl -}- "kuudensissa" {- ine -} "kuudensista" {- ela -}- "kuudensiin" {- ill -} "kuudensilla" {- ade -}- "kuudensilta" {- abl -} "kuudensille" {- all -}- "kuudensitta" {- abe -} "kuudensine" {- com -}- "kuudensin" {- instr -}- "?" {- other -}- )- , (7, \c → infForms inf c- -- singular- "seitsemäs" {- nom -} "seitsemäs" {- acc -}- "seitsemännen" {- gen -} "seitsemättä" {- ptv -}- "seitsemäntenä" {- ess -} "seitsemänneksi" {- transl -}- "seitsemännessä" {- ine -} "seitsemännestä" {- ela -}- "seitsemänteen" {- ill -} "seitsemännellä" {- ade -}- "seitsemänneltä" {- abl -} "seitsemännelle" {- all -}- "seitsemännettä" {- abe -}- "?" {- other -}- -- plural- "seitsemännet" {- nom -} "seitsemännet" {- acc -}- "seitsemänsien" {- gen -} "seitsemänsiä" {- ptv -}- "seitsemänsinä" {- ess -} "seitsemänsiksi" {- transl -}- "seitsemänsissä" {- ine -} "seitsemänsistä" {- ela -}- "seitsemänsiin" {- ill -} "seitsemänsillä" {- ade -}- "seitsemänsiltä" {- abl -} "seitsemänsille" {- all -}- "seitsemänsittä" {- abe -} "seitsemänsine" {- com -}- "seitsemänsin" {- instr -}- "?" {- other -}- )- , (8, \c → infForms inf c- -- singular- "kahdeksas" {- nom -} "kahdeksas" {- acc -}- "kahdeksannen" {- gen -} "kahdeksatta" {- ptv -}- "kahdeksantena" {- ess -} "kahdeksanneksi" {- transl -}- "kahdeksannessa" {- ine -} "kahdeksannesta" {- ela -}- "kahdeksanteen" {- ill -} "kahdeksannella" {- ade -}- "kahdeksannelta" {- abl -} "kahdeksannelle" {- all -}- "kahdeksannetta" {- abe -}- "?" {- other -}- -- plural- "kahdeksannet" {- nom -} "kahdeksannet" {- acc -}- "kahdeksansien" {- gen -} "kahdeksansia" {- ptv -}- "kahdeksansina" {- ess -} "kahdeksansiksi" {- transl -}- "kahdeksansissa" {- ine -} "kahdeksansista" {- ela -}- "kahdeksansiin" {- ill -} "kahdeksansilla" {- ade -}- "kahdeksansilta" {- abl -} "kahdeksansille" {- all -}- "kahdeksansitta" {- abe -} "kahdeksansine" {- com -}- "kahdeksansin" {- instr -}- "?" {- other -}- )- , (9, \c → infForms inf c- -- singular- "yhdeksäs" {- nom -} "yhdeksäs" {- acc -}- "yhdeksännen" {- gen -} "yhdeksättä" {- ptv -}- "yhdeksäntenä" {- ess -} "yhdeksänneksi" {- transl -}- "yhdeksännessä" {- ine -} "yhdeksännestä" {- ela -}- "yhdeksänteen" {- ill -} "yhdeksännellä" {- ade -}- "yhdeksänneltä" {- abl -} "yhdeksännelle" {- all -}- "yhdeksännettä" {- abe -}- "?" {- other -}- -- plural- "yhdeksännet" {- nom -} "yhdeksännet" {- acc -}- "yhdeksänsien" {- gen -} "yhdeksänsiä" {- ptv -}- "yhdeksänsinä" {- ess -} "yhdeksänsiksi" {- transl -}- "yhdeksänsissä" {- ine -} "yhdeksänsistä" {- ela -}- "yhdeksänsiin" {- ill -} "yhdeksänsillä" {- ade -}- "yhdeksänsiltä" {- abl -} "yhdeksänsille" {- all -}- "yhdeksänsittä" {- abe -} "yhdeksänsine" {- com -}- "yhdeksänsin" {- instr -}- "?" {- other -}- )- , (10, \c → case c of- CtxAdd _ (Lit _) _ → "toista" -- singular partitive ordinal 2- _ → infForms inf c- -- singular- "kymmenes" {- nom -} "kymmenes" {- acc -}- "kymmenennen" {- gen -} "kymmenettä" {- ptv -}- "kymmenentenä" {- ess -} "kymmenenneksi" {- transl -}- "kymmenennessä" {- ine -} "kymmenennestä" {- ela -}- "kymmenenteen" {- ill -} "kymmenennellä" {- ade -}- "kymmenenneltä" {- abl -} "kymmenennelle" {- all -}- "kymmenennettä" {- abe -}- "?" {- other -}- -- plural- "kymmenennet" {- nom -} "kymmenennet" {- acc -}- "kymmenensien" {- gen -} "kymmenensiä" {- ptv -}- "kymmenensinä" {- ess -} "kymmenensiksi" {- transl -}- "kymmenensissä" {- ine -} "kymmenensistä" {- ela -}- "kymmenensiin" {- ill -} "kymmenensillä" {- ade -}- "kymmenensiltä" {- abl -} "kymmenensille" {- all -}- "kymmenensittä" {- abe -} "kymmenensine" {- com -}- "kymmenensin" {- instr -}- "?" {- other -}- )- , (100, \c → case c of- _ → infForms inf c- -- singular- "sadas" {- nom -} "sadas" {- acc -}- "sadannen" {- gen -} "sadatta" {- ptv -}- "sadantena" {- ess -} "sadanneksi" {- transl -}- "sadannessa" {- ine -} "sadannesta" {- ela -}- "sadanteen" {- ill -} "sadannella" {- ade -}- "sadannelta" {- abl -} "sadannelle" {- all -}- "sadannetta" {- abe -}- "?" {- other -}- -- plural- "sadannet" {- nom -} "sadannet" {- acc -}- "sadansien" {- gen -} "sadansia" {- ptv -}- "sadansina" {- ess -} "sadansiksi" {- transl -}- "sadansissa" {- ine -} "sadansista" {- ela -}- "sadansiin" {- ill -} "sadansilla" {- ade -}- "sadansilta" {- abl -} "sadansille" {- all -}- "sadansitta" {- abe -} "sadansine" {- com -}- "sadansin" {- instr -}- "?" {- other -}- )- , (1000, \c → case c of- _ → infForms inf c- -- singular- "tuhannes" {- nom -} "tuhannes" {- acc -}- "tuhannennen" {- gen -} "tuhannetta" {- ptv -}- "tuhannentena" {- ess -} "tuhannenneksi" {- transl -}- "tuhannennessa" {- ine -} "tuhannennesta" {- ela -}- "tuhannenteen" {- ill -} "tuhannennella" {- ade -}- "tuhannennelta" {- abl -} "tuhannennelle" {- all -}- "tuhannennetta" {- abe -}- "?" {- other -}- -- plural- "tuhannennet" {- nom -} "tuhannennet" {- acc -}- "tuhannensien" {- gen -} "tuhannensia" {- ptv -}- "tuhannensina" {- ess -} "tuhannensiksi" {- transl -}- "tuhannensissa" {- ine -} "tuhannensista" {- ela -}- "tuhannensiin" {- ill -} "tuhannensilla" {- ade -}- "tuhannensilta" {- abl -} "tuhannensille" {- all -}- "tuhannensitta" {- abe -} "tuhannensine" {- com -}- "tuhannensin" {- instr -}- "?" {- other -}- )- ]--infForms ∷ ( G.Singular i, G.Plural i- , G.Abessive i- , G.Accusative i- , G.Comitative i- , G.Delative i- , G.Distributive i- , G.DistributiveTemporal i- , G.Essive i- , G.Genitive i- , G.Instructive i- , G.Lative i- , G.LocativeInessive i- , G.LocativeElative i- , G.LocativeIllative i- , G.LocativeAdessive i- , G.LocativeAblative i- , G.LocativeAllative i- , G.Multiplicative i- , G.Nominative i- , G.Partitive i- , G.Sublative i- , G.SuperEssive i- , G.Translative i- )- ⇒ i → Ctx (Exp i)- → Text → Text → Text → Text → Text → Text → Text → Text → Text → Text- → Text → Text → Text → Text → Text → Text → Text → Text → Text → Text- → Text → Text → Text → Text → Text → Text → Text → Text → Text → Text → Text-infForms inf _- s_nom s_acc s_gen s_ptv s_ess s_transl- s_ine s_ela s_ill s_ade s_abl s_all s_abe- s_other- p_nom p_acc p_gen p_ptv p_ess p_transl- p_ine p_ela p_ill p_ade p_abl p_all p_abe p_com p_instr- p_other- | G.isSingular inf = singularForms- | G.isPlural inf = pluralForms- | otherwise = "?"- where- singularForms- | G.isNominative inf = s_nom- | G.isAccusative inf = s_acc- | G.isGenitive inf = s_gen- | G.isPartitive inf = s_ptv- | G.isEssive inf = s_ess- | G.isTranslative inf = s_transl- | G.isLocativeInessive inf = s_ine- | G.isLocativeElative inf = s_ela- | G.isLocativeIllative inf = s_ill- | G.isLocativeAdessive inf = s_ade- | G.isLocativeAblative inf = s_abl- | G.isLocativeAllative inf = s_all- | G.isAbessive inf = s_abe- | otherwise = s_other- pluralForms- | G.isNominative inf = p_nom- | G.isAccusative inf = p_acc- | G.isGenitive inf = p_gen- | G.isPartitive inf = p_ptv- | G.isEssive inf = p_ess- | G.isTranslative inf = p_transl- | G.isLocativeInessive inf = p_ine- | G.isLocativeElative inf = p_ela- | G.isLocativeIllative inf = p_ill- | G.isLocativeAdessive inf = p_ade- | G.isLocativeAblative inf = p_abl- | G.isLocativeAllative inf = p_all- | G.isAbessive inf = p_abe- | G.isComitative inf = p_com- | G.isInstructive inf = p_instr- | otherwise = p_other
+ src/Text/Numeral/Language/FIN.hs view
@@ -0,0 +1,808 @@+{-|+[@ISO639-1@] fi++[@ISO639-2B@] fin++[@ISO639-3@] fin++[@Native name@] suomi++[@English name@] Finnish+-}++module Text.Numeral.Language.FIN+ ( -- * Language entry+ entry+ -- * Inflection+ , Inflection+ -- * Conversions+ , cardinal+ , ordinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- FIN+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "fi"+ , entIso639_2 = ["fin"]+ , entIso639_3 = Just "fin"+ , entNativeNames = ["suomi"]+ , entEnglishName = Just "Finnish"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ , entOrdinal = Just Conversion+ { toNumeral = ordinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++ordinal :: (Integral a) => Inflection -> a -> Maybe Text+ordinal inf = ordinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = fix $ rule `combine` pelletierScale R L BN.rule+ where+ rule = findRule ( 0, lit)+ [ ( 11, add 10 L)+ , ( 20, fi_mul 10)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++-- | Like the normal 'mul' rule with the difference that the value+-- that is multiplied is changed to the partitive case.+fi_mul :: (Integral a) => a -> Rule a+fi_mul val =+ \f n -> let (m, a) = n `divMod` val+ mval = Mul (f m) (ChangeCase (Just Partitive) $ f val)+ in if a == 0+ then mval+ else (flip Add) (f a) mval+ -- where+ -- toPartitive :: Inflection -> Inflection+ -- toPartitive inf | G.isSingular inf && (G.isNominative inf || G.isAccusative inf) = G.partitive inf+ -- | otherwise = inf++bounds :: (Integral a) => (a, a)+bounds = let x = dec 15 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = BN.pelletierRepr+ (BN.quantityName "iljoona" "iljoonaa")+ (BN.quantityName "iljardi" "iljardia")+ []+ , reprAdd = Just $ \_ _ _ -> ""+ , reprMul = Just $ \_ _ _ -> ""+ }+ where+ syms inf =+ M.fromList+ [ (0, \c -> infForms inf c+ -- singular+ "nolla" {- nom -} "nolla" {- acc -}+ "nollan" {- gen -} "nollaa" {- ptv -}+ "nollana" {- ess -} "nollaksi" {- transl -}+ "nollassa" {- ine -} "nollasta" {- ela -}+ "nollaan" {- ill -} "nollalla" {- ade -}+ "nollalta" {- abl -} "nollalle" {- all -}+ "nollatta" {- abe -}+ "?" {- other -}+ -- plural+ "nollat" {- nom -} "nollat" {- acc -}+ "nollien" {- gen -} "nollia" {- ptv -}+ "nollina" {- ess -} "nolliksi" {- transl -}+ "nollissa" {- ine -} "nollista" {- ela -}+ "nolliin" {- ill -} "nollilla" {- ade -}+ "nollilta" {- abl -} "nollille" {- all -}+ "nollitta" {- abe -} "nolline" {- com -}+ "nollin" {- instr -}+ "?" {- other -}+ )+ , (1, \c -> infForms inf c+ -- singular+ "yksi" {- nom -} "yksi" {- acc -}+ "yhden" {- gen -} "yhtä" {- ptv -}+ "yhtenä" {- ess -} "yhdeksi" {- transl -}+ "yhdessä" {- ine -} "yhdestä" {- ela -}+ "yhteen" {- ill -} "yhdellä" {- ade -}+ "yhdeltä" {- abl -} "yhdelle" {- all -}+ "yhdettä" {- abe -}+ (case inf of+ _ | isSuperEssive inf -> "yhtäällä"+ | isDelative inf -> "yhtäältä"+ | isSublative inf -> "yhtäälle"+ | isLative inf -> "yhä"+ | isMultiplicative inf -> "yhdesti"+ | otherwise -> "?"+ )+ -- plural+ "yhdet" {- nom -} "yhdet" {- acc -}+ "yksien" {- gen -} "yksiä" {- ptv -}+ "yksinä" {- ess -} "yksiksi" {- transl -}+ "yksissä" {- ine -} "yksistä" {- ela -}+ "yksiin" {- ill -} "yksillä" {- ade -}+ "yksiltä" {- abl -} "yksille" {- all -}+ "yksittä" {- abe -} "yksine" {- com -}+ "yksin" {- instr -}+ (case inf of+ _ | isDistributive inf -> "yksittäin"+ | otherwise -> "?"+ )+ )+ , (2, \c -> infForms inf c+ -- singular+ "kaksi" {- nom -} "kaksi" {- acc -}+ "kahden" {- gen -} "kahta" {- ptv -}+ "kahtena" {- ess -} "kahdeksi" {- transl -}+ "kahdessa" {- ine -} "kahdesta" {- ela -}+ "kahteen" {- ill -} "kahdella" {- ade -}+ "kahdelta" {- abl -} "kahdelle" {- all -}+ "kahdetta" {- abe -}+ (case inf of+ _ | isInstructive inf -> "kahden"+ | isSuperEssive inf -> "kahtaalla"+ | isDelative inf -> "kahtaalta"+ | isSublative inf -> "kahtaalle"+ | isLative inf -> "kahtia"+ | isMultiplicative inf -> "kahdesti"+ | otherwise -> "?"+ )+ -- plural+ "kahdet" {- nom -} "kahdet" {- acc -}+ "kaksien" {- gen -} "kaksia" {- ptv -}+ "kaksina" {- ess -} "kaksiksi" {- transl -}+ "kaksissa" {- ine -} "kaksista" {- ela -}+ "kaksiin" {- ill -} "kaksilla" {- ade -}+ "kaksilta" {- abl -} "kaksille" {- all -}+ "kaksitta" {- abe -} "kaksine" {- com -}+ "kaksin" {- instr -}+ (case inf of+ _ | isDistributive inf -> "kaksittain"+ | otherwise -> "?"+ )+ )+ , (3, \c -> infForms inf c+ -- singular+ "kolme" {- nom -} "kolme" {- acc -}+ "kolmen" {- gen -} "kolmea" {- ptv -}+ "kolmena" {- ess -} "kolmeksi" {- transl -}+ "kolmessa" {- ine -} "kolmesta" {- ela -}+ "kolmeen" {- ill -} "kolmella" {- ade -}+ "kolmelta" {- abl -} "kolmelle" {- all -}+ "kolmetta" {- abe -}+ (case inf of+ _ | isInstructive inf -> "kolmen"+ | isLative inf -> "kolmia"+ | isMultiplicative inf -> "kolmesti"+ | otherwise -> "?"+ )+ -- plural+ "kolmet" {- nom -} "kolmet" {- acc -}+ "kolmien" {- gen -} "kolmia" {- ptv -}+ "kolmina" {- ess -} "kolmiksi" {- transl -}+ "kolmissa" {- ine -} "kolmista" {- ela -}+ "kolmiin" {- ill -} "kolmilla" {- ade -}+ "kolmilta" {- abl -} "kolmille" {- all -}+ "kolmitta" {- abe -} "kolmine" {- com -}+ "kolmin" {- instr -}+ (case inf of+ _ | isDistributive inf -> "kolmittain"+ | isDistributiveTemporal inf -> "kolmisin"+ | otherwise -> "?"+ )+ )+ , (4, \c -> infForms inf c+ -- singular+ "neljä" {- nom -} "neljä" {- acc -}+ "neljän" {- gen -} "neljää" {- ptv -}+ "neljänä" {- ess -} "neljäksi" {- transl -}+ "neljässä" {- ine -} "neljästä" {- ela -}+ "neljään" {- ill -} "neljällä" {- ade -}+ "neljältä" {- abl -} "neljälle" {- all -}+ "neljättä" {- abe -}+ "?" {- other -}+ -- plural+ "neljät" {- nom -} "neljät" {- acc -}+ "neljien" {- gen -} "neljiä" {- ptv -}+ "neljinä" {- ess -} "neljiksi" {- transl -}+ "neljissä" {- ine -} "neljistä" {- ela -}+ "neljiin" {- ill -} "neljillä" {- ade -}+ "neljiltä" {- abl -} "neljille" {- all -}+ "neljittä" {- abe -} "neljine" {- com -}+ "neljin" {- instr -}+ "?" {- other -}+ )+ , (5, \c -> infForms inf c+ -- singular+ "viisi" {- nom -} "viisi" {- acc -}+ "viiden" {- gen -} "viittä" {- ptv -}+ "viitenä" {- ess -} "viideksi" {- transl -}+ "viidessä" {- ine -} "viidestä" {- ela -}+ "viiteen" {- ill -} "viidellä" {- ade -}+ "viideltä" {- abl -} "viidelle" {- all -}+ "viidettä" {- abe -}+ "?" {- other -}+ -- plural+ "viidet" {- nom -} "viidet" {- acc -}+ "viisien" {- gen -} "viisiä" {- ptv -}+ "viisinä" {- ess -} "viisiksi" {- transl -}+ "viisissä" {- ine -} "viisistä" {- ela -}+ "viisiin" {- ill -} "viisillä" {- ade -}+ "viisiltä" {- abl -} "viisille" {- all -}+ "viisittä" {- abe -} "viisine" {- com -}+ "viisin" {- instr -}+ "?" {- other -}+ )+ , (6, \c -> infForms inf c+ -- singular+ "kuusi" {- nom -} "kuusi" {- acc -}+ "kuuden" {- gen -} "kuutta" {- ptv -}+ "kuutena" {- ess -} "kuudeksi" {- transl -}+ "kuudessa" {- ine -} "kuudesta" {- ela -}+ "kuuteen" {- ill -} "kuudella" {- ade -}+ "kuudelta" {- abl -} "kuudelle" {- all -}+ "kuudetta" {- abe -}+ "?" {- other -}+ -- plural+ "kuudet" {- nom -} "kuudet" {- acc -}+ "kuusien" {- gen -} "kuusia" {- ptv -}+ "kuusina" {- ess -} "kuusiksi" {- transl -}+ "kuusissa" {- ine -} "kuusista" {- ela -}+ "kuusiin" {- ill -} "kuusilla" {- ade -}+ "kuusilta" {- abl -} "kuusille" {- all -}+ "kuusitta" {- abe -} "kuusine" {- com -}+ "kuusin" {- instr -}+ "?" {- other -}+ )+ , (7, \c -> infForms inf c+ -- singular+ "seitsemän" {- nom -} "seitsemän" {- acc -}+ "seitsemän" {- gen -} "seitsemää" {- ptv -}+ "seitsemänä" {- ess -} "seitsemäksi" {- transl -}+ "seitsemässä" {- ine -} "seitsemästä" {- ela -}+ "seitsemään" {- ill -} "seitsemällä" {- ade -}+ "seitsemältä" {- abl -} "seitsemälle" {- all -}+ "seitsemättä" {- abe -}+ "?" {- other -}+ -- plural+ "seitsemät" {- nom -} "seitsemät" {- acc -}+ "seitsemien" {- gen -} "seitsemiä" {- ptv -}+ "seitseminä" {- ess -} "seitsemiksi" {- transl -}+ "seitsemissä" {- ine -} "seitsemistä" {- ela -}+ "seitsemiin" {- ill -} "seitsemillä" {- ade -}+ "seitsemiltä" {- abl -} "seitsemille" {- all -}+ "seitsemittä" {- abe -} "seitsemine" {- com -}+ "seitsemin" {- instr -}+ "?" {- other -}+ )+ , (8, \c -> infForms inf c+ -- singular+ "kahdeksan" {- nom -} "kahdeksan" {- acc -}+ "kahdeksan" {- gen -} "kahdeksaa" {- ptv -}+ "kahdeksana" {- ess -} "kahdeksaksi" {- transl -}+ "kahdeksassa" {- ine -} "kahdeksasta" {- ela -}+ "kahdeksaan" {- ill -} "kahdeksalla" {- ade -}+ "kahdeksalta" {- abl -} "kahdeksalle" {- all -}+ "kahdeksatta" {- abe -}+ "?" {- other -}+ -- plural+ "kahdeksat" {- nom -} "kahdeksat" {- acc -}+ "kahdeksien" {- gen -} "kahdeksia" {- ptv -}+ "kahdeksina" {- ess -} "kahdeksiksi" {- transl -}+ "kahdeksissa" {- ine -} "kahdeksista" {- ela -}+ "kahdeksiin" {- ill -} "kahdeksilla" {- ade -}+ "kahdeksilta" {- abl -} "kahdeksille" {- all -}+ "kahdeksitta" {- abe -} "kahdeksine" {- com -}+ "kahdeksin" {- instr -}+ "?" {- other -}+ )+ , (9, \c -> infForms inf c+ -- singular+ "yhdeksän" {- nom -} "yhdeksän" {- acc -}+ "yhdeksän" {- gen -} "yhdeksää" {- ptv -}+ "yhdeksänä" {- ess -} "yhdeksäksi" {- transl -}+ "yhdeksässä" {- ine -} "yhdeksästä" {- ela -}+ "yhdeksään" {- ill -} "yhdeksällä" {- ade -}+ "yhdeksältä" {- abl -} "yhdeksälle" {- all -}+ "yhdeksättä" {- abe -}+ "?" {- other -}+ -- plural+ "yhdeksät" {- nom -} "yhdeksät" {- acc -}+ "yhdeksien" {- gen -} "yhdeksiä" {- ptv -}+ "yhdeksinä" {- ess -} "yhdeksiksi" {- transl -}+ "yhdeksissä" {- ine -} "yhdeksistä" {- ela -}+ "yhdeksiin" {- ill -} "yhdeksillä" {- ade -}+ "yhdeksiltä" {- abl -} "yhdeksille" {- all -}+ "yhdeksittä" {- abe -} "yhdeksine" {- com -}+ "yhdeksin" {- instr -}+ "?" {- other -}+ )++ , (10, \c -> case c of+ CtxAdd _ (Lit _) _ -> "toista" -- singular partitive ordinal 2+ _ -> infForms inf c+ -- singular+ "kymmenen" {- nom -} "kymmenen" {- acc -}+ "kymmenen" {- gen -} "kymmentä" {- ptv -}+ "kymmenenä" {- ess -} "kymmeneksi" {- transl -}+ "kymmenessä" {- ine -} "kymmenestä" {- ela -}+ "kymmeneen" {- ill -} "kymmenellä" {- ade -}+ "kymmeneltä" {- abl -} "kymmenelle" {- all -}+ "kymmenettä" {- abe -}+ "?" {- other -}+ -- plural+ "kymmenet" {- nom -} "kymmenet" {- acc -}+ "kymmenien" {- gen -} "kymmeniä" {- ptv -}+ "kymmeninä" {- ess -} "kymmeniksi" {- transl -}+ "kymmenissä" {- ine -} "kymmenistä" {- ela -}+ "kymmeniin" {- ill -} "kymmenillä" {- ade -}+ "kymmeniltä" {- abl -} "kymmenille" {- all -}+ "kymmenittä" {- abe -} "kymmenine" {- com -}+ "kymmenin" {- instr -}+ "?" {- other -}+ )+ , (100, \c -> case c of+ CtxMul _ (Lit n) _+ | n <= 9 -> "sataa"+ _ -> infForms inf c+ -- singular+ "sata" {- nom -} "sata" {- acc -}+ "sadan" {- gen -} "sataa" {- ptv -}+ "satana" {- ess -} "sadaksi" {- transl -}+ "sadassa" {- ine -} "sadasta" {- ela -}+ "sataan" {- ill -} "sadalla" {- ade -}+ "sadalta" {- abl -} "sadalle" {- all -}+ "sadatta" {- abe -}+ "?" {- other -}+ -- plural+ "sadat" {- nom -} "sadat" {- acc -}+ "satojen" {- gen -} "satoja" {- ptv -}+ "satoina" {- ess -} "sadoiksi" {- transl -}+ "sadoissa" {- ine -} "sadoista" {- ela -}+ "satoihin" {- ill -} "sadoilla" {- ade -}+ "sadoilta" {- abl -} "sadoille" {- all -}+ "sadoitta" {- abe -} "satoine" {- com -}+ "sadoin" {- instr -}+ "?" {- other -}+ )+ , (1000, \c -> case c of+ CtxMul {} -> "tuhatta"+ _ -> infForms inf c+ -- singular+ "tuhat" {- nom -} "tuhat" {- acc -}+ "tuhannen" {- gen -} "tuhatta" {- ptv -}+ "tuhantena" {- ess -} "tuhanneksi" {- transl -}+ "tuhannessa" {- ine -} "tuhannesta" {- ela -}+ "tuhanteen" {- ill -} "tuhannella" {- ade -}+ "tuhannelta" {- abl -} "tuhannelle" {- all -}+ "tuhannetta" {- abe -}+ "?" {- other -}+ -- plural+ "tuhannet" {- nom -} "tuhannet" {- acc -}+ "tuhansien" {- gen -} "tuhansia" {- ptv -}+ "tuhansina" {- ess -} "tuhansiksi" {- transl -}+ "tuhansissa" {- ine -} "tuhansista" {- ela -}+ "tuhansiin" {- ill -} "tuhansilla" {- ade -}+ "tuhansilta" {- abl -} "tuhansille" {- all -}+ "tuhansitta" {- abe -} "tuhansine" {- com -}+ "tuhansin" {- instr -}+ "?" {- other -}+ )+ ]++ordinalRepr :: Inflection -> Exp -> Maybe Text+ordinalRepr = render defaultRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = BN.pelletierRepr+ (BN.quantityName "iljoona" "iljoonaa")+ (BN.quantityName "iljardi" "iljardia")+ []+ , reprAdd = Just $ \_ _ _ -> ""+ , reprMul = Just $ \_ _ _ -> ""+ }+ where+ syms inf =+ M.fromList+ [ (0, \c -> infForms inf c+ -- singular+ "nollas" {- nom -} "nollas" {- acc -}+ "nollannen" {- gen -} "nollatta" {- ptv -}+ "nollantena" {- ess -} "nollanneksi" {- transl -}+ "nollannessa" {- ine -} "nollannesta" {- ela -}+ "nollanteen" {- ill -} "nollannella" {- ade -}+ "nollannelta" {- abl -} "nollannelle" {- all -}+ "nollannetta" {- abe -}+ "?" {- other -}+ -- plural+ "nollannet" {- nom -} "nollannet" {- acc -}+ "nollansien" {- gen -} "nollansia" {- ptv -}+ "nollansina" {- ess -} "nollansiksi" {- transl -}+ "nollansissa" {- ine -} "nollansista" {- ela -}+ "nollansiin" {- ill -} "nollansilla" {- ade -}+ "nollansilta" {- abl -} "nollansille" {- all -}+ "nollansitta" {- abe -} "nollansine" {- com -}+ "nollansin" {- instr -}+ "?" {- other -}+ )+ , (1, \c -> case c of+ CtxAdd _ (Lit 10) _ ->+ infForms inf c+ -- singular+ "yhdes" {- nom -} "yhdes" {- acc -}+ "yhdennen" {- gen -} "yhdettä" {- ptv -}+ "yhdennessä" {- ess -} "yhdenneksi" {- transl -}+ "yhdennessä" {- ine -} "yhdennestä" {- ela -}+ "yhdenteen" {- ill -} "yhdennellä" {- ade -}+ "yhdenneltä" {- abl -} "yhdennelle" {- all -}+ "yhdennettä" {- abe -}+ "?" {- other -}+ -- plural+ "yhdennet" {- nom -} "yhdennet" {- acc -}+ "yhdensien" {- gen -} "yhdensiä" {- ptv -}+ "yhdensinä" {- ess -} "yhdensiksi" {- transl -}+ "yhdensissä" {- ine -} "yhdensistä" {- ela -}+ "yhdensiin" {- ill -} "yhdensillä" {- ade -}+ "yhdensitlä" {- abl -} "yhdensiin" {- all -}+ "yhdensittä" {- abe -} "yhdensine" {- com -}+ "yhdensin" {- instr -}+ "?" {- other -}+ _ -> infForms inf c+ -- singular+ "ensimmäinen" {- nom -} "ensimmäinen" {- acc -}+ "ensimmäisen" {- gen -} "ensimmäistä" {- ptv -}+ "ensimmmäisenä" {- ess -} "ensimmäiseksi" {- transl -}+ "ensimmäisessä" {- ine -} "ensimmäisestä" {- ela -}+ "ensimmäiseen" {- ill -} "ensimmäisellä" {- ade -}+ "ensimmäiseltä" {- abl -} "ensimmäiselle" {- all -}+ "ensimmäisettä" {- abe -}+ "?" {- other -}+ -- plural+ "ensimmäiset" {- nom -} "ensimmäiset" {- acc -}+ "ensimmäisten" {- gen -} "ensimmäisiä" {- ptv -}+ "ensimmäisinä" {- ess -} "ensimmäisiksi" {- transl -}+ "ensimmäisissä" {- ine -} "ensimmäisistä" {- ela -}+ "ensimmäisiin" {- ill -} "ensimmäisillä" {- ade -}+ "ensimmäisiltä" {- abl -} "ensimmäisille" {- all -}+ "ensimmäisittä" {- abe -} "ensimmäisine" {- com -}+ "ensimmäisin" {- instr -}+ "?" {- other -}+ )+ , (2, \c -> case c of+ CtxAdd _ (Lit 10) _ ->+ infForms inf c+ -- singular+ "kahdes" {- nom -} "kahdes" {- acc -}+ "kahdennen" {- gen -} "kahdetta" {- ptv -}+ "kahdentena" {- ess -} "kahdenneksi" {- transl -}+ "kahdennessa" {- ine -} "kahdennesta" {- ela -}+ "kahdenteen" {- ill -} "kahdennella" {- ade -}+ "kahdennelta" {- abl -} "kahdennelle" {- all -}+ "kahdennetta" {- abe -}+ "?" {- other -}+ -- plural+ "kahdennet" {- nom -} "kahdennet" {- acc -}+ "kahdensien" {- gen -} "kahdensia" {- ptv -}+ "kahdensina" {- ess -} "kahdensiksi" {- transl -}+ "kahdensissa" {- ine -} "kahdensista" {- ela -}+ "kahdensiin" {- ill -} "kahdensilla" {- ade -}+ "kahdensilta" {- abl -} "kahdensille" {- all -}+ "kahdensitta" {- abe -} "kahdensine" {- com -}+ "kahdensin" {- instr -}+ "?" {- other -}+ _ -> infForms inf c+ -- singular+ "toinen" {- nom -} "toinen" {- acc -}+ "toisen" {- gen -} "toista" {- ptv -}+ "toisena" {- ess -} "toiseksi" {- transl -}+ "toisessa" {- ine -} "toisesta" {- ela -}+ "toiseen" {- ill -} "toisella" {- ade -}+ "toiselta" {- abl -} "toiselle" {- all -}+ "toisetta" {- abe -}+ "?" {- other -}+ -- plural+ "toiset" {- nom -} "toiset" {- acc -}+ "toisten" {- gen -} "toisia" {- ptv -}+ "toisina" {- ess -} "toisiksi" {- transl -}+ "toisissa" {- ine -} "toisista" {- ela -}+ "toisiin" {- ill -} "toisilla" {- ade -}+ "toisilta" {- abl -} "toisille" {- all -}+ "toisitta" {- abe -} "toisine" {- com -}+ "toisin" {- instr -}+ "?" {- other -}+ )+ , (3, \c -> infForms inf c+ -- singular+ "kolmas" {- nom -} "kolmas" {- acc -}+ "kolmannen" {- gen -} "kolmatta" {- ptv -}+ "kolmantena" {- ess -} "kolmanneksi" {- transl -}+ "kolmannessa" {- ine -} "kolmannesta" {- ela -}+ "kolmanteen" {- ill -} "kolmannella" {- ade -}+ "kolmannelta" {- abl -} "kolmannelle" {- all -}+ "kolmannetta" {- abe -}+ "?" {- other -}+ -- plural+ "kolmannet" {- nom -} "kolmannet" {- acc -}+ "kolmansien" {- gen -} "kolmansia" {- ptv -}+ "kolmansina" {- ess -} "kolmansiksi" {- transl -}+ "kolmansissa" {- ine -} "kolmansista" {- ela -}+ "kolmansiin" {- ill -} "kolmansilla" {- ade -}+ "kolmansilta" {- abl -} "kolmansille" {- all -}+ "kolmansitta" {- abe -} "kolmansine" {- com -}+ "kolmansin" {- instr -}+ "?" {- other -}+ )+ , (4, \c -> infForms inf c+ -- singular+ "neljäs" {- nom -} "neljäs" {- acc -}+ "neljännen" {- gen -} "neljättä" {- ptv -}+ "neljäntenä" {- ess -} "neljänneksi" {- transl -}+ "neljännessä" {- ine -} "neljännestä" {- ela -}+ "neljänteen" {- ill -} "neljännellä" {- ade -}+ "neljänneltä" {- abl -} "neljännelle" {- all -}+ "neljännettä" {- abe -}+ (case inf of+ _ | isComitative inf -> "neljänsine"+ | isInstructive inf -> "neljänsin"+ | otherwise -> "?"+ )+ -- plural+ "neljännet" {- nom -} "neljännet" {- acc -}+ "neljänsien" {- gen -} "neljänsiä" {- ptv -}+ "neljänsinä" {- ess -} "neljänsiksi" {- transl -}+ "neljänsissä" {- ine -} "neljänsistä" {- ela -}+ "neljänsiin" {- ill -} "neljänsillä" {- ade -}+ "neljänsiltä" {- abl -} "neljänsille" {- all -}+ "neljänsittä" {- abe -} "neljänsine" {- com -}+ "neljänsin" {- instr -}+ "?" {- other -}+ )+ , (5, \c -> infForms inf c+ -- singular+ "viides" {- nom -} "viides" {- acc -}+ "viidennen" {- gen -} "viidettä" {- ptv -}+ "viidentenä" {- ess -} "viidenneksi" {- transl -}+ "viidennessä" {- ine -} "viidennestä" {- ela -}+ "viidenteen" {- ill -} "viidennellä" {- ade -}+ "viidenneltä" {- abl -} "viidennelle" {- all -}+ "viidennettä" {- abe -}+ "?" {- other -}+ -- plural+ "viidennet" {- nom -} "viidennet" {- acc -}+ "viidensien" {- gen -} "viidensiä" {- ptv -}+ "viidensinä" {- ess -} "viidensiksi" {- transl -}+ "viidensissä" {- ine -} "viidensistä" {- ela -}+ "viidensiin" {- ill -} "viidensillä" {- ade -}+ "viidensiltä" {- abl -} "viidensille" {- all -}+ "viidensittä" {- abe -} "viidensine" {- com -}+ "viidensin" {- instr -}+ "?" {- other -}+ )+ , (6, \c -> infForms inf c+ -- singular+ "kuudes" {- nom -} "kuudes" {- acc -}+ "kuudennen" {- gen -} "kuudetta" {- ptv -}+ "kuudentena" {- ess -} "kuudenneksi" {- transl -}+ "kuudennessa" {- ine -} "kuudennesta" {- ela -}+ "kuudenteen" {- ill -} "kuudennella" {- ade -}+ "kuudennelta" {- abl -} "kuudennelle" {- all -}+ "kuudennetta" {- abe -}+ "?" {- other -}+ -- plural+ "kuudennet" {- nom -} "kuudennet" {- acc -}+ "kuudensien" {- gen -} "kuudensia" {- ptv -}+ "kuudensina" {- ess -} "kuudensiksi" {- transl -}+ "kuudensissa" {- ine -} "kuudensista" {- ela -}+ "kuudensiin" {- ill -} "kuudensilla" {- ade -}+ "kuudensilta" {- abl -} "kuudensille" {- all -}+ "kuudensitta" {- abe -} "kuudensine" {- com -}+ "kuudensin" {- instr -}+ "?" {- other -}+ )+ , (7, \c -> infForms inf c+ -- singular+ "seitsemäs" {- nom -} "seitsemäs" {- acc -}+ "seitsemännen" {- gen -} "seitsemättä" {- ptv -}+ "seitsemäntenä" {- ess -} "seitsemänneksi" {- transl -}+ "seitsemännessä" {- ine -} "seitsemännestä" {- ela -}+ "seitsemänteen" {- ill -} "seitsemännellä" {- ade -}+ "seitsemänneltä" {- abl -} "seitsemännelle" {- all -}+ "seitsemännettä" {- abe -}+ "?" {- other -}+ -- plural+ "seitsemännet" {- nom -} "seitsemännet" {- acc -}+ "seitsemänsien" {- gen -} "seitsemänsiä" {- ptv -}+ "seitsemänsinä" {- ess -} "seitsemänsiksi" {- transl -}+ "seitsemänsissä" {- ine -} "seitsemänsistä" {- ela -}+ "seitsemänsiin" {- ill -} "seitsemänsillä" {- ade -}+ "seitsemänsiltä" {- abl -} "seitsemänsille" {- all -}+ "seitsemänsittä" {- abe -} "seitsemänsine" {- com -}+ "seitsemänsin" {- instr -}+ "?" {- other -}+ )+ , (8, \c -> infForms inf c+ -- singular+ "kahdeksas" {- nom -} "kahdeksas" {- acc -}+ "kahdeksannen" {- gen -} "kahdeksatta" {- ptv -}+ "kahdeksantena" {- ess -} "kahdeksanneksi" {- transl -}+ "kahdeksannessa" {- ine -} "kahdeksannesta" {- ela -}+ "kahdeksanteen" {- ill -} "kahdeksannella" {- ade -}+ "kahdeksannelta" {- abl -} "kahdeksannelle" {- all -}+ "kahdeksannetta" {- abe -}+ "?" {- other -}+ -- plural+ "kahdeksannet" {- nom -} "kahdeksannet" {- acc -}+ "kahdeksansien" {- gen -} "kahdeksansia" {- ptv -}+ "kahdeksansina" {- ess -} "kahdeksansiksi" {- transl -}+ "kahdeksansissa" {- ine -} "kahdeksansista" {- ela -}+ "kahdeksansiin" {- ill -} "kahdeksansilla" {- ade -}+ "kahdeksansilta" {- abl -} "kahdeksansille" {- all -}+ "kahdeksansitta" {- abe -} "kahdeksansine" {- com -}+ "kahdeksansin" {- instr -}+ "?" {- other -}+ )+ , (9, \c -> infForms inf c+ -- singular+ "yhdeksäs" {- nom -} "yhdeksäs" {- acc -}+ "yhdeksännen" {- gen -} "yhdeksättä" {- ptv -}+ "yhdeksäntenä" {- ess -} "yhdeksänneksi" {- transl -}+ "yhdeksännessä" {- ine -} "yhdeksännestä" {- ela -}+ "yhdeksänteen" {- ill -} "yhdeksännellä" {- ade -}+ "yhdeksänneltä" {- abl -} "yhdeksännelle" {- all -}+ "yhdeksännettä" {- abe -}+ "?" {- other -}+ -- plural+ "yhdeksännet" {- nom -} "yhdeksännet" {- acc -}+ "yhdeksänsien" {- gen -} "yhdeksänsiä" {- ptv -}+ "yhdeksänsinä" {- ess -} "yhdeksänsiksi" {- transl -}+ "yhdeksänsissä" {- ine -} "yhdeksänsistä" {- ela -}+ "yhdeksänsiin" {- ill -} "yhdeksänsillä" {- ade -}+ "yhdeksänsiltä" {- abl -} "yhdeksänsille" {- all -}+ "yhdeksänsittä" {- abe -} "yhdeksänsine" {- com -}+ "yhdeksänsin" {- instr -}+ "?" {- other -}+ )+ , (10, \c -> case c of+ CtxAdd _ (Lit _) _ -> "toista" -- singular partitive ordinal 2+ _ -> infForms inf c+ -- singular+ "kymmenes" {- nom -} "kymmenes" {- acc -}+ "kymmenennen" {- gen -} "kymmenettä" {- ptv -}+ "kymmenentenä" {- ess -} "kymmenenneksi" {- transl -}+ "kymmenennessä" {- ine -} "kymmenennestä" {- ela -}+ "kymmenenteen" {- ill -} "kymmenennellä" {- ade -}+ "kymmenenneltä" {- abl -} "kymmenennelle" {- all -}+ "kymmenennettä" {- abe -}+ "?" {- other -}+ -- plural+ "kymmenennet" {- nom -} "kymmenennet" {- acc -}+ "kymmenensien" {- gen -} "kymmenensiä" {- ptv -}+ "kymmenensinä" {- ess -} "kymmenensiksi" {- transl -}+ "kymmenensissä" {- ine -} "kymmenensistä" {- ela -}+ "kymmenensiin" {- ill -} "kymmenensillä" {- ade -}+ "kymmenensiltä" {- abl -} "kymmenensille" {- all -}+ "kymmenensittä" {- abe -} "kymmenensine" {- com -}+ "kymmenensin" {- instr -}+ "?" {- other -}+ )+ , (100, \c -> case c of+ _ -> infForms inf c+ -- singular+ "sadas" {- nom -} "sadas" {- acc -}+ "sadannen" {- gen -} "sadatta" {- ptv -}+ "sadantena" {- ess -} "sadanneksi" {- transl -}+ "sadannessa" {- ine -} "sadannesta" {- ela -}+ "sadanteen" {- ill -} "sadannella" {- ade -}+ "sadannelta" {- abl -} "sadannelle" {- all -}+ "sadannetta" {- abe -}+ "?" {- other -}+ -- plural+ "sadannet" {- nom -} "sadannet" {- acc -}+ "sadansien" {- gen -} "sadansia" {- ptv -}+ "sadansina" {- ess -} "sadansiksi" {- transl -}+ "sadansissa" {- ine -} "sadansista" {- ela -}+ "sadansiin" {- ill -} "sadansilla" {- ade -}+ "sadansilta" {- abl -} "sadansille" {- all -}+ "sadansitta" {- abe -} "sadansine" {- com -}+ "sadansin" {- instr -}+ "?" {- other -}+ )+ , (1000, \c -> case c of+ _ -> infForms inf c+ -- singular+ "tuhannes" {- nom -} "tuhannes" {- acc -}+ "tuhannennen" {- gen -} "tuhannetta" {- ptv -}+ "tuhannentena" {- ess -} "tuhannenneksi" {- transl -}+ "tuhannennessa" {- ine -} "tuhannennesta" {- ela -}+ "tuhannenteen" {- ill -} "tuhannennella" {- ade -}+ "tuhannennelta" {- abl -} "tuhannennelle" {- all -}+ "tuhannennetta" {- abe -}+ "?" {- other -}+ -- plural+ "tuhannennet" {- nom -} "tuhannennet" {- acc -}+ "tuhannensien" {- gen -} "tuhannensia" {- ptv -}+ "tuhannensina" {- ess -} "tuhannensiksi" {- transl -}+ "tuhannensissa" {- ine -} "tuhannensista" {- ela -}+ "tuhannensiin" {- ill -} "tuhannensilla" {- ade -}+ "tuhannensilta" {- abl -} "tuhannensille" {- all -}+ "tuhannensitta" {- abe -} "tuhannensine" {- com -}+ "tuhannensin" {- instr -}+ "?" {- other -}+ )+ ]++infForms :: Inflection -> Ctx Exp+ -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text+ -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text+ -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text+infForms inf _+ s_nom s_acc s_gen s_ptv s_ess s_transl+ s_ine s_ela s_ill s_ade s_abl s_all s_abe+ s_other+ p_nom p_acc p_gen p_ptv p_ess p_transl+ p_ine p_ela p_ill p_ade p_abl p_all p_abe p_com p_instr+ p_other+ | isSingular inf = singularForms+ | isPlural inf = pluralForms+ | otherwise = "?"+ where+ singularForms+ | isNominative inf = s_nom+ | isAccusative inf = s_acc+ | isGenitive inf = s_gen+ | isPartitive inf = s_ptv+ | isEssive inf = s_ess+ | isTranslative inf = s_transl+ | isLocativeInessive inf = s_ine+ | isLocativeElative inf = s_ela+ | isLocativeIllative inf = s_ill+ | isLocativeAdessive inf = s_ade+ | isLocativeAblative inf = s_abl+ | isLocativeAllative inf = s_all+ | isAbessive inf = s_abe+ | otherwise = s_other+ pluralForms+ | isNominative inf = p_nom+ | isAccusative inf = p_acc+ | isGenitive inf = p_gen+ | isPartitive inf = p_ptv+ | isEssive inf = p_ess+ | isTranslative inf = p_transl+ | isLocativeInessive inf = p_ine+ | isLocativeElative inf = p_ela+ | isLocativeIllative inf = p_ill+ | isLocativeAdessive inf = p_ade+ | isLocativeAblative inf = p_abl+ | isLocativeAllative inf = p_all+ | isAbessive inf = p_abe+ | isComitative inf = p_com+ | isInstructive inf = p_instr+ | otherwise = p_other
− src/Text/Numeral/Language/FR.hs
@@ -1,259 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] fr--[@ISO639-2B@] fre--[@ISO639-3@] fra--[@Native name@] Français--[@English name@] French--}--module Text.Numeral.Language.FR- ( -- * Language entry- entry- -- * Conversions- , cardinal- , ordinal- -- * Structure- , cardinalStruct- , ordinalStruct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤), (≥) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- FR-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "fr"- , entIso639_2 = ["fre"]- , entIso639_3 = Just "fra"- , entNativeNames = ["Français"]- , entEnglishName = Just "French"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = cardinalStruct- }- , entOrdinal = Just Conversion- { toNumeral = ordinal- , toStructure = ordinalStruct- }- }--cardinal ∷ (G.Feminine i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ cardinalStruct--ordinal ∷ (G.Feminine i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-ordinal inf = ordinalRepr inf ∘ ordinalStruct--cardinalStruct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-cardinalStruct = pos $ fix $ rule `combine` pelletierScale1 R L BN.rule--ordinalStruct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-ordinalStruct = pos $ fix $ rule `combine` pelletierScale R L BN.rule--rule ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ Rule α β-rule = findRule ( 0, lit )- [ ( 11, add 10 L )- , ( 17, add 10 R )- , ( 20, lit )- , ( 21, add 20 R )- , ( 30, mul 10 R L)- , ( 70, add 60 R )- , ( 80, mul 20 R L)- , ( 89, add 80 R )- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--genericRepr ∷ Repr i-genericRepr = defaultRepr- { reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "moins "- }- where- (Lit n ⊞ Lit 10) _ | n ≤ 6 = ""- (Lit 10 ⊞ Lit n ) _ | n ≥ 7 = "-"- ((Lit 4 `Mul` Lit 20) ⊞ _ ) _ = "-"- (_ ⊞ (Lit 1 `Add` Lit 10)) _ = " et "- (_ ⊞ Lit 1 ) _ = " et "- ((Lit _ `Mul` Lit 10) ⊞ _ ) _ = "-"- (Lit 20 ⊞ _ ) _ = "-"- (_ ⊞ _ ) _ = " "-- (_ ⊡ Lit 10) _ = ""- (_ ⊡ Lit 20) _ = "-"- (_ ⊡ _ ) _ = " "--cardinalRepr ∷ (G.Feminine i) ⇒ i → Exp i → Maybe Text-cardinalRepr = render genericRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = BN.pelletierRepr (BN.quantityName "illion" "illions")- (BN.quantityName "illiard" "illiards")- bigNumSyms- }- where- syms inf =- M.fromList- [ (0, const "zéro")- , (1, \c → case c of- CtxAdd _ (Lit 10) _ → "on"- _ | G.isFeminine inf → "une"- | otherwise → "un"- )- , (2, ten "deux" "dou" "deux")- , (3, ten "trois" "trei" "tren")- , (4, ten "quatre" "quator" "quar")- , (5, ten "cinq" "quin" "cinqu")- , (6, ten "six" "sei" "soix")- , (7, const "sept")- , (8, const "huit")- , (9, const "neuf")- , (10, \c → case c of- CtxAdd _ (Lit n) _ | n < 7 → "ze"- | otherwise → "dix"- CtxMul _ (Lit 3) _ → "te"- CtxMul R _ _ → "ante"- _ → "dix"- )- , (20, \c → case c of- CtxMul _ _ CtxEmpty → "vingts"- _ → "vingt"- )- , (100, \c → case c of- CtxMul R _ CtxEmpty → "cents"- _ → "cent"- )- , (1000, const "mille")- ]-- ten n a m ctx = case ctx of- CtxAdd _ (Lit 10) _ → a- CtxMul _ (Lit 10) _ → m- _ → n--ordinalRepr ∷ (G.Feminine i) ⇒ i → Exp i → Maybe Text-ordinalRepr = render genericRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = BN.pelletierRepr ( BN.ordQuantityName "illion" "illionième"- "illions" "illionième"- )- ( BN.ordQuantityName "illiard" "illiardième"- "illiards" "illiardième"- )- bigNumSyms- }- where- syms inf =- M.fromList- [ (0, \c → case c of- CtxEmpty → "zéroth"- _ → "zéro"- )- , (1, \c → case c of- CtxEmpty- | G.isFeminine inf → "première"- | otherwise → "premier"- CtxAdd _ (Lit 10) _ → "on"- _ | isOutside R c → if G.isFeminine inf- then "uneième"- else "unième"- | G.isFeminine inf → "une"- | otherwise → "un"- )- , (2, ten "deuxième" "deux" "dou" "deux")- , (3, ten "troisième" "trois" "trei" "tren")- , (4, ten "quatrième" "quatre" "quator" "quar")- , (5, ten "cinquième" "cinq" "quin" "cinqu")- , (6, ten "sixième" "six" "sei" "soix")- , (7, \c → if isOutside R c then "septième" else "sept")- , (8, \c → if isOutside R c then "huitième" else "huit")- , (9, \c → if isOutside R c then "neuvième" else "neuf")- , (10, \c → case c of- CtxAdd R (Lit _) _ | isOutside R c → "zième"- | otherwise → "ze"- CtxAdd L (Lit _) _ → "dix"- CtxMul _ (Lit 3) _ | isOutside R c → "tième"- | otherwise → "te"- CtxMul R _ _ | isOutside R c → "antième"- | otherwise → "ante"- _ | isOutside R c → "dixième"- | otherwise → "dix"- )- , (20, \c → case c of- _ | isOutside R c → "vingtième"- CtxMul _ _ CtxEmpty → "vingts"- _ → "vingt"- )- , (100, \c → case c of- _ | isOutside R c → "centième"- CtxMul R _ CtxEmpty → "cents"- _ → "cent"- )- , (1000, \c → if isOutside R c then "millième" else "mille")- ]-- ten o n a m ctx =- case ctx of- CtxAdd _ (Lit 10) _ | isOutside R ctx → o- | otherwise → a- CtxMul _ (Lit 10) _ | isOutside R ctx → o- | otherwise → m- _ | isOutside R ctx → o- | otherwise → n--bigNumSyms ∷ [(ℤ, Ctx (Exp i) → Text)]-bigNumSyms =- [ (1, BN.forms "m" "uno" "uno" "" "")- , (3, BN.forms "tr" "tré" "tres" "tri" "tre")- , (10, \c → case c of- CtxAdd _ (Lit 100) _ → "deci"- CtxMul _ _ (CtxAdd _ (Lit 100) _) → "ginta"- CtxMul {} → "gint"- _ → "déc"- )- ]
+ src/Text/Numeral/Language/FRA.hs view
@@ -0,0 +1,238 @@+{-|+[@ISO639-1@] fr++[@ISO639-2B@] fre++[@ISO639-3@] fra++[@Native name@] Français++[@English name@] French+-}++module Text.Numeral.Language.FRA+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ , ordinal+ -- * Structure+ , cardinalStruct+ , ordinalStruct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- FRA+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "fr"+ , entIso639_2 = ["fre"]+ , entIso639_3 = Just "fra"+ , entNativeNames = ["Français"]+ , entEnglishName = Just "French"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = cardinalStruct+ }+ , entOrdinal = Just Conversion+ { toNumeral = ordinal+ , toStructure = ordinalStruct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . cardinalStruct++ordinal :: (Integral a) => Inflection -> a -> Maybe Text+ordinal inf = ordinalRepr inf . ordinalStruct++cardinalStruct :: (Integral a) => a -> Exp+cardinalStruct = pos $ fix $ rule `combine` pelletierScale1 R L BN.rule++ordinalStruct :: (Integral a) => a -> Exp+ordinalStruct = pos $ fix $ rule `combine` pelletierScale R L BN.rule++rule :: (Integral a) => Rule a+rule = findRule ( 0, lit )+ [ ( 11, add 10 L )+ , ( 17, add 10 R )+ , ( 20, lit )+ , ( 21, add 20 R )+ , ( 30, mul 10 R L)+ , ( 70, add 60 R )+ , ( 80, mul 20 R L)+ , ( 89, add 80 R )+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++genericRepr :: Repr+genericRepr = defaultRepr+ { reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "moins "+ }+ where+ (Lit n ⊞ Lit 10) _ | n <= 6 = ""+ (Lit 10 ⊞ Lit n ) _ | n >= 7 = "-"+ ((Lit 4 `Mul` Lit 20) ⊞ _ ) _ = "-"+ (_ ⊞ (Lit 1 `Add` Lit 10)) _ = " et "+ (_ ⊞ Lit 1 ) _ = " et "+ ((Lit _ `Mul` Lit 10) ⊞ _ ) _ = "-"+ (Lit 20 ⊞ _ ) _ = "-"+ (_ ⊞ _ ) _ = " "++ (_ ⊡ Lit 10) _ = ""+ (_ ⊡ Lit 20) _ = "-"+ (_ ⊡ _ ) _ = " "++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render genericRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = BN.pelletierRepr (BN.quantityName "illion" "illions")+ (BN.quantityName "illiard" "illiards")+ bigNumSyms+ }+ where+ syms inf =+ M.fromList+ [ (0, const "zéro")+ , (1, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "on"+ _ | isFeminine inf -> "une"+ | otherwise -> "un"+ )+ , (2, ten "deux" "dou" "deux")+ , (3, ten "trois" "trei" "tren")+ , (4, ten "quatre" "quator" "quar")+ , (5, ten "cinq" "quin" "cinqu")+ , (6, ten "six" "sei" "soix")+ , (7, const "sept")+ , (8, const "huit")+ , (9, const "neuf")+ , (10, \c -> case c of+ CtxAdd _ (Lit n) _ | n < 7 -> "ze"+ | otherwise -> "dix"+ CtxMul _ (Lit 3) _ -> "te"+ CtxMul R _ _ -> "ante"+ _ -> "dix"+ )+ , (20, \c -> case c of+ CtxMul _ _ CtxEmpty -> "vingts"+ _ -> "vingt"+ )+ , (100, \c -> case c of+ CtxMul R _ CtxEmpty -> "cents"+ _ -> "cent"+ )+ , (1000, const "mille")+ ]++ ten n a m ctx = case ctx of+ CtxAdd _ (Lit 10) _ -> a+ CtxMul _ (Lit 10) _ -> m+ _ -> n++ordinalRepr :: Inflection -> Exp -> Maybe Text+ordinalRepr = render genericRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = BN.pelletierRepr ( BN.ordQuantityName "illion" "illionième"+ "illions" "illionième"+ )+ ( BN.ordQuantityName "illiard" "illiardième"+ "illiards" "illiardième"+ )+ bigNumSyms+ }+ where+ syms inf =+ M.fromList+ [ (0, \c -> case c of+ CtxEmpty -> "zéroth"+ _ -> "zéro"+ )+ , (1, \c -> case c of+ CtxEmpty+ | isFeminine inf -> "première"+ | otherwise -> "premier"+ CtxAdd _ (Lit 10) _ -> "on"+ _ | isOutside R c -> if isFeminine inf+ then "uneième"+ else "unième"+ | isFeminine inf -> "une"+ | otherwise -> "un"+ )+ , (2, ten "deuxième" "deux" "dou" "deux")+ , (3, ten "troisième" "trois" "trei" "tren")+ , (4, ten "quatrième" "quatre" "quator" "quar")+ , (5, ten "cinquième" "cinq" "quin" "cinqu")+ , (6, ten "sixième" "six" "sei" "soix")+ , (7, \c -> if isOutside R c then "septième" else "sept")+ , (8, \c -> if isOutside R c then "huitième" else "huit")+ , (9, \c -> if isOutside R c then "neuvième" else "neuf")+ , (10, \c -> case c of+ CtxAdd R (Lit _) _ | isOutside R c -> "zième"+ | otherwise -> "ze"+ CtxAdd L (Lit _) _ -> "dix"+ CtxMul _ (Lit 3) _ | isOutside R c -> "tième"+ | otherwise -> "te"+ CtxMul R _ _ | isOutside R c -> "antième"+ | otherwise -> "ante"+ _ | isOutside R c -> "dixième"+ | otherwise -> "dix"+ )+ , (20, \c -> case c of+ _ | isOutside R c -> "vingtième"+ CtxMul _ _ CtxEmpty -> "vingts"+ _ -> "vingt"+ )+ , (100, \c -> case c of+ _ | isOutside R c -> "centième"+ CtxMul R _ CtxEmpty -> "cents"+ _ -> "cent"+ )+ , (1000, \c -> if isOutside R c then "millième" else "mille")+ ]++ ten o n a m ctx =+ case ctx of+ CtxAdd _ (Lit 10) _ | isOutside R ctx -> o+ | otherwise -> a+ CtxMul _ (Lit 10) _ | isOutside R ctx -> o+ | otherwise -> m+ _ | isOutside R ctx -> o+ | otherwise -> n++bigNumSyms :: [(Integer, Ctx Exp -> Text)]+bigNumSyms =+ [ (1, BN.forms "m" "uno" "uno" "" "")+ , (3, BN.forms "tr" "tré" "tres" "tri" "tre")+ , (10, \c -> case c of+ CtxAdd _ (Lit 100) _ -> "deci"+ CtxMul _ _ (CtxAdd _ (Lit 100) _) -> "ginta"+ CtxMul {} -> "gint"+ _ -> "déc"+ )+ ]
src/Text/Numeral/Language/FUR.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,20 +26,13 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import qualified "containers" Data.Map as M ( fromList, lookup )+import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M import "this" Text.Numeral import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G import "this" Text.Numeral.Misc ( dec ) import "this" Text.Numeral.Entry-import qualified "this" Text.Numeral.Language.IT as IT ( rule )+import qualified "this" Text.Numeral.Language.ITA as ITA ( rule ) import "this" Text.Numeral.Render.Utils ( addCtx, mulCtx ) import "text" Data.Text ( Text ) @@ -53,7 +41,7 @@ -- FUR -------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_2 = ["fur"] , entIso639_3 = Just "fur"@@ -65,22 +53,18 @@ } } -cardinal ∷ (G.Masculine i, G.Feminine i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-struct = fix $ IT.rule `combine` pelletierScale1 R L BN.rule+struct :: (Integral a) => a -> Exp+struct = fix $ ITA.rule `combine` pelletierScale1 R L BN.rule -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = let x = dec 12 - 1 in (negate x, x) -cardinalRepr ∷ (G.Feminine i, G.Masculine i) ⇒ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)+ { reprValue = \inf n -> M.lookup n (syms inf) , reprAdd = Just (⊞) , reprMul = Just (⊡) , reprScale = BN.pelletierRepr@@ -107,14 +91,14 @@ syms inf = M.fromList [ (0, const "zero")- , (1, \c → case c of- _ | G.isFeminine inf → "une"- | otherwise → "un"+ , (1, \c -> case c of+ _ | isFeminine inf -> "une"+ | otherwise -> "un" ) , (2, addCtx 10 "do" $ mulCtx 100 "dus"- $ \c → case c of- _ | G.isFeminine inf → "dôs"- | otherwise → "doi"+ $ \c -> case c of+ _ | isFeminine inf -> "dôs"+ | otherwise -> "doi" ) , (3, addCtx 10 "tre" $ mulCtx 10 "tr" $ mulCtx 100 "tres" $ const "trê"@@ -125,21 +109,21 @@ , (7, mulCtx 10 "set" $ const "siet") , (8, mulCtx 10 "ot" $ const "vot") , (9, mulCtx 10 "nov" $ const "nûf")- , (10, \c → case c of+ , (10, \c -> case c of CtxAdd R (Lit n) _- | n ≤ 7 → "dis"- CtxAdd L _ _ → "dise"- CtxMul _ (Lit 3) _ → "ente"+ | n <= 7 -> "dis"+ CtxAdd L _ _ -> "dise"+ CtxMul _ (Lit 3) _ -> "ente" CtxMul _ (Lit n) _- | n ≤ 9 → "ante"- _ → "dîs"+ | n <= 9 -> "ante"+ _ -> "dîs" ) , (20, const "vincj")- , (100, \c → case c of+ , (100, \c -> case c of CtxMul _ (Lit n) _- | n ≤ 3 → "inte"- | otherwise → "cent"- _ → "cent"+ | n <= 3 -> "inte"+ | otherwise -> "cent"+ _ -> "cent" ) , (1000, const "mil") ]
+ src/Text/Numeral/Language/GLV.hs view
@@ -0,0 +1,113 @@+{-|+[@ISO639-1@] gv++[@ISO639-2@] glv++[@ISO639-3@] glv++[@Native name@] Gaelg++[@English name@] Manx+-}++module Text.Numeral.Language.GLV+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- GLV+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "gv"+ , entIso639_2 = ["glv"]+ , entIso639_3 = Just "glv"+ , entNativeNames = ["Gaelg"]+ , entEnglishName = Just "Manx"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = checkPos+ $ fix+ $ findRule ( 1, lit )+ [ ( 11, add 10 L )+ , ( 20, lit )+ , ( 21, add 20 L )+ , ( 40, lit )+ , ( 41, add 40 L )+ , ( 60, mul 20 R L)+ , ( 100, step 100 10 R L)+ , (1000, lit)+ ]+ 1000++bounds :: (Integral a) => (a, a)+bounds = (1, 1000)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just (⊞)+ , reprMul = Just $ \_ _ _ -> " "+ }+ where+ ((Lit _ `Mul` Lit 20) ⊞ Lit 10) _ = " as "+ (_ ⊞ Lit 10) _ = "-"+ (_ ⊞ _ ) _ = " as "++ syms =+ M.fromList+ [ (1, const "nane")+ , (2, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "daa"+ CtxMul {} -> "daa"+ _ -> "jees"+ )+ , (3, const "tree")+ , (4, const "kiare")+ , (5, const "queig")+ , (6, const "shey")+ , (7, const "shiaght")+ , (8, const "hoght")+ , (9, const "nuy")+ , (10, \c -> case c of+ CtxAdd _ (Lit 2) _ -> "yeig"+ CtxAdd _ (Lit _ `Mul` Lit 20) _ -> "jeih"+ CtxAdd R _ _ -> "jeig"+ _ -> "jeih"+ )+ , (20, const "feed")+ , (40, const "daeed")+ , (100, \c -> case c of+ CtxMul {} -> "cheead"+ _ -> "keead"+ )+ , (1000, const "thousane")+ ]
src/Text/Numeral/Language/GSW.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,16 +26,10 @@ -- Imports ------------------------------------------------------------------------------- -import "base" Data.Function ( ($), const )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) ) import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Language.DE ( struct )+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Language.DEU ( struct ) import "this" Text.Numeral.Entry import "text" Data.Text ( Text ) @@ -49,7 +38,7 @@ -- GSW -------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_2 = ["gse"] , entIso639_3 = Just "gse"@@ -61,64 +50,64 @@ } } -cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = let x = dec 6 - 1 in (negate x, x) -genericRepr ∷ Repr i+genericRepr :: Repr genericRepr = defaultRepr { reprAdd = Just (⊞)- , reprMul = Just $ \_ _ _ → ""+ , reprMul = Just $ \_ _ _ -> "" } where (_ ⊞ (_ `Mul` Lit 10)) _ = "e" (Lit 100 ⊞ Lit 1) _ = "und" (_ ⊞ _ ) _ = "" -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render genericRepr- { reprValue = \_ n → M.lookup n syms }+ { reprValue = \_ n -> M.lookup n syms } where syms = M.fromList- [ (1, \c → case c of- CtxAdd _ (Lit 100) _ → "äis"- CtxAdd {} → "ein"- _ → "eis"+ [ (1, \c -> case c of+ CtxAdd _ (Lit 100) _ -> "äis"+ CtxAdd {} -> "ein"+ _ -> "eis" )- , (2, \c → case c of- CtxMul _ (Lit 10) _ → "zwän"- _ → "zwöi"+ , (2, \c -> case c of+ CtxMul _ (Lit 10) _ -> "zwän"+ _ -> "zwöi" )- , (3, \c → case c of- CtxAdd _ (Lit 10) _ → "dry"- CtxMul _ (Lit 10) _ → "drys"- _ → "drü"+ , (3, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "dry"+ CtxMul _ (Lit 10) _ -> "drys"+ _ -> "drü" ) , (4, const "vier") , (5, const "füf")- , (6, \c → case c of- CtxMul _ (Lit 10) _ → "sëch"- _ → "sächs"+ , (6, \c -> case c of+ CtxMul _ (Lit 10) _ -> "sëch"+ _ -> "sächs" )- , (7, \c → case c of- CtxAdd _ (_ `Mul` Lit 10) _ → "siben"- _ → "sibe"+ , (7, \c -> case c of+ CtxAdd _ (_ `Mul` Lit 10) _ -> "siben"+ _ -> "sibe" )- , (8, \c → case c of- CtxMul _ (Lit 10) _ → "ach"- _ → "acht"+ , (8, \c -> case c of+ CtxMul _ (Lit 10) _ -> "ach"+ _ -> "acht" )- , (9, \c → case c of- CtxAdd _ (_ `Mul` Lit 10) _ → "nün"- _ → "nüün"+ , (9, \c -> case c of+ CtxAdd _ (_ `Mul` Lit 10) _ -> "nün"+ _ -> "nüün" )- , (10, \c → case c of- CtxMul _ (Lit 3) _ → "sg"- CtxMul {} → "zg"- _ → "zäh"+ , (10, \c -> case c of+ CtxMul _ (Lit 3) _ -> "sg"+ CtxMul {} -> "zg"+ _ -> "zäh" ) , (11, const "euf") , (12, const "zwüof")
− src/Text/Numeral/Language/GV.hs
@@ -1,123 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] gv--[@ISO639-2@] glv--[@ISO639-3@] glv--[@Native name@] Gaelg--[@English name@] Manx--}--module Text.Numeral.Language.GV- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- GV----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "gv"- , entIso639_2 = ["glv"]- , entIso639_3 = Just "glv"- , entNativeNames = ["Gaelg"]- , entEnglishName = Just "Manx"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β-struct = checkPos- $ fix- $ findRule ( 1, lit )- [ ( 11, add 10 L )- , ( 20, lit )- , ( 21, add 20 L )- , ( 40, lit )- , ( 41, add 40 L )- , ( 60, mul 20 R L)- , ( 100, step 100 10 R L)- , (1000, lit)- ]- 1000--bounds ∷ (Integral α) ⇒ (α, α)-bounds = (1, 1000)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just (⊞)- , reprMul = Just $ \_ _ _ → " "- }- where- ((Lit _ `Mul` Lit 20) ⊞ Lit 10) _ = " as "- (_ ⊞ Lit 10) _ = "-"- (_ ⊞ _ ) _ = " as "-- syms =- M.fromList- [ (1, const "nane")- , (2, \c → case c of- CtxAdd _ (Lit 10) _ → "daa"- CtxMul {} → "daa"- _ → "jees"- )- , (3, const "tree")- , (4, const "kiare")- , (5, const "queig")- , (6, const "shey")- , (7, const "shiaght")- , (8, const "hoght")- , (9, const "nuy")- , (10, \c → case c of- CtxAdd _ (Lit 2) _ → "yeig"- CtxAdd _ (Lit _ `Mul` Lit 20) _ → "jeih"- CtxAdd R _ _ → "jeig"- _ → "jeih"- )- , (20, const "feed")- , (40, const "daeed")- , (100, \c → case c of- CtxMul {} → "cheead"- _ → "keead"- )- , (1000, const "thousane")- ]
− src/Text/Numeral/Language/HE.hs
@@ -1,172 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] he--[@ISO639-2@] heb--[@ISO639-3@] heb--[@Native name@] עִבְרִית--[@English name@] Modern Hebrew--}--module Text.Numeral.Language.HE- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Function ( ($), fix )-import "base" Data.List ( concat )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (+), div, negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- HE-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "he"- , entIso639_2 = ["heb"]- , entIso639_3 = Just "heb"- , entNativeNames = ["עִבְרִית"]- , entEnglishName = Just "Modern Hebrew"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ ( Integral α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Dual β, E.Plural β- )- ⇒ α → β-struct = pos- $ fix- $ findRule ( 0, lit)- ( [ (11, add 10 L)- , (20, dual ∘ mapRule (`div` 10) lit)- , (21, add 20 R)- ]- ⊕ concat [ [ (n, plural ∘ mapRule (`div` 10) lit)- , (n+1, add n R)- ]- | n ← [20,30..90]- ]- ⊕ [ (100, step 100 10 R L)- , (200, dual ∘ mapRule (`div` 2) lit)- , (201, add 200 R)- , (300, step 100 10 R L)- ]- )- 1000--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = 1000 in (negate x, x)---- TODO: Handle inflection, mainly masculine and feminine--- gender. Maybe get rid of Dual and Plural in the expression language--- and use grammatical number for that.-cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "מינוס "- , reprAddCombine = Just addCombine- }- where- (_ ⊞ Lit 10) _ = "ה"- (Dual _ ⊞ _ ) _ = " ו"- (Plural _ ⊞ _ ) _ = " ו"- (_ ⊞ _ ) _ = " "-- (_ ⊡ Lit 10) _ = ""- (_ ⊡ _ ) _ = " "-- addCombine a x _ y (Lit 10) = x ⊕ " " ⊕ y ⊕ a- addCombine a x _ y _ = x ⊕ a ⊕ y-- syms =- M.fromList- [ (0, \c → case c of- _ → "אפס"- )- , (1, \c → case c of- _ → "אחת"- )- , (2, \c → case c of- CtxAdd _ (Lit 10) _ → "שתים"- CtxDual {} → "עשרים"- _ → "שתיים"- )- , (3, \c → case c of- CtxPlural {} → "שלושים"- _ → "שלוש"- )- , (4, \c → case c of- CtxPlural {} → "ארבעים"- _ → "ארבע"- )- , (5, \c → case c of- CtxPlural {} → "חמישים"- _ → "חמש"- )- , (6, \c → case c of- CtxPlural {} → "ששים"- _ → "שש"- )- , (7, \c → case c of- CtxPlural {} → "שבעים"- _ → "שבע"- )- , (8, \c → case c of- CtxPlural {} → "שמונים"- _ → "שמונה"- )- , (9, \c → case c of- CtxPlural {} → "תשעים"- _ → "תשע"- )- , (10, \c → case c of- CtxMul _ (Lit n) _ | n ≤ 9 → ""- _ → "עשר"- )- , (100, \c → case c of- CtxDual {} → "מאתיים"- CtxMul {} → "מאות"- _ → "מאה"- )- , (1000, \c → case c of- _ → "אלף"- )- ]
+ src/Text/Numeral/Language/HEB.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE FlexibleContexts #-}++{-|+[@ISO639-1@] he++[@ISO639-2@] heb++[@ISO639-3@] heb++[@Native name@] עִבְרִית++[@English name@] Modern Hebrew+-}++module Text.Numeral.Language.HEB+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Monoid ( (<>) )+import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- HEB+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "he"+ , entIso639_2 = ["heb"]+ , entIso639_3 = Just "heb"+ , entNativeNames = ["עִבְרִית"]+ , entEnglishName = Just "Modern Hebrew"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule ( 0, lit)+ ( [ (11, add 10 L)+ , (20, changeNumber (Just Dual) . mapRule (`div` 10) lit)+ , (21, add 20 R)+ ]+ <> concat [ [ (n, changeNumber (Just Plural) . mapRule (`div` 10) lit)+ , (n+1, add n R)+ ]+ | n <- [20,30..90]+ ]+ <> [ (100, step 100 10 R L)+ , (200, changeNumber (Just Dual) . mapRule (`div` 2) lit)+ , (201, add 200 R)+ , (300, step 100 10 R L)+ ]+ )+ 1000++bounds :: (Integral a) => (a, a)+bounds = let x = 1000 in (negate x, x)++-- TODO: Handle inflection, mainly masculine and feminine+-- gender. Maybe get rid of Dual and Plural in the expression language+-- and use grammatical number for that.+cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \i n -> M.lookup n (syms i)+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "מינוס "+ , reprAddCombine = Just addCombine+ }+ where+ (_ ⊞ Lit 10) _ = "ה"+ (ChangeNumber _ _ ⊞ _) _ = " ו"+ (_ ⊞ _) _ = " "++ (_ ⊡ Lit 10) _ = ""+ (_ ⊡ _ ) _ = " "++ addCombine a x _ y (Lit 10) = x <> " " <> y <> a+ addCombine a x _ y _ = x <> a <> y++ syms inf =+ M.fromList+ [ (0, \c -> case c of+ _ -> "אפס"+ )+ , (1, \c -> case c of+ _ -> "אחת"+ )+ , (2, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "שתים"+ _ | isDual inf -> "עשרים"+ | otherwise -> "שתיים"+ )+ , (3, \c -> case c of+ _ | isPlural inf -> "שלושים"+ | otherwise -> "שלוש"+ )+ , (4, \c -> case c of+ _ | isPlural inf -> "ארבעים"+ | otherwise -> "ארבע"+ )+ , (5, \c -> case c of+ _ | isPlural inf -> "חמישים"+ | otherwise -> "חמש"+ )+ , (6, \c -> case c of+ _ | isPlural inf -> "ששים"+ | otherwise -> "שש"+ )+ , (7, \c -> case c of+ _ | isPlural inf -> "שבעים"+ | otherwise -> "שבע"+ )+ , (8, \c -> case c of+ _ | isPlural inf -> "שמונים"+ | otherwise -> "שמונה"+ )+ , (9, \c -> case c of+ _ | isPlural inf -> "תשעים"+ | otherwise -> "תשע"+ )+ , (10, \c -> case c of+ CtxMul _ (Lit n) _ | n <= 9 -> ""+ _ -> "עשר"+ )+ , (100, \c -> case c of+ _ | isDual inf -> "מאתיים"+ | isPlural inf -> "מאות"+ | otherwise -> "מאה"+ )+ , (1000, \c -> case c of+ _ -> "אלף"+ )+ ]
src/Text/Numeral/Language/HOP.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,15 +26,10 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.List.Unicode ( (∈) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )+import "base" Data.Function ( fix )+import "base" Data.Monoid ( (<>) ) import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E+import "this" Text.Numeral import "this" Text.Numeral.Entry import "this" Text.Numeral.Render.Utils ( mulCtx ) import "text" Data.Text ( Text )@@ -49,7 +39,7 @@ -- HOP -------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_3 = Just "hop" , entNativeNames = ["Hopilàvayi"]@@ -60,13 +50,10 @@ } } -cardinal ∷ (Integral α, E.Scale α)⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ ( Integral α- , E.Unknown β, E.Lit β, E.Add β, E.Mul β- )- ⇒ α → β+struct :: (Integral a) => a -> Exp struct = fix $ findRule ( 0, lit) [ (11, add 10 R)@@ -76,53 +63,53 @@ ] (100) -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (1, 100) -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)+ { reprValue = \inf n -> M.lookup n (syms inf) , reprAdd = Just (⊞) , reprAddCombine = Just addCombine- , reprMul = Just $ \_ _ _ → " "+ , reprMul = Just $ \_ _ _ -> " " } where- (Lit n ⊞ _) _ | n ∈ [10, 20] = " niikyang "- (Mul _ (Lit 10) ⊞ _) _ = " niikyang "- (_ ⊞ _) _ = " "+ (Lit n ⊞ _) _ | n `elem` [10, 20] = " niikyang "+ (Mul _ (Lit 10) ⊞ _) _ = " niikyang "+ (_ ⊞ _) _ = " " - addCombine a x (Lit n) y _ | n ∈ [10, 20] = x ⊕ a ⊕ y ⊕ " siikya’ta"- addCombine a x (Mul _ (Lit 10)) y _ = x ⊕ a ⊕ y ⊕ " siikya’ta"- addCombine a x _ y _ = x ⊕ a ⊕ y+ addCombine a x (Lit n) y _ | n `elem` [10, 20] = x <> a <> y <> " siikya’ta"+ addCombine a x (Mul _ (Lit 10)) y _ = x <> a <> y <> " siikya’ta"+ addCombine a x _ y _ = x <> a <> y syms _ = M.fromList- [ (1, \c → case c of- CtxAdd {} → "suk"- _ → "suukya’"+ [ (1, \c -> case c of+ CtxAdd {} -> "suk"+ _ -> "suukya’" )- , (2, \c → case c of- CtxAdd {} → "löqmuy"- _ → "lööyöm"+ , (2, \c -> case c of+ CtxAdd {} -> "löqmuy"+ _ -> "lööyöm" )- , (3, \c → case c of- CtxAdd {} → "paykomuy"- CtxMul {} → "payiv"- _ → "pàayom"+ , (3, \c -> case c of+ CtxAdd {} -> "paykomuy"+ CtxMul {} -> "payiv"+ _ -> "pàayom" )- , (4, \c → case c of- CtxAdd {} → "naalöqmuy"- CtxMul {} → "naalöv"- _ → "naalöyöm"+ , (4, \c -> case c of+ CtxAdd {} -> "naalöqmuy"+ CtxMul {} -> "naalöv"+ _ -> "naalöyöm" ) , (5, mulCtx 10 "tsivotsikiv" $ const "tsivot") , (6, mulCtx 10 "navaysikiv" $ const "navay") , (7, mulCtx 10 "tsange’sikiv" $ const "tsange’") , (8, mulCtx 10 "nanalsikiv" $ const "nanalt") , (9, mulCtx 10 "peve’sikiv" $ const "pevt")- , (10, \c → case c of- CtxMul L _ _ → "palotsikiv"- _ → "pakwt"+ , (10, \c -> case c of+ CtxMul L _ _ -> "palotsikiv"+ _ -> "pakwt" ) , (20, const "sunat") ]
− src/Text/Numeral/Language/IT.hs
@@ -1,272 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] it--[@ISO639-2B@] ita--[@ISO639-3@] ita--[@Native name@] Italiano--[@English name@] Italian--}--module Text.Numeral.Language.IT- ( -- * Language entry- entry- -- * Conversions- , cardinal- , ordinal- -- * Structure- , struct- , rule- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( Ord )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.List.Unicode ( (∈) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≥) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- IT-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "it"- , entIso639_2 = ["ita"]- , entIso639_3 = Just "ita"- , entNativeNames = ["Italiano"]- , entEnglishName = Just "Italian"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- , entOrdinal = Just Conversion- { toNumeral = ordinal- , toStructure = struct- }- }--cardinal ∷ (G.Masculine i, G.Feminine i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--ordinal ∷ (G.Masculine i, G.Feminine i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-ordinal inf = ordinalRepr inf ∘ struct--rule ∷ ( Integral α, Ord α- , E.Unknown β, E.Lit β, E.Add β, E.Mul β- )- ⇒ Rule α β-rule = findRule ( 0, lit )- [ ( 11, add 10 L )- , ( 17, add 10 R )- , ( 20, lit )- , ( 21, add 20 R )- , ( 30, mul 10 R L)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-struct = pos $ fix $ rule `combine` pelletierScale R L BN.rule--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--genericRepr ∷ Repr i-genericRepr = defaultRepr- { reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "meno "- }- where- (Lit 10 ⊞ Lit 7) _ = "as"- (Lit 10 ⊞ Lit 9) _ = "an"- ((_ `Mul` Scale _ _ _) ⊞ _ ) _ = " "- (_ ⊞ _ ) _ = ""--- (Lit n ⊡ Lit 10) _ | n ≥ 4 = "an"- (_ ⊡ Scale _ _ _) _ = " "- (_ ⊡ _ ) _ = ""--cardinalRepr ∷ (G.Feminine i, G.Masculine i) ⇒ i → Exp i → Maybe Text-cardinalRepr = render genericRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = BN.pelletierRepr- (BN.quantityName "ilione" "ilioni")- (BN.quantityName "iliardo" "iliardi")- bigNumSyms- }- where- syms inf =- M.fromList- [ (0, const "zero")- , (1, \c → case c of- CtxAdd _ (Lit 10) _ → "un"- _ | G.isFeminine inf → "una"- | G.isMasculine inf → "un"- | otherwise → "uno"- )- , (2, forms "due" "do" "du")- , (3, \c → case c of- CtxAdd R _ _ → "tré"- CtxMul _ (Lit 10) _ → "tren"- _ → "tre"- )- , (4, forms "quattro" "quattor" "quar")- , (5, forms "cinque" "quin" "cinqu")- , (6, forms "sei" "se" "sess")- , (7, forms "sette" "sette" "sett")- , (8, forms "otto" "otto" "ott")- , (9, forms "nove" "nove" "nov")- , (10, \c → case c of- CtxAdd _ (Lit _) _ → "dici"- -- Last vowel removed because of a phonetic rule:- CtxMul _ (Lit _) (CtxAdd _ (Lit n) _)- | n ∈ [1,8] → "t"- CtxMul R (Lit _) _ → "ta"- _ → "dieci"- )- , (20, \c → case c of- CtxAdd _ (Lit n) _- | n ∈ [1,8] → "vent"- _ → "venti"- )- , ( 100- , let f c = case c of- CtxAdd _ (Lit 8) _ → "cent"- CtxAdd _ (Lit 8 `Mul` Lit 10) _ → "cent"- CtxAdd _ (Lit 8 `Mul` Lit 10 `Add` _) _ → "cent"- CtxMul _ (Lit _) c2 → f c2- _ → "cento"- in f- )- , (1000, \c → case c of- CtxMul {} → "mila"- _ → "mille"- )- ]-- forms ∷ s → s → s → Ctx (Exp i) → s- forms n a m c = case c of- CtxAdd _ (Lit 10) _ → a- CtxMul _ (Lit 10) _ → m- _ → n--ordinalRepr ∷ (G.Feminine i) ⇒ i → Exp i → Maybe Text-ordinalRepr = render genericRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = BN.pelletierRepr- ( BN.ordQuantityName "ilione" "ilionesimo"- "ilioni" "ilionesimo"- )- ( BN.ordQuantityName "iliardo" "iliardesimo"- "iliardi" "iliardesimo"- )- bigNumSyms- }- where- syms inf =- M.fromList- [ (0, const "zero")- , (1, forms "prima" "primo" "unesimo" "uno" "un" "un")- , (2, forms "seconda" "secondo" "duesimo" "due" "do" "due")- , (3, \c → case c of- CtxEmpty- | G.isFeminine inf → "terza"- | otherwise → "terzo"- _ | isOutside R c → "treesimo"- CtxAdd R _ _ → "tré"- CtxMul _ (Lit 10) _ → "tren"- _ → "tre"- )- , (4, forms "quarta" "quarto" "quattresimo" "quattro" "quattor" "quar")- , (5, forms "quinta" "quinto" "cinquesimo" "cinque" "quin" "cinqu")- , (6, forms "sesta" "sesto" "seiesimo" "sei" "se" "sess")- , (7, forms "settimo" "settimo" "settesimo" "sette" "sette" "sett")- , (8, forms "ottave" "ottavo" "ottesimo" "otto" "otto" "ott")- , (9, forms "nono" "nono" "novesimo" "nove" "nove" "nov")- , (10, \c → case c of- CtxAdd _ (Lit _) _ | isOutside R c → "dicesimo"- | otherwise → "dici"- -- Last vowel removed because of a phonetic rule:- CtxMul _ (Lit _) (CtxAdd _ (Lit n) _)- | n ∈ [1,8] → "t"- CtxMul R (Lit _) _ | isOutside R c → "tesimo"- | otherwise → "ta"- _ | isOutside R c → "decimo"- | otherwise → "dieci"- )- , (20, \c → case c of- _ | isOutside R c → "ventesimo"- CtxAdd _ (Lit n) _- | n ∈ [1,8] → "vent"- _ → "venti"- )- , ( 100- , let f c = case c of- _ | isOutside R c → "centesimo"- CtxAdd _ (Lit 8) _ → "cent"- CtxAdd _ (Lit 8 `Mul` Lit 10) _ → "cent"- CtxAdd _ (Lit 8 `Mul` Lit 10 `Add` _) _ → "cent"- CtxMul _ (Lit _) c2 → f c2- _ → "cento"- in f- )- , (1000, \c → case c of- _ | isOutside R c → "millesimo"- CtxMul {} → "mila"- _ → "mille"- )- ]- where- forms ∷ s → s → s → s → s → s → Ctx (Exp i) → s- forms fo1 o1 o2 n a m c =- case c of- CtxEmpty- | G.isFeminine inf → fo1- | otherwise → o1- _ | isOutside R c → o2- CtxAdd _ (Lit 10) _ → a- CtxMul _ (Lit 10) _ → m- _ → n--bigNumSyms ∷ [(ℤ, Ctx (Exp i) → Text)]-bigNumSyms =- [ (6, BN.forms "sest" "sex" "ses" "sexa" "ses")- , (7, BN.forms "sett" "septen" "septem" "septua" "septin")- , (8, BN.forms "ott" "otto" "otto" "otto" "ottin")- ]
+ src/Text/Numeral/Language/ITA.hs view
@@ -0,0 +1,249 @@+{-|+[@ISO639-1@] it++[@ISO639-2B@] ita++[@ISO639-3@] ita++[@Native name@] Italiano++[@English name@] Italian+-}++module Text.Numeral.Language.ITA+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ , ordinal+ -- * Structure+ , struct+ , rule+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- ITA+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "it"+ , entIso639_2 = ["ita"]+ , entIso639_3 = Just "ita"+ , entNativeNames = ["Italiano"]+ , entEnglishName = Just "Italian"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ , entOrdinal = Just Conversion+ { toNumeral = ordinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++ordinal :: (Integral a) => Inflection -> a -> Maybe Text+ordinal inf = ordinalRepr inf . struct++rule :: (Integral a) => Rule a+rule = findRule ( 0, lit )+ [ ( 11, add 10 L )+ , ( 17, add 10 R )+ , ( 20, lit )+ , ( 21, add 20 R )+ , ( 30, mul 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++struct :: (Integral a) => a -> Exp+struct = pos $ fix $ rule `combine` pelletierScale R L BN.rule++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++genericRepr :: Repr+genericRepr = defaultRepr+ { reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "meno "+ }+ where+ (Lit 10 ⊞ Lit 7) _ = "as"+ (Lit 10 ⊞ Lit 9) _ = "an"+ ((_ `Mul` Scale _ _ _) ⊞ _ ) _ = " "+ (_ ⊞ _ ) _ = ""+++ (Lit n ⊡ Lit 10) _ | n >= 4 = "an"+ (_ ⊡ Scale _ _ _) _ = " "+ (_ ⊡ _ ) _ = ""++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render genericRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = BN.pelletierRepr+ (BN.quantityName "ilione" "ilioni")+ (BN.quantityName "iliardo" "iliardi")+ bigNumSyms+ }+ where+ syms inf =+ M.fromList+ [ (0, const "zero")+ , (1, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "un"+ _ | isFeminine inf -> "una"+ | isMasculine inf -> "un"+ | otherwise -> "uno"+ )+ , (2, forms "due" "do" "du")+ , (3, \c -> case c of+ CtxAdd R _ _ -> "tré"+ CtxMul _ (Lit 10) _ -> "tren"+ _ -> "tre"+ )+ , (4, forms "quattro" "quattor" "quar")+ , (5, forms "cinque" "quin" "cinqu")+ , (6, forms "sei" "se" "sess")+ , (7, forms "sette" "sette" "sett")+ , (8, forms "otto" "otto" "ott")+ , (9, forms "nove" "nove" "nov")+ , (10, \c -> case c of+ CtxAdd _ (Lit _) _ -> "dici"+ -- Last vowel removed because of a phonetic rule:+ CtxMul _ (Lit _) (CtxAdd _ (Lit n) _)+ | n `elem` [1,8] -> "t"+ CtxMul R (Lit _) _ -> "ta"+ _ -> "dieci"+ )+ , (20, \c -> case c of+ CtxAdd _ (Lit n) _+ | n `elem` [1,8] -> "vent"+ _ -> "venti"+ )+ , ( 100+ , let f c = case c of+ CtxAdd _ (Lit 8) _ -> "cent"+ CtxAdd _ (Lit 8 `Mul` Lit 10) _ -> "cent"+ CtxAdd _ (Lit 8 `Mul` Lit 10 `Add` _) _ -> "cent"+ CtxMul _ (Lit _) c2 -> f c2+ _ -> "cento"+ in f+ )+ , (1000, \c -> case c of+ CtxMul {} -> "mila"+ _ -> "mille"+ )+ ]++ forms :: s -> s -> s -> Ctx Exp -> s+ forms n a m c = case c of+ CtxAdd _ (Lit 10) _ -> a+ CtxMul _ (Lit 10) _ -> m+ _ -> n++ordinalRepr :: Inflection -> Exp -> Maybe Text+ordinalRepr = render genericRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = BN.pelletierRepr+ ( BN.ordQuantityName "ilione" "ilionesimo"+ "ilioni" "ilionesimo"+ )+ ( BN.ordQuantityName "iliardo" "iliardesimo"+ "iliardi" "iliardesimo"+ )+ bigNumSyms+ }+ where+ syms inf =+ M.fromList+ [ (0, const "zero")+ , (1, forms "prima" "primo" "unesimo" "uno" "un" "un")+ , (2, forms "seconda" "secondo" "duesimo" "due" "do" "due")+ , (3, \c -> case c of+ CtxEmpty+ | isFeminine inf -> "terza"+ | otherwise -> "terzo"+ _ | isOutside R c -> "treesimo"+ CtxAdd R _ _ -> "tré"+ CtxMul _ (Lit 10) _ -> "tren"+ _ -> "tre"+ )+ , (4, forms "quarta" "quarto" "quattresimo" "quattro" "quattor" "quar")+ , (5, forms "quinta" "quinto" "cinquesimo" "cinque" "quin" "cinqu")+ , (6, forms "sesta" "sesto" "seiesimo" "sei" "se" "sess")+ , (7, forms "settimo" "settimo" "settesimo" "sette" "sette" "sett")+ , (8, forms "ottave" "ottavo" "ottesimo" "otto" "otto" "ott")+ , (9, forms "nono" "nono" "novesimo" "nove" "nove" "nov")+ , (10, \c -> case c of+ CtxAdd _ (Lit _) _ | isOutside R c -> "dicesimo"+ | otherwise -> "dici"+ -- Last vowel removed because of a phonetic rule:+ CtxMul _ (Lit _) (CtxAdd _ (Lit n) _)+ | n `elem` [1,8] -> "t"+ CtxMul R (Lit _) _ | isOutside R c -> "tesimo"+ | otherwise -> "ta"+ _ | isOutside R c -> "decimo"+ | otherwise -> "dieci"+ )+ , (20, \c -> case c of+ _ | isOutside R c -> "ventesimo"+ CtxAdd _ (Lit n) _+ | n `elem` [1,8] -> "vent"+ _ -> "venti"+ )+ , ( 100+ , let f c = case c of+ _ | isOutside R c -> "centesimo"+ CtxAdd _ (Lit 8) _ -> "cent"+ CtxAdd _ (Lit 8 `Mul` Lit 10) _ -> "cent"+ CtxAdd _ (Lit 8 `Mul` Lit 10 `Add` _) _ -> "cent"+ CtxMul _ (Lit _) c2 -> f c2+ _ -> "cento"+ in f+ )+ , (1000, \c -> case c of+ _ | isOutside R c -> "millesimo"+ CtxMul {} -> "mila"+ _ -> "mille"+ )+ ]+ where+ forms :: s -> s -> s -> s -> s -> s -> Ctx Exp -> s+ forms fo1 o1 o2 n a m c =+ case c of+ CtxEmpty+ | isFeminine inf -> fo1+ | otherwise -> o1+ _ | isOutside R c -> o2+ CtxAdd _ (Lit 10) _ -> a+ CtxMul _ (Lit 10) _ -> m+ _ -> n++bigNumSyms :: [(Integer, Ctx Exp -> Text)]+bigNumSyms =+ [ (6, BN.forms "sest" "sex" "ses" "sexa" "ses")+ , (7, BN.forms "sett" "septen" "septem" "septua" "septin")+ , (8, BN.forms "ott" "otto" "otto" "otto" "ottin")+ ]
− src/Text/Numeral/Language/JA.hs
@@ -1,278 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] ja--[@ISO639-2B@] jpn--[@ISO639-3@] jpn--[@Native name@] 日本語--[@English name@] Japanese--}--module Text.Numeral.Language.JA- ( -- * Language entry- kanji_entry- , daiji_entry- , on'yomi_entry- , preferred_entry- -- * Conversions- , kanji_cardinal- , daiji_cardinal- , on'yomi_cardinal- , preferred_cardinal- -- * Structure- , struct- -- * Bounds- , bounds- , daiji_bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Function ( ($), const, fix )-import "base" Data.List ( map )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Num, Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- JA-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "ja"- , entIso639_2 = ["jpn"]- , entIso639_3 = Just "jpn"- , entNativeNames = ["日本語"]- , entEnglishName = Just "Japanese"- }--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β) ⇒ α → β-struct = pos- $ fix- $ findRule ( 0, lit )- ( [ ( 11, add 10 R )- , ( 20, mul 10 R L)- , ( 100, step 100 10 R L)- , (1000, step 1000 10 R L)- ]- ⊕ [ (n, step1 n (dec 4) R L) | n ← map dec [4,8..68] ]- )- (dec 72 - 1)--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 72 - 1 in (negate x, x)--daiji_bounds ∷ (Integral α) ⇒ (α, α)-daiji_bounds = let x = dec 4 - 1 in (negate x, x)-------------------------------------------------------------------------------------- Kanji-----------------------------------------------------------------------------------kanji_entry ∷ Entry-kanji_entry = entry- { entVariant = Just "kanji"- , entCardinal = Just Conversion- { toNumeral = kanji_cardinal- , toStructure = struct- }- }--kanji_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-kanji_cardinal inf = kanji_cardinal_repr inf ∘ struct--kanji_cardinal_repr ∷ i → Exp i → Maybe Text-kanji_cardinal_repr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just $ \_ _ _ → ""- , reprMul = Just $ \_ _ _ → ""- , reprNeg = Just $ \_ _ → "マイナス"- }- where- syms =- M.fromList- [ (0, const "零") -- alternatives:"ゼロ" or "マル"- , (1, const "一")- , (2, const "二")- , (3, const "三")- , (4, const "四")- , (5, const "五")- , (6, const "六")- , (7, const "七")- , (8, const "八")- , (9, const "九")- , (10, const "十")- , (100, const "百")- , (dec 3, const "千")- , (dec 4, const "万")- , (dec 8, const "億")- , (dec 12, const "兆")- , (dec 16, const "京")- , (dec 20, const "垓")- , (dec 24, const "𥝱") -- or 秭?- , (dec 28, const "穣")- , (dec 32, const "溝")- , (dec 36, const "澗")- , (dec 40, const "正")- , (dec 44, const "載")- , (dec 48, const "極")- , (dec 52, const "恒河沙")- , (dec 56, const "阿僧祇")- , (dec 60, const "那由他/那由多")- , (dec 64, const "不可思議")- , (dec 68, const "無量大数")- ]-------------------------------------------------------------------------------------- Daiji-----------------------------------------------------------------------------------daiji_entry ∷ Entry-daiji_entry = entry- { entVariant = Just "daiji"- , entCardinal = Just Conversion- { toNumeral = daiji_cardinal- , toStructure = struct- }- }--daiji_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-daiji_cardinal inf = daiji_cardinal_repr inf ∘ struct--daiji_cardinal_repr ∷ i → Exp i → Maybe Text-daiji_cardinal_repr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just $ \_ _ _ → ""- , reprMul = Just $ \_ _ _ → ""- , reprNeg = Just $ \_ _ → "マイナス"- }- where- syms =- M.fromList- [ (0, const "零") -- alternatives:"ゼロ" or "マル"- , (1, const "壱")- , (2, const "弐")- , (3, const "参")- , (4, const "四")- , (5, const "五")- , (6, const "六")- , (7, const "七")- , (8, const "八")- , (9, const "九")- , (10, const "拾")- , (100, const "百")- , (dec 3, const "千")- , (dec 4, const "万")- ]-------------------------------------------------------------------------------------- Generic reading-----------------------------------------------------------------------------------generic_repr ∷ Text → Text → Repr i-generic_repr four seven = defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just $ \_ _ _ → " "- , reprMul = Just $ \_ _ _ → ""- , reprNeg = Just $ \_ _ → "mainasu "- }- where- syms =- M.fromList- [ (0, const "rei")- , (1, const "ichi")- , (2, const "ni")- , (3, const "san")- , (4, const four)- , (5, const "go")- , (6, const "roku")- , (7, const seven)- , (8, const "hachi")- , (9, const "kyū")- , (10, const "jū")- , (100, \c → case c of- (CtxMul _ (Lit 3) _) → "byaku" -- rendaku- _ → "hyaku"- )- , (dec 3, const "sen")- , (dec 4, const "man")- , (dec 8, const "oku")- , (dec 12, const "chō")- , (dec 16, const "kei")- , (dec 20, const "gai")- , (dec 24, const "jo")- , (dec 28, const "jō")- , (dec 32, const "kō")- , (dec 36, const "kan")- , (dec 40, const "sei")- , (dec 44, const "sai")- , (dec 48, const "goku")- , (dec 52, const "gōgasha")- , (dec 56, const "asōgi")- , (dec 60, const "nayuta")- , (dec 64, const "fukashigi")- , (dec 68, const "muryōtaisū")- ]-------------------------------------------------------------------------------------- On'yomi-----------------------------------------------------------------------------------on'yomi_entry ∷ Entry-on'yomi_entry = entry- { entVariant = Just "on'yomi"- , entCardinal = Just Conversion- { toNumeral = on'yomi_cardinal- , toStructure = struct- }- }--on'yomi_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-on'yomi_cardinal inf = on'yomi_cardinal_repr inf ∘ struct--on'yomi_cardinal_repr ∷ i → Exp i → Maybe Text-on'yomi_cardinal_repr = render (generic_repr "shi" "shichi")-------------------------------------------------------------------------------------- Preferred reading-----------------------------------------------------------------------------------preferred_entry ∷ Entry-preferred_entry = entry- { entVariant = Just "preferred"- , entCardinal = Just Conversion- { toNumeral = preferred_cardinal- , toStructure = struct- }- }--preferred_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-preferred_cardinal inf = preferred_cardinal_repr inf ∘ struct--preferred_cardinal_repr ∷ i → Exp i → Maybe Text-preferred_cardinal_repr = render (generic_repr "yon" "nana")
+ src/Text/Numeral/Language/JPN.hs view
@@ -0,0 +1,267 @@+{-|+[@ISO639-1@] ja++[@ISO639-2B@] jpn++[@ISO639-3@] jpn++[@Native name@] 日本語++[@English name@] Japanese+-}++module Text.Numeral.Language.JPN+ ( -- * Language entry+ kanji_entry+ , daiji_entry+ , on'yomi_entry+ , preferred_entry+ -- * Conversions+ , kanji_cardinal+ , daiji_cardinal+ , on'yomi_cardinal+ , preferred_cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ , daiji_bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Monoid ( (<>) )+import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- JPN+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "ja"+ , entIso639_2 = ["jpn"]+ , entIso639_3 = Just "jpn"+ , entNativeNames = ["日本語"]+ , entEnglishName = Just "Japanese"+ }++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule ( 0, lit )+ ( [ ( 11, add 10 R )+ , ( 20, mul 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 10 R L)+ ]+ <> [ (n, step1 n (dec 4) R L) | n <- map dec [4,8..68] ]+ )+ (dec 72 - 1)++bounds :: (Integral a) => (a, a)+bounds = let x = dec 72 - 1 in (negate x, x)++daiji_bounds :: (Integral a) => (a, a)+daiji_bounds = let x = dec 4 - 1 in (negate x, x)+++--------------------------------------------------------------------------------+-- Kanji+--------------------------------------------------------------------------------++kanji_entry :: Entry+kanji_entry = entry+ { entVariant = Just "kanji"+ , entCardinal = Just Conversion+ { toNumeral = kanji_cardinal+ , toStructure = struct+ }+ }++kanji_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+kanji_cardinal inf = kanji_cardinal_repr inf . struct++kanji_cardinal_repr :: Inflection -> Exp -> Maybe Text+kanji_cardinal_repr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just $ \_ _ _ -> ""+ , reprMul = Just $ \_ _ _ -> ""+ , reprNeg = Just $ \_ _ -> "マイナス"+ }+ where+ syms =+ M.fromList+ [ (0, const "零") -- alternatives:"ゼロ" or "マル"+ , (1, const "一")+ , (2, const "二")+ , (3, const "三")+ , (4, const "四")+ , (5, const "五")+ , (6, const "六")+ , (7, const "七")+ , (8, const "八")+ , (9, const "九")+ , (10, const "十")+ , (100, const "百")+ , (dec 3, const "千")+ , (dec 4, const "万")+ , (dec 8, const "億")+ , (dec 12, const "兆")+ , (dec 16, const "京")+ , (dec 20, const "垓")+ , (dec 24, const "𥝱") -- or 秭?+ , (dec 28, const "穣")+ , (dec 32, const "溝")+ , (dec 36, const "澗")+ , (dec 40, const "正")+ , (dec 44, const "載")+ , (dec 48, const "極")+ , (dec 52, const "恒河沙")+ , (dec 56, const "阿僧祇")+ , (dec 60, const "那由他/那由多")+ , (dec 64, const "不可思議")+ , (dec 68, const "無量大数")+ ]+++--------------------------------------------------------------------------------+-- Daiji+--------------------------------------------------------------------------------++daiji_entry :: Entry+daiji_entry = entry+ { entVariant = Just "daiji"+ , entCardinal = Just Conversion+ { toNumeral = daiji_cardinal+ , toStructure = struct+ }+ }++daiji_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+daiji_cardinal inf = daiji_cardinal_repr inf . struct++daiji_cardinal_repr :: Inflection -> Exp -> Maybe Text+daiji_cardinal_repr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just $ \_ _ _ -> ""+ , reprMul = Just $ \_ _ _ -> ""+ , reprNeg = Just $ \_ _ -> "マイナス"+ }+ where+ syms =+ M.fromList+ [ (0, const "零") -- alternatives:"ゼロ" or "マル"+ , (1, const "壱")+ , (2, const "弐")+ , (3, const "参")+ , (4, const "四")+ , (5, const "五")+ , (6, const "六")+ , (7, const "七")+ , (8, const "八")+ , (9, const "九")+ , (10, const "拾")+ , (100, const "百")+ , (dec 3, const "千")+ , (dec 4, const "万")+ ]+++--------------------------------------------------------------------------------+-- Generic reading+--------------------------------------------------------------------------------++generic_repr :: Text -> Text -> Repr+generic_repr four seven = defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just $ \_ _ _ -> " "+ , reprMul = Just $ \_ _ _ -> ""+ , reprNeg = Just $ \_ _ -> "mainasu "+ }+ where+ syms =+ M.fromList+ [ (0, const "rei")+ , (1, const "ichi")+ , (2, const "ni")+ , (3, const "san")+ , (4, const four)+ , (5, const "go")+ , (6, const "roku")+ , (7, const seven)+ , (8, const "hachi")+ , (9, const "kyū")+ , (10, const "jū")+ , (100, \c -> case c of+ (CtxMul _ (Lit 3) _) -> "byaku" -- rendaku+ _ -> "hyaku"+ )+ , (dec 3, const "sen")+ , (dec 4, const "man")+ , (dec 8, const "oku")+ , (dec 12, const "chō")+ , (dec 16, const "kei")+ , (dec 20, const "gai")+ , (dec 24, const "jo")+ , (dec 28, const "jō")+ , (dec 32, const "kō")+ , (dec 36, const "kan")+ , (dec 40, const "sei")+ , (dec 44, const "sai")+ , (dec 48, const "goku")+ , (dec 52, const "gōgasha")+ , (dec 56, const "asōgi")+ , (dec 60, const "nayuta")+ , (dec 64, const "fukashigi")+ , (dec 68, const "muryōtaisū")+ ]+++--------------------------------------------------------------------------------+-- On'yomi+--------------------------------------------------------------------------------++on'yomi_entry :: Entry+on'yomi_entry = entry+ { entVariant = Just "on'yomi"+ , entCardinal = Just Conversion+ { toNumeral = on'yomi_cardinal+ , toStructure = struct+ }+ }++on'yomi_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+on'yomi_cardinal inf = on'yomi_cardinal_repr inf . struct++on'yomi_cardinal_repr :: Inflection -> Exp -> Maybe Text+on'yomi_cardinal_repr = render (generic_repr "shi" "shichi")+++--------------------------------------------------------------------------------+-- Preferred reading+--------------------------------------------------------------------------------++preferred_entry :: Entry+preferred_entry = entry+ { entVariant = Just "preferred"+ , entCardinal = Just Conversion+ { toNumeral = preferred_cardinal+ , toStructure = struct+ }+ }++preferred_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+preferred_cardinal inf = preferred_cardinal_repr inf . struct++preferred_cardinal_repr :: Inflection -> Exp -> Maybe Text+preferred_cardinal_repr = render (generic_repr "yon" "nana")
− src/Text/Numeral/Language/LA.hs
@@ -1,174 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] la--[@ISO639-2B@] lat--[@ISO639-3@] lat--[@Native name@] Latine--[@English name@] Latin--}--module Text.Numeral.Language.LA- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.List ( concat )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, Num, (+) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.List.Unicode ( (∈) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- LA-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "la"- , entIso639_2 = ["lat"]- , entIso639_3 = Just "lat"- , entNativeNames = ["Latine"]- , entEnglishName = Just "Latin"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Sub β, E.Mul β) ⇒ α → β-struct = checkPos- $ fix- $ findRule ( 0, lit)- ( [ (11, add 10 L)- , (18, sub 20)- ]- ⊕ concat [ [ (n, mul 10 R L)- , (n+8, sub $ n+10)- ]- | n ← [20,30..90]- ]- ⊕ [ ( 100, step 100 10 R L)- , (1000, lit)- ]- )- 1000--bounds ∷ (Integral α) ⇒ (α, α)-bounds = (0, 1000)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprSub = Just $ \_ _ _ → "dē"- , reprNeg = Just $ \_ _ → "minus "- }- where- ((_ `Mul` Lit _) ⊞ _) _ = " "- (_ ⊞ _) _ = ""-- (_ ⊡ Lit n) _ | n ≤ 100 = ""- (_ ⊡ _ ) _ = " "-- syms =- M.fromList- [ (0, const "nihil")- , (1, \c → case c of- CtxAdd _ (Lit 10) _ → "ūn"- CtxSub _ _ _ → "ūn"- _ → "ūnus"- )- , (2, \c → case c of- CtxMul _ (Lit 10) _ → "vī"- CtxMul _ (Lit 100) _ → "du"- _ → "duo"- )- , (3, \c → case c of- CtxAdd _ (Lit 10) _ → "trē"- CtxMul _ (Lit 10) _ → "trī"- CtxMul _ (Lit 100) _ → "tre"- _ → "trēs"- )- , (4, \c → case c of- CtxMul _ (Lit 10) _ → "quadrā"- CtxMul _ (Lit 100) _ → "quadrin"- _ → "quattuor"- )- , (5, \c → case c of- CtxAdd _ (Lit 10) _ → "quīn"- CtxMul _ (Lit 10) _ → "quīnquā"- CtxMul _ (Lit 100) _ → "quīn"- _ → "quīnque"- )- , (6, \c → case c of- CtxAdd _ (Lit 10) _ → "sē"- CtxMul _ (Lit 10) _ → "sexā"- CtxMul _ (Lit 100) _ → "ses"- _ → "sex"- )- , (7, \c → case c of- CtxAdd _ (Lit 10) _ → "septen"- CtxMul _ (Lit 10) _ → "septuā"- CtxMul _ (Lit 100) _ → "septin"- _ → "septem"- )- , (8, \c → case c of- CtxMul _ (Lit 100) _ → "octin"- _ → "octō"- )- , (9, \c → case c of- CtxMul _ (Lit 10) _ → "nōnā"- CtxMul _ (Lit 100) _ → "nōn"- _ → "novem"- )- , (10, \c → case c of- CtxAdd {} → "decim"- CtxMul _ (Lit 2) _ → "gintī"- CtxMul {} → "gintā"- _ → "decem"- )- , (100, \c → case c of- CtxMul _ (Lit n) _- | n ∈ [2,3,6] → "centī"- | otherwise → "gentī"- _ → "centum"- )- , (1000, \c → case c of- CtxMul {} → "milia"- _ → "mīlle"- )- ]
+ src/Text/Numeral/Language/LAT.hs view
@@ -0,0 +1,160 @@+{-|+[@ISO639-1@] la++[@ISO639-2B@] lat++[@ISO639-3@] lat++[@Native name@] Latine++[@English name@] Latin+-}++module Text.Numeral.Language.LAT+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Monoid ( (<>) )+import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- LA+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "la"+ , entIso639_2 = ["lat"]+ , entIso639_3 = Just "lat"+ , entNativeNames = ["Latine"]+ , entEnglishName = Just "Latin"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = checkPos+ $ fix+ $ findRule ( 0, lit)+ ( [ (11, add 10 L)+ , (18, sub 20)+ ]+ <> concat [ [ (n, mul 10 R L)+ , (n+8, sub $ n+10)+ ]+ | n <- [20,30..90]+ ]+ <> [ ( 100, step 100 10 R L)+ , (1000, lit)+ ]+ )+ 1000++bounds :: (Integral a) => (a, a)+bounds = (0, 1000)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprSub = Just $ \_ _ _ -> "dē"+ , reprNeg = Just $ \_ _ -> "minus "+ }+ where+ ((_ `Mul` Lit _) ⊞ _) _ = " "+ (_ ⊞ _) _ = ""++ (_ ⊡ Lit n) _ | n <= 100 = ""+ (_ ⊡ _ ) _ = " "++ syms =+ M.fromList+ [ (0, const "nihil")+ , (1, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "ūn"+ CtxSub _ _ _ -> "ūn"+ _ -> "ūnus"+ )+ , (2, \c -> case c of+ CtxMul _ (Lit 10) _ -> "vī"+ CtxMul _ (Lit 100) _ -> "du"+ _ -> "duo"+ )+ , (3, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "trē"+ CtxMul _ (Lit 10) _ -> "trī"+ CtxMul _ (Lit 100) _ -> "tre"+ _ -> "trēs"+ )+ , (4, \c -> case c of+ CtxMul _ (Lit 10) _ -> "quadrā"+ CtxMul _ (Lit 100) _ -> "quadrin"+ _ -> "quattuor"+ )+ , (5, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "quīn"+ CtxMul _ (Lit 10) _ -> "quīnquā"+ CtxMul _ (Lit 100) _ -> "quīn"+ _ -> "quīnque"+ )+ , (6, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "sē"+ CtxMul _ (Lit 10) _ -> "sexā"+ CtxMul _ (Lit 100) _ -> "ses"+ _ -> "sex"+ )+ , (7, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "septen"+ CtxMul _ (Lit 10) _ -> "septuā"+ CtxMul _ (Lit 100) _ -> "septin"+ _ -> "septem"+ )+ , (8, \c -> case c of+ CtxMul _ (Lit 100) _ -> "octin"+ _ -> "octō"+ )+ , (9, \c -> case c of+ CtxMul _ (Lit 10) _ -> "nōnā"+ CtxMul _ (Lit 100) _ -> "nōn"+ _ -> "novem"+ )+ , (10, \c -> case c of+ CtxAdd {} -> "decim"+ CtxMul _ (Lit 2) _ -> "gintī"+ CtxMul {} -> "gintā"+ _ -> "decem"+ )+ , (100, \c -> case c of+ CtxMul _ (Lit n) _+ | n `elem` [2,3,6] -> "centī"+ | otherwise -> "gentī"+ _ -> "centum"+ )+ , (1000, \c -> case c of+ CtxMul {} -> "milia"+ _ -> "mīlle"+ )+ ]
src/Text/Numeral/Language/LLD.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,19 +26,9 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Bool.Unicode ( (∧), (∨) )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡), (≢) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import qualified "containers" Data.Map as M ( fromList, lookup )+import qualified "containers" Data.Map as M import "this" Text.Numeral import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G import "this" Text.Numeral.Misc ( dec ) import "this" Text.Numeral.Entry import "this" Text.Numeral.Language.FUR ( struct )@@ -55,7 +40,7 @@ -- LLD -------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_3 = Just "lld" , entNativeNames = ["Ladin"]@@ -66,16 +51,15 @@ } } -cardinal ∷ (G.Masculine i, G.Feminine i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = let x = dec 12 - 1 in (negate x, x) -cardinalRepr ∷ (G.Feminine i, G.Masculine i) ⇒ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)+ { reprValue = \inf n -> M.lookup n (syms inf) , reprAdd = Just (⊞) , reprMul = Just (⊡) , reprScale = BN.pelletierRepr@@ -84,8 +68,8 @@ [] } where- ( Lit 20 ⊞ Lit n) _ | n ≢ 1 ∧ n ≢ 8 = "e"- ((Lit t `Mul` Lit 10) ⊞ Lit n) _ | n ≢ 1 ∧ (t ≡ 3 ∨ n ≢ 8) = "e"+ ( Lit 20 ⊞ Lit n) _ | n /= 1 && n /= 8 = "e"+ ((Lit t `Mul` Lit 10) ⊞ Lit n) _ | n /= 1 && (t == 3 || n /= 8) = "e" ( Lit 100 ⊞ _) _ = "e" ((_ `Mul` Lit 100) ⊞ _) _ = "e" ((_ `Mul` Scale{}) ⊞ _) _ = "e"@@ -98,14 +82,14 @@ M.fromList [ (0, const "zero") , (1, addCtx 10 "un"- $ \c → case c of- _ | G.isFeminine inf → "una"- | otherwise → "un"+ $ \c -> case c of+ _ | isFeminine inf -> "una"+ | otherwise -> "un" ) , (2, addCtx 10 "do"- $ \c → case c of- _ | G.isFeminine inf → "does"- | otherwise → "doi"+ $ \c -> case c of+ _ | isFeminine inf -> "does"+ | otherwise -> "doi" ) , (3, addCtx 10 "tre" $ mulCtx 10 "tr" $ const "trei") , (4, addCtx 10 "cator" $ mulCtx 10 "car" $ const "cater")@@ -114,16 +98,16 @@ , (7, const "set") , (8, addCtx 10 "dot" $ const "ot") , (9, mulCtx 10 "non" $ const "nuef")- , (10, \c → case c of+ , (10, \c -> case c of CtxAdd _ (Lit n) _- | n ≤ 6 → "desc"- | n ≡ 7 → "dejes"- | n ≤ 9 → "deje"- CtxMul _ (Lit 3) (CtxAdd {}) → "ent"- CtxMul _ (Lit 3) _ → "enta"- CtxMul _ (Lit _) (CtxAdd {}) → "ant"- CtxMul _ (Lit _) _ → "anta"- _ → "diesc"+ | n <= 6 -> "desc"+ | n == 7 -> "dejes"+ | n <= 9 -> "deje"+ CtxMul _ (Lit 3) (CtxAdd {}) -> "ent"+ CtxMul _ (Lit 3) _ -> "enta"+ CtxMul _ (Lit _) (CtxAdd {}) -> "ant"+ CtxMul _ (Lit _) _ -> "anta"+ _ -> "diesc" ) , (20, const "vint") , (100, mulCtx 6 "çent" $ const "cent")
− src/Text/Numeral/Language/MG.hs
@@ -1,126 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] mg--[@ISO639-2@] mlg--[@ISO639-3@] mlg--[@Native name@] ---[@English name@] Malagasy--}--module Text.Numeral.Language.MG- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Function ( ($), const, fix )-import "base" Data.List ( map )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<) )-import "base" Prelude ( Integral, (-) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- MG----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "mg"- , entIso639_2 = ["mlg"]- , entIso639_3 = Just "mlg"- , entEnglishName = Just "Malagasy"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β-struct = checkPos- $ fix- $ findRule (0, lit)- [(n, step n 10 L L) | n ← map dec [1..6]]- (dec 7 - 1)--bounds ∷ (Integral α) ⇒ (α, α)-bounds = (0, dec 7 - 1)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- }- where- (_ ⊞ Lit 10 ) _ = " ambin'ny "- (_ ⊞ (Lit _ `Mul` Lit 10)) _ = " amby "- (_ ⊞ _ ) _ = " sy "-- (_ ⊡ Lit 10 ) _ = ""- (_ ⊡ Lit 100) _ = ""- (_ ⊡ _ ) _ = " "-- syms =- M.fromList- [ (0, const "haotra")- , (1, \c → case c of- CtxAdd {} → "iraika"- _ → "iray"- )- , (2, mulForms "roa" "roa" "roan")- , (3, mulForms "telo" "telo" "telon")- , (4, mulForms "efatra" "efa" "efa" )- , (5, mulForms "dimy" "dimam" "diman")- , (6, mulForms "enina" "enim" "enin" )- , (7, mulForms "fito" "fito" "fiton")- , (8, mulForms "valo" "valo" "valon")- , (9, mulForms "sivy" "sivi" "sivin")- , (10, \c → case c of- CtxMul _ (Lit n) _- | n < 9 → "polo"- _ → "folo"- )- , (100, \c → case c of- CtxMul {} → "jato"- _ → "zato"- )- , (1000, const "arivo")- , (dec 4, const "alina")- , (dec 5, const "hetsy")- , (dec 6, const "tapitrisa")- ]-- mulForms o t h = \c → case c of- CtxMul _ (Lit 10) _ → t- CtxMul _ (Lit 100) _ → h- _ → o
+ src/Text/Numeral/Language/MLG.hs view
@@ -0,0 +1,114 @@+{-|+[@ISO639-1@] mg++[@ISO639-2@] mlg++[@ISO639-3@] mlg++[@Native name@] -++[@English name@] Malagasy+-}++module Text.Numeral.Language.MLG+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- MLG+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "mg"+ , entIso639_2 = ["mlg"]+ , entIso639_3 = Just "mlg"+ , entEnglishName = Just "Malagasy"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = checkPos+ $ fix+ $ findRule (0, lit)+ [(n, step n 10 L L) | n <- map dec [1..6]]+ (dec 7 - 1)++bounds :: (Integral a) => (a, a)+bounds = (0, dec 7 - 1)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ }+ where+ (_ ⊞ Lit 10 ) _ = " ambin'ny "+ (_ ⊞ (Lit _ `Mul` Lit 10)) _ = " amby "+ (_ ⊞ _ ) _ = " sy "++ (_ ⊡ Lit 10 ) _ = ""+ (_ ⊡ Lit 100) _ = ""+ (_ ⊡ _ ) _ = " "++ syms =+ M.fromList+ [ (0, const "haotra")+ , (1, \c -> case c of+ CtxAdd {} -> "iraika"+ _ -> "iray"+ )+ , (2, mulForms "roa" "roa" "roan")+ , (3, mulForms "telo" "telo" "telon")+ , (4, mulForms "efatra" "efa" "efa" )+ , (5, mulForms "dimy" "dimam" "diman")+ , (6, mulForms "enina" "enim" "enin" )+ , (7, mulForms "fito" "fito" "fiton")+ , (8, mulForms "valo" "valo" "valon")+ , (9, mulForms "sivy" "sivi" "sivin")+ , (10, \c -> case c of+ CtxMul _ (Lit n) _+ | n < 9 -> "polo"+ _ -> "folo"+ )+ , (100, \c -> case c of+ CtxMul {} -> "jato"+ _ -> "zato"+ )+ , (1000, const "arivo")+ , (dec 4, const "alina")+ , (dec 5, const "hetsy")+ , (dec 6, const "tapitrisa")+ ]++ mulForms o t h = \c -> case c of+ CtxMul _ (Lit 10) _ -> t+ CtxMul _ (Lit 100) _ -> h+ _ -> o
+ src/Text/Numeral/Language/NEN.hs view
@@ -0,0 +1,95 @@+{-|+[@ISO639-1@] -++[@ISO639-2@] -++[@ISO639-3@] nen++[@Native name@] -++[@English name@] Nengone+-}+module Text.Numeral.Language.NEN+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- NEN+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_3 = Just "nen"+ , entEnglishName = Just "Nengone"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = checkPos+ $ fix+ $ findRule ( 0, lit )+ [ ( 6, add 5 R)+ , (10, lit )+ , (11, add 10 R)+ , (15, lit )+ , (16, add 15 R)+ , (20, lit )+ , (21, add 20 R)+ ]+ 30++bounds :: (Integral a) => (a, a)+bounds = (0, 30)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just (⊞)+ }+ where+ (Lit 5 ⊞ _) (CtxAdd _ (Lit 20) _) = ""+ (_ ⊞ _) _ = " ne "++ syms =+ M.fromList+ [ (1, const "sa")+ , (2, forms "rewe" "rew")+ , (3, forms "tini" "tin")+ , (4, forms "ece" "ec")+ , (5, \c -> case c of+ CtxAdd _ _ (CtxAdd _ (Lit 20) _) -> "sedo"+ _ -> "sedong"+ )+ , (10, const "ruenin")+ , (15, const "adenin")+ , (20, const "sarengom")+ ]+ where+ forms :: s -> s -> Ctx Exp -> s+ forms _ a (CtxAdd _ _ _) = a+ forms n _ _ = n
− src/Text/Numeral/Language/NL.hs
@@ -1,268 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] nl--[@ISO639-2B@] dut--[@ISO639-3@] nld--[@Native name@] Nederlands--[@English name@] Dutch--}--module Text.Numeral.Language.NL- ( -- * Language entry- entry- -- * Conversions- , cardinal- , ordinal- , partitive- , multiplicative- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Control.Monad ( return )-import "base" Data.Bool ( Bool, otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Functor ( fmap )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Bool.Unicode ( (∧), (∨) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.List.Unicode ( (∈) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- NL-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "nl"- , entIso639_2 = ["dut"]- , entIso639_3 = Just "nld"- , entNativeNames = ["Nederlands"]- , entEnglishName = Just "Dutch"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- , entOrdinal = Just Conversion- { toNumeral = ordinal- , toStructure = struct- }- , entPartitive = Just Conversion- { toNumeral = partitive- , toStructure = \(n, d) → E.frac (struct n) (struct d)- }- , entMultiplicative = Just Conversion- { toNumeral = multiplicative- , toStructure = struct- }- }--cardinal ∷ (G.Plural i, G.Dative i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--ordinal ∷ (Integral α, E.Scale α) ⇒ i → α → Maybe Text-ordinal inf = ordinalRepr "eerste" inf ∘ struct--partitive ∷ ( G.Singular i, G.Plural i, G.NoCase i, G.Dative i- , Integral α, E.Scale α- )- ⇒ i → (α, α) → Maybe Text-partitive inf (n, d) = do- n' ← cardinal (G.noCase $ G.singular inf) n- d' ← ordinalRepr "éénde" inf $ struct d- return $ n' ⊕ " " ⊕ d'--multiplicative ∷ ( G.Singular i, G.Plural i, G.NoCase i, G.Dative i- , Integral α, E.Scale α- )- ⇒ i → α → Maybe Text-multiplicative inf = fmap (⊕ "maal") ∘ cardinal (G.noCase $ G.singular inf)--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-struct = pos- $ fix- $ findRule ( 0, lit )- [ ( 13, add 10 L )- , ( 20, mul 10 L L)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)- `combine` pelletierScale R L BN.rule--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--genericRepr ∷ Repr i-genericRepr = defaultRepr- { reprAdd = Just (⊞)- , reprMul = Just $ \_ _ _ → ""- , reprNeg = Just $ \_ _ → "min "- }- where- (_ ⊞ Lit 10) _ = ""- (Lit n ⊞ _) _ | n ∈ [2,3] = "ën"- | n < 10 = "en"- | otherwise = ""- (_ ⊞ _) _ = ""--cardinalRepr ∷ ∀ i. (G.Plural i, G.Dative i) ⇒ i → Exp i → Maybe Text-cardinalRepr = render genericRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = BN.pelletierRepr (\i c → if doPlural i c then "iljoenen" else "iljoen")- (\i c → if doPlural i c then "iljarden" else "iljard")- []- }- where- doPlural ∷ i → Ctx (Exp i) → Bool- doPlural inf ctx = (G.isPlural inf ∨ G.isDative inf) ∧ isOutside R ctx-- syms inf =- M.fromList- [ (0, const "nul")- , (1, pluralDative "één" "éénen" "éénen")- , (2, forms "twee" "twin" "tweeën" "tweeën")- , (3, forms "drie" "der" "drieën" "drieën")- , (4, forms "vier" "veer" "vieren" "vieren")- , (5, pluralDative "vijf" "vijven" "vijven")- , (6, pluralDative "zes" "zessen" "zessen")- , (7, pluralDative "zeven" "zevens" "zevenen")- , (8, \c → case c of- CtxMul _ (Lit 10) _ → "tach"- CtxAdd _ (Lit 10) _ → "ach"- _ | dativeForm c- ∨ pluralForm c → "achten"- | otherwise → "acht"- )- , (9, pluralDative "negen" "negens" "negenen")- , (10, \c → case c of- CtxAdd R _ _- | dativeForm c → "tienen"- | pluralForm c → "tiens"- CtxMul R _ _- | dativeForm c → "tigen"- | pluralForm c → "tigs"- | otherwise → "tig"- _ | dativeForm c- ∨ pluralForm c → "tienen"- | otherwise → "tien"- )- , ( 11, pluralDative "elf" "elven" "elven")- , ( 12, pluralDative "twaalf" "twaalven" "twaalven")- , ( 100, pluralDative "honderd" "honderden" "honderden")- , (1000, pluralDative "duizend" "duizenden" "duizenden")- ]- where- pluralDative ∷ s → s → s → Ctx (Exp i) → s- pluralDative o p d ctx- | pluralForm ctx = p- | dativeForm ctx = d- | otherwise = o-- dativeForm ∷ Ctx (Exp i) → Bool- dativeForm ctx = G.isDative inf ∧ isOutside R ctx-- pluralForm ∷ Ctx (Exp i) → Bool- pluralForm ctx = G.isPlural inf ∧ isOutside R ctx-- forms ∷ s -- ^ Normal form.- → s -- ^ Added to, or multiplied with ten.- → s -- ^ Plural form.- → s -- ^ Dative form.- → Ctx (Exp i)- → s- forms n t p d ctx =- case ctx of- CtxMul _ (Lit 10) _ → t- CtxAdd _ (Lit 10) _ → t- _ | dativeForm ctx → d- | pluralForm ctx → p- | otherwise → n--ordinalRepr ∷ Text → i → Exp i → Maybe Text-ordinalRepr one =- render genericRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.pelletierRepr ( BN.ordQuantityName "iljoen" "iljoenste"- "iljoen" "iljoenste"- )- ( BN.ordQuantityName "iljard" "iljardste"- "iljard" "iljardste"- )- []- }- where- syms =- M.fromList- [ (0, const "nulde")- , (1, \c → case c of- CtxEmpty → one- _ | isOutside R c → "éénde"- | otherwise → "één"- )- , (2, forms "tweede" "twee" "twin")- , (3, forms "derde" "drie" "der")- , (4, forms "vierde" "vier" "veer")- , (5, forms "vijfde" "vijf" "vijf")- , (6, forms "zesde" "zes" "zes")- , (7, forms "zevende" "zeven" "zeven")- , (8, \c → case c of- _ | isOutside R c → "achtste"- CtxMul _ (Lit 10) _ → "tach"- CtxAdd _ (Lit _) _ → "ach"- _ → "acht"- )- , (9, forms "negende" "negen" "negen")- , (10, \c → case c of- CtxMul R _ _ | isOutside R c → "tigste"- | otherwise → "tig"- _ | isOutside R c → "tiende"- | otherwise → "tien"- )- , (11, \c → if isOutside R c then "elfde" else "elf")- , (12, \c → if isOutside R c then "twaalfde" else "twaalf")- , (100, \c → if isOutside R c then "honderdste" else "honderd")- , (1000, \c → if isOutside R c then "duizendste" else "duizend")- ]-- forms ∷ s -- ^ Ordinal form.- → s -- ^ Cardinal form.- → s -- ^ Added to, or multiplied with, ten.- → Ctx (Exp i)- → s- forms o c t ctx = case ctx of- _ | isOutside R ctx → o- CtxMul _ (Lit 10) _ → t- CtxAdd _ (Lit _) _ → t- _ → c
+ src/Text/Numeral/Language/NLD.hs view
@@ -0,0 +1,240 @@+{-|+[@ISO639-1@] nl++[@ISO639-2B@] dut++[@ISO639-3@] nld++[@Native name@] Nederlands++[@English name@] Dutch+-}++module Text.Numeral.Language.NLD+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ , ordinal+ , partitive+ , multiplicative+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import "base" Data.Monoid ( (<>) )+import qualified "containers" Data.Map as M+import "this" Text.Numeral hiding ( partitive, multiplicative )+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- NLD+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "nl"+ , entIso639_2 = ["dut"]+ , entIso639_3 = Just "nld"+ , entNativeNames = ["Nederlands"]+ , entEnglishName = Just "Dutch"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ , entOrdinal = Just Conversion+ { toNumeral = ordinal+ , toStructure = struct+ }+ , entPartitive = Just Conversion+ { toNumeral = partitive+ , toStructure = \(n, d) -> Frac (struct n) (struct d)+ }+ , entMultiplicative = Just Conversion+ { toNumeral = multiplicative+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++ordinal :: (Integral a) => Inflection -> a -> Maybe Text+ordinal inf = ordinalRepr "eerste" inf . struct++partitive :: (Integral a) => Inflection -> (a, a) -> Maybe Text+partitive inf (n, d) = do+ n' <- cardinal inf {iCase = Nothing, iNumber = Just Singular} n+ d' <- ordinalRepr "éénde" inf $ struct d+ pure $ n' <> " " <> d'++multiplicative :: (Integral a) => Inflection -> a -> Maybe Text+multiplicative inf = fmap (<> "maal") . cardinal (noCase $ singular inf)++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule ( 0, lit )+ [ ( 13, add 10 L )+ , ( 20, mul 10 L L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)+ `combine` pelletierScale R L BN.rule++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++genericRepr :: Repr+genericRepr = defaultRepr+ { reprAdd = Just (⊞)+ , reprMul = Just $ \_ _ _ -> ""+ , reprNeg = Just $ \_ _ -> "min "+ }+ where+ (_ ⊞ Lit 10) _ = ""+ (Lit n ⊞ _) _ | n `elem` [2,3] = "ën"+ | n < 10 = "en"+ | otherwise = ""+ (_ ⊞ _) _ = ""++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render genericRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = BN.pelletierRepr (\i c -> if doPlural i c then "iljoenen" else "iljoen")+ (\i c -> if doPlural i c then "iljarden" else "iljard")+ []+ }+ where+ doPlural :: Inflection -> Ctx Exp -> Bool+ doPlural inf ctx = (isPlural inf || isDative inf) && isOutside R ctx++ syms inf =+ M.fromList+ [ (0, const "nul")+ , (1, pluralDative "één" "éénen" "éénen")+ , (2, forms "twee" "twin" "tweeën" "tweeën")+ , (3, forms "drie" "der" "drieën" "drieën")+ , (4, forms "vier" "veer" "vieren" "vieren")+ , (5, pluralDative "vijf" "vijven" "vijven")+ , (6, pluralDative "zes" "zessen" "zessen")+ , (7, pluralDative "zeven" "zevens" "zevenen")+ , (8, \c -> case c of+ CtxMul _ (Lit 10) _ -> "tach"+ CtxAdd _ (Lit 10) _ -> "ach"+ _ | dativeForm c || pluralForm c -> "achten"+ | otherwise -> "acht"+ )+ , (9, pluralDative "negen" "negens" "negenen")+ , (10, \c -> case c of+ CtxAdd R _ _+ | dativeForm c -> "tienen"+ | pluralForm c -> "tiens"+ CtxMul R _ _+ | dativeForm c -> "tigen"+ | pluralForm c -> "tigs"+ | otherwise -> "tig"+ _ | dativeForm c || pluralForm c -> "tienen"+ | otherwise -> "tien"+ )+ , ( 11, pluralDative "elf" "elven" "elven")+ , ( 12, pluralDative "twaalf" "twaalven" "twaalven")+ , ( 100, pluralDative "honderd" "honderden" "honderden")+ , (1000, pluralDative "duizend" "duizenden" "duizenden")+ ]+ where+ pluralDative :: s -> s -> s -> Ctx Exp -> s+ pluralDative o p d ctx+ | pluralForm ctx = p+ | dativeForm ctx = d+ | otherwise = o++ dativeForm :: Ctx Exp -> Bool+ dativeForm ctx = isDative inf && isOutside R ctx++ pluralForm :: Ctx Exp -> Bool+ pluralForm ctx = isPlural inf && isOutside R ctx++ forms :: s -- ^ Normal form.+ -> s -- ^ Added to, or multiplied with ten.+ -> s -- ^ Plural form.+ -> s -- ^ Dative form.+ -> Ctx Exp+ -> s+ forms n t p d ctx =+ case ctx of+ CtxMul _ (Lit 10) _ -> t+ CtxAdd _ (Lit 10) _ -> t+ _ | dativeForm ctx -> d+ | pluralForm ctx -> p+ | otherwise -> n++ordinalRepr :: Text -> Inflection -> Exp -> Maybe Text+ordinalRepr one =+ render genericRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.pelletierRepr ( BN.ordQuantityName "iljoen" "iljoenste"+ "iljoen" "iljoenste"+ )+ ( BN.ordQuantityName "iljard" "iljardste"+ "iljard" "iljardste"+ )+ []+ }+ where+ syms =+ M.fromList+ [ (0, const "nulde")+ , (1, \c -> case c of+ CtxEmpty -> one+ _ | isOutside R c -> "éénde"+ | otherwise -> "één"+ )+ , (2, forms "tweede" "twee" "twin")+ , (3, forms "derde" "drie" "der")+ , (4, forms "vierde" "vier" "veer")+ , (5, forms "vijfde" "vijf" "vijf")+ , (6, forms "zesde" "zes" "zes")+ , (7, forms "zevende" "zeven" "zeven")+ , (8, \c -> case c of+ _ | isOutside R c -> "achtste"+ CtxMul _ (Lit 10) _ -> "tach"+ CtxAdd _ (Lit _) _ -> "ach"+ _ -> "acht"+ )+ , (9, forms "negende" "negen" "negen")+ , (10, \c -> case c of+ CtxMul R _ _ | isOutside R c -> "tigste"+ | otherwise -> "tig"+ _ | isOutside R c -> "tiende"+ | otherwise -> "tien"+ )+ , (11, \c -> if isOutside R c then "elfde" else "elf")+ , (12, \c -> if isOutside R c then "twaalfde" else "twaalf")+ , (100, \c -> if isOutside R c then "honderdste" else "honderd")+ , (1000, \c -> if isOutside R c then "duizendste" else "duizend")+ ]++ forms :: s -- ^ Ordinal form.+ -> s -- ^ Cardinal form.+ -> s -- ^ Added to, or multiplied with, ten.+ -> Ctx Exp+ -> s+ forms o c t ctx = case ctx of+ _ | isOutside R ctx -> o+ CtxMul _ (Lit 10) _ -> t+ CtxAdd _ (Lit _) _ -> t+ _ -> c
− src/Text/Numeral/Language/NO.hs
@@ -1,136 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] nb--[@ISO639-2B@] nob--[@ISO639-3@] nob--[@Native name@] Bokmål--[@English name@] Norwegian Bokmål--}--module Text.Numeral.Language.NO- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- NO----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "nb"- , entIso639_2 = ["nob"]- , entIso639_3 = Just "nob"- , entNativeNames = ["Bokmål"]- , entEnglishName = Just "Norwegian Bokmål"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-struct = pos- $ fix- $ findRule ( 0, lit )- [ ( 13, add 10 L )- , ( 20, lit )- , ( 21, add 20 R )- , ( 30, mul 10 R L)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)- `combine` pelletierScale R L BN.rule--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.scaleRepr (BN.quantityName "illion" "illioner") []- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "minus "- }- where- (Lit 100 ⊞ _) _ = " "- (Lit 1000 ⊞ _) _ = " "- (_ ⊞ _) _ = ""-- (_ ⊡ Lit 10 ) _ = ""- (_ ⊡ Lit 1000) _ = ""- (_ ⊡ _ ) _ = " "-- syms =- M.fromList- [ (0, const "null")- , (1, \c → case c of- CtxEmpty → "én"- _ → "en"- )- , (2, const "to")- , (3, tenForms "tre" "tret" "tret")- , (4, tenForms "fire" "fjor" "før")- , (5, const "fem")- , (6, const "seks")- , (7, tenForms "sju" "syt" "syt")- , (8, tenForms "åtte" "at" "åt")- , (9, tenForms "ni" "nit" "nit")- , (10, \c → case c of- CtxAdd {} → "ten"- _ → "ti"- )- , (11, const "elleve")- , (12, const "tolv")- , (20, const "tjue")- , (100, const "hundre")- , (1000, const "tusen")- ]-- tenForms n a m = \c → case c of- CtxAdd _ (Lit 10 ) _ → a- CtxMul _ (Lit 100 ) _ → n- CtxMul _ (Lit 1000) _ → n- CtxMul {} → m- _ → n
+ src/Text/Numeral/Language/NOB.hs view
@@ -0,0 +1,123 @@+{-|+[@ISO639-1@] nb++[@ISO639-2B@] nob++[@ISO639-3@] nob++[@Native name@] Bokmål++[@English name@] Norwegian Bokmål+-}++module Text.Numeral.Language.NOB+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- NOB+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "nb"+ , entIso639_2 = ["nob"]+ , entIso639_3 = Just "nob"+ , entNativeNames = ["Bokmål"]+ , entEnglishName = Just "Norwegian Bokmål"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule ( 0, lit )+ [ ( 13, add 10 L )+ , ( 20, lit )+ , ( 21, add 20 R )+ , ( 30, mul 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)+ `combine` pelletierScale R L BN.rule++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.scaleRepr (BN.quantityName "illion" "illioner") []+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "minus "+ }+ where+ (Lit 100 ⊞ _) _ = " "+ (Lit 1000 ⊞ _) _ = " "+ (_ ⊞ _) _ = ""++ (_ ⊡ Lit 10 ) _ = ""+ (_ ⊡ Lit 1000) _ = ""+ (_ ⊡ _ ) _ = " "++ syms =+ M.fromList+ [ (0, const "null")+ , (1, \c -> case c of+ CtxEmpty -> "én"+ _ -> "en"+ )+ , (2, const "to")+ , (3, tenForms "tre" "tret" "tret")+ , (4, tenForms "fire" "fjor" "før")+ , (5, const "fem")+ , (6, const "seks")+ , (7, tenForms "sju" "syt" "syt")+ , (8, tenForms "åtte" "at" "åt")+ , (9, tenForms "ni" "nit" "nit")+ , (10, \c -> case c of+ CtxAdd {} -> "ten"+ _ -> "ti"+ )+ , (11, const "elleve")+ , (12, const "tolv")+ , (20, const "tjue")+ , (100, const "hundre")+ , (1000, const "tusen")+ ]++ tenForms n a m = \c -> case c of+ CtxAdd _ (Lit 10 ) _ -> a+ CtxMul _ (Lit 100 ) _ -> n+ CtxMul _ (Lit 1000) _ -> n+ CtxMul {} -> m+ _ -> n
src/Text/Numeral/Language/NQM.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,14 +26,9 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )+import "base" Data.Function ( fix ) import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )+import "this" Text.Numeral import "this" Text.Numeral.Entry import "text" Data.Text ( Text ) @@ -47,7 +37,7 @@ -- NQM -------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_3 = Just "nqm" , entEnglishName = Just "Ndom"@@ -57,10 +47,10 @@ } } -cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β+struct :: (Integral a) => a -> Exp struct = checkPos $ fix $ findRule ( 1, lit )@@ -74,13 +64,13 @@ ] 107 -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (1, 107) -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just $ \_ _ _ → " abo "+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just $ \_ _ _ -> " abo " , reprMul = Just (⊡) } where
− src/Text/Numeral/Language/OJ.hs
@@ -1,114 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] oj--[@ISO639-2@] oji--[@ISO639-3@] oji--[@Native name@] ᐊᓂᔑᓈᐯᒧᐎᓐ (Anishinaabemowin)--[@English name@] Ojibwe--}--module Text.Numeral.Language.OJ- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- OJ-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "oj"- , entIso639_2 = ["oji"]- , entIso639_3 = Just "oji"- , entNativeNames = ["ᐊᓂᔑᓈᐯᒧᐎᓐ", "Anishinaabemowin"]- , entEnglishName = Just "Ojibwe"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β)- ⇒ α → β-struct = checkPos- $ fix- $ findRule ( 1, lit )- [ ( 11, step 10 10 R L)- , ( 100, step 100 10 R L)- , (1000, step 1000 2 R L)- ]- 1999--bounds ∷ (Integral α) ⇒ (α, α)-bounds = (1, 1999)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just $ \_ _ _ → " shaa "- , reprMul = Just $ \_ _ _ → ""- }- where- syms =- M.fromList- [ (0, const "kaagego" )- , (1, const "bezhik" )- , (2, const "niizh" )- , (3, forms "nswi" "nsim" "ns" )- , (4, forms "niiwin" "niim" "nii" )- , (5, forms "naanan" "naanmi" "naan" )- , (6, forms "ngodwaaswi" "ngodwaasmi" "ngodwaas" )- , (7, forms "niizhwaaswi" "niizhwaasmi" "niizhwaas")- , (8, forms "nshwaaswi" "nshwaasmi" "nshwaas" )- , (9, forms "zhaangswi" "zhaangsmi" "zhaangs" )- , (10, \c → case c of- CtxMul {} → "taana"- _ → "mdaaswi"- )- , (100, \c → case c of- CtxMul {} → "waak"- _ → "ngodwaak"- )- , (1000, const "mdaaswaak")- ]-- forms ∷ s → s → s → Ctx (Exp i) → s- forms o t h = \c → case c of- CtxMul _ (Lit 10) _ → t- CtxMul _ (Lit 100) _ → h- _ → o
+ src/Text/Numeral/Language/OJI.hs view
@@ -0,0 +1,103 @@+{-|+[@ISO639-1@] oj++[@ISO639-2@] oji++[@ISO639-3@] oji++[@Native name@] ᐊᓂᔑᓈᐯᒧᐎᓐ (Anishinaabemowin)++[@English name@] Ojibwe+-}++module Text.Numeral.Language.OJI+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- OJ+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "oj"+ , entIso639_2 = ["oji"]+ , entIso639_3 = Just "oji"+ , entNativeNames = ["ᐊᓂᔑᓈᐯᒧᐎᓐ", "Anishinaabemowin"]+ , entEnglishName = Just "Ojibwe"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = checkPos+ $ fix+ $ findRule ( 1, lit )+ [ ( 11, step 10 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 2 R L)+ ]+ 1999++bounds :: (Integral a) => (a, a)+bounds = (1, 1999)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just $ \_ _ _ -> " shaa "+ , reprMul = Just $ \_ _ _ -> ""+ }+ where+ syms =+ M.fromList+ [ (0, const "kaagego" )+ , (1, const "bezhik" )+ , (2, const "niizh" )+ , (3, forms "nswi" "nsim" "ns" )+ , (4, forms "niiwin" "niim" "nii" )+ , (5, forms "naanan" "naanmi" "naan" )+ , (6, forms "ngodwaaswi" "ngodwaasmi" "ngodwaas" )+ , (7, forms "niizhwaaswi" "niizhwaasmi" "niizhwaas")+ , (8, forms "nshwaaswi" "nshwaasmi" "nshwaas" )+ , (9, forms "zhaangswi" "zhaangsmi" "zhaangs" )+ , (10, \c -> case c of+ CtxMul {} -> "taana"+ _ -> "mdaaswi"+ )+ , (100, \c -> case c of+ CtxMul {} -> "waak"+ _ -> "ngodwaak"+ )+ , (1000, const "mdaaswaak")+ ]++ forms :: s -> s -> s -> Ctx Exp -> s+ forms o t h = \c -> case c of+ CtxMul _ (Lit 10) _ -> t+ CtxMul _ (Lit 100) _ -> h+ _ -> o
src/Text/Numeral/Language/PDC.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,17 +26,10 @@ -- Imports ------------------------------------------------------------------------------- -import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Nothing, Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import qualified "containers" Data.Map as M ( fromList, lookup )+import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M import "this" Text.Numeral import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection ) import "this" Text.Numeral.Misc ( dec ) import "this" Text.Numeral.Entry import "text" Data.Text ( Text )@@ -51,7 +39,7 @@ -- PDC ------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_1 = Nothing , entIso639_2 = []@@ -65,13 +53,10 @@ , entOrdinal = Nothing } -cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β+struct :: (Integral a) => a -> Exp struct = pos $ fix $ findRule ( 0, lit )@@ -83,18 +68,18 @@ (dec 6 - 1) `combine` pelletierScale1 R L BN.rule -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (0, dec 9 - 1) -genericRepr ∷ Repr i+genericRepr :: Repr genericRepr = defaultRepr { reprAdd = Just (⊞) , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "minus "+ , reprNeg = Just $ \_ _ -> "minus " } where- (Lit n ⊞ (_ `Mul` Lit 10)) _ | n ≤ 9 = "un"- ((Lit _ `Mul` Lit 100) ⊞ Lit _ ) _ = " un "+ (Lit n ⊞ (_ `Mul` Lit 10)) _ | n <= 9 = "un"+ ((Lit _ `Mul` Lit 100) ⊞ Lit _ ) _ = " un " (_ ⊞ Lit 10) _ = "" (_ ⊞ _ ) _ = " " @@ -102,9 +87,9 @@ (_ ⊡ _) _ = " " -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render genericRepr- { reprValue = \_ n → M.lookup n syms+ { reprValue = \_ n -> M.lookup n syms , reprScale = BN.pelletierRepr (BN.quantityName "illyon" "illyon") (BN.quantityName "illyard" "illyard") []@@ -113,44 +98,43 @@ syms = M.fromList [ (0, const "null")- , (1, \c → case c of- CtxAdd L _ _ → "een"- CtxMul _ _ _ → "en"- _ → "eens"+ , (1, \c -> case c of+ CtxAdd L _ _ -> "een"+ CtxMul _ _ _ -> "en"+ _ -> "eens" )- , (2, \c → case c of- CtxMul _ (Lit 10) _ → "zwan"- _ → "zwee"+ , (2, \c -> case c of+ CtxMul _ (Lit 10) _ -> "zwan"+ _ -> "zwee" ) , (3, const "drei")- , (4, \c → case c of- CtxAdd _ (Lit 10) _ → "va"- CtxMul _ (Lit 10) _ → "va"- _ → "vier"+ , (4, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "va"+ CtxMul _ (Lit 10) _ -> "va"+ _ -> "vier" )- , (5, \c → case c of- CtxAdd _ (Lit 10) _ → "fuff"- CtxMul _ (Lit 10) _ → "fuff"- _ → "fimf"+ , (5, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "fuff"+ CtxMul _ (Lit 10) _ -> "fuff"+ _ -> "fimf" )- , (6, \c → case c of- CtxAdd _ (Lit 10) _ → "sech"- CtxMul _ (Lit 10) _ → "sech"- _ → "sex"+ , (6, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "sech"+ CtxMul _ (Lit 10) _ -> "sech"+ _ -> "sex" ) , (7, const "siwwe") , (8, const "acht") , (9, const "nein")- , (10, \c → case c of- CtxAdd _ (Lit _) _ → "zeh"- CtxMul _ (Lit 3) _ → "ssich"- CtxMul R (Lit n) _ | n ≤ 3 → "sich"- | otherwise → "zich"- _ → "zehe"+ , (10, \c -> case c of+ CtxAdd _ (Lit _) _ -> "zeh"+ CtxMul _ (Lit 3) _ -> "ssich"+ CtxMul R (Lit n) _ | n <= 3 -> "sich"+ | otherwise -> "zich"+ _ -> "zehe" ) , (11, const "elf") , (12, const "zwelf") , (100, const "hunnert") , (1000, const "dausend") ]-
− src/Text/Numeral/Language/PL.hs
@@ -1,165 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] pl--[@ISO639-2@] pol--[@ISO639-3@] pol--[@Native name@] język polski--[@English name@] Polish--}--module Text.Numeral.Language.PL- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≥), (≤) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )------------------------------------------------------------------------------------ PL----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "pl"- , entIso639_2 = ["pol"]- , entIso639_3 = Just "pol"- , entNativeNames = ["język polski"]- , entEnglishName = Just "Polish"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }---- | liczebniki główne-cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- )- ⇒ α → β-struct = pos- $ fix- $ findRule ( 0, lit )- [ ( 11, add 10 L )- , ( 20, step 10 10 R L)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)- `combine` pelletierScale R L BN.rule--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = BN.pelletierRepr (quantityRepr "ilion" "iliony" "ilionów")- (quantityRepr "iliard" "iliardy" "iliardów")- []- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- }- where- (Lit n ⊞ Lit 10) _ | n ≤ 9 = ""- (_ ⊞ _ ) _ = " "-- (_ ⊡ Lit 10 ) _ = ""- (_ ⊡ Lit 100) _ = ""- (_ ⊡ _ ) _ = " "-- quantityRepr ∷ Text → Text → Text → BN.PostfixRepr i- quantityRepr s p1 p2 _ ctx =- case ctx of- CtxMul _ (Lit 1) _ → s- CtxMul _ (Lit n) _ | n ≤ 4 → p1- CtxMul {} → p2- _ → s-- syms =- M.fromList- [ (0, const "zero")- , (1, \c → case c of- CtxAdd _ (Lit 10) _ → "jede"- _ → "jeden"- )- , (2, \c → case c of- CtxMul _ (Lit 100) _ → "dwie"- _ → "dwa"- )- , (3, const "trzy")- , (4, \c → case c of- CtxAdd _ (Lit 10) _ → "czter"- CtxMul _ (Lit 10) _ → "czter"- _ → "cztery"- )- , (5, \c → case c of- CtxAdd _ (Lit 10) _ → "pięt"- _ → "pięć"- )- , (6, \c → case c of- CtxAdd _ (Lit 10) _ → "szes"- _ → "sześć"- )- , (7, const "siedem")- , (8, const "osiem")- , (9, \c → case c of- CtxAdd _ (Lit 10) _ → "dziewięt"- _ → "dziewięć"- )- , (10, \c → case c of- CtxAdd R (Lit n) _ | n ≤ 9 → "naście"- CtxMul R (Lit n) _- | n ≡ 2 → "dzieścia"- | n ≥ 5 → "dziesiąt"- | otherwise → "dzieści"- _ → "dziesięć"- )- , (100, \c → case c of- CtxMul _ (Lit n) _- | n ≡ 2 → "ście"- | n ≤ 4 → "sta"- | n ≤ 9 → "set"- _ → "sto"- )- , (1000, \c → case c of- CtxMul _ (Lit n) _ | n ≤ 4 → "tysiące"- CtxMul {} → "tysięcy"- _ → "tysiąc"- )- ]
+ src/Text/Numeral/Language/POL.hs view
@@ -0,0 +1,151 @@+{-|+[@ISO639-1@] pl++[@ISO639-2@] pol++[@ISO639-3@] pol++[@Native name@] język polski++[@English name@] Polish+-}++module Text.Numeral.Language.POL+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )++-------------------------------------------------------------------------------+-- POL+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "pl"+ , entIso639_2 = ["pol"]+ , entIso639_3 = Just "pol"+ , entNativeNames = ["język polski"]+ , entEnglishName = Just "Polish"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++-- | liczebniki główne+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule ( 0, lit )+ [ ( 11, add 10 L )+ , ( 20, step 10 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)+ `combine` pelletierScale R L BN.rule++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = BN.pelletierRepr (quantityRepr "ilion" "iliony" "ilionów")+ (quantityRepr "iliard" "iliardy" "iliardów")+ []+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ }+ where+ (Lit n ⊞ Lit 10) _ | n <= 9 = ""+ (_ ⊞ _ ) _ = " "++ (_ ⊡ Lit 10 ) _ = ""+ (_ ⊡ Lit 100) _ = ""+ (_ ⊡ _ ) _ = " "++ quantityRepr :: Text -> Text -> Text -> BN.PostfixRepr+ quantityRepr s p1 p2 _ ctx =+ case ctx of+ CtxMul _ (Lit 1) _ -> s+ CtxMul _ (Lit n) _ | n <= 4 -> p1+ CtxMul {} -> p2+ _ -> s++ syms =+ M.fromList+ [ (0, const "zero")+ , (1, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "jede"+ _ -> "jeden"+ )+ , (2, \c -> case c of+ CtxMul _ (Lit 100) _ -> "dwie"+ _ -> "dwa"+ )+ , (3, const "trzy")+ , (4, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "czter"+ CtxMul _ (Lit 10) _ -> "czter"+ _ -> "cztery"+ )+ , (5, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "pięt"+ _ -> "pięć"+ )+ , (6, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "szes"+ _ -> "sześć"+ )+ , (7, const "siedem")+ , (8, const "osiem")+ , (9, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "dziewięt"+ _ -> "dziewięć"+ )+ , (10, \c -> case c of+ CtxAdd R (Lit n) _+ | n <= 9 -> "naście"+ CtxMul R (Lit n) _+ | n == 2 -> "dzieścia"+ | n >= 5 -> "dziesiąt"+ | otherwise -> "dzieści"+ _ -> "dziesięć"+ )+ , (100, \c -> case c of+ CtxMul _ (Lit n) _+ | n == 2 -> "ście"+ | n <= 4 -> "sta"+ | n <= 9 -> "set"+ _ -> "sto"+ )+ , (1000, \c -> case c of+ CtxMul _ (Lit n) _+ | n <= 4 -> "tysiące"+ CtxMul {} -> "tysięcy"+ _ -> "tysiąc"+ )+ ]
+ src/Text/Numeral/Language/POR.hs view
@@ -0,0 +1,278 @@+{-|+[@ISO639-1@] pt++[@ISO639-2@] por++[@ISO639-3@] por++[@Native name@] Português++[@English name@] Portuguese+-}++module Text.Numeral.Language.POR+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ , ordinal+ -- * Structure+ , cardinal_struct+ , ordinal_struct+ -- * Bounds+ , bounds+ ) where++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import "base" Data.Monoid ( (<>) )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- POR+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "pt"+ , entIso639_2 = ["por"]+ , entIso639_3 = Just "por"+ , entNativeNames = ["Português"]+ , entEnglishName = Just "Portuguese"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = cardinal_struct+ }+ , entOrdinal = Just Conversion+ { toNumeral = ordinal+ , toStructure = ordinal_struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . cardinal_struct++ordinal :: (Integral a) => Inflection -> a -> Maybe Text+ordinal inf = ordinalRepr inf . ordinal_struct++cardinal_struct :: (Integral a) => a -> Exp+cardinal_struct = pos $ fix $ rule `combine` shortScale1_pt+ where+ rule = findRule ( 0, lit )+ [ ( 11, add 10 L )+ , ( 16, add 10 R )+ , ( 20, mul 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++ordinal_struct :: (Integral a) => a -> Exp+ordinal_struct = pos $ fix $ rule `combine` shortScale1_pt+ where+ rule = findRule ( 0, lit )+ [ ( 11, add 10 R )+ , ( 20, mul 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++-- | Like 'shortScale1' with the difference that all scale elements+-- are masculine.+shortScale1_pt :: (Integral a) => Rule a+shortScale1_pt = mulScale1_es 3 3 R L BN.rule+ where+ mulScale1_es = mulScale_ $ \f m s _ -> masculineMul (f m) s+ masculineMul x y = ChangeGender (Just Masculine) $ Mul x y++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = shortScaleRepr+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "menos "+ }+ where+ (Lit 10 ⊞ Lit n ) _+ | n < 8 = "as"+ | n == 8 = ""+ | otherwise = "a"+ (Lit _ ⊞ Lit 10) _ = ""+ (_ ⊞ _ ) _ = " e "+++ (_ ⊡ Lit 10 ) _ = ""+ (_ ⊡ Lit 100) _ = ""+ (_ ⊡ _ ) _ = " "++ syms inf =+ M.fromList+ [ (0, const "zero")+ , (1, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "on"+ _ | isFeminine inf -> "uma"+ | otherwise -> "um"+ )+ , (2, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "do"+ CtxMul _ (Lit 10) _ -> "vin"+ CtxMul _ (Lit 100) _ -> "duz"+ _ | isFeminine inf -> "duas"+ | otherwise -> "dois"+ )+ , (3, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "tre"+ CtxMul _ (Lit 10) _ -> "trin"+ CtxMul _ (Lit 100) _ -> "trez"+ _ -> "três"+ )+ , (4, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "cator"+ CtxMul _ (Lit 10) _ -> "quaren"+ _ -> "quatro"+ )+ , (5, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "quin"+ CtxMul _ (Lit 10) _ -> "cinquen"+ CtxMul _ (Lit 100) _ -> "quin"+ _ -> "cinco"+ )+ , (6, \c -> case c of+ CtxMul _ (Lit 10) _ -> "sessen"+ _ -> "seis"+ )+ , (7, \c -> case c of+ CtxMul _ (Lit 10) _ -> "seten"+ _ -> "sete"+ )+ , (8, \c -> case c of+ CtxMul _ (Lit 10) _ -> "oiten"+ _ -> "oito"+ )+ , (9, \c -> case c of+ CtxMul _ (Lit 10) _ -> "noven"+ _ -> "nove"+ )+ , (10, \c -> case c of+ CtxAdd R (Lit _) _ -> "ze"+ CtxMul R (Lit 2) _ -> "te"+ CtxMul R (Lit _) _ -> "ta"+ _ -> "dez"+ )+ , (100, \c -> case c of+ CtxAdd {} -> "cento"+ CtxMul _ (Lit n) _+ | n <= 3 -> if isFeminine inf then "entas" else "entos"+ | n == 5 -> if isFeminine inf then "hentas" else "hentos"+ | n <= 9 -> if isFeminine inf then "centas" else "centos"+ | otherwise -> "cem"+ _ -> "cem"+ )+ , (1000, const "mil")+ ]++ordinalRepr :: Inflection -> Exp -> Maybe Text+ordinalRepr = render defaultRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = shortScaleRepr+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "menos "+ }+ where+ (Lit _ ⊞ Lit 10) _ = ""+ (_ ⊞ _ ) _ = " "++ (_ ⊡ Lit 10 ) _ = ""+ (_ ⊡ Lit 100) _ = ""+ (_ ⊡ _ ) _ = " "++ syms inf =+ M.fromList+ [ (0, const "zero")+ , (1, \c -> case c of+ _ -> "primeir" <> postFix+ )+ , (2, \c -> case c of+ CtxMul _ (Lit 10) _ -> "vi"+ CtxMul _ (Lit 100) _ -> "du"+ _ -> "segund" <> postFix+ )+ , (3, \c -> case c of+ CtxMul _ (Lit 10) _ -> "tri"+ CtxMul _ (Lit 100) _ -> "tre"+ _ -> "terceir" <> postFix+ )+ , (4, \c -> case c of+ CtxMul _ (Lit 10) _ -> "quadra"+ CtxMul _ (Lit 100) _ -> "quadrin"+ _ -> "quart" <> postFix+ )+ , (5, \c -> case c of+ CtxMul _ (Lit 10) _ -> "qüinqua"+ CtxMul _ (Lit 100) _ -> "qüin"+ _ -> "quint" <> postFix+ )+ , (6, \c -> case c of+ CtxMul _ (Lit 10) _ -> "sexa"+ CtxMul _ (Lit 100) _ -> "sex"+ _ -> "sext" <> postFix+ )+ , (7, \c -> case c of+ CtxMul _ (Lit 10) _ -> "septua"+ CtxMul _ (Lit 100) _ -> "setin"+ _ -> "sétim" <> postFix+ )+ , (8, \c -> case c of+ CtxMul _ (Lit 10) _ -> "octo"+ CtxMul _ (Lit 100) _ -> "octin"+ _ -> "oitav" <> postFix+ )+ , (9, \c -> case c of+ CtxMul _ (Lit 10) _ -> "nona"+ CtxMul _ (Lit 100) _ -> "non"+ _ -> "non" <> postFix+ )+ , (10, \c -> case c of+ CtxAdd R (Lit _) _ -> "ze"+ CtxMul R (Lit _) _+ | isOutside R c -> "gésim" <> postFix+ | otherwise -> "gésimo"+ _ | isOutside R c -> "décim" <> postFix+ | otherwise -> "décimo"+ )+ , (100, \c -> case c of+ CtxAdd {} -> "cento"+ CtxMul _ (Lit n) _+ | not (n `elem` [2,3,6]) -> "gentésim" <> postFix+ _ -> "centésim" <> postFix+ )+ , (1000, const $ "milésim" <> postFix)+ ]+ where+ postFix = if isFeminine inf+ then if isSingular inf+ then "a"+ else "as"+ else if isSingular inf+ then "o"+ else "os"++shortScaleRepr :: Inflection -> Integer -> Integer -> Exp -> Ctx Exp -> Maybe Text+shortScaleRepr =+ BN.scaleRepr (BN.quantityName "ilhão" "ilhões")+ [(4, BN.forms "quatr" "quator" "quator" "quatra" "quatri")]
− src/Text/Numeral/Language/PT.hs
@@ -1,308 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] pt--[@ISO639-2@] por--[@ISO639-3@] por--[@Native name@] Português--[@English name@] Portuguese--}--module Text.Numeral.Language.PT- ( -- * Language entry- entry- -- * Conversions- , cardinal- , ordinal- -- * Structure- , cardinal_struct- , ordinal_struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------ Imports----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.List.Unicode ( (∉) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar as G-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- PT----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "pt"- , entIso639_2 = ["por"]- , entIso639_3 = Just "por"- , entNativeNames = ["Português"]- , entEnglishName = Just "Portuguese"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = cardinal_struct- }- , entOrdinal = Just Conversion- { toNumeral = ordinal- , toStructure = ordinal_struct- }- }--cardinal ∷ (G.Feminine i, G.Masculine i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ cardinal_struct--ordinal ∷ (G.Feminine i, G.Masculine i, G.Singular i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-ordinal inf = ordinalRepr inf ∘ ordinal_struct--cardinal_struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Masculine (E.Inf β)- )- ⇒ α → β-cardinal_struct = pos $ fix $ rule `combine` shortScale1_pt- where- rule = findRule ( 0, lit )- [ ( 11, add 10 L )- , ( 16, add 10 R )- , ( 20, mul 10 R L)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)--ordinal_struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Masculine (E.Inf β)- )- ⇒ α → β-ordinal_struct = pos $ fix $ rule `combine` shortScale1_pt- where- rule = findRule ( 0, lit )- [ ( 11, add 10 R )- , ( 20, mul 10 R L)- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)---- | Like 'shortScale1' with the difference that all scale elements--- are masculine.-shortScale1_pt ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Masculine (E.Inf β)- )- ⇒ Rule α β-shortScale1_pt = mulScale1_es 3 3 R L BN.rule- where- mulScale1_es = mulScale_ $ \f m s _ → masculineMul (f m) s- masculineMul x y = E.inflection (G.masculine) $ E.mul x y--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--cardinalRepr ∷ (G.Feminine i) ⇒ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = shortScaleRepr- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "menos "- }- where- (Lit 10 ⊞ Lit n ) _ | n < 8 = "as"- | n ≡ 8 = ""- | otherwise = "a"- (Lit _ ⊞ Lit 10) _ = ""- (_ ⊞ _ ) _ = " e "--- (_ ⊡ Lit 10 ) _ = ""- (_ ⊡ Lit 100) _ = ""- (_ ⊡ _ ) _ = " "-- syms inf =- M.fromList- [ (0, const "zero")- , (1, \c → case c of- CtxAdd _ (Lit 10) _ → "on"- _ | G.isFeminine inf → "uma"- | otherwise → "um"- )- , (2, \c → case c of- CtxAdd _ (Lit 10) _ → "do"- CtxMul _ (Lit 10) _ → "vin"- CtxMul _ (Lit 100) _ → "duz"- _ | G.isFeminine inf → "duas"- | otherwise → "dois"- )- , (3, \c → case c of- CtxAdd _ (Lit 10) _ → "tre"- CtxMul _ (Lit 10) _ → "trin"- CtxMul _ (Lit 100) _ → "trez"- _ → "três"- )- , (4, \c → case c of- CtxAdd _ (Lit 10) _ → "cator"- CtxMul _ (Lit 10) _ → "quaren"- _ → "quatro"- )- , (5, \c → case c of- CtxAdd _ (Lit 10) _ → "quin"- CtxMul _ (Lit 10) _ → "cinquen"- CtxMul _ (Lit 100) _ → "quin"- _ → "cinco"- )- , (6, \c → case c of- CtxMul _ (Lit 10) _ → "sessen"- _ → "seis"- )- , (7, \c → case c of- CtxMul _ (Lit 10) _ → "seten"- _ → "sete"- )- , (8, \c → case c of- CtxMul _ (Lit 10) _ → "oiten"- _ → "oito"- )- , (9, \c → case c of- CtxMul _ (Lit 10) _ → "noven"- _ → "nove"- )- , (10, \c → case c of- CtxAdd R (Lit _) _ → "ze"- CtxMul R (Lit 2) _ → "te"- CtxMul R (Lit _) _ → "ta"- _ → "dez"- )- , (100, \c → case c of- CtxAdd {} → "cento"- CtxMul _ (Lit n) _- | n ≤ 3 → if G.isFeminine inf then "entas" else "entos"- | n ≡ 5 → if G.isFeminine inf then "hentas" else "hentos"- | n ≤ 9 → if G.isFeminine inf then "centas" else "centos"- | otherwise → "cem"- _ → "cem"- )- , (1000, const "mil")- ]--ordinalRepr ∷ (G.Feminine i, G.Singular i) ⇒ i → Exp i → Maybe Text-ordinalRepr = render defaultRepr- { reprValue = \inf n → M.lookup n (syms inf)- , reprScale = shortScaleRepr- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "menos "- }- where- (Lit _ ⊞ Lit 10) _ = ""- (_ ⊞ _ ) _ = " "-- (_ ⊡ Lit 10 ) _ = ""- (_ ⊡ Lit 100) _ = ""- (_ ⊡ _ ) _ = " "-- syms inf =- M.fromList- [ (0, const "zero")- , (1, \c → case c of- _ → "primeir" ⊕ postFix- )- , (2, \c → case c of- CtxMul _ (Lit 10) _ → "vi"- CtxMul _ (Lit 100) _ → "du"- _ → "segund" ⊕ postFix- )- , (3, \c → case c of- CtxMul _ (Lit 10) _ → "tri"- CtxMul _ (Lit 100) _ → "tre"- _ → "terceir" ⊕ postFix- )- , (4, \c → case c of- CtxMul _ (Lit 10) _ → "quadra"- CtxMul _ (Lit 100) _ → "quadrin"- _ → "quart" ⊕ postFix- )- , (5, \c → case c of- CtxMul _ (Lit 10) _ → "qüinqua"- CtxMul _ (Lit 100) _ → "qüin"- _ → "quint" ⊕ postFix- )- , (6, \c → case c of- CtxMul _ (Lit 10) _ → "sexa"- CtxMul _ (Lit 100) _ → "sex"- _ → "sext" ⊕ postFix- )- , (7, \c → case c of- CtxMul _ (Lit 10) _ → "septua"- CtxMul _ (Lit 100) _ → "setin"- _ → "sétim" ⊕ postFix- )- , (8, \c → case c of- CtxMul _ (Lit 10) _ → "octo"- CtxMul _ (Lit 100) _ → "octin"- _ → "oitav" ⊕ postFix- )- , (9, \c → case c of- CtxMul _ (Lit 10) _ → "nona"- CtxMul _ (Lit 100) _ → "non"- _ → "non" ⊕ postFix- )- , (10, \c → case c of- CtxAdd R (Lit _) _ → "ze"- CtxMul R (Lit _) _- | isOutside R c → "gésim" ⊕ postFix- | otherwise → "gésimo"- _ | isOutside R c → "décim" ⊕ postFix- | otherwise → "décimo"- )- , (100, \c → case c of- CtxAdd {} → "cento"- CtxMul _ (Lit n) _- | n ∉ [2,3,6] → "gentésim" ⊕ postFix- _ → "centésim" ⊕ postFix- )- , (1000, const $ "milésim" ⊕ postFix)- ]- where- postFix = if G.isFeminine inf- then if G.isSingular inf- then "a"- else "as"- else if G.isSingular inf- then "o"- else "os"--shortScaleRepr ∷ i → ℤ → ℤ → Exp i → Ctx (Exp i) → Maybe Text-shortScaleRepr =- BN.scaleRepr (BN.quantityName "ilhão" "ilhões")- [(4, BN.forms "quatr" "quator" "quator" "quatra" "quatri")]
− src/Text/Numeral/Language/RU.hs
@@ -1,169 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] ru--[@ISO639-2@] rus--[@ISO639-3@] rus--[@Native name@] Русский язык--[@English name@] Russian--}--module Text.Numeral.Language.RU- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<), (>) )-import "base" Prelude ( Integral, (-), negate )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≤), (≥) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- RU-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "ru"- , entIso639_2 = ["rus"]- , entIso639_3 = Just "rus"- , entNativeNames = ["Русский язык"]- , entEnglishName = Just "Russian"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β) ⇒ α → β-struct = pos- $ fix- $ findRule ( 0, lit )- [ ( 11, add 10 L )- , ( 20, mul 10 R L )- , ( 40, lit )- , ( 41, add 40 R )- , ( 50, mul 10 R L )- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 6 - 1 in (negate x, x)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "минус "- }- where- (Lit n ⊞ Lit 10) _ | n < 10 = "на"- (_ ⊞ _ ) _ = " "-- (_ ⊡ Lit n) _ | n ≤ 100 = ""- (_ ⊡ _ ) _ = " "-- syms =- M.fromList- [ (0, const "ноль")- , (1, \c → case c of- CtxAdd _ (Lit 40) (CtxMul {}) → "одна"- CtxAdd _ (_ `Mul` _) (CtxMul {}) → "одна"- _ → "один"- )- , (2, \c → case c of- CtxAdd _ (Lit 10) _ → "две"- CtxAdd _ (Lit 40) (CtxMul {}) → "две"- CtxAdd _ (_ `Mul` _) (CtxMul {}) → "две"- CtxMul _ (Lit n) _ | n > 10 → "две"- _ → "два"- )- , (3, const "три")- , (4, \c → case c of- CtxAdd _ (Lit 10) _ → "четыр"- _ → "четыре"- )- , (5, \c → case c of- CtxAdd _ (Lit 10) _ → "пят"- _ → "пять"- )- , (6, \c → case c of- CtxAdd _ (Lit 10) _ → "шест"- _ → "шесть"- )- , (7, \c → case c of- CtxAdd _ (Lit 10) _ → "сем"- _ → "семь"- )- , (8, \c → case c of- CtxAdd _ (Lit 10) _ → "восем"- _ → "восемь"- )- , (9, \c → case c of- CtxAdd _ (Lit 10) _ → "девят"- CtxMul _ (Lit 10) _ → "девя"- _ → "девять"- )- , (10, \c → case c of- CtxAdd _ (Lit n) _ | n ≤ 9 → "дцать"- CtxMul _ (Lit n) _ | n < 4 → "дцать"- | n < 9 → "десят"- | n ≡ 9 → "носто"- _ → "десять"- )- , (40, const "сорок")- , (100, \c → case c of- CtxMul _ (Lit n) _ | n ≡ 2 → "сти"- | n ≤ 4 → "ста"- | n ≤ 9 → "сот"- _ → "сто"- )- , (1000, \c → case c of- CtxMul _ (Lit 40 `Add` Lit n) _ | n ≡ 1 → "тысяча"- | n ≤ 4 → "тысячи"- | n ≥ 5 → "тысяч"- CtxMul _ (_ `Mul` _ `Add` Lit n) _ | n ≡ 1 → "тысяча"- | n ≤ 4 → "тысячи"- | n ≥ 5 → "тысяч"- CtxMul _ (Lit n) _ | n ≤ 4 → "тысячи"- CtxMul {} → "тысяч"- _ → "тысяча"- )- , (dec 6, const "миллион")- , (dec 9, const "миллиард")- ]
+ src/Text/Numeral/Language/RUS.hs view
@@ -0,0 +1,156 @@+{-|+[@ISO639-1@] ru++[@ISO639-2@] rus++[@ISO639-3@] rus++[@Native name@] Русский язык++[@English name@] Russian+-}++module Text.Numeral.Language.RUS+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- RUS+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "ru"+ , entIso639_2 = ["rus"]+ , entIso639_3 = Just "rus"+ , entNativeNames = ["Русский язык"]+ , entEnglishName = Just "Russian"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule ( 0, lit )+ [ ( 11, add 10 L )+ , ( 20, mul 10 R L )+ , ( 40, lit )+ , ( 41, add 40 R )+ , ( 50, mul 10 R L )+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++bounds :: (Integral a) => (a, a)+bounds = let x = dec 6 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "минус "+ }+ where+ (Lit n ⊞ Lit 10) _ | n < 10 = "на"+ (_ ⊞ _ ) _ = " "++ (_ ⊡ Lit n) _ | n <= 100 = ""+ (_ ⊡ _ ) _ = " "++ syms =+ M.fromList+ [ (0, const "ноль")+ , (1, \c -> case c of+ CtxAdd _ (Lit 40) (CtxMul {}) -> "одна"+ CtxAdd _ (_ `Mul` _) (CtxMul {}) -> "одна"+ _ -> "один"+ )+ , (2, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "две"+ CtxAdd _ (Lit 40) (CtxMul {}) -> "две"+ CtxAdd _ (_ `Mul` _) (CtxMul {}) -> "две"+ CtxMul _ (Lit n) _ | n > 10 -> "две"+ _ -> "два"+ )+ , (3, const "три")+ , (4, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "четыр"+ _ -> "четыре"+ )+ , (5, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "пят"+ _ -> "пять"+ )+ , (6, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "шест"+ _ -> "шесть"+ )+ , (7, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "сем"+ _ -> "семь"+ )+ , (8, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "восем"+ _ -> "восемь"+ )+ , (9, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "девят"+ CtxMul _ (Lit 10) _ -> "девя"+ _ -> "девять"+ )+ , (10, \c -> case c of+ CtxAdd _ (Lit n) _ | n <= 9 -> "дцать"+ CtxMul _ (Lit n) _ | n < 4 -> "дцать"+ | n < 9 -> "десят"+ | n == 9 -> "носто"+ _ -> "десять"+ )+ , (40, const "сорок")+ , (100, \c -> case c of+ CtxMul _ (Lit n) _ | n == 2 -> "сти"+ | n <= 4 -> "ста"+ | n <= 9 -> "сот"+ _ -> "сто"+ )+ , (1000, \c -> case c of+ CtxMul _ (Lit 40 `Add` Lit n) _ | n == 1 -> "тысяча"+ | n <= 4 -> "тысячи"+ | n >= 5 -> "тысяч"+ CtxMul _ (_ `Mul` _ `Add` Lit n) _ | n == 1 -> "тысяча"+ | n <= 4 -> "тысячи"+ | n >= 5 -> "тысяч"+ CtxMul _ (Lit n) _ | n <= 4 -> "тысячи"+ CtxMul {} -> "тысяч"+ _ -> "тысяча"+ )+ , (dec 6, const "миллион")+ , (dec 9, const "миллиард")+ ]
src/Text/Numeral/Language/SCO.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] - @@ -31,14 +26,9 @@ -- Imports ------------------------------------------------------------------------------- -import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )+import "base" Data.Function ( fix ) import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )+import "this" Text.Numeral import "this" Text.Numeral.Entry import "text" Data.Text ( Text ) @@ -47,7 +37,7 @@ -- SCO ------------------------------------------------------------------------------- -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_2 = ["sco"] , entIso639_3 = Just "sco"@@ -59,10 +49,10 @@ } } -cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β+struct :: (Integral a) => a -> Exp struct = checkPos $ fix $ findRule ( 1, lit )@@ -72,14 +62,14 @@ ] 100 -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (1, 100) -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms+ { reprValue = \_ n -> M.lookup n syms , reprAdd = Just (⊞)- , reprMul = Just $ \_ _ _ → ""+ , reprMul = Just $ \_ _ _ -> "" } where ((_ `Mul` _) ⊞ _) _ = " "@@ -96,10 +86,10 @@ , (7, tenForms "seeven" "seiven" "seeven") , (8, tenForms "echt" "ech" "ech" ) , (9, tenForms "nine" "nin" "nin" )- , (10, \c → case c of- CtxAdd {} → "teen"- CtxMul {} → "tie"- _ → "ten"+ , (10, \c -> case c of+ CtxAdd {} -> "teen"+ CtxMul {} -> "tie"+ _ -> "ten" ) , (11, const "aleeven") , (12, const "twal")@@ -107,7 +97,7 @@ , (1000, const "thousant") ] - tenForms o a m = \c → case c of- CtxAdd L _ _ → a- CtxMul {} → m- _ → o+ tenForms o a m = \c -> case c of+ CtxAdd L _ _ -> a+ CtxMul {} -> m+ _ -> o
+ src/Text/Numeral/Language/SPA.hs view
@@ -0,0 +1,181 @@+{-|+[@ISO639-1@] es++[@ISO639-2B@] spa++[@ISO639-3@] spa++[@Native name@] Español++[@English name@] Spanish+-}++module Text.Numeral.Language.SPA+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- SPA+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "es"+ , entIso639_2 = ["spa"]+ , entIso639_3 = Just "spa"+ , entNativeNames = ["Español"]+ , entEnglishName = Just "Spanish"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos $ fix $ rule `combine` longScale1_es+ where+ rule = findRule ( 0, lit )+ [ ( 11, add 10 L )+ , ( 16, add 10 R )+ , ( 20, lit )+ , ( 21, add 20 R )+ , ( 30, mul 10 R L)+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++-- | Like 'longScale1' with the difference that all scale elements are+-- masculine.+longScale1_es :: (Integral a) => Rule a+longScale1_es = mulScale1_es 6 0 R L BN.rule+ where+ mulScale1_es = mulScale_ $ \f m s _ -> masculineMul (f m) s+ masculineMul x y = ChangeGender (Just Masculine) $ Mul x y++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \inf n -> M.lookup n (syms inf)+ , reprScale = longScaleRepr+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "menos "+ }+ where+ (_ ⊞ Lit 10) _ = ""+ (Lit 10 ⊞ _ ) _ = ""+ (Lit 20 ⊞ _ ) _ = ""+ ((Lit _ `Mul` Lit 10) ⊞ _ ) _ = " y "+ (_ ⊞ _ ) _ = " "++ (_ ⊡ Lit n) _ | n < 1000 = ""+ (_ ⊡ _ ) _ = " "++ syms inf =+ M.fromList+ [ (0, const "cero")+ , (1, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "on"+ CtxAdd _ (Lit 20) _+ | isMasculine inf -> "ún"+ _ | isFeminine inf -> "una"+ | isMasculine inf -> "un"+ | otherwise -> "uno"+ )+ , (2, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "do"+ CtxAdd _ (Lit 20) _ -> "dós"+ _ -> "dos"+ )+ , (3, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "tre"+ CtxAdd _ (Lit 20) _ -> "trés"+ CtxMul _ (Lit 10) _ -> "trein"+ _ -> "tres"+ )+ , (4, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "cator"+ CtxMul _ (Lit 10) _ -> "cuaren"+ _ -> "cuatro"+ )+ , (5, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "quin"+ CtxMul _ (Lit 10) _ -> "cincuen"+ CtxMul _ (Lit 100) _ -> "quin"+ _ -> "cinco"+ )+ , (6, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "séis"+ CtxAdd _ (Lit 20) _ -> "séis"+ CtxMul _ (Lit 10) _ -> "sesen"+ _ -> "seis"+ )+ , (7, \c -> case c of+ CtxMul _ (Lit 10) _ -> "seten"+ CtxMul _ (Lit 100) _ -> "sete"+ _ -> "siete"+ )+ , (8, \c -> case c of+ CtxMul _ (Lit 10) _ -> "ochen"+ _ -> "ocho"+ )+ , (9, \c -> case c of+ CtxMul _ (Lit 10) _ -> "noven"+ CtxMul _ (Lit 100) _ -> "nove"+ _ -> "nueve"+ )+ , (10, \c -> case c of+ CtxAdd R (Lit _) _ -> "ce"+ CtxAdd L (Lit _) _ -> "dieci"+ CtxMul R _ _ -> "ta"+ _ -> "diez"+ )+ , (20, \c -> case c of+ CtxAdd _ (Lit _) _ -> "veinti"+ _ -> "veinte"+ )+ , (100, \c -> case c of+ CtxEmpty -> "cien"+ CtxAdd {} -> "ciento"+ CtxMul _ (Lit 5) _+ | isFeminine inf -> "ientas"+ | otherwise -> "ientos"+ CtxMul L _ _ -> "cien"+ _ | isFeminine inf -> "cientas"+ | otherwise -> "cientos"+ )+ , (1000, const "mil")+ ]++longScaleRepr :: Inflection -> Integer -> Integer -> Exp -> Ctx Exp -> Maybe Text+longScaleRepr =+ BN.scaleRepr (BN.quantityName "illón" "illones")+ [ (4, BN.forms "cuatr" "cuator" "cuator" "cuatra" "cuatri")+ , (9, BN.forms "non" "noven" "noven" "nona" "non")+ ]
− src/Text/Numeral/Language/SV.hs
@@ -1,223 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] sv--[@ISO639-2B@] swe--[@ISO639-3@] swe--[@Native name@] svenska--[@English name@] Swedish--}--module Text.Numeral.Language.SV- ( -- * Language entry- entry- -- * Conversions- , cardinal- , ordinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where------------------------------------------------------------------------------------- Imports----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Num, Integral, (-), div, negate, even )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN-import qualified "this" Text.Numeral.Exp as E-import qualified "this" Text.Numeral.Grammar as G-import "this" Text.Numeral.Misc ( dec, intLog )-import "this" Text.Numeral.Entry-import "this" Text.Numeral.Render.Utils ( addCtx, mulCtx, outsideCtx )-import "text" Data.Text ( Text )------------------------------------------------------------------------------------- SV----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "sv"- , entIso639_2 = ["swe"]- , entIso639_3 = Just "swe"- , entNativeNames = ["svenska"]- , entEnglishName = Just "Swedish"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- , entOrdinal = Just Conversion- { toNumeral = ordinal- , toStructure = struct- }- }--cardinal ∷ (G.Common i, G.Neuter i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--ordinal ∷ (G.Common i, G.Neuter i, Integral α, E.Scale α)- ⇒ i → α → Maybe Text-ordinal inf = ordinalRepr inf ∘ struct--struct ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Common (E.Inf β)- )- ⇒ α → β-struct = pos $ fix $ rule `combine` pelletierScale1_sv- where- rule = findRule ( 0, lit )- [ ( 13, add 10 L )- , ( 20, lit )- , ( 21, add 20 R )- , ( 30, mul 10 R L)- , ( 100, step1 100 10 R L)- , (1000, step1 1000 1000 R L)- ]- (dec 6 - 1)---- | Like 'pelletierScale1' with the difference that all scale--- elements are of the common gender.-pelletierScale1_sv ∷ ( Integral α, E.Scale α- , E.Unknown β, E.Lit β, E.Add β, E.Mul β, E.Scale β- , E.Inflection β, G.Common (E.Inf β)- )- ⇒ Rule α β-pelletierScale1_sv =- conditional (\n → even $ intLog n `div` 3)- (mulScale1_sv 6 0 R L BN.rule)- (mulScale1_sv 6 3 R L BN.rule)- where- mulScale1_sv = mulScale_ $ \f m s _ → commonMul (f m) s- commonMul m s = E.inflection (G.common) $ E.mul m s--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--cardinalRepr ∷ (G.Common i, G.Neuter i) ⇒ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \ctx n → M.lookup n (syms ctx)- , reprScale = BN.pelletierRepr- (BN.quantityName "iljon" "iljoner")- (BN.quantityName "iljard" "iljarder")- bigNumSyms- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "minus "- }- where- (Inflection _ _ ⊞ _) _ = " "- (_ ⊞ _) _ = ""-- (_ ⊡ Lit 100) CtxEmpty = " "- (_ ⊡ Lit 1000) CtxEmpty = " "- (_ ⊡ Scale{}) _ = " "- (_ ⊡ _) _ = ""-- syms ctx =- M.fromList- [ (0, const "noll")- , (1, \c → case c of- CtxMul _ (Lit 1000) CtxEmpty → "ett"- CtxMul _ (Lit 1000) _ → "et"- _ | G.isCommon ctx → "en"- | G.isNeuter ctx → "ett"- | otherwise → "?"- )- , (2, const "två")- , (3, addCtx 10 "tret" $ mulCtx 10 "tret" $ const "tre")- , (4, addCtx 10 "fjor" $ mulCtx 10 "fyr" $ const "fyra")- , (5, const "fem")- , (6, const "sex")- , (7, addCtx 10 "sjut" $ mulCtx 10 "sjut" $ const "sju")- , (8, addCtx 10 "ar" $ mulCtx 10 "åt" $ const "åtta")- , (9, addCtx 10 "nit" $ mulCtx 10 "nit" $ const "nio")- , (10, \c → case c of- CtxAdd {} → "ton"- _ → "tio"- )- , (11, const "elva")- , (12, const "tolv")- , (20, const "tjugo")- , (100, const "hundra")- , (1000, const "tusen")- ]--ordinalRepr ∷ (G.Common i, G.Neuter i) ⇒ i → Exp i → Maybe Text-ordinalRepr = render defaultRepr- { reprValue = \ctx n → M.lookup n (syms ctx)- , reprScale = BN.pelletierRepr- (BN.ordQuantityName "iljon" "iljonte" "iljoner" "iljonte")- (BN.ordQuantityName "iljard" "iljarte" "iljarder" "iljarte")- bigNumSyms- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- , reprNeg = Just $ \_ _ → "minus "- }- where- (Inflection _ _ ⊞ _) _ = " "- (_ ⊞ _) _ = ""-- (_ ⊡ Lit 100) CtxEmpty = " "- (_ ⊡ Lit 1000) CtxEmpty = " "- (_ ⊡ Scale{}) _ = " "- (_ ⊡ _) _ = ""-- syms ctx =- M.fromList- [ (0, outsideCtx R "nollte" $ const "noll")- , (1, outsideCtx R "första"- $ \c → case c of- CtxMul _ (Lit 1000) CtxEmpty → "ett"- CtxMul _ (Lit 1000) _ → "et"- _ | G.isCommon ctx → "en"- | G.isNeuter ctx → "ett"- | otherwise → "?"- )- , (2, outsideCtx R "andra" $ const "två")- , (3, outsideCtx R "tredje" $ addCtx 10 "tret" $ mulCtx 10 "tret" $ const "tre")- , (4, outsideCtx R "fjärde" $ addCtx 10 "fjor" $ mulCtx 10 "fyr" $ const "fyra")- , (5, outsideCtx R "femte" $ const "fem")- , (6, outsideCtx R "sjätte" $ const "sex")- , (7, outsideCtx R "sjunde" $ addCtx 10 "sjut" $ mulCtx 10 "sjut" $ const "sju")- , (8, outsideCtx R "åttonde" $ addCtx 10 "ar" $ mulCtx 10 "åt" $ const "åtta")- , (9, outsideCtx R "nionde" $ addCtx 10 "nit" $ mulCtx 10 "nit" $ const "nio")- , (10, \c → case c of- CtxAdd {}- | isOutside R c → "tonde"- | otherwise → "ton"- _ | isOutside R c → "tionde"- | otherwise → "tio"- )- , (11, outsideCtx R "elfte" $ const "elva")- , (12, outsideCtx R "tolfte" $ const "tolv")- , (20, outsideCtx R "tjugonde" $ const "tjugo")- , (100, outsideCtx R "hundrade" $ const "hundra")- , (1000, outsideCtx R "tusende" $ const "tusen")- ]--bigNumSyms ∷ (Num α) ⇒ [(α, Ctx (Exp i) → Text)]-bigNumSyms =- [ (4, BN.forms "kvadr" "kvattuor" "kvattuor" "kvadra" "kvadri")- , (5, BN.forms "kvint" "kvin" "kvinkva" "kvinkva" "kvin")- , (8, BN.forms "okt" "okto" "okto" "okto" "oktin")- ]
+ src/Text/Numeral/Language/SWE.hs view
@@ -0,0 +1,201 @@+{-|+[@ISO639-1@] sv++[@ISO639-2B@] swe++[@ISO639-3@] swe++[@Native name@] svenska++[@English name@] Swedish+-}++module Text.Numeral.Language.SWE+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ , ordinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++-------------------------------------------------------------------------------+-- Imports+-------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN+import "this" Text.Numeral.Misc ( dec, intLog )+import "this" Text.Numeral.Entry+import "this" Text.Numeral.Render.Utils ( addCtx, mulCtx, outsideCtx )+import "text" Data.Text ( Text )+++-------------------------------------------------------------------------------+-- SWE+-------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "sv"+ , entIso639_2 = ["swe"]+ , entIso639_3 = Just "swe"+ , entNativeNames = ["svenska"]+ , entEnglishName = Just "Swedish"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ , entOrdinal = Just Conversion+ { toNumeral = ordinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++ordinal :: (Integral a) => Inflection -> a -> Maybe Text+ordinal inf = ordinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = pos $ fix $ rule `combine` pelletierScale1_sv+ where+ rule = findRule ( 0, lit )+ [ ( 13, add 10 L )+ , ( 20, lit )+ , ( 21, add 20 R )+ , ( 30, mul 10 R L)+ , ( 100, step1 100 10 R L)+ , (1000, step1 1000 1000 R L)+ ]+ (dec 6 - 1)++-- | Like 'pelletierScale1' with the difference that all scale+-- elements are of the common gender.+pelletierScale1_sv :: (Integral a) => Rule a+pelletierScale1_sv =+ conditional (\n -> even $ intLog n `div` 3)+ (mulScale1_sv 6 0 R L BN.rule)+ (mulScale1_sv 6 3 R L BN.rule)+ where+ mulScale1_sv = mulScale_ $ \f m s _ -> commonMul (f m) s+ commonMul m s = ChangeGender (Just Common) $ Mul m s++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \ctx n -> M.lookup n (syms ctx)+ , reprScale = BN.pelletierRepr+ (BN.quantityName "iljon" "iljoner")+ (BN.quantityName "iljard" "iljarder")+ bigNumSyms+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "minus "+ }+ where+ (ChangeGender _ _ ⊞ _) _ = " "+ (_ ⊞ _) _ = ""++ (_ ⊡ Lit 100) CtxEmpty = " "+ (_ ⊡ Lit 1000) CtxEmpty = " "+ (_ ⊡ Scale{}) _ = " "+ (_ ⊡ _) _ = ""++ syms ctx =+ M.fromList+ [ (0, const "noll")+ , (1, \c -> case c of+ CtxMul _ (Lit 1000) CtxEmpty -> "ett"+ CtxMul _ (Lit 1000) _ -> "et"+ _ | isCommon ctx -> "en"+ | isNeuter ctx -> "ett"+ | otherwise -> "?"+ )+ , (2, const "två")+ , (3, addCtx 10 "tret" $ mulCtx 10 "tret" $ const "tre")+ , (4, addCtx 10 "fjor" $ mulCtx 10 "fyr" $ const "fyra")+ , (5, const "fem")+ , (6, const "sex")+ , (7, addCtx 10 "sjut" $ mulCtx 10 "sjut" $ const "sju")+ , (8, addCtx 10 "ar" $ mulCtx 10 "åt" $ const "åtta")+ , (9, addCtx 10 "nit" $ mulCtx 10 "nit" $ const "nio")+ , (10, \c -> case c of+ CtxAdd {} -> "ton"+ _ -> "tio"+ )+ , (11, const "elva")+ , (12, const "tolv")+ , (20, const "tjugo")+ , (100, const "hundra")+ , (1000, const "tusen")+ ]++ordinalRepr :: Inflection -> Exp -> Maybe Text+ordinalRepr = render defaultRepr+ { reprValue = \ctx n -> M.lookup n (syms ctx)+ , reprScale = BN.pelletierRepr+ (BN.ordQuantityName "iljon" "iljonte" "iljoner" "iljonte")+ (BN.quantityName "iljard" "iljarder")+ bigNumSyms+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ , reprNeg = Just $ \_ _ -> "minus "+ }+ where+ (ChangeGender _ _ ⊞ _) _ = " "+ (_ ⊞ _) _ = ""++ (_ ⊡ Lit 100) CtxEmpty = " "+ (_ ⊡ Lit 1000) CtxEmpty = " "+ (_ ⊡ Scale{}) _ = " "+ (_ ⊡ _) _ = ""++ syms ctx =+ M.fromList+ [ (0, outsideCtx R "nollte" $ const "noll")+ , (1, outsideCtx R "första"+ $ \c -> case c of+ CtxMul _ (Lit 1000) CtxEmpty -> "ett"+ CtxMul _ (Lit 1000) _ -> "et"+ _ | isCommon ctx -> "en"+ | isNeuter ctx -> "ett"+ | otherwise -> "?"+ )+ , (2, outsideCtx R "andra" $ const "två")+ , (3, outsideCtx R "tredje" $ addCtx 10 "tret" $ mulCtx 10 "tret" $ const "tre")+ , (4, outsideCtx R "fjärde" $ addCtx 10 "fjor" $ mulCtx 10 "fyr" $ const "fyra")+ , (5, outsideCtx R "femte" $ const "fem")+ , (6, outsideCtx R "sjätte" $ const "sex")+ , (7, outsideCtx R "sjunde" $ addCtx 10 "sjut" $ mulCtx 10 "sjut" $ const "sju")+ , (8, outsideCtx R "åttonde" $ addCtx 10 "ar" $ mulCtx 10 "åt" $ const "åtta")+ , (9, outsideCtx R "nionde" $ addCtx 10 "nit" $ mulCtx 10 "nit" $ const "nio")+ , (10, \c -> case c of+ CtxAdd {}+ | isOutside R c -> "tonde"+ | otherwise -> "ton"+ _ | isOutside R c -> "tionde"+ | otherwise -> "tio"+ )+ , (11, outsideCtx R "elfte" $ const "elva")+ , (12, outsideCtx R "tolfte" $ const "tolv")+ , (20, outsideCtx R "tjugonde" $ const "tjugo")+ , (100, outsideCtx R "hundrade" $ const "hundra")+ , (1000, outsideCtx R "tusende" $ const "tusen")+ ]++bigNumSyms :: (Num a) => [(a, Ctx Exp -> Text)]+bigNumSyms =+ [ (4, BN.forms "kvadr" "kvattuor" "kvattuor" "kvadra" "kvadri")+ , (5, BN.forms "kvint" "kvin" "kvinkva" "kvinkva" "kvin")+ , (8, BN.forms "okt" "okto" "okto" "okto" "oktin")+ ]
− src/Text/Numeral/Language/TR.hs
@@ -1,163 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] tr--[@ISO639-2@] tur--[@ISO639-3@] tur--[@Native name@] Türkçe--[@English name@] Turkish--}--module Text.Numeral.Language.TR- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral, (-), divMod, negate )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.List.Unicode ( (∉) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ, (⋅) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.BigNum as BN ( rule, scaleRepr, forms )-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- TR-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "tr"- , entIso639_2 = ["tur"]- , entIso639_3 = Just "tur"- , entNativeNames = ["Türkçe"]- , entEnglishName = Just "Turkish"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ (Integral α, E.Scale α, E.Unknown β, E.Lit β, E.Add β, E.Mul β, E.Scale β)- ⇒ α → β-struct = checkPos $ fix $ rule `combine` shortScale1 R L BN.rule--rule ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ Rule α β-rule = findRule ( 0, lit )- [ ( 11, addToTens )- , ( 100, step 100 10 R L)- , (1000, step 1000 1000 R L)- ]- (dec 6 - 1)--addToTens ∷ (Integral α, E.Lit β, E.Add β) ⇒ Rule α β-addToTens f n = let (m, r) = n `divMod` 10- tens = m ⋅ 10- in if r ≡ 0- then lit f tens- else f tens `E.add` f r--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 60000 - 1 in (negate x, x)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprScale = scaleRepr- , reprAdd = Just (⊞)- , reprMul = Just $ \_ _ _ → " "- }- where- (Lit 10 ⊞ _) (CtxMul {}) = ""- (_ ⊞ _) _ = " "-- syms =- M.fromList- [ (0, const "sıfır")- , (1, const "bir")- , (2, const "iki")- , (3, const "üç")- , (4, const "dört")- , (5, const "beş")- , (6, const "altı")- , (7, const "yedi")- , (8, const "sekiz")- , (9, const "dokuz")- , (10, const "on")- , (20, const "yirmi")- , (30, const "otuz")- , (40, const "kırk")- , (50, const "elli")- , (60, const "altmış")- , (70, const "yetmiş")- , (80, const "seksen")- , (90, const "doksan")- , (100, const "yüz")- , (1000, const "bin")- ]--scaleRepr ∷ i → ℤ → ℤ → Exp i → Ctx (Exp i) → Maybe Text-scaleRepr = BN.scaleRepr- (\_ _ → "ilyon")- [ (1, BN.forms "m" "an" "an" "" "")- , (2, BN.forms "b" "do" "do" "vi" "du")- , (3, \c → case c of- CtxAdd _ (Lit 10) _ → "tre"- CtxAdd _ (Lit 100) _ → "tre"- CtxAdd {} → "tres"- CtxMul _ (Lit 100) _ → "tre"- CtxMul {} → "tri"- _ → "tr"- )- , (4, BN.forms "katr" "kator" "kator" "katra" "katrin")- , (5, BN.forms "kent" "ken" "kenka" "kenka" "ken")- , (6, BN.forms "sekst" "seks" "ses" "seksa" "se")- , (7, BN.forms "sept" "septen" "septem" "septe" "septin")- , (8, BN.forms "okt" "okto" "okto" "okto" "oktin")- , (10, \c → case c of- CtxAdd _ (Lit 100) _ → "desi"- CtxAdd _ (Lit 1) (CtxAdd {}) → "desi"- CtxMul _ (Lit n) (CtxAdd L (Lit 100) _)- | n ≡ 2 → "ginti"- | otherwise → "ginta"- CtxMul _ (Lit _) (CtxAdd _ _ CtxEmpty) → "gint"- CtxMul _ (Lit _) CtxEmpty → "gint"- CtxMul {} → "ginti"- _ → "des"- )- , (100, \c → case c of- CtxMul _ (Lit n) _ | n ∉ [2,3,6] → "gent"- _ → "sent"- )- ]
+ src/Text/Numeral/Language/TUR.hs view
@@ -0,0 +1,149 @@+{-|+[@ISO639-1@] tr++[@ISO639-2@] tur++[@ISO639-3@] tur++[@Native name@] Türkçe++[@English name@] Turkish+-}++module Text.Numeral.Language.TUR+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import qualified "this" Text.Numeral.BigNum as BN ( rule, scaleRepr, forms )+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- TUR+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "tr"+ , entIso639_2 = ["tur"]+ , entIso639_3 = Just "tur"+ , entNativeNames = ["Türkçe"]+ , entEnglishName = Just "Turkish"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = checkPos $ fix $ rule `combine` shortScale1 R L BN.rule++rule :: (Integral a) => Rule a+rule = findRule ( 0, lit )+ [ ( 11, addToTens )+ , ( 100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ ]+ (dec 6 - 1)++addToTens :: (Integral a) => Rule a+addToTens f n = let (m, r) = n `divMod` 10+ tens = m * 10+ in if r == 0+ then lit f tens+ else f tens `Add` f r++bounds :: (Integral a) => (a, a)+bounds = let x = dec 60000 - 1 in (negate x, x)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprScale = scaleRepr+ , reprAdd = Just (⊞)+ , reprMul = Just $ \_ _ _ -> " "+ }+ where+ (Lit 10 ⊞ _) (CtxMul {}) = ""+ (_ ⊞ _) _ = " "++ syms =+ M.fromList+ [ (0, const "sıfır")+ , (1, const "bir")+ , (2, const "iki")+ , (3, const "üç")+ , (4, const "dört")+ , (5, const "beş")+ , (6, const "altı")+ , (7, const "yedi")+ , (8, const "sekiz")+ , (9, const "dokuz")+ , (10, const "on")+ , (20, const "yirmi")+ , (30, const "otuz")+ , (40, const "kırk")+ , (50, const "elli")+ , (60, const "altmış")+ , (70, const "yetmiş")+ , (80, const "seksen")+ , (90, const "doksan")+ , (100, const "yüz")+ , (1000, const "bin")+ ]++scaleRepr :: Inflection -> Integer -> Integer -> Exp -> Ctx Exp -> Maybe Text+scaleRepr = BN.scaleRepr+ (\_ _ -> "ilyon")+ [ (1, BN.forms "m" "an" "an" "" "")+ , (2, BN.forms "b" "do" "do" "vi" "du")+ , (3, \c -> case c of+ CtxAdd _ (Lit 10) _ -> "tre"+ CtxAdd _ (Lit 100) _ -> "tre"+ CtxAdd {} -> "tres"+ CtxMul _ (Lit 100) _ -> "tre"+ CtxMul {} -> "tri"+ _ -> "tr"+ )+ , (4, BN.forms "katr" "kator" "kator" "katra" "katrin")+ , (5, BN.forms "kent" "ken" "kenka" "kenka" "ken")+ , (6, BN.forms "sekst" "seks" "ses" "seksa" "se")+ , (7, BN.forms "sept" "septen" "septem" "septe" "septin")+ , (8, BN.forms "okt" "okto" "okto" "okto" "oktin")+ , (10, \c -> case c of+ CtxAdd _ (Lit 100) _ -> "desi"+ CtxAdd _ (Lit 1) (CtxAdd {}) -> "desi"+ CtxMul _ (Lit n) (CtxAdd L (Lit 100) _)+ | n == 2 -> "ginti"+ | otherwise -> "ginta"+ CtxMul _ (Lit _) (CtxAdd _ _ CtxEmpty) -> "gint"+ CtxMul _ (Lit _) CtxEmpty -> "gint"+ CtxMul {} -> "ginti"+ _ -> "des"+ )+ , (100, \c -> case c of+ CtxMul _ (Lit n) _+ | not $ n `elem` [2,3,6] -> "gent"+ _ -> "sent"+ )+ ]
− src/Text/Numeral/Language/WO.hs
@@ -1,116 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] wo--[@ISO639-2@] wo1--[@ISO639-3@] wo1--[@Native name@] Wolof--[@English name@] Wolof--}--module Text.Numeral.Language.WO- ( -- * Language entry- entry- -- * Conversions- , cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≥) )-import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- WO-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "wo"- , entIso639_2 = ["wol"]- , entIso639_3 = Just "wol"- , entNativeNames = ["Wolof"]- , entEnglishName = Just "Wolof"- , entCardinal = Just Conversion- { toNumeral = cardinal- , toStructure = struct- }- }--cardinal ∷ (Inflection i, Integral α, E.Scale α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β) ⇒ α → β-struct = checkPos- $ fix- $ findRule ( 0, lit )- [ ( 6, add 5 R )- , ( 10, lit )- , ( 11, add 10 R )- , ( 20, mul 10 R L )- , (100, step 100 10 R L)- , (1000, step 1000 1000 R L)- , (dec 6, lit)- ]- (dec 6)--bounds ∷ (Integral α) ⇒ (α, α)-bounds = (0, dec 6)--cardinalRepr ∷ i → Exp i → Maybe Text-cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms- , reprAdd = Just (⊞)- , reprMul = Just (⊡)- }- where- (Lit 5 ⊞ _) _ = "-"- (_ ⊞ _) _ = " ak "-- (_ ⊡ Lit 10) _ = "-"- (_ ⊡ _ ) _ = " "-- syms =- M.fromList- [ (0, const "tus")- , (1, i "benn")- , (2, i "ñaar")- , (3, i "ñett")- , (4, i "ñeent")- , (5, i "juróom")- , (10, i "fukk")- , (100, i "téeméer")- , (1000, const "junni")- , (dec 6, const "tamndareet")- ]-- i s = \c → s ⊕ case c of- CtxMul _ (Lit n) _ | n ≥ 100 → "i"- CtxAdd R _ (CtxMul _ (Lit n) _) | n ≥ 100 → "i"- _ → ""
+ src/Text/Numeral/Language/WOL.hs view
@@ -0,0 +1,105 @@+{-|+[@ISO639-1@] wo++[@ISO639-2@] wo1++[@ISO639-3@] wo1++[@Native name@] Wolof++[@English name@] Wolof+-}++module Text.Numeral.Language.WOL+ ( -- * Language entry+ entry+ -- * Conversions+ , cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import "base" Data.Monoid ( (<>) )+import qualified "containers" Data.Map as M ( fromList, lookup )+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- WOL+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "wo"+ , entIso639_2 = ["wol"]+ , entIso639_3 = Just "wol"+ , entNativeNames = ["Wolof"]+ , entEnglishName = Just "Wolof"+ , entCardinal = Just Conversion+ { toNumeral = cardinal+ , toStructure = struct+ }+ }++cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct++struct :: (Integral a) => a -> Exp+struct = checkPos+ $ fix+ $ findRule ( 0, lit )+ [ ( 6, add 5 R )+ , ( 10, lit )+ , ( 11, add 10 R )+ , ( 20, mul 10 R L )+ , (100, step 100 10 R L)+ , (1000, step 1000 1000 R L)+ , (dec 6, lit)+ ]+ (dec 6)++bounds :: (Integral a) => (a, a)+bounds = (0, dec 6)++cardinalRepr :: Inflection -> Exp -> Maybe Text+cardinalRepr = render defaultRepr+ { reprValue = \_ n -> M.lookup n syms+ , reprAdd = Just (⊞)+ , reprMul = Just (⊡)+ }+ where+ (Lit 5 ⊞ _) _ = "-"+ (_ ⊞ _) _ = " ak "++ (_ ⊡ Lit 10) _ = "-"+ (_ ⊡ _ ) _ = " "++ syms =+ M.fromList+ [ (0, const "tus")+ , (1, i "benn")+ , (2, i "ñaar")+ , (3, i "ñett")+ , (4, i "ñeent")+ , (5, i "juróom")+ , (10, i "fukk")+ , (100, i "téeméer")+ , (1000, const "junni")+ , (dec 6, const "tamndareet")+ ]++ i s = \c -> s <> case c of+ CtxMul _ (Lit n) _ | n >= 100 -> "i"+ CtxAdd R _ (CtxMul _ (Lit n) _) | n >= 100 -> "i"+ _ -> ""
src/Text/Numeral/Language/YOR.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}- {-| [@ISO639-1@] yo @@ -31,17 +26,10 @@ -- Imports -------------------------------------------------------------------------------- -import "base" Data.Bool ( otherwise )-import "base" Data.Function ( ($), const, fix )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Prelude ( Integral )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )+import "base" Data.Function ( fix )+import "base" Data.Monoid ( (<>) ) import qualified "containers" Data.Map as M ( fromList, lookup )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )+import "this" Text.Numeral import "this" Text.Numeral.Entry import "text" Data.Text ( Text ) @@ -63,7 +51,7 @@ 525 = (200*3) - (20*4) + 5 -} -entry ∷ Entry+entry :: Entry entry = emptyEntry { entIso639_1 = Just "yo" , entIso639_2 = ["yor"]@@ -76,13 +64,13 @@ } } -cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-cardinal inf = cardinalRepr inf ∘ struct+cardinal :: (Integral a) => Inflection -> a -> Maybe Text+cardinal inf = cardinalRepr inf . struct -struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Sub β, E.Mul β) ⇒ α → β+struct :: (Integral a) => a -> Exp struct = checkPos $ fix- $ conditional (≡ -5) lit+ $ conditional (== -5) lit $ findRule ( 1, lit ) [ ( 11, add 10 L ) , ( 15, add 20 L )@@ -115,19 +103,19 @@ ] 1000 -bounds ∷ (Integral α) ⇒ (α, α)+bounds :: (Integral a) => (a, a) bounds = (1, 1000) -cardinalRepr ∷ i → Exp i → Maybe Text+cardinalRepr :: Inflection -> Exp -> Maybe Text cardinalRepr = render defaultRepr- { reprValue = \_ n → M.lookup n syms+ { reprValue = \_ n -> M.lookup n syms , reprAdd = Just (⊞) , reprMul = Just (⊡)- , reprSub = Just $ \_ _ _ → "dil"+ , reprSub = Just $ \_ _ _ -> "dil" } where (_ ⊞ Lit 10) _ = ""- (Lit n ⊞ _) _ | n ≡ -5 = ""+ (Lit n ⊞ _) _ | n == -5 = "" | otherwise = "lel" (_ ⊞ _) _ = "" @@ -137,26 +125,26 @@ syms = M.fromList [ (-5, const "med")- , ( 1, \c → case c of- CtxAdd {} → "mokan"- CtxSub {} → "mokan"- _ → "ikan"+ , ( 1, \c -> case c of+ CtxAdd {} -> "mokan"+ CtxSub {} -> "mokan"+ _ -> "ikan" ) , ( 2, twentyForm "me" "go" "ji") , ( 3, twentyForm "me" "go" "ta") , ( 4, twentyForm "me" "go" "rin") , ( 5, twentyForm "ma" "go" "run")- , ( 6, const $ "me" ⊕ "fa")- , ( 7, const $ "me" ⊕ "je")- , ( 8, const $ "me" ⊕ "jo")- , ( 9, const $ "me" ⊕ "san")- , (10, \c → case c of- CtxAdd {} → "la"- _ → "mewa"+ , ( 6, const $ "me" <> "fa")+ , ( 7, const $ "me" <> "je")+ , ( 8, const $ "me" <> "jo")+ , ( 9, const $ "me" <> "san")+ , (10, \c -> case c of+ CtxAdd {} -> "la"+ _ -> "mewa" )- , (20, \c → case c of- CtxMul {} → "o"- _ → "ogun"+ , (20, \c -> case c of+ CtxMul {} -> "o"+ _ -> "ogun" ) , (30, const "ogbon") , (50, const "adota")@@ -165,7 +153,7 @@ , (1000, const "egberun") ] - twentyForm c m s = \ctx → case ctx of- CtxMul _ (Lit 20) _ → m- _ → c- ⊕ s+ twentyForm c m s = \ctx -> case ctx of+ CtxMul _ (Lit 20) _ -> m+ _ -> c+ <> s
− src/Text/Numeral/Language/ZH.hs
@@ -1,352 +0,0 @@-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE UnicodeSyntax #-}--{-|-[@ISO639-1@] zh--[@ISO639-2B@] chi--[@ISO639-2T@] zho--[@ISO639-3@] cmn--[@Native name@] 官話--[@English name@] Chinese--}--module Text.Numeral.Language.ZH- ( -- * Language entries- trad_entry- , simpl_entry- , finance_trad_entry- , finance_simpl_entry- , pinyin_entry- -- * Conversions- , trad_cardinal- , simpl_cardinal- , finance_trad_cardinal- , finance_simpl_cardinal- , pinyin_cardinal- -- * Structure- , struct- -- * Bounds- , bounds- ) where-------------------------------------------------------------------------------------- Imports-----------------------------------------------------------------------------------import "base" Data.Bool ( otherwise )-import "base" Data.Function ( id, const, fix, flip, ($) )-import "base" Data.Maybe ( Maybe(Just) )-import "base" Data.Ord ( (<) )-import "base" Prelude ( Num, Integral, fromIntegral, (-), div, divMod, negate )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "base-unicode-symbols" Data.Ord.Unicode ( (≥) )-import qualified "containers" Data.Map as M ( Map, fromList, lookup )-import "containers-unicode-symbols" Data.Map.Unicode ( (∪) )-import "this" Text.Numeral-import qualified "this" Text.Numeral.Exp as E-import "this" Text.Numeral.Grammar ( Inflection )-import "this" Text.Numeral.Misc ( dec )-import "this" Text.Numeral.Entry-import "text" Data.Text ( Text )-------------------------------------------------------------------------------------- ZH-----------------------------------------------------------------------------------entry ∷ Entry-entry = emptyEntry- { entIso639_1 = Just "zh"- , entIso639_2 = ["chi", "zho"]- , entIso639_3 = Just "cmn"- , entNativeNames = ["官話"]- , entEnglishName = Just "Chinese"- }--flipIfR ∷ Side → (α → α → α) → (α → α → α)-flipIfR L = id-flipIfR R = flip--add0 ∷ (Integral α, E.Lit β, E.Add β) ⇒ α → Rule α β-add0 val f n | n < val `div` 10 = E.lit 0 `E.add` f n- | otherwise = f n--mulX ∷ (Integral α, E.Lit β, E.Add β, E.Mul β)- ⇒ α → Side → Side → Rule α β-mulX val aSide mSide =- \f n → let (m, a) = n `divMod` val- mval = if m ≡ 1- then E.lit 1 ⊡ E.lit (fromIntegral val)- else f m ⊡ E.lit (fromIntegral val)- in if a ≡ 0- then mval- else (flipIfR aSide E.add) (add0 val f a) mval- where- (⊡) = flipIfR mSide E.mul--struct ∷ (Integral α, E.Unknown β, E.Lit β, E.Neg β, E.Add β, E.Mul β) ⇒ α → β-struct = pos- $ fix- $ findRule (0, lit)- ( [(dec 1, step (dec 1) (dec 1) R L)]- ⊕ [(dec n, stepX (dec n) (dec 1) R L) | n ← [2,3]]- ⊕ [(dec n, stepX (dec n) (dec 4) R L) | n ← [4,8..44]]- )- (dec 48 - 1)- where- stepX = mkStep lit1 addX mulX-- addX val _ = \f n → E.add (f val) (add0 val f $ n - val)--bounds ∷ (Integral α) ⇒ (α, α)-bounds = let x = dec 48 - 1 in (negate x, x)--cardinalRepr ∷ Repr i-cardinalRepr = defaultRepr- { reprAdd = Just $ \_ _ _ → ""- , reprMul = Just $ \_ _ _ → ""- }-------------------------------------------------------------------------------------- Traditional Characters-----------------------------------------------------------------------------------trad_entry ∷ Entry-trad_entry = entry- { entVariant = Just "traditional"- , entCardinal = Just Conversion- { toNumeral = trad_cardinal- , toStructure = struct- }- }--trad_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-trad_cardinal inf = trad_cardinalRepr inf ∘ struct--trad_cardinalRepr ∷ i → Exp i → Maybe Text-trad_cardinalRepr =- render cardinalRepr- { reprValue = \_ n → M.lookup n trad_syms- , reprNeg = Just $ \_ _ → "負"- }--trad_syms ∷ (Integral α) ⇒ M.Map α (Ctx (Exp i) → Text)-trad_syms =- M.fromList- [ (0, \c → case c of- CtxEmpty → "零"- _ → "〇"- )- , (1, const "一")- , (2, \c → case c of- CtxMul _ (Lit n) _ | n ≥ 1000 → "兩"- _ → "二"- )- , (3, const "三")- , (4, const "四")- , (5, const "五")- , (6, const "六")- , (7, const "七")- , (8, const "八")- , (9, const "九")- , (10, const "十")- , (100, const "百")- , (1000, const "千")- , (dec 4, const "萬")- , (dec 8, const "億")- , (dec 12, const "兆")- , (dec 16, const "京")- , (dec 20, const "垓")- , (dec 24, const "秭")- , (dec 28, const "穰")- , (dec 32, const "溝")- , (dec 36, const "澗")- , (dec 40, const "正")- , (dec 44, const "載")- ]-------------------------------------------------------------------------------------- Simplified Characters-----------------------------------------------------------------------------------simpl_entry ∷ Entry-simpl_entry = entry- { entVariant = Just "simplified"- , entCardinal = Just Conversion- { toNumeral = simpl_cardinal- , toStructure = struct- }- }--simpl_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-simpl_cardinal inf = simpl_cardinalRepr inf ∘ struct--simpl_cardinalRepr ∷ i → Exp i → Maybe Text-simpl_cardinalRepr =- render cardinalRepr- { reprValue = \_ n → M.lookup n (simpl_syms ∪ trad_syms)- , reprNeg = Just $ \_ _ → "负"- }--simpl_syms ∷ (Integral α) ⇒ M.Map α (Ctx (Exp i) → Text)-simpl_syms =- M.fromList- [ (2, \c → case c of- CtxMul _ (Lit n) _ | n ≥ 1000 → "两"- _ → "二"- )- , (dec 4, const "万")- , (dec 8, const "亿")- ]-------------------------------------------------------------------------------------- Financial Characters (Traditional)-----------------------------------------------------------------------------------finance_trad_entry ∷ Entry-finance_trad_entry = entry- { entVariant = Just "finance traditional"- , entCardinal = Just Conversion- { toNumeral = finance_trad_cardinal- , toStructure = struct- }- }--finance_trad_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-finance_trad_cardinal inf = finance_trad_cardinalRepr inf ∘ struct--finance_trad_cardinalRepr ∷ i → Exp i → Maybe Text-finance_trad_cardinalRepr =- render cardinalRepr- { reprValue = \_ n → M.lookup n (finance_trad_syms ∪ trad_syms)- , reprNeg = Just $ \_ _ → "負"- }--finance_trad_syms ∷ (Integral α) ⇒ M.Map α (Ctx (Exp i) → Text)-finance_trad_syms =- M.fromList- [ (0, const "零")- , (1, const "壹")- , (2, const "貳")- , (3, const "参")- , (4, const "肆")- , (5, const "伍")- , (6, const "陸")- , (7, const "柒")- , (8, const "捌")- , (9, const "玖")- , (10, const "拾")- , (100, const "伯")- , (1000, const "仟")- , (dec 4, const "萬")- , (dec 8, const "億")- ]-------------------------------------------------------------------------------------- Financial Characters (Simplified)-----------------------------------------------------------------------------------finance_simpl_entry ∷ Entry-finance_simpl_entry = entry- { entVariant = Just "finance simplified"- , entCardinal = Just Conversion- { toNumeral = finance_simpl_cardinal- , toStructure = struct- }- }--finance_simpl_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-finance_simpl_cardinal inf = finance_simpl_cardinalRepr inf ∘ struct--finance_simpl_cardinalRepr ∷ i → Exp i → Maybe Text-finance_simpl_cardinalRepr =- render cardinalRepr- { reprValue = \_ n → M.lookup n ( finance_simpl_syms- ∪ finance_trad_syms- ∪ trad_syms- )- , reprNeg = Just $ \_ _ → "负"- }- where- finance_simpl_syms ∷ (Integral α) ⇒ M.Map α (Ctx (Exp i) → Text)- finance_simpl_syms =- M.fromList- [ (2, const "贰")- , (6, const "陆")- , (dec 4, const "万")- , (dec 8, const "亿")- ]-------------------------------------------------------------------------------------- Pinyin-----------------------------------------------------------------------------------pinyin_entry ∷ Entry-pinyin_entry = entry- { entVariant = Just "pinyin"- , entCardinal = Just Conversion- { toNumeral = pinyin_cardinal- , toStructure = struct- }- }--pinyin_cardinal ∷ (Inflection i, Integral α) ⇒ i → α → Maybe Text-pinyin_cardinal inf = pinyin_cardinalRepr inf ∘ struct--pinyin_cardinalRepr ∷ i → Exp i → Maybe Text-pinyin_cardinalRepr =- render cardinalRepr- { reprValue = \_ n → M.lookup n pinyin_syms- , reprNeg = Just $ \_ _ → "fù"- , reprAdd = Just (⊞)- }- where- (Lit 10 ⊞ _) _ = ""- (_ ⊞ _) _ = " "-- pinyin_syms ∷ (Integral α) ⇒ M.Map α (Ctx (Exp i) → Text)- pinyin_syms =- M.fromList- [ (0, const "líng")- , (1, const "yī")- , (2, \c → case c of- CtxMul _ (Lit n) _ | n ≥ 1000 → "liǎng"- _ → "èr"- )- , (3, const "sān")- , (4, const "sì")- , (5, const "wǔ")- , (6, const "liù")- , (7, const "qī")- , (8, const "bā")- , (9, const "jiǔ")- , (10, const "shí")- , (100, const "bǎi")- , (1000, const "qiān")- , (dec 4, const "wàn")- , (dec 8, const "yì")- , (dec 12, const "zhào")- , (dec 16, const "jīng")- , (dec 20, const "gāi")- , (dec 24, const "zǐ")- , (dec 28, const "ráng")- , (dec 32, const "gōu")- , (dec 36, const "jiàn")- , (dec 40, const "zhēng")- , (dec 44, const "zài")- ]
+ src/Text/Numeral/Language/ZHO.hs view
@@ -0,0 +1,336 @@+{-|+[@ISO639-1@] zh++[@ISO639-2B@] chi++[@ISO639-2T@] zho++[@ISO639-3@] cmn++[@Native name@] 官話++[@English name@] Chinese+-}++module Text.Numeral.Language.ZHO+ ( -- * Language entries+ trad_entry+ , simpl_entry+ , finance_trad_entry+ , finance_simpl_entry+ , pinyin_entry+ -- * Conversions+ , trad_cardinal+ , simpl_cardinal+ , finance_trad_cardinal+ , finance_simpl_cardinal+ , pinyin_cardinal+ -- * Structure+ , struct+ -- * Bounds+ , bounds+ ) where+++--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import "base" Data.Function ( fix )+import "base" Data.Monoid ( (<>) )+import qualified "containers" Data.Map as M+import "this" Text.Numeral+import "this" Text.Numeral.Misc ( dec )+import "this" Text.Numeral.Entry+import "text" Data.Text ( Text )+++--------------------------------------------------------------------------------+-- ZHO+--------------------------------------------------------------------------------++entry :: Entry+entry = emptyEntry+ { entIso639_1 = Just "zh"+ , entIso639_2 = ["chi", "zho"]+ , entIso639_3 = Just "cmn"+ , entNativeNames = ["官話"]+ , entEnglishName = Just "Chinese"+ }++flipIfR :: Side -> (a -> a -> a) -> (a -> a -> a)+flipIfR L = id+flipIfR R = flip++add0 :: (Integral a) => a -> Rule a+add0 val f n | n < val `div` 10 = Lit 0 `Add` f n+ | otherwise = f n++mulX :: (Integral a) => a -> Side -> Side -> Rule a+mulX val aSide mSide =+ \f n -> let (m, a) = n `divMod` val+ mval = if m == 1+ then Lit 1 ⊡ Lit (fromIntegral val)+ else f m ⊡ Lit (fromIntegral val)+ in if a == 0+ then mval+ else (flipIfR aSide Add) (add0 val f a) mval+ where+ (⊡) = flipIfR mSide Mul++struct :: (Integral a) => a -> Exp+struct = pos+ $ fix+ $ findRule (0, lit)+ ( [(dec 1, step (dec 1) (dec 1) R L)]+ <> [(dec n, stepX (dec n) (dec 1) R L) | n <- [2,3]]+ <> [(dec n, stepX (dec n) (dec 4) R L) | n <- [4,8..44]]+ )+ (dec 48 - 1)+ where+ stepX = mkStep lit1 addX mulX++ addX val _ = \f n -> Add (f val) (add0 val f $ n - val)++bounds :: (Integral a) => (a, a)+bounds = let x = dec 48 - 1 in (negate x, x)++cardinalRepr :: Repr+cardinalRepr = defaultRepr+ { reprAdd = Just $ \_ _ _ -> ""+ , reprMul = Just $ \_ _ _ -> ""+ }+++--------------------------------------------------------------------------------+-- Traditional Characters+--------------------------------------------------------------------------------++trad_entry :: Entry+trad_entry = entry+ { entVariant = Just "traditional"+ , entCardinal = Just Conversion+ { toNumeral = trad_cardinal+ , toStructure = struct+ }+ }++trad_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+trad_cardinal inf = trad_cardinalRepr inf . struct++trad_cardinalRepr :: Inflection -> Exp -> Maybe Text+trad_cardinalRepr =+ render cardinalRepr+ { reprValue = \_ n -> M.lookup n trad_syms+ , reprNeg = Just $ \_ _ -> "負"+ }++trad_syms :: (Integral a) => M.Map a (Ctx Exp -> Text)+trad_syms =+ M.fromList+ [ (0, \c -> case c of+ CtxEmpty -> "零"+ _ -> "〇"+ )+ , (1, const "一")+ , (2, \c -> case c of+ CtxMul _ (Lit n) _ | n >= 1000 -> "兩"+ _ -> "二"+ )+ , (3, const "三")+ , (4, const "四")+ , (5, const "五")+ , (6, const "六")+ , (7, const "七")+ , (8, const "八")+ , (9, const "九")+ , (10, const "十")+ , (100, const "百")+ , (1000, const "千")+ , (dec 4, const "萬")+ , (dec 8, const "億")+ , (dec 12, const "兆")+ , (dec 16, const "京")+ , (dec 20, const "垓")+ , (dec 24, const "秭")+ , (dec 28, const "穰")+ , (dec 32, const "溝")+ , (dec 36, const "澗")+ , (dec 40, const "正")+ , (dec 44, const "載")+ ]+++--------------------------------------------------------------------------------+-- Simplified Characters+--------------------------------------------------------------------------------++simpl_entry :: Entry+simpl_entry = entry+ { entVariant = Just "simplified"+ , entCardinal = Just Conversion+ { toNumeral = simpl_cardinal+ , toStructure = struct+ }+ }++simpl_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+simpl_cardinal inf = simpl_cardinalRepr inf . struct++simpl_cardinalRepr :: Inflection -> Exp -> Maybe Text+simpl_cardinalRepr =+ render cardinalRepr+ { reprValue = \_ n -> M.lookup n (simpl_syms `M.union` trad_syms)+ , reprNeg = Just $ \_ _ -> "负"+ }++simpl_syms :: (Integral a) => M.Map a (Ctx Exp -> Text)+simpl_syms =+ M.fromList+ [ (2, \c -> case c of+ CtxMul _ (Lit n) _ | n >= 1000 -> "两"+ _ -> "二"+ )+ , (dec 4, const "万")+ , (dec 8, const "亿")+ ]+++--------------------------------------------------------------------------------+-- Financial Characters (Traditional)+--------------------------------------------------------------------------------++finance_trad_entry :: Entry+finance_trad_entry = entry+ { entVariant = Just "finance traditional"+ , entCardinal = Just Conversion+ { toNumeral = finance_trad_cardinal+ , toStructure = struct+ }+ }++finance_trad_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+finance_trad_cardinal inf = finance_trad_cardinalRepr inf . struct++finance_trad_cardinalRepr :: Inflection -> Exp -> Maybe Text+finance_trad_cardinalRepr =+ render cardinalRepr+ { reprValue = \_ n -> M.lookup n (finance_trad_syms `M.union` trad_syms)+ , reprNeg = Just $ \_ _ -> "負"+ }++finance_trad_syms :: (Integral a) => M.Map a (Ctx Exp -> Text)+finance_trad_syms =+ M.fromList+ [ (0, const "零")+ , (1, const "壹")+ , (2, const "貳")+ , (3, const "参")+ , (4, const "肆")+ , (5, const "伍")+ , (6, const "陸")+ , (7, const "柒")+ , (8, const "捌")+ , (9, const "玖")+ , (10, const "拾")+ , (100, const "伯")+ , (1000, const "仟")+ , (dec 4, const "萬")+ , (dec 8, const "億")+ ]+++--------------------------------------------------------------------------------+-- Financial Characters (Simplified)+--------------------------------------------------------------------------------++finance_simpl_entry :: Entry+finance_simpl_entry = entry+ { entVariant = Just "finance simplified"+ , entCardinal = Just Conversion+ { toNumeral = finance_simpl_cardinal+ , toStructure = struct+ }+ }++finance_simpl_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+finance_simpl_cardinal inf = finance_simpl_cardinalRepr inf . struct++finance_simpl_cardinalRepr :: Inflection -> Exp -> Maybe Text+finance_simpl_cardinalRepr =+ render cardinalRepr+ { reprValue = \_ n -> M.lookup n ( finance_simpl_syms+ `M.union` finance_trad_syms+ `M.union` trad_syms+ )+ , reprNeg = Just $ \_ _ -> "负"+ }+ where+ finance_simpl_syms :: (Integral a) => M.Map a (Ctx Exp -> Text)+ finance_simpl_syms =+ M.fromList+ [ (2, const "贰")+ , (6, const "陆")+ , (dec 4, const "万")+ , (dec 8, const "亿")+ ]+++--------------------------------------------------------------------------------+-- Pinyin+--------------------------------------------------------------------------------++pinyin_entry :: Entry+pinyin_entry = entry+ { entVariant = Just "pinyin"+ , entCardinal = Just Conversion+ { toNumeral = pinyin_cardinal+ , toStructure = struct+ }+ }++pinyin_cardinal :: (Integral a) => Inflection -> a -> Maybe Text+pinyin_cardinal inf = pinyin_cardinalRepr inf . struct++pinyin_cardinalRepr :: Inflection -> Exp -> Maybe Text+pinyin_cardinalRepr =+ render cardinalRepr+ { reprValue = \_ n -> M.lookup n pinyin_syms+ , reprNeg = Just $ \_ _ -> "fù"+ , reprAdd = Just (⊞)+ }+ where+ (Lit 10 ⊞ _) _ = ""+ (_ ⊞ _) _ = " "++ pinyin_syms :: (Integral a) => M.Map a (Ctx Exp -> Text)+ pinyin_syms =+ M.fromList+ [ (0, const "líng")+ , (1, const "yī")+ , (2, \c -> case c of+ CtxMul _ (Lit n) _ | n >= 1000 -> "liǎng"+ _ -> "èr"+ )+ , (3, const "sān")+ , (4, const "sì")+ , (5, const "wǔ")+ , (6, const "liù")+ , (7, const "qī")+ , (8, const "bā")+ , (9, const "jiǔ")+ , (10, const "shí")+ , (100, const "bǎi")+ , (1000, const "qiān")+ , (dec 4, const "wàn")+ , (dec 8, const "yì")+ , (dec 12, const "zhào")+ , (dec 16, const "jīng")+ , (dec 20, const "gāi")+ , (dec 24, const "zǐ")+ , (dec 28, const "ráng")+ , (dec 32, const "gōu")+ , (dec 36, const "jiàn")+ , (dec 40, const "zhēng")+ , (dec 44, const "zài")+ ]
src/Text/Numeral/Misc.hs view
@@ -1,49 +1,21 @@-{-# LANGUAGE CPP- , MagicHash- , NoImplicitPrelude- , PackageImports- , UnicodeSyntax- #-}- module Text.Numeral.Misc where -------------------------------------------------------------------------------- -- Imports -------------------------------------------------------------------------------- -import "base" Prelude ( Integral, (^) )-#if __GLASGOW_HASKELL__ >= 702-import "base" Data.Function ( ($) )-import "base" GHC.Exts ( Int(I#) )-import "base" Prelude ( fromIntegral, toInteger )-import "integer-gmp" GHC.Integer.Logarithms ( integerLogBase# )-#else-import "base" Data.Bool ( otherwise )-import "base" Data.Ord ( (<) )-import "base" Prelude ( div, (+), ($!), error )-#endif+import "this" Math.NumberTheory.Logarithms ( integerLog10' ) -------------------------------------------------------------------------------- -- Misc -------------------------------------------------------------------------------- -- ^ Raise 10 to some power.-dec ∷ (Integral α) ⇒ α → α+dec :: (Integral a) => a -> a dec = (10 ^) -- ^ The (base 10) logarithm of an integral value. Note that the -- result must be able to fit in an ordinary Int value. This means the--- maximum input value is 10 ^ (maxBound ∷ Int).-intLog ∷ (Integral α) ⇒ α → α--- GHC >= 7.2.x-#if __GLASGOW_HASKELL__ >= 702-intLog x = fromIntegral $ I# (integerLogBase# 10 (toInteger x))-#else-intLog x | x < 0 = error "intLog: undefined for negative numbers"- | otherwise = go x 0- where- go n acc = case n `div` 10 of- 0 → acc- 1 → acc + 1- q → go q $! acc + 1-#endif+-- maximum input value is 10 ^ (maxBound :: Int).+intLog :: (Integral a) => a -> a+intLog = fromIntegral . integerLog10' . toInteger
src/Text/Numeral/Render.hs view
@@ -1,8 +1,4 @@-{-# LANGUAGE NoImplicitPrelude- , UnicodeSyntax- , PackageImports- , RecordWildCards- #-}+{-# LANGUAGE RecordWildCards #-} module Text.Numeral.Render ( -- * Rendering numerals@@ -15,27 +11,17 @@ , Ctx(..) , posIndex , isOutside- )- where+ ) where ------------------------------------------------------------------------------- -- Imports ------------------------------------------------------------------------------- -import "base" Data.Bool ( Bool(False, True), otherwise )-import "base" Data.Eq ( Eq )-import "base" Data.Function ( ($) )-import "base" Data.Functor ( (<$>) )-import "base" Data.Maybe ( Maybe(Nothing, Just) )-import "base" Prelude ( (+) )-import "base" Text.Show ( Show )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Monoid.Unicode ( (⊕) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ )-import "text" Data.Text ( Text )-import "this" Text.Numeral.Exp.Reified ( Exp(..), Side(L, R) )-+import "base" Data.Monoid ( (<>) )+import "text" Data.Text ( Text )+import "this" Text.Numeral.Exp ( Exp(..), Side(L, R) )+import "this" Text.Numeral.Grammar ( Inflection(..) ) ------------------------------------------------------------------------------- -- Rendering numerals@@ -43,42 +29,42 @@ -- | Renders an expression to a 'Text' value according to a certain -- representation and inflection.-render ∷ Repr i -- ^ Representation.- → i -- ^ Initial inflection.- → Exp i -- ^ The expression to render.- → Maybe Text+render :: Repr -- ^ Representation.+ -> Inflection -- ^ Initial inflection.+ -> Exp -- ^ The expression to render.+ -> Maybe Text render (Repr {..}) = go CtxEmpty where go _ _ Unknown = reprUnknown go ctx inf (Lit n) = ($ ctx) <$> reprValue inf n- go ctx inf (Neg x) = do x' ← go (CtxNeg ctx) inf x- rn ← reprNeg- rnc ← reprNegCombine+ go ctx inf (Neg x) = do x' <- go (CtxNeg ctx) inf x+ rn <- reprNeg+ rnc <- reprNegCombine Just $ rnc (rn x ctx) x' x- go ctx inf (Add x y) = do x' ← go (CtxAdd L y ctx) inf x- y' ← go (CtxAdd R x ctx) inf y- ra ← reprAdd- rac ← reprAddCombine+ go ctx inf (Add x y) = do x' <- go (CtxAdd L y ctx) inf x+ y' <- go (CtxAdd R x ctx) inf y+ ra <- reprAdd+ rac <- reprAddCombine Just $ rac (ra x y ctx) x' x y' y- go ctx inf (Mul x y) = do x' ← go (CtxMul L y ctx) inf x- y' ← go (CtxMul R x ctx) inf y- rm ← reprMul- rmc ← reprMulCombine+ go ctx inf (Mul x y) = do x' <- go (CtxMul L y ctx) inf x+ y' <- go (CtxMul R x ctx) inf y+ rm <- reprMul+ rmc <- reprMulCombine Just $ rmc (rm x y ctx) x' x y' y- go ctx inf (Sub x y) = do x' ← go (CtxSub L y ctx) inf x- y' ← go (CtxSub R x ctx) inf y- rs ← reprSub- rsc ← reprSubCombine+ go ctx inf (Sub x y) = do x' <- go (CtxSub L y ctx) inf x+ y' <- go (CtxSub R x ctx) inf y+ rs <- reprSub+ rsc <- reprSubCombine Just $ rsc (rs x y ctx) x' x y' y- go ctx inf (Frac x y) = do x' ← go (CtxFrac L y ctx) inf x- y' ← go (CtxFrac R x ctx) inf y- rf ← reprFrac- rfc ← reprFracCombine+ go ctx inf (Frac x y) = do x' <- go (CtxFrac L y ctx) inf x+ y' <- go (CtxFrac R x ctx) inf y+ rf <- reprFrac+ rfc <- reprFracCombine Just $ rfc (rf x y ctx) x' x y' y go ctx inf (Scale b o r) = reprScale inf b o r ctx- go ctx inf (Dual x) = go (CtxDual ctx) inf x- go ctx inf (Plural x) = go (CtxPlural ctx) inf x- go ctx inf (Inflection f x) = go ctx (f inf) x+ go ctx inf (ChangeCase mbCase x) = go ctx (inf {iCase = mbCase }) x+ go ctx inf (ChangeGender mbGender x) = go ctx (inf {iGender = mbGender}) x+ go ctx inf (ChangeNumber mbNumber x) = go ctx (inf {iNumber = mbNumber}) x --------------------------------------------------------------------------------@@ -89,75 +75,75 @@ -- -- A 'Repr' contains all the information on how to render an -- 'Exp'ression to a 'Text' value.-data Repr i =+data Repr = Repr { -- | Representation for unknown values.- reprUnknown ∷ Maybe Text+ reprUnknown :: Maybe Text -- | Renders a literal value. Not necessarily defined for every -- value.- , reprValue ∷ i → ℤ → Maybe (Ctx (Exp i) → Text)+ , reprValue :: Inflection -> Integer -> Maybe (Ctx Exp -> Text) -- | Renders a negation. This concerns the negation itself, not -- the thing being negated.- , reprNeg ∷ Maybe (Exp i → Ctx (Exp i) → Text)+ , reprNeg :: Maybe (Exp -> Ctx Exp -> Text) -- | Renders an addition. This concerns the addition itself, not -- the things being added. For example: In \"one hundred and -- eighty\" this function would be responsible for rendering the -- \"and\".- , reprAdd ∷ Maybe (Exp i → Exp i → Ctx (Exp i) → Text)+ , reprAdd :: Maybe (Exp -> Exp -> Ctx Exp -> Text) -- | Renders a multiplication. This concerns the multiplication -- itself, not the things being multiplied.- , reprMul ∷ Maybe (Exp i → Exp i → Ctx (Exp i) → Text)+ , reprMul :: Maybe (Exp -> Exp -> Ctx Exp -> Text) -- | Renders a subtraction. This concerns the subtraction -- itself, not the things being subtracted.- , reprSub ∷ Maybe (Exp i → Exp i → Ctx (Exp i) → Text)+ , reprSub :: Maybe (Exp -> Exp -> Ctx Exp -> Text) -- | Renders a fraction. This concerns the fraction itself, not -- the numerator or the denominator.- , reprFrac ∷ Maybe (Exp i → Exp i → Ctx (Exp i) → Text)+ , reprFrac :: Maybe (Exp -> Exp -> Ctx Exp -> Text) -- | Renders a step in a scale of large values.- , reprScale ∷ ScaleRepr i+ , reprScale :: ScaleRepr -- | Combines a negation and the thing being negated. For -- example: this would combine \"minus\" and \"three\" into -- \"minus three\".- , reprNegCombine ∷ Maybe (Text → Text → Exp i → Text)+ , reprNegCombine :: Maybe (Text -> Text -> Exp -> Text) -- | Combines an addition and the things being added.- , reprAddCombine ∷ Maybe (Text → Text → Exp i → Text → Exp i → Text)+ , reprAddCombine :: Maybe (Text -> Text -> Exp -> Text -> Exp -> Text) -- | Combines a multiplication and the things being multiplied.- , reprMulCombine ∷ Maybe (Text → Text → Exp i → Text → Exp i → Text)+ , reprMulCombine :: Maybe (Text -> Text -> Exp -> Text -> Exp -> Text) -- | Combines a subtraction and the things being subtracted.- , reprSubCombine ∷ Maybe (Text → Text → Exp i → Text → Exp i → Text)+ , reprSubCombine :: Maybe (Text -> Text -> Exp -> Text -> Exp -> Text) -- | Combines a fraction and the numerator and denominator.- , reprFracCombine ∷ Maybe (Text → Text → Exp i → Text → Exp i → Text)+ , reprFracCombine :: Maybe (Text -> Text -> Exp -> Text -> Exp -> Text) } -- | Function that renders the representation of a step in a scale of -- large values. The value represented by the step is 10 ^ (rank * -- base + offset).-type ScaleRepr i = i- → ℤ -- ^ Base.- → ℤ -- ^ Offset.- → Exp i -- ^ Rank.- → Ctx (Exp i) -- ^ Rank context.- → Maybe Text+type ScaleRepr = Inflection+ -> Integer -- ^ Base.+ -> Integer -- ^ Offset.+ -> Exp -- ^ Rank.+ -> Ctx Exp -- ^ Rank context.+ -> Maybe Text -- | The default representation. -- -- Only the combining functions are defined. The rest are either -- 'Nothing' or always produce 'Nothing'.-defaultRepr ∷ Repr inf+defaultRepr :: Repr defaultRepr = Repr { reprUnknown = Nothing- , reprValue = \_ _ → Nothing+ , reprValue = \_ _ -> Nothing , reprNeg = Nothing , reprAdd = Nothing , reprMul = Nothing , reprSub = Nothing , reprFrac = Nothing- , reprScale = \_ _ _ _ _ → Nothing- , reprNegCombine = Just $ \n x _ → n ⊕ x- , reprAddCombine = Just $ \a x _ y _ → x ⊕ a ⊕ y- , reprMulCombine = Just $ \m x _ y _ → x ⊕ m ⊕ y- , reprSubCombine = Just $ \s x _ y _ → x ⊕ s ⊕ y- , reprFracCombine = Just $ \f n _ d _ → n ⊕ f ⊕ d+ , reprScale = \_ _ _ _ _ -> Nothing+ , reprNegCombine = Just $ \n x _ -> n <> x+ , reprAddCombine = Just $ \a x _ y _ -> x <> a <> y+ , reprMulCombine = Just $ \m x _ y _ -> x <> m <> y+ , reprSubCombine = Just $ \s x _ y _ -> x <> s <> y+ , reprFracCombine = Just $ \f n _ d _ -> n <> f <> d } @@ -166,40 +152,34 @@ -------------------------------------------------------------------------------- -- | A context in which an 'Exp'ression appears.-data Ctx α -- | The empty context. Used for top level expressions.- = CtxEmpty- -- | Negation context.- | CtxNeg (Ctx α)- -- | Addition context.- | CtxAdd Side α (Ctx α)- -- | Multiplication context.- | CtxMul Side α (Ctx α)- -- | Subtraction context.- | CtxSub Side α (Ctx α)- -- | Fraction context.- | CtxFrac Side α (Ctx α)- -- | Scale context.- | CtxScale (Ctx α)- -- | Dual context.- | CtxDual (Ctx α)- -- | Plural context.- | CtxPlural (Ctx α)- deriving (Eq, Show)-+data Ctx a+ -- | The empty context. Used for top level expressions.+ = CtxEmpty+ -- | Negation context.+ | CtxNeg (Ctx a)+ -- | Addition context.+ | CtxAdd Side a (Ctx a)+ -- | Multiplication context.+ | CtxMul Side a (Ctx a)+ -- | Subtraction context.+ | CtxSub Side a (Ctx a)+ -- | Fraction context.+ | CtxFrac Side a (Ctx a)+ -- | Scale context.+ | CtxScale (Ctx a)+ deriving (Eq, Show) -posIndex ∷ Ctx α → ℤ+posIndex :: Ctx a -> Integer posIndex c = go 0 c where- go ∷ ℤ → Ctx α → ℤ+ go :: Integer -> Ctx a -> Integer go acc CtxEmpty = acc go acc (CtxNeg nc) = go acc nc- go acc (CtxAdd as _ ac) = go (acc + if as ≡ L then -1 else 1) ac- go acc (CtxMul ms _ mc) = go (acc + if ms ≡ L then -1 else 1) mc- go acc (CtxSub ss _ sc) = go (acc + if ss ≡ L then -1 else 1) sc- go acc (CtxFrac fs _ fc) = go (acc + if fs ≡ L then -1 else 1) fc+ go acc (CtxAdd as _ ac) = go (acc + if as == L then -1 else 1) ac+ go acc (CtxMul ms _ mc) = go (acc + if ms == L then -1 else 1) mc+ go acc (CtxSub ss _ sc) = go (acc + if ss == L then -1 else 1) sc+ go acc (CtxFrac fs _ fc) = go (acc + if fs == L then -1 else 1) fc go acc (CtxScale sc) = go acc sc- go acc (CtxDual dc) = go acc dc- go acc (CtxPlural pc) = go acc pc -- | Checks whether a context is completely on the outside of an -- expression, either left or right.@@ -211,20 +191,18 @@ -- @ -- -- On the left we have @'Lit' 1000@ and on the right @'Lit' 10@.-isOutside ∷ Side → Ctx α → Bool+isOutside :: Side -> Ctx a -> Bool isOutside s c = go c where- go ∷ Ctx α → Bool+ go :: Ctx a -> Bool go CtxEmpty = True go (CtxNeg nc) = go nc- go (CtxAdd as _ ac) | as ≡ s = go ac+ go (CtxAdd as _ ac) | as == s = go ac | otherwise = False- go (CtxMul ms _ mc) | ms ≡ s = go mc+ go (CtxMul ms _ mc) | ms == s = go mc | otherwise = False- go (CtxSub ss _ sc) | ss ≡ s = go sc+ go (CtxSub ss _ sc) | ss == s = go sc | otherwise = False- go (CtxFrac fs _ fc) | fs ≡ s = go fc+ go (CtxFrac fs _ fc) | fs == s = go fc | otherwise = False go (CtxScale sc) = go sc- go (CtxDual dc) = go dc- go (CtxPlural pc) = go pc
src/Text/Numeral/Render/Utils.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude- , PackageImports- , UnicodeSyntax- #-}- module Text.Numeral.Render.Utils ( addCtx , mulCtx@@ -13,8 +8,6 @@ -- Imports -------------------------------------------------------------------------------- -import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Prelude.Unicode ( ℤ ) import "this" Text.Numeral @@ -22,19 +15,19 @@ -- Utility functions for rendering numerals -------------------------------------------------------------------------------- -addCtx ∷ ℤ → s → (Ctx (Exp i) → s) → Ctx (Exp i) → s+addCtx :: Integer -> s -> (Ctx Exp -> s) -> Ctx Exp -> s addCtx val match other ctx = case ctx of- CtxAdd _ (Lit n) _ | val ≡ n → match- _ → other ctx+ CtxAdd _ (Lit n) _ | val == n -> match+ _ -> other ctx -mulCtx ∷ ℤ → s → (Ctx (Exp i) → s) → Ctx (Exp i) → s+mulCtx :: Integer -> s -> (Ctx Exp -> s) -> Ctx Exp -> s mulCtx val match other ctx = case ctx of- CtxMul _ (Lit n) _ | val ≡ n → match- _ → other ctx+ CtxMul _ (Lit n) _ | val == n -> match+ _ -> other ctx -outsideCtx ∷ Side → s → (Ctx (Exp i) → s) → Ctx (Exp i) → s+outsideCtx :: Side -> s -> (Ctx Exp -> s) -> Ctx Exp -> s outsideCtx side match other ctx = if isOutside side ctx then match
src/Text/Numeral/Rules.hs view
@@ -1,8 +1,3 @@-{-# LANGUAGE NoImplicitPrelude- , PackageImports- , UnicodeSyntax- #-}- {-| Rules to convert numbers to an expression language.@@ -24,8 +19,6 @@ , lit, lit1 , pos, checkPos- , dual, plural- , inflection , add , mul, mul1@@ -36,6 +29,11 @@ , shortScale1, longScale1, pelletierScale1 , mkStep, step, step1++ -- ** Grammar Rules+ , changeCase+ , changeGender+ , changeNumber ) where @@ -43,19 +41,11 @@ -- Imports ------------------------------------------------------------------------------- -import "base" Data.Bool ( Bool, otherwise )-import "base" Data.Function ( ($), id, const, flip, fix )-import "base" Data.List ( foldr )-import "base" Data.Ord ( Ord, (<), (>) )-import "base" Prelude ( Integral, fromIntegral- , Num, (-), abs, divMod, div, even- )-import "base-unicode-symbols" Data.Eq.Unicode ( (≡) )-import "base-unicode-symbols" Data.Function.Unicode ( (∘) )-import "base-unicode-symbols" Prelude.Unicode ( (⋅) )-import "this" Text.Numeral.Exp.Reified ( Side(L, R) )-import "this" Text.Numeral.Misc ( intLog )-import qualified "this" Text.Numeral.Exp as E+import "base" Data.Function ( fix )+import "this" Text.Numeral.Exp ( Side(L, R) )+import qualified "this" Text.Numeral.Exp as E+import qualified "this" Text.Numeral.Grammar as G+import "this" Text.Numeral.Misc ( intLog ) import qualified "fingertree" Data.IntervalMap.FingerTree as FT ( Interval(Interval) , IntervalMap, empty, insert@@ -68,9 +58,9 @@ -------------------------------------------------------------------------------- -- | A rule on how to convert a number into an expression--- language. Notice how this type is equal to the type of the '$'+-- language. Notice how this type is similar to the type of the '$' -- operator.-type Rule α β = (α → β) → (α → β)+type Rule a = (a -> E.Exp) -> (a -> E.Exp) --------------------------------------------------------------------------------@@ -81,38 +71,37 @@ -- | The \'if-then-else\' concept for rules. Applies the first rule if -- the predicate holds on the input value, otherwise applies the -- second rule.-conditional ∷ (α → Bool) -- ^ Predicate on input value (\"if\").- → Rule α β -- ^ Rule to apply when predicate holds (\"then\").- → Rule α β -- ^ Rule to apply when predicate does not hold (\"else\").- → Rule α β-conditional p t e = \f n → if p n+conditional :: (a -> Bool) -- ^ Predicate on input value (\"if\").+ -> Rule a -- ^ Rule to apply when predicate holds (\"then\").+ -> Rule a -- ^ Rule to apply when predicate does not hold (\"else\").+ -> Rule a+conditional p t e = \f n -> if p n then t f n else e f n --- | Tries to apply the first rule, if that produces an 'E.unknown'+-- | Tries to apply the first rule, if that produces an 'E.Unknown' -- value it applies the second rule.-combine ∷ (E.Unknown β)- ⇒ Rule α β- → Rule α β- → Rule α β-combine r1 r2 = \f n → case r1 f n of- x | E.isUnknown x → r2 f n- | otherwise → x+combine :: Rule a+ -> Rule a+ -> Rule a+combine r1 r2 = \f n -> case r1 f n of+ E.Unknown -> r2 f n+ x -> x -- | Transform a value before it is given to a rule.-mapRule ∷ (α → α) → Rule α β → Rule α β-mapRule g r = \f n → r f (g n)+mapRule :: (a -> a) -> Rule a -> Rule a+mapRule g r = \f n -> r f (g n) -- | Chooses which rule to apply to an input value based on a interval -- list of rules.-findRule ∷ (Ord α, Num α, E.Unknown β)- ⇒ (α, Rule α β) -- ^ First interval rule.- → [(α, Rule α β)] -- ^ Interval rule list.- → α -- ^ Upper bound of the last interval.- → Rule α β-findRule x xs end = \f n → case FT.search n xm of- [] → E.unknown- (_,r):_ → r f n+findRule :: (Ord a, Num a)+ => (a, Rule a) -- ^ First interval rule.+ -> [(a, Rule a)] -- ^ Interval rule list.+ -> a -- ^ Upper bound of the last interval.+ -> Rule a+findRule x xs end = \f n -> case FT.search n xm of+ [] -> E.Unknown+ (_,r):_ -> r f n where xm = mkIntervalMap $ mkIntervalList x xs end @@ -126,8 +115,8 @@ -- -- >>> (fix unknown) (3 :: Integer) :: Exp -- Unknown-unknown ∷ (E.Unknown β) ⇒ Rule α β-unknown _ _ = E.unknown+unknown :: Rule a+unknown _ = const E.Unknown -- | The literal rule. Converts its argument into a 'E.lit'eral -- expression.@@ -143,8 +132,8 @@ -- Lit 3 -- >>> (fix lit) (3 :: Integer) :: Exp -- Lit 3-lit ∷ (Integral α, E.Lit β) ⇒ Rule α β-lit = const $ E.lit ∘ fromIntegral+lit :: (Integral a) => Rule a+lit = const $ E.Lit . fromIntegral -- | A variant on the 'lit' rule which always multiplies its argument -- with 1. Useful for languages which have numerals of the form \"one@@ -152,8 +141,8 @@ -- -- >>> lit1 (fix unknown) (3 :: Integer) :: Exp -- Mul (Lit 1) (Lit 3)-lit1 ∷ (Integral α, E.Lit β, E.Mul β) ⇒ Rule α β-lit1 = const $ \n → E.lit 1 `E.mul` E.lit (fromIntegral n)+lit1 :: (Integral a) => Rule a+lit1 = const $ \n -> E.Lit 1 `E.Mul` E.Lit (fromIntegral n) -- | --@@ -161,10 +150,10 @@ -- Lit 3 -- >>> (pos $ lit $ fix unknown) (-3 :: Integer) :: Exp -- Neg (Lit 3)-pos ∷ (Ord α, Num α, E.Lit β, E.Neg β) ⇒ Rule α β-pos f n | n < 0 = E.neg $ f (abs n)+pos :: (Ord a, Num a) => Rule a+pos f n | n < 0 = E.Neg $ f (abs n) | n > 0 = f n- | otherwise = E.lit 0+ | otherwise = E.Lit 0 -- | --@@ -172,202 +161,208 @@ -- Lit 3 -- >>> (checkPos $ lit $ fix unknown) (-3 :: Integer) :: Exp -- Unknown-checkPos ∷ (Ord α, Num α, E.Unknown β, E.Lit β) ⇒ Rule α β-checkPos f n | n < 0 = E.unknown+checkPos :: (Ord a, Num a) => Rule a+checkPos f n | n < 0 = E.Unknown | n > 0 = f n- | otherwise = E.lit 0---- |------ >>> (dual $ lit $ fix unknown) (3 :: Integer) :: Exp--- Dual (Lit 3)-dual ∷ (E.Dual β) ⇒ Rule α β-dual = (∘) E.dual---- |------ >>> (plural $ lit $ fix unknown) (3 :: Integer) :: Exp--- Plural (Lit 3)-plural ∷ (E.Plural β) ⇒ Rule α β-plural = (∘) E.plural+ | otherwise = E.Lit 0 --- | Changes the inflection of a subexpression.-inflection ∷ (E.Inflection β) ⇒ (E.Inf β → E.Inf β) → Rule α β-inflection changeInf = \f n → E.inflection changeInf $ f n+-- -- | Changes the inflection of a subexpression.+-- inflection :: (E.Inflection b) => (Inflection -> Inflection) -> Rule a+-- inflection changeInf = \f n -> E.inflection changeInf $ f n -- | -- -- >>> (add 10 L $ lit $ fix unknown) (13 :: Integer) :: Exp -- Add (Lit 3) (Lit 10)-add ∷ (Num α, E.Add β) ⇒ α → Side → Rule α β-add val s = \f n → (flipIfR s E.add) (f $ n - val) (f val)+add :: (Num a) => a -> Side -> Rule a+add val s = \f n -> (flipIfR s E.Add) (f $ n - val) (f val) -- | -- -- >>> (mul 10 R L $ lit $ fix unknown) (42 :: Integer) :: Exp -- Add (Mul (Lit 4) (Lit 10)) (Lit 2)-mul ∷ (Integral α, E.Add β, E.Mul β) ⇒ α → Side → Side → Rule α β+mul :: (Integral a) => a -> Side -> Side -> Rule a mul val aSide mSide =- \f n → let (m, a) = n `divMod` val- mval = (flipIfR mSide E.mul) (f m) (f val)- in if a ≡ 0- then mval- else (flipIfR aSide E.add) (f a) mval+ \f n -> let (m, a) = n `divMod` val+ mval = (flipIfR mSide E.Mul) (f m) (f val)+ in if a == 0+ then mval+ else (flipIfR aSide E.Add) (f a) mval -mul1 ∷ (Integral α, E.Lit β, E.Add β, E.Mul β)- ⇒ α → Side → Side → Rule α β+mul1 :: (Integral a) => a -> Side -> Side -> Rule a mul1 val aSide mSide =- \f n → let (m, a) = n `divMod` val- mval = if m ≡ 1- then E.lit 1 ⊡ E.lit (fromIntegral val)- else f m ⊡ E.lit (fromIntegral val)- in if a ≡ 0- then mval- else (flipIfR aSide E.add) (f a) mval+ \f n -> let (m, a) = n `divMod` val+ mval = if m == 1+ then E.Lit 1 ⊡ E.Lit (fromIntegral val)+ else f m ⊡ E.Lit (fromIntegral val)+ in if a == 0+ then mval+ else (flipIfR aSide E.Add) (f a) mval where- (⊡) = flipIfR mSide E.mul+ (⊡) = flipIfR mSide E.Mul -- | -- -- >>> (sub 20 $ lit $ fix unknown) (18 :: Integer) :: Exp -- Sub (Lit 2) (Lit 20)-sub ∷ (Integral α, E.Sub β) ⇒ α → Rule α β-sub val = \f n → E.sub (f $ val - n) (f val)+sub :: (Integral a) => a -> Rule a+sub val = \f n -> E.Sub (f $ val - n) (f val) -mkStep ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β)- ⇒ Rule α β -- ^ lit rule- → (α → Side → Rule α β) -- ^ add rule- → (α → Side → Side → Rule α β) -- ^ mul rule- → α → α → Side → Side → Rule α β+mkStep :: (Integral a)+ => Rule a -- ^ lit rule+ -> (a -> Side -> Rule a) -- ^ add rule+ -> (a -> Side -> Side -> Rule a) -- ^ mul rule+ -> a -> a -> Side -> Side -> Rule a mkStep lr ar mr val r aSide mSide- f n | n < val = E.unknown- | n ≡ val = lr f n- | n < val⋅2 = ar val aSide f n- | n < val⋅r = mr val aSide mSide f n- | otherwise = E.unknown+ f n | n < val = E.Unknown+ | n == val = lr f n+ | n < val*2 = ar val aSide f n+ | n < val*r = mr val aSide mSide f n+ | otherwise = E.Unknown -step ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β)- ⇒ α → α → Side → Side → Rule α β+step :: (Integral a) => a -> a -> Side -> Side -> Rule a step = mkStep lit add mul -step1 ∷ (Integral α, E.Unknown β, E.Lit β, E.Add β, E.Mul β)- ⇒ α → α → Side → Side → Rule α β+step1 :: (Integral a) => a -> a -> Side -> Side -> Rule a step1 = mkStep lit1 add mul1 -mulScale_ ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ ( (α → β) -- Parent rule.- → α -- First multiplication value (not converted).- → β -- Second multiplication value (scale step,- -- already converted).- → Side -- Multiplication side.- → β- ) -- ^ Performs the multiplication.- → α -- ^ Base.- → α -- ^ Offset.- → Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β+mulScale_ :: forall a. (Integral a)+ => ( (a -> E.Exp) -- Parent rule.+ -> a -- First multiplication value (not converted).+ -> E.Exp -- Second multiplication value (scale step,+ -- already converted).+ -> Side -- Multiplication side.+ -> E.Exp+ ) -- ^ Performs the multiplication.+ -> a -- ^ Base.+ -> a -- ^ Offset.+ -> Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a mulScale_ doMul base offset aSide mSide bigNumRule =- \f n → let rank = (intLog n - offset) `div` base- base' = fromIntegral base- offset' = fromIntegral offset- rank' = fromIntegral rank- rankExp = (fix bigNumRule) rank- (m, a) = n `divMod` E.scale base' offset' rank'- scale' = E.scale base' offset' rankExp- mval = doMul f m scale' mSide- in if E.isUnknown rankExp- then E.unknown- else if a ≡ 0- then mval- else (flipIfR aSide E.add) (f a) mval+ \f n -> let rank = (intLog n - offset) `div` base -mulScale ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ α -- ^ Base.- → α -- ^ Offset.- → Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β-mulScale = mulScale_ $ \f m scale' mSide →+ base' :: Integer+ base' = fromIntegral base++ offset' :: Integer+ offset' = fromIntegral offset++ rankExp :: E.Exp+ rankExp = (fix bigNumRule) rank++ m, a :: a+ (m, a) = n `divMod` E.evalScale base offset rank++ scale' :: E.Exp+ scale' = E.Scale base' offset' rankExp++ mval = doMul f m scale' mSide++ in case rankExp of+ E.Unknown -> E.Unknown+ _ -> if a == 0+ then mval+ else (flipIfR aSide E.Add) (f a) mval++mulScale :: (Integral a)+ => a -- ^ Base.+ -> a -- ^ Offset.+ -> Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a+mulScale = mulScale_ $ \f m scale' mSide -> case m of- 1 → scale'- _ → (flipIfR mSide E.mul) (f m) scale'+ 1 -> scale'+ _ -> (flipIfR mSide E.Mul) (f m) scale' -mulScale1 ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ α -- ^ Base.- → α -- ^ Offset.- → Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β-mulScale1 = mulScale_ $ \f m scale' mSide → (flipIfR mSide E.mul) (f m) scale'+mulScale1 :: (Integral a)+ => a -- ^ Base.+ -> a -- ^ Offset.+ -> Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a+mulScale1 = mulScale_ $ \f m scale' mSide -> (flipIfR mSide E.Mul) (f m) scale' -shortScale ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β+shortScale :: (Integral a)+ => Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a shortScale = mulScale 3 3 -shortScale1 ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β+shortScale1 :: (Integral a)+ => Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a shortScale1 = mulScale1 3 3 -longScale ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β+longScale :: (Integral a)+ => Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a longScale = mulScale 6 0 -longScale1 ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β+longScale1 :: (Integral a)+ => Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a longScale1 = mulScale1 6 0 -pelletierScale ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β+pelletierScale :: (Integral a)+ => Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a pelletierScale aSide mSide bigNumRule =- conditional (\n → even $ intLog n `div` 3)+ conditional (\n -> even $ intLog n `div` 3) (mulScale 6 0 aSide mSide bigNumRule) (mulScale 6 3 aSide mSide bigNumRule) -pelletierScale1 ∷ (Integral α, E.Scale α, E.Unknown β, E.Add β, E.Mul β, E.Scale β)- ⇒ Side -- ^ Add side.- → Side -- ^ Mul side.- → Rule α β -- ^ Big num rule.- → Rule α β+pelletierScale1 :: (Integral a)+ => Side -- ^ Add side.+ -> Side -- ^ Mul side.+ -> Rule a -- ^ Big num rule.+ -> Rule a pelletierScale1 aSide mSide bigNumRule =- conditional (\n → even $ intLog n `div` 3)+ conditional (\n -> even $ intLog n `div` 3) (mulScale1 6 0 aSide mSide bigNumRule) (mulScale1 6 3 aSide mSide bigNumRule) --------------------------------------------------------------------------------+-- Grammar Rules+--------------------------------------------------------------------------------++changeCase :: Maybe G.Case -> Rule a+changeCase mbCase = \f n -> E.ChangeCase mbCase $ f n++changeGender :: Maybe G.Gender -> Rule a+changeGender mbGender = \f n -> E.ChangeGender mbGender $ f n++changeNumber :: Maybe G.Number -> Rule a+changeNumber mbNumber = \f n -> E.ChangeNumber mbNumber $ f n++-------------------------------------------------------------------------------- -- Miscellaneous -------------------------------------------------------------------------------- -flipIfR ∷ Side → (α → α → α) → (α → α → α)+flipIfR :: Side -> (a -> a -> a) -> (a -> a -> a) flipIfR L = id flipIfR R = flip -mkIntervalList ∷ (Num a) ⇒ (a, b) → [(a, b)] → a → [((a, a), b)]+mkIntervalList :: (Num a) => (a, b) -> [(a, b)] -> a -> [((a, a), b)] mkIntervalList (k, r) krs end = go k r krs where go k1 r1 [] = [((k1, end), r1)] go k1 r1 ((k2, r2):xs) = ((k1, k2-1), r1) : go k2 r2 xs -mkIntervalMap ∷ (Ord v) ⇒ [((v, v), α)] → FT.IntervalMap v α+mkIntervalMap :: (Ord v) => [((v, v), a)] -> FT.IntervalMap v a mkIntervalMap = foldr ins FT.empty where ins ((lo, hi), n) = FT.insert (FT.Interval lo hi) n-