floating point numerals

This commit is contained in:
Krasimir Angelov
2023-07-24 20:06:01 +02:00
parent cb26429655
commit 5d912f78a4
17 changed files with 50 additions and 3 deletions

View File

@@ -58,6 +58,7 @@ abstract Noun = Cat ** {
data data
NumDigits : Digits -> Card ; -- 51 NumDigits : Digits -> Card ; -- 51
NumFloat : Digits -> Digits -> Card ; -- 3.14
NumNumeral : Numeral -> Card ; -- fifty-one NumNumeral : Numeral -> Card ; -- fifty-one
-- The construction of numerals is defined in [Numeral Numeral.html]. -- The construction of numerals is defined in [Numeral Numeral.html].

View File

@@ -77,6 +77,8 @@ concrete NounAfr of Noun = CatAfr ** open ResAfr, Prelude in {
NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ; OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ;
NumFloat n1 n2 = {s = \\g,c => n1.s ! NCard Neutr Nom ++ BIND ++ "." ++ BIND ++ n1.s ! NCard g c; n = Pl } ;
NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ; OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ;

View File

@@ -118,6 +118,8 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
NumDigits n = {s = \\gspec => n.s ! NCard gspec; nn = case n.n of {Sg => NNum Sg; Pl => NCountable}} ; NumDigits n = {s = \\gspec => n.s ! NCard gspec; nn = case n.n of {Sg => NNum Sg; Pl => NCountable}} ;
OrdDigits n = {s = \\aform => n.s ! NOrd aform} ; OrdDigits n = {s = \\aform => n.s ! NOrd aform} ;
NumFloat n1 n2 = {s = \\gspec => n1.s ! NCard (CFMasc Indef NonHuman) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard gspec ; nn = NCountable} ;
NumNumeral numeral = {s = \\gspec => numeral.s ! NCard gspec; nn = case numeral.n of {Sg => NNum Sg; Pl => NCountable}} ; NumNumeral numeral = {s = \\gspec => numeral.s ! NCard gspec; nn = case numeral.n of {Sg => NNum Sg; Pl => NCountable}} ;
OrdNumeral numeral = {s = \\aform => numeral.s ! NOrd aform} ; OrdNumeral numeral = {s = \\aform => numeral.s ! NOrd aform} ;

View File

@@ -1,8 +1,9 @@
concrete NamesChi of Names = CatChi ** { concrete NamesChi of Names = CatChi ** {
lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ; lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ** {det = []} ;
lin FullName gn sn = { lin FullName gn sn = {
s = gn.s ++ sn.s s = gn.s ++ sn.s ;
det = []
} ; } ;
} }

View File

@@ -85,6 +85,8 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in {
NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ; OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ;
NumFloat n1 n2 = {s = \\g,c => n1.s ! NCard Utr Nom ++ BIND ++ "." ++ BIND ++ n2.s ! NCard g c; n = Pl } ;
NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
OrdNumeral numeral = {s = let tiende : AForm => Str = \\af => numeral.s ! NOrd af OrdNumeral numeral = {s = let tiende : AForm => Str = \\af => numeral.s ! NOrd af
in table {APred => tiende ! AAttr Utr ; in table {APred => tiende ! AAttr Utr ;

View File

@@ -77,6 +77,8 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
NumDigits n = {s,sp = \\_ => n.s ! NCard ; n = n.n} ; NumDigits n = {s,sp = \\_ => n.s ! NCard ; n = n.n} ;
OrdDigits n = {s = n.s ! NOrd} ; OrdDigits n = {s = n.s ! NOrd} ;
NumFloat n1 n2 = {s,sp = \\_,c => n1.s ! NCard ! Nom ++ BIND ++ "." ++ BIND ++ n2.s ! NCard ! c ; n = Pl} ;
NumNumeral numeral = {s,sp = \\d => numeral.s ! d ! NCard; n = numeral.n} ; NumNumeral numeral = {s,sp = \\d => numeral.s ! d ! NCard; n = numeral.n} ;
OrdNumeral numeral = {s = numeral.s ! True ! NOrd} ; OrdNumeral numeral = {s = numeral.s ! True ! NOrd} ;

View File

@@ -120,6 +120,11 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in
} ; } ;
OrdDigits numeral = {s = \\nc => numeral.s ! NOrd nc} ; OrdDigits numeral = {s = \\nc => numeral.s ! NOrd nc} ;
NumFloat n1 n2 = {
s = \\n,c => n1.s ! NCard (NCase Sg Nom) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard (NCase n c) ;
n = Pl
} ;
NumNumeral numeral = { NumNumeral numeral = {
s = \\n,c => numeral.s ! NCard (NCase n c) ; s = \\n,c => numeral.s ! NCard (NCase n c) ;
n = numeral.n n = numeral.n

View File

@@ -143,6 +143,11 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
} ; } ;
OrdDigits numeral = {s = \\f => numeral.s ! NOrd f} ; OrdDigits numeral = {s = \\f => numeral.s ! NOrd f} ;
NumFloat n1 n2 = {
s = \\n,c => n1.s ! NCard (NCase Sg Nom) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard (NCase n c) ;
n = Pl
} ;
NumNumeral numeral = { NumNumeral numeral = {
s = \\n,c => numeral.s ! NCard (NCase n c) ; s = \\n,c => numeral.s ! NCard (NCase n c) ;
n = numeral.n n = numeral.n

View File

@@ -122,6 +122,8 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ; OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ;
NumFloat dig1 dig2 = {s = \\g,c => dig1.s ! invNum ++ BIND ++ "." ++ BIND ++ dig2.s ! NCard g c ; n = Pl } ;
NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ; NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ; OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ;

View File

@@ -107,6 +107,12 @@ concrete NounKor of Noun = CatKor ** open ResKor, Prelude in {
numtype = IsDig numtype = IsDig
} ; } ;
NumFloat dig1 dig2 = baseNum ** {
s = \\_,_ => dig1.s ! NCard ++ BIND ++ "." ++ BIND ++ dig2.s ! NCard ;
n = Pl ;
numtype = IsDig
} ;
-- : Numeral -> Card ; -- : Numeral -> Card ;
NumNumeral num = num ; NumNumeral num = num ;

View File

@@ -189,6 +189,10 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude, Maybe in {
-- 51 -- 51
NumDigits d = {s = d.s ; n = d.n} ; NumDigits d = {s = d.s ; n = d.n} ;
-- Digits -> Digits -> Card
-- 3.14
NumFloat d1 d2 = {s = \\c => d1.s ! NumNom ++ BIND ++ "." ++ BIND ++ d2.s ! c ; n = d1.n} ;
-- Digits -> Ord -- Digits -> Ord
-- 51st -- 51st
OrdDigits d = {s = d.s} ; OrdDigits d = {s = d.s} ;

View File

@@ -164,6 +164,8 @@ concrete NounPol of Noun = CatPol ** open ResPol, Prelude, PronounMorphoPol, Mor
-- NumDigits : Digits -> Card ; -- 51 -- NumDigits : Digits -> Card ; -- 51
NumDigits n = { s=\\_,_ => n.s; a=n.a; n=n.n }; NumDigits n = { s=\\_,_ => n.s; a=n.a; n=n.n };
NumFloat n1 n2 = { s=\\_,_ => n1.s ++ BIND ++ "." ++ BIND ++ n2.s; a=n1.a; n=Pl };
-- NumCard : Card -> Num ; -- NumCard : Card -> Num ;
NumCard c = c ** { hasCard = True }; NumCard c = c ** { hasCard = True };

View File

@@ -96,6 +96,8 @@ incomplete concrete NounRomance of Noun =
NumDigits nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ; NumDigits nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ;
OrdDigits nu = {s = \\a => nu.s ! NOrd a.g a.n} ; OrdDigits nu = {s = \\a => nu.s ! NOrd a.g a.n} ;
NumFloat n1 n2 = {s = \\g => n1.s ! NCard Masc ++ BIND ++ "." ++ BIND ++ n2.s ! NCard g ; n = Pl} ;
NumNumeral nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ; NumNumeral nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ;
OrdNumeral nu = {s = \\a => nu.s ! NOrd a.g a.n} ; OrdNumeral nu = {s = \\a => nu.s ! NOrd a.g a.n} ;

View File

@@ -172,6 +172,9 @@ in {
isPre = True isPre = True
}; };
NumFloat n1 n2 = {s,sp = \\g => n1.s ! NCard g ++ BIND ++ "." ++ BIND ++ n2.s ! NCard g ;
size = n1.n; n = Pl };
NumNumeral nu = {s = \\g => nu.s ! ANomAcc ! (NCard g) ! Formal ; NumNumeral nu = {s = \\g => nu.s ! ANomAcc ! (NCard g) ! Formal ;
sp = \\g => nu.sp ! ANomAcc ! (NCard g) ! Formal ; sp = \\g => nu.sp ! ANomAcc ! (NCard g) ! Formal ;
n = getNumber nu.size ; size = nu.size }; n = getNumber nu.size ; size = nu.size };

View File

@@ -87,6 +87,8 @@ lin
-- : Digits -> Card ; -- 51 -- : Digits -> Card ; -- 51
NumDigits n = {s = \\_,_,_ => n.s ; size = n.size } ; NumDigits n = {s = \\_,_,_ => n.s ; size = n.size } ;
NumFloat n1 n2 = {s = \\_,_,_ => n1.s ++ BIND ++ "." ++ BIND ++ n2.s ; size = n1.size } ;
-- : Quant -> Num -> Det ; -- these five -- : Quant -> Num -> Det ; -- these five
DetQuant quant num = { DetQuant quant num = {
s=\\g,anim,cas => quant.s ! (gennum g (numSizeNumber num.size)) ! anim ! cas ++ num.s ! g ! anim ! cas ; s=\\g,anim,cas => quant.s ! (gennum g (numSizeNumber num.size)) ! anim ! cas ++ num.s ! g ! anim ! cas ;

View File

@@ -110,6 +110,8 @@ incomplete concrete NounScand of Noun =
NumDigits nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ; NumDigits nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ;
OrdDigits nu = {s = nu.s ! NOrd SupWeak} ; OrdDigits nu = {s = nu.s ! NOrd SupWeak} ;
NumFloat n1 n2 = {s = \\g => n1.s ! NCard neutrum ++ BIND ++ "." ++ BIND ++ n2.s ! NCard g ; n = Pl} ;
NumNumeral nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ; NumNumeral nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ;
OrdNumeral nu = {s = nu.s ! NOrd SupWeak} ; OrdNumeral nu = {s = nu.s ! NOrd SupWeak} ;

View File

@@ -176,6 +176,10 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude
s = n.s ! NCard ; n = n.n s = n.s ! NCard ; n = n.n
} ; } ;
NumFloat n1 n2 = {
s = \\n,c => n1.s ! NCard ! Sg ! Nom ++ BIND ++ "." ++ BIND ++ n2.s ! NCard ! n ! c ; n = Pl
} ;
OrdNumeralSuperl n a = { OrdNumeralSuperl n a = {
s = \\num,cs => (n.s ! NOrd ! Sg ! cs) ++ a.s ! Sg ! cs s = \\num,cs => (n.s ! NOrd ! Sg ! cs) ++ a.s ! Sg ! cs
} ; } ;