1
0
forked from GitHub/gf-rgl

added Decimals

This commit is contained in:
Krasimir Angelov
2023-08-23 05:34:30 +02:00
parent 39e01f04ab
commit 54f5b687fe
2 changed files with 33 additions and 51 deletions

View File

@@ -128,7 +128,8 @@ concrete CatZul of Cat = CommonX - [Temp,Tense,Adv,IAdv] **
-- Numeral -- Numeral
-- Numeral = {s : Bool => CardOrd => Case => Str ; n : Number} ; -- Numeral = {s : Bool => CardOrd => Case => Str ; n : Number} ;
-- Digits = {s : CardOrd => Case => Str ; n : Number ; tail : DTail} ; Digits = {s : Str} ;
Decimal = {s : Str; hasDot : Bool} ;
-- Structural -- Structural

View File

@@ -1,4 +1,4 @@
concrete NumeralZul of Numeral = CatZul [Numeral,Digits] ** open Prelude, ResZul in { concrete NumeralZul of Numeral = CatZul [Numeral,Digits,Decimal] ** open Prelude, ResZul in {
-- lincat -- lincat
-- Digit = {s : DForm => CardOrd => Case => Str} ; -- Digit = {s : DForm => CardOrd => Case => Str} ;
@@ -42,54 +42,35 @@ concrete NumeralZul of Numeral = CatZul [Numeral,Digits] ** open Prelude, ResZul
-- lin pot3plus n m = { -- lin pot3plus n m = {
-- s = \\d,o,c => n.s ! d ! NCard ! Nom ++ "thousand" ++ m.s ! False ! o ! c; n = Pl} ; -- s = \\d,o,c => n.s ! d ! NCard ! Nom ++ "thousand" ++ m.s ! False ! o ! c; n = Pl} ;
-- --
-- -- numerals as sequences of digits -- numerals as sequences of digits
-- lincat Dig = {s:Str} ;
-- lincat
-- Dig = TDigit ; lin
-- IDig d = d ;
-- lin
-- IDig d = d ** {tail = T1} ; IIDig d dd = {s = d.s ++ Predef.BIND ++ dd.s} ;
--
-- IIDig d i = { D_0 = { s = "0"} ;
-- s = \\o,c => d.s ! NCard ! Nom ++ commaIf i.tail ++ i.s ! o ! c ; D_1 = { s = "1"} ;
-- n = Pl ; D_2 = { s = "2"} ;
-- tail = inc i.tail D_3 = { s = "3"} ;
-- } ; D_4 = { s = "4"} ;
-- D_5 = { s = "5"} ;
-- D_0 = mkDig "0" ; D_6 = { s = "6"} ;
-- D_1 = mk3Dig "1" "1st" Sg ; D_7 = { s = "7"} ;
-- D_2 = mk2Dig "2" "2nd" ; D_8 = { s = "8"} ;
-- D_3 = mk2Dig "3" "3rd" ; D_9 = { s = "9"} ;
-- D_4 = mkDig "4" ;
-- D_5 = mkDig "5" ; PosDecimal d = d ** {hasDot=False} ;
-- D_6 = mkDig "6" ; NegDecimal d = {
-- D_7 = mkDig "7" ; s = "-" ++ Predef.BIND ++ d.s ;
-- D_8 = mkDig "8" ; hasDot=False
-- D_9 = mkDig "9" ; } ;
-- IFrac d i = {
-- oper s = d.s ++
-- commaIf : DTail -> Str = \t -> case t of { if_then_Str d.hasDot BIND (BIND++"."++BIND) ++
-- T3 => BIND ++ "," ++ BIND ; i.s ;
-- _ => BIND hasDot=True
-- } ; } ;
--
-- inc : DTail -> DTail = \t -> case t of {
-- T1 => T2 ;
-- T2 => T3 ;
-- T3 => T1
-- } ;
--
-- mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
-- mkDig : Str -> TDigit = \c -> mk2Dig c (c + "th") ;
--
-- mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
-- s = table {NCard => regGenitiveS c ; NOrd => regGenitiveS o} ;
-- n = n
-- } ;
--
-- TDigit = {
-- n : Number ;
-- s : CardOrd => Case => Str
-- } ;
} }