aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/generator/primitive.jvm.lux
diff options
context:
space:
mode:
Diffstat (limited to 'new-luxc/source/luxc/generator/primitive.jvm.lux')
-rw-r--r--new-luxc/source/luxc/generator/primitive.jvm.lux45
1 files changed, 16 insertions, 29 deletions
diff --git a/new-luxc/source/luxc/generator/primitive.jvm.lux b/new-luxc/source/luxc/generator/primitive.jvm.lux
index 2c879dd48..18ce2e24a 100644
--- a/new-luxc/source/luxc/generator/primitive.jvm.lux
+++ b/new-luxc/source/luxc/generator/primitive.jvm.lux
@@ -2,43 +2,30 @@
lux
(lux (control monad)
(data text/format)
- [macro #+ Monad<Lux> "Lux/" Monad<Lux>]
- [host #+ jvm-import])
+ [macro #+ Monad<Lux> "Lux/" Monad<Lux>])
(luxc ["&" base]
(lang ["la" analysis]
["ls" synthesis])
["&;" analyser]
["&;" synthesizer]
- (generator ["&;" common])))
-
-(jvm-import #long java.lang.Object)
-
-(jvm-import org.objectweb.asm.Opcodes)
-
-(jvm-import org.objectweb.asm.MethodVisitor
- (visitLdcInsn [Object] void))
+ (generator ["&;" common]
+ (host ["$" jvm]
+ (jvm ["$i" inst])))))
(def: #export generate-unit
- (Lux Unit)
- (do Monad<Lux>
- [visitor &common;get-visitor
- #let [_ (MethodVisitor.visitLdcInsn [(:! java.lang.Object &common;unit)] visitor)]]
- (wrap [])))
+ (Lux $;Inst)
+ (Lux/wrap ($i;string &common;unit)))
-(do-template [<name> <type> <wrap>]
+(do-template [<name> <type> <load> <wrap>]
[(def: #export (<name> value)
- (-> <type> (Lux Unit))
- (do Monad<Lux>
- [visitor &common;get-visitor
- #let [_ (MethodVisitor.visitLdcInsn [(:! java.lang.Object value)] visitor)
- _ (<wrap> visitor)]]
- (wrap [])))]
+ (-> <type> (Lux $;Inst))
+ (Lux/wrap (|>. (<load> value) <wrap>)))]
- [generate-bool Bool &common;wrap-boolean]
- [generate-nat Nat &common;wrap-long]
- [generate-int Int &common;wrap-long]
- [generate-deg Deg &common;wrap-long]
- [generate-real Real &common;wrap-double]
- [generate-char Char &common;wrap-char]
- [generate-text Text id]
+ [generate-bool Bool $i;boolean $i;wrap-boolean]
+ [generate-nat Nat (|>. (:! Int) $i;long) $i;wrap-long]
+ [generate-int Int $i;long $i;wrap-long]
+ [generate-deg Deg (|>. (:! Int) $i;long) $i;wrap-long]
+ [generate-real Real $i;double $i;wrap-double]
+ [generate-char Char $i;char $i;wrap-char]
+ [generate-text Text $i;string id]
)