mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-24 18:46:28 -06:00
The new Decimal API
This commit is contained in:
@@ -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} ;
|
||||
|
||||
@@ -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 = \\_,_,_ => "" ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user