aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/translation/ruby
diff options
context:
space:
mode:
authorEduardo Julian2018-05-06 23:27:12 -0400
committerEduardo Julian2018-05-06 23:27:12 -0400
commitfb72b937aba7886ce204379e97aa06c327a4029f (patch)
tree20bc243f1605c5b6c37b833b8046b82eac805494 /new-luxc/source/luxc/lang/translation/ruby
parent0b53bcc87ad3563daedaa64306d0bbe6df01ca49 (diff)
- Implemented Nat functionality in pure Lux.
Diffstat (limited to 'new-luxc/source/luxc/lang/translation/ruby')
-rw-r--r--new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux47
-rw-r--r--new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux35
2 files changed, 3 insertions, 79 deletions
diff --git a/new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux
index a13dae50b..e38dfff28 100644
--- a/new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux
+++ b/new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux
@@ -233,9 +233,6 @@
Nullary
(<encode> <const>))]
- [nat//min 0 ruby.int]
- [nat//max -1 ruby.int]
-
[frac//smallest Double::MIN_VALUE ruby.float]
[frac//min (f/* -1.0 Double::MAX_VALUE) ruby.float]
[frac//max Double::MAX_VALUE ruby.float]
@@ -282,12 +279,6 @@
[int//div ruby./]
[int//rem ruby.%]
- [nat//add ruby.+]
- [nat//sub ruby.-]
- [nat//mul ruby.*]
- [nat//div runtimeT.nat///]
- [nat//rem runtimeT.nat//%]
-
[deg//add ruby.+]
[deg//sub ruby.-]
[deg//mul runtimeT.deg//*]
@@ -319,21 +310,10 @@
Binary
(<cmp> paramO subjectO))]
- [nat//= ruby.=]
- [nat//< runtimeT.nat//<]
[int//= ruby.=]
[int//< ruby.<]
[deg//= ruby.=]
- [deg//< runtimeT.nat//<])
-
-(do-template [<name>]
- [(def: (<name> inputO)
- Unary
- inputO)]
-
- [nat//to-int]
- [int//to-nat]
- )
+ [deg//< ruby.<])
(def: frac//encode
Unary
@@ -370,26 +350,6 @@
[frac//to-deg runtimeT.deg//from-frac]
)
-(def: nat//char
- Unary
- (ruby.send "chr" (list)))
-
-(def: nat-procs
- Bundle
- (<| (prefix "nat")
- (|> (dict.new text.Hash<Text>)
- (install "+" (binary nat//add))
- (install "-" (binary nat//sub))
- (install "*" (binary nat//mul))
- (install "/" (binary nat//div))
- (install "%" (binary nat//rem))
- (install "=" (binary nat//=))
- (install "<" (binary nat//<))
- (install "min" (nullary nat//min))
- (install "max" (nullary nat//max))
- (install "to-int" (unary nat//to-int))
- (install "char" (unary nat//char)))))
-
(def: int-procs
Bundle
(<| (prefix "int")
@@ -403,8 +363,8 @@
(install "<" (binary int//<))
(install "min" (nullary int//min))
(install "max" (nullary int//max))
- (install "to-nat" (unary int//to-nat))
- (install "to-frac" (unary int//to-frac)))))
+ (install "to-frac" (unary int//to-frac))
+ (install "char" (unary (ruby.send "chr" (list)))))))
(def: deg-procs
Bundle
@@ -647,7 +607,6 @@
(<| (prefix "lux")
(|> lux-procs
(dict.merge bit-procs)
- (dict.merge nat-procs)
(dict.merge int-procs)
(dict.merge deg-procs)
(dict.merge frac-procs)
diff --git a/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux
index c3f2981e1..7f66b0cd5 100644
--- a/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux
+++ b/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux
@@ -181,40 +181,6 @@
(def: high (-> Expression Expression) (bit//logical-right-shift (ruby.int 32)))
(def: low (-> Expression Expression) (ruby.bit-and "0xFFFFFFFF"))
-(runtime: (nat//< param subject)
- (ruby.block! (list (ruby.set! (list "ph") (high param))
- (ruby.set! (list "sh") (high subject))
- (ruby.return! (ruby.or (ruby.< "ph" "sh")
- (ruby.and (ruby.= "ph" "sh")
- (ruby.< (low param) (low subject))))))))
-
-(runtime: (nat/// param subject)
- (ruby.if! (ruby.< (ruby.int 0) param)
- (ruby.if! (nat//< param subject)
- (ruby.return! (ruby.int 0))
- (ruby.return! (ruby.int 1)))
- (ruby.block! (list (ruby.set! (list "quotient") (|> subject
- (ruby.bit-shr (ruby.int 1))
- (ruby./ param)
- (ruby.bit-shl (ruby.int 1))))
- (ruby.set! (list "remainder") (ruby.- (ruby.* param "quotient")
- subject))
- (ruby.if! (ruby.not (nat//< param "remainder"))
- (ruby.return! (ruby.+ (ruby.int 1) "quotient"))
- (ruby.return! "quotient"))))))
-
-(runtime: (nat//% param subject)
- (let [flat (|> subject
- (nat/// param)
- (ruby.* param))]
- (ruby.return! (ruby.- flat subject))))
-
-(def: runtime//nat
- Runtime
- (format @@nat//<
- @@nat///
- @@nat//%))
-
(runtime: (deg//* param subject)
(ruby.block! (list (ruby.set! (list "sL") (low subject))
(ruby.set! (list "sH") (high subject))
@@ -366,7 +332,6 @@
(format runtime//lux "\n"
runtime//adt "\n"
runtime//bit "\n"
- runtime//nat "\n"
runtime//deg "\n"
runtime//text "\n"
runtime//array "\n"