diff options
Diffstat (limited to 'std')
-rw-r--r-- | std/Number/Conversion.bruijn | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/std/Number/Conversion.bruijn b/std/Number/Conversion.bruijn index 2f6681a..a7eee30 100644 --- a/std/Number/Conversion.bruijn +++ b/std/Number/Conversion.bruijn @@ -15,15 +15,13 @@ unary→ternary [0 T.inc (+0t)] ⧗ Unary → Ternary :test (¹³(+0u)) ((+0t)) :test (¹³(+2u)) ((+2t)) -binary→unary [[0 (+0u) [U.inc (2 0)] 1]] (U.mul (+2u)) ⧗ Binary → Unary +# converts unary numbers to bruijn +unary→bruijn &k ⧗ Unary → Bruijn -# converts ternary numbers to unary -ternary→unary [T.apply 0 U.inc (+0u)] ⧗ Ternary → Unary - -³¹‣ ternary→unary +¹ᵇ‣ unary→bruijn -:test (³¹(+0t)) ((+0u)) -:test (³¹(+2t)) ((+2u)) +:test (¹ᵇ(+0u)) ((+0d)) +:test (¹ᵇ(+2u)) ((+2d)) # converts Parigot numbers to unary parigot→unary [[[P.iter 0 1 2]]] ⧗ Parigot → Unary @@ -33,6 +31,14 @@ parigot→unary [[[P.iter 0 1 2]]] ⧗ Parigot → Unary :test (ᵖ¹P.zero) ((+0u)) :test (ᵖ¹(P.inc (P.inc P.zero))) ((+2u)) +# converts binary numbers to unary +binary→unary [[0 (+0u) [U.inc (2 0)] 1]] (U.mul (+2u)) ⧗ Binary → Unary + +²¹‣ binary→unary + +:test (²¹(+0b)) ((+0u)) +:test (²¹(+2b)) ((+2u)) + # converts binary numbers to ternary # constructs reversed path of composed functions and applies to ternary binary→ternary [y [[[rec]]] [0] 0 (+0t)] ⧗ Binary → Ternary @@ -45,6 +51,14 @@ binary→ternary [y [[[rec]]] [0] 0 (+0t)] ⧗ Binary → Ternary :test (T.eq? ²³(+0b) (+0t)) ([[1]]) :test (T.eq? ²³(+42b) (+42t)) ([[1]]) +# converts ternary numbers to unary +ternary→unary [T.apply 0 U.inc (+0u)] ⧗ Ternary → Unary + +³¹‣ ternary→unary + +:test (³¹(+0t)) ((+0u)) +:test (³¹(+2t)) ((+2u)) + # converts numbers to binary # constructs reversed path of composed functions and applies to ternary ternary→binary [y [[[rec]]] [0] 0 (+0b)] ⧗ Ternary → Binary |