The new Decimal API

This commit is contained in:
Krasimir Angelov
2023-08-21 20:14:26 +02:00
parent 58da8deca8
commit fb398c603e
147 changed files with 918 additions and 188 deletions
+2
View File
@@ -31,6 +31,8 @@ lincat
-- Numeral
Numeral = {s : Gender => Case => Str ; n : NumAgr} ;
Digits = {s : Str ; n : NumAgr} ;
Decimal = {s : Str ; n : NumAgr ; hasDot : Bool} ;
-- Structural
Conj = {s : Str; n : Number} ;
+9 -1
View File
@@ -58,7 +58,15 @@ concrete NounSlv of Noun = CatSlv ** open ResSlv,Prelude in {
NumCard n = n ;
NumNumeral numeral = {s = numeral.s; n = numeral.n} ;
NumNumeral numeral = numeral ;
NumDigits digits = {
s = \\g,c => digits.s;
n = digits.n
} ;
NumDecimal decimal = {
s = \\g,c => decimal.s;
n = decimal.n
} ;
DefArt = {
s = \\_,_,_ => "" ;
+17 -3
View File
@@ -1,4 +1,4 @@
concrete NumeralSlv of Numeral = CatSlv [Numeral,Digits] ** open Prelude, ResSlv in {
concrete NumeralSlv of Numeral = CatSlv [Numeral,Digits,Decimal] ** open Prelude, ResSlv in {
lincat
Digit = {s : DForm => Case => Str; n : NumAgr} ;
@@ -200,12 +200,12 @@ oper mkDigit2 : (_,_,_,_,_,_ : Str) -> Gender => Case => Str;
Dig = TDigit ;
lin
IDig d = d ;
IDig d = d ** {n=UseNum d.n};
IIDig d i = {
s = d.s ++ BIND ++ i.s ;
---- s = \\o => d.s ! NCard Masc ++ BIND ++ i.s ! o ;
n = Pl
n = UseNum Pl
} ;
D_0 = mkDig "0" ;
@@ -219,6 +219,20 @@ oper mkDigit2 : (_,_,_,_,_,_ : Str) -> Gender => Case => Str;
D_8 = mkDig "8" ;
D_9 = mkDig "9" ;
PosDecimal d = d ** {hasDot=False} ;
NegDecimal d = {
s = "-" ++ BIND ++ d.s ;
n = UseNum Pl ;
hasDot=False
} ;
IFrac d i = {
s = d.s ++
if_then_Str d.hasDot BIND (BIND++"."++BIND) ++
i.s ;
n = UseNum Pl ;
hasDot=True
} ;
oper
mkDig : Str -> TDigit = \c -> mk2Dig c Pl ;