(Hun) Make numerals take singular noun

This commit is contained in:
Inari Listenmaa
2020-04-17 13:28:58 +02:00
parent f5068a76de
commit 5430d8b450

View File

@@ -8,7 +8,6 @@ lincat
Sub1000, Sub1000,
Sub1000000 = ResHun.Numeral ; Sub1000000 = ResHun.Numeral ;
lin lin
-- TODO: Add case inflection and ordinal forms to all numerals -- TODO: Add case inflection and ordinal forms to all numerals
-- : Sub1000000 -> Numeral -- : Sub1000000 -> Numeral
@@ -30,48 +29,48 @@ lin
pot0 d = d ; pot0 d = d ;
-- : Sub100 ; -- 10 -- : Sub100 ; -- 10
pot110 = {s = table {p => "tíz"} ; n = Pl ; numtype = IsNum} ; pot110 = {s = table {p => "tíz"} ; n = numNumber ; numtype = IsNum} ;
-- : Sub100 ; -- 11 -- : Sub100 ; -- 11
pot111 = {s = table {p => "tizenegy"} ; n = Pl ; numtype = IsNum} ; pot111 = {s = table {p => "tizenegy"} ; n = numNumber ; numtype = IsNum} ;
-- : Digit -> Sub100 ; -- 10 + d -- : Digit -> Sub100 ; -- 10 + d
pot1to19 d = pot1to19 d =
{s = table {p => "tizen" ++ d.s ! <Unit,p>} ; {s = table {p => "tizen" ++ d.s ! <Unit,p>} ;
n = Pl ; numtype = IsNum} ; n = numNumber ; numtype = IsNum} ;
-- : Sub10 -> Sub100 ; -- coercion of 1..9 -- : Sub10 -> Sub100 ; -- coercion of 1..9
pot0as1 n = pot0as1 n =
{s = table {p => n.s ! <Unit,p>} ; {s = table {p => n.s ! <Unit,p>} ;
n = Pl ; numtype = IsNum} ; n = numNumber ; numtype = IsNum} ;
-- : Digit -> Sub100 ; -- d * 10 -- : Digit -> Sub100 ; -- d * 10
pot1 d = pot1 d =
{s = table {p => d.s ! <Ten,p>} ; {s = table {p => d.s ! <Ten,p>} ;
n = Pl ; numtype = IsNum} ; n = numNumber ; numtype = IsNum} ;
-- : Digit -> Sub10 -> Sub100 ; -- d * 10 + n -- : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
pot1plus d e = pot1plus d e =
{s = table {p => (d.s ! <Ten,Attrib>) ++ e.s ! <Unit,p>} ; {s = table {p => (d.s ! <Ten,Attrib>) ++ e.s ! <Unit,p>} ;
n = Pl ; numtype = IsNum} ; n = numNumber ; numtype = IsNum} ;
-- : Sub100 -> Sub1000 ; -- coercion of 1..99 -- : Sub100 -> Sub1000 ; -- coercion of 1..99
pot1as2 n = n ; pot1as2 n = n ;
-- : Sub10 -> Sub1000 ; -- m * 100 -- : Sub10 -> Sub1000 ; -- m * 100
pot2 d = pot2 d =
{s = table {p => (d.s ! <Unit,Attrib>) ++ "száz"} ; {s = table {p => (d.s ! <Unit,Attrib>) ++ "száz"} ;
n = Pl ; numtype = IsNum} ; n = numNumber ; numtype = IsNum} ;
-- : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n -- : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
pot2plus d e = pot2plus d e =
{s = table {p => (d.s ! <Unit,Attrib>) ++ "száz" ++ e.s ! p} ; {s = table {p => (d.s ! <Unit,Attrib>) ++ "száz" ++ e.s ! p} ;
n = Pl ; numtype = IsNum} ; n = numNumber ; numtype = IsNum} ;
-- : Sub1000 -> Sub1000000 ; -- coercion of 1..999 -- : Sub1000 -> Sub1000000 ; -- coercion of 1..999
pot2as3 n = n ; pot2as3 n = n ;
-- : Sub1000 -> Sub1000000 ; -- m * 1000 -- : Sub1000 -> Sub1000000 ; -- m * 1000
pot3 n = pot3 n =
{s = table {p => n.s ! Attrib ++ "ezer"} ; {s = table {p => n.s ! Attrib ++ "ezer"} ;
n = Pl ; numtype = IsNum} ; n = numNumber ; numtype = IsNum} ;
-- : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n -- : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
pot3plus n m = pot3plus n m =
{s = table {p => n.s ! Attrib ++ "ezer" ++ m.s ! p} ; {s = table {p => n.s ! Attrib ++ "ezer" ++ m.s ! p} ;
n = Pl ; numtype = IsNum} ; n = numNumber ; numtype = IsNum} ;
oper oper
LinDigit : Type = {s : DForm*Place => Str ; n : Number} ; LinDigit : Type = {s : DForm*Place => Str ; n : Number} ;
@@ -85,8 +84,9 @@ oper
<Unit,Attrib> => ua ; <Unit,Attrib> => ua ;
<Ten, Attrib> => ta } ; <Ten, Attrib> => ta } ;
-- ord = ord ; -- TODO figure out where to use ordinal -- ord = ord ; -- TODO figure out where to use ordinal
n = Pl ; n = numNumber ;
numType = IsNum ; numType = IsNum ;
} ; } ;
} numNumber = Sg ;