forked from GitHub/gf-rgl
added Decimals
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
|
||||||
-- } ;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user