mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-31 05:38:55 -06:00
Experimenting with transfer.
This commit is contained in:
45
grammars/numerals/Num2Bin.gf
Normal file
45
grammars/numerals/Num2Bin.gf
Normal file
@@ -0,0 +1,45 @@
|
||||
transfer Num2Bin : Numerals -> Nat = {
|
||||
transfer Numeral = num2bin ;
|
||||
|
||||
fun num2bin : Numeral -> Bin ;
|
||||
def num2bin n = num2nat (nat2bin n) ;
|
||||
|
||||
fun
|
||||
num2nat : Numeral -> Nat ;
|
||||
sub1000000_2nat : Sub1000000 -> Nat ;
|
||||
sub1000_2nat : Sub1000 -> Nat ;
|
||||
sub100_2nat : Sub100 -> Nat ;
|
||||
sub10_2nat : Sub10 -> Nat ;
|
||||
digit2nat : Digit -> Nat ;
|
||||
|
||||
def
|
||||
num2nat (num n) = sub1000000_2nat n ;
|
||||
---
|
||||
sub1000000_2nat (pot2as3 n) = sub1000_2nat n ;
|
||||
---
|
||||
sub1000_2nat (pot1as2 n) = sub100_2nat n ;
|
||||
---
|
||||
sub100_2nat (pot0as1 n) = sub10_2nat n ;
|
||||
sub100_2nat (pot1 d) = tenTimes (digit2nat d) ;
|
||||
---
|
||||
sub10_2nat (pot0 d) = digit2nat d ;
|
||||
|
||||
digit2nat n2 = Succ One ;
|
||||
digit2nat n3 = Succ (digit2nat n2) ;
|
||||
digit2nat n4 = Succ (digit2nat n3) ;
|
||||
digit2nat n5 = Succ (digit2nat n4) ;
|
||||
digit2nat n6 = Succ (digit2nat n5) ;
|
||||
digit2nat n7 = Succ (digit2nat n6) ;
|
||||
digit2nat n8 = Succ (digit2nat n7) ;
|
||||
digit2nat n9 = Succ (digit2nat n8) ;
|
||||
|
||||
fun
|
||||
tenTimes : Nat -> Nat ;
|
||||
tenPlus, ninePlus : Nat -> Nat ;
|
||||
def
|
||||
tenTimes One = ninePlus One ; -- the price to pay for starting from One
|
||||
tenTimes (Succ n) = tenPlus (tenTimes n) ;
|
||||
|
||||
tenPlus n = Succ (ninePlus n) ;
|
||||
ninePlus n = Succ (double (double (double One))) ;
|
||||
}
|
||||
Reference in New Issue
Block a user