forked from GitHub/gf-rgl
floating point numerals
This commit is contained in:
@@ -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].
|
||||||
|
|||||||
@@ -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} ;
|
||||||
|
|
||||||
|
|||||||
@@ -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} ;
|
||||||
|
|
||||||
|
|||||||
@@ -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 = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 ;
|
||||||
|
|||||||
@@ -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} ;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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} ;
|
||||||
|
|
||||||
|
|||||||
@@ -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 ;
|
||||||
|
|
||||||
|
|||||||
@@ -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} ;
|
||||||
|
|||||||
@@ -163,6 +163,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 };
|
||||||
|
|||||||
@@ -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} ;
|
||||||
|
|
||||||
|
|||||||
@@ -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 };
|
||||||
@@ -306,4 +309,4 @@ in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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 ;
|
||||||
|
|||||||
@@ -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} ;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user