diff options
79 files changed, 625 insertions, 625 deletions
diff --git a/lux-mode/lux-mode.el b/lux-mode/lux-mode.el index 7dfcdecc8..894b7148c 100644 --- a/lux-mode/lux-mode.el +++ b/lux-mode/lux-mode.el @@ -224,7 +224,7 @@ Called by `imenu--generic-function'." "word:" "abstract:" "unit:" "scale:" - ":" ":!" ":assume" "@abstraction" "@representation" "^@representation" + ":" ":coerce" ":assume" "@abstraction" "@representation" "^@representation" "function" "case" "undefined" "ident-for" "static" "and" "or" "char" diff --git a/luxdoc/source/program.lux b/luxdoc/source/program.lux index 4e1c1c6b4..4e2888c82 100644 --- a/luxdoc/source/program.lux +++ b/luxdoc/source/program.lux @@ -357,7 +357,7 @@ (def: (add-def [name [def-type def-meta def-value]] org) (-> [Text Def] DefOrg DefOrg) (cond (compiler;type? def-meta) - (update@ #types (cons [name def-meta (:! Type def-value)]) org) + (update@ #types (cons [name def-meta (:coerce Type def-value)]) org) (compiler;macro? def-meta) (update@ #macros (cons [name def-meta]) org) diff --git a/new-luxc/source/luxc/lang/extension/statement.lux b/new-luxc/source/luxc/lang/extension/statement.lux index a92995630..9b7b9da52 100644 --- a/new-luxc/source/luxc/lang/extension/statement.lux +++ b/new-luxc/source/luxc/lang/extension/statement.lux @@ -49,7 +49,7 @@ (expressionA.analyser evalL.eval annsC))) annsI (expressionT.translate (expressionS.synthesize syntheses annsA)) annsV (evalT.eval annsI)] - (wrap [annsI (:! Code annsV)]))) + (wrap [annsI (:coerce Code annsV)]))) (def: (ensure-valid-alias def-name annotations value) (-> Text Code Code (Meta Any)) @@ -82,7 +82,7 @@ #.None (do @ [[_ valueT valueA] (lang.with-scope - (if (macro.type? (:! Code annotationsV)) + (if (macro.type? (:coerce Code annotationsV)) (do @ [valueA (lang.with-type Type (expressionA.analyser evalL.eval valueC))] @@ -130,7 +130,7 @@ syntheses //.all-syntheses valueI (expressionT.translate (expressionS.synthesize syntheses valueA)) valueV (evalT.eval valueI) - _ (<installer> name (:! <type> valueV))] + _ (<installer> name (:coerce <type> valueV))] (wrap [])) _ diff --git a/new-luxc/source/luxc/lang/host.jvm.lux b/new-luxc/source/luxc/lang/host.jvm.lux index 9a959bb48..0491cae25 100644 --- a/new-luxc/source/luxc/lang/host.jvm.lux +++ b/new-luxc/source/luxc/lang/host.jvm.lux @@ -40,10 +40,10 @@ Method (case (Class::getDeclaredMethod ["defineClass" (|> (host.array (Class Object) +4) - (host.array-write +0 (:! (Class Object) (host.class-for String))) + (host.array-write +0 (:coerce (Class Object) (host.class-for String))) (host.array-write +1 (Object::getClass [] (host.array byte +0))) - (host.array-write +2 (:! (Class Object) Integer::TYPE)) - (host.array-write +3 (:! (Class Object) Integer::TYPE)))] + (host.array-write +2 (:coerce (Class Object) Integer::TYPE)) + (host.array-write +3 (:coerce (Class Object) Integer::TYPE)))] (host.class-for java/lang/ClassLoader)) (#e.Success method) (do-to method @@ -55,10 +55,10 @@ (def: (define-class class-name byte-code loader) (-> Text commonT.Bytecode ClassLoader (e.Error Object)) (Method::invoke [loader - (array.from-list (list (:! Object class-name) - (:! Object byte-code) - (:! Object (host.long-to-int 0)) - (:! Object (host.long-to-int (.int (host.array-length byte-code))))))] + (array.from-list (list (:coerce Object class-name) + (:coerce Object byte-code) + (:coerce Object (host.long-to-int 0)) + (:coerce Object (host.long-to-int (.int (host.array-length byte-code))))))] ClassLoader::defineClass)) (def: (fetch-byte-code class-name store) @@ -72,7 +72,7 @@ (ClassLoader (findClass [class-name String]) Class (case (fetch-byte-code class-name store) (#.Some bytecode) - (case (define-class class-name bytecode (:! ClassLoader _jvm_this)) + (case (define-class class-name bytecode (:coerce ClassLoader _jvm_this)) (#e.Success class) (:assume class) @@ -96,15 +96,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> [Label Register] (Meta a) (Meta a))) (.function (_ compiler) - (let [old (:! commonT.Host (get@ #.host compiler))] + (let [old (:coerce commonT.Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #commonT.anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #commonT.anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! commonT.Host) + (|>> (:coerce commonT.Host) (set@ #commonT.anchor (get@ #commonT.anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -117,7 +117,7 @@ (def: #export anchor (Meta [Label Register]) (.function (_ compiler) - (case (|> compiler (get@ #.host) (:! commonT.Host) (get@ #commonT.anchor)) + (case (|> compiler (get@ #.host) (:coerce commonT.Host) (get@ #commonT.anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -128,15 +128,15 @@ (def: #export (with-context name expr) (All [a] (-> Text (Meta a) (Meta a))) (.function (_ compiler) - (let [old (:! commonT.Host (get@ #.host compiler))] + (let [old (:coerce commonT.Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #commonT.context [(lang.normalize-name name) +0] old)) + (:coerce Nothing (set@ #commonT.context [(lang.normalize-name name) +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! commonT.Host) + (|>> (:coerce commonT.Host) (set@ #commonT.context (get@ #commonT.context old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -146,17 +146,17 @@ (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (.function (_ compiler) - (let [old (:! commonT.Host (get@ #.host compiler)) + (let [old (:coerce commonT.Host (get@ #.host compiler)) [old-name old-sub] (get@ #commonT.context old) new-name (format old-name "$" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #commonT.context [new-name +0] old)) + (:coerce Nothing (set@ #commonT.context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! commonT.Host) + (|>> (:coerce commonT.Host) (set@ #commonT.context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -168,7 +168,7 @@ (.function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! commonT.Host) + (:coerce commonT.Host) (get@ #commonT.context) (let> [name sub] name))]))) @@ -179,7 +179,7 @@ (#e.Success [compiler (|> compiler (get@ #.host) - (:! commonT.Host) + (:coerce commonT.Host) (get@ #commonT.loader))]))) (def: #export runtime-class Text "LuxRuntime") diff --git a/new-luxc/source/luxc/lang/macro.lux b/new-luxc/source/luxc/lang/macro.lux index 043f0df93..4e22047b2 100644 --- a/new-luxc/source/luxc/lang/macro.lux +++ b/new-luxc/source/luxc/lang/macro.lux @@ -25,11 +25,11 @@ (function (_ compiler) (do e.Monad<Error> [apply-method (Class::getMethod ["apply" _apply-args] class) - output (Method::invoke [(:! Object macro) + output (Method::invoke [(:coerce Object macro) (|> (host.array Object +2) - (host.array-write +0 (:! Object inputs)) - (host.array-write +1 (:! Object compiler)))] + (host.array-write +0 (:coerce Object inputs)) + (host.array-write +1 (:coerce Object compiler)))] apply-method)] - (:! (e.Error [Lux (List Code)]) - output)))))) + (:coerce (e.Error [Lux (List Code)]) + output)))))) }) diff --git a/new-luxc/source/luxc/lang/translation.lux b/new-luxc/source/luxc/lang/translation.lux index 0ed495c31..0ed65378d 100644 --- a/new-luxc/source/luxc/lang/translation.lux +++ b/new-luxc/source/luxc/lang/translation.lux @@ -64,7 +64,7 @@ syntheses extensionL.all-syntheses annsI (expressionT.translate (expressionS.synthesize syntheses annsA)) annsV (evalT.eval annsI)] - (wrap [annsI (:! Code annsV)]))) + (wrap [annsI (:coerce Code annsV)]))) (def: (switch-compiler new-compiler) (-> Lux (Meta Aliases)) @@ -107,7 +107,7 @@ (&.throw Invalid-Macro (%code code))) expansion (: (Meta (List Code)) (function (_ compiler) - (case (macroL.expand (:! Macro _macroV) argsC+ compiler) + (case (macroL.expand (:coerce Macro _macroV) argsC+ compiler) (#e.Error error) ((&.throw Macro-Expansion-Failed error) compiler) @@ -167,7 +167,7 @@ (def: text-to-blob (-> Text Blob) - (|>> (:! String) + (|>> (:coerce String) (String::getBytes ["UTF-8"]) e.assume)))}) diff --git a/new-luxc/source/luxc/lang/translation/common-lisp.lux b/new-luxc/source/luxc/lang/translation/common-lisp.lux index 36926833c..4341e5e4c 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp.lux @@ -83,26 +83,26 @@ (Meta Any) (function (_ compiler) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Nothing)) + (:coerce Nothing)) compiler) []]))) (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler)) + (let [old (:coerce Host (get@ #.host compiler)) [old-name old-sub] (get@ #context old) new-name (format old-name "f___" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #context [new-name +0] old)) + (:coerce Nothing (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -114,7 +114,7 @@ (function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #context) (let> [name sub] name))]))) @@ -122,15 +122,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> Anchor (Meta a) (Meta a))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler))] + (let [old (:coerce Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #anchor (get@ #anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -140,7 +140,7 @@ (def: #export anchor (Meta Anchor) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #anchor)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -150,7 +150,7 @@ (def: #export module-buffer (Meta StringBuilder) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #module-buffer)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #module-buffer)) #.None ((lang.throw No-Active-Module-Buffer "") compiler) @@ -160,13 +160,13 @@ (def: #export program-buffer (Meta StringBuilder) (function (_ compiler) - (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) + (#e.Success [compiler (|> compiler (get@ #.host) (:coerce Host) (get@ #program-buffer))]))) (do-template [<name> <field> <outputT>] [(def: (<name> code) (-> Expression (Meta <outputT>)) (function (_ compiler) - (let [runner (|> compiler (get@ #.host) (:! Host) (get@ <field>))] + (let [runner (|> compiler (get@ #.host) (:coerce Host) (get@ <field>))] (case (runner code) (#e.Error error) ((lang.throw Cannot-Execute error) compiler) @@ -190,7 +190,7 @@ (-> Expression (Meta Any)) (do macro.Monad<Meta> [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence (_.expression code))] + #let [_ (Appendable::append [(:coerce CharSequence (_.expression code))] module-buffer)]] (load! code))) @@ -203,7 +203,7 @@ module-buffer module-buffer program-buffer program-buffer #let [module-code (StringBuilder::toString [] module-buffer) - _ (Appendable::append [(:! CharSequence (format module-code "\n"))] + _ (Appendable::append [(:coerce CharSequence (format module-code "\n"))] program-buffer)]] (wrap (ioC.write target (format (lang.normalize-name module) "/" r-module-name) diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/case.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/case.jvm.lux index d132ba0b8..41e93c13b 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/case.jvm.lux @@ -37,7 +37,7 @@ (let [method (if tail? runtimeT.product//right runtimeT.product//left)] - (method source (_.int (:! Int idx))))) + (method source (_.int (:coerce Int idx))))) valueO pathP)))) @@ -116,21 +116,21 @@ (meta/wrap (_.when (|> value <format> (<=> cursor-top) _.not) fail-pm!))) ([#.Bool _.bool _.equal] - [#.Nat (<| _.int (:! Int)) _.=] + [#.Nat (<| _.int (:coerce Int)) _.=] [#.Int _.int _.=] - [#.Deg (<| _.int (:! Int)) _.=] + [#.Deg (<| _.int (:coerce Int)) _.=] [#.Frac _.float _.=] [#.Text _.string _.equal]) (^template [<pm> <getter>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (push-cursor! (<getter> cursor-top (_.int (:! Int idx)))))) + (meta/wrap (push-cursor! (<getter> cursor-top (_.int (:coerce Int idx)))))) (["lux case tuple left" runtimeT.product//left] ["lux case tuple right" runtimeT.product//right]) (^template [<pm> <flag>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (_.progn (list (_.setq! $temp (runtimeT.sum//get cursor-top (_.int (:! Int idx)) <flag>)) + (meta/wrap (_.progn (list (_.setq! $temp (runtimeT.sum//get cursor-top (_.int (:coerce Int idx)) <flag>)) (_.if (_.null (@@ $temp)) fail-pm! (push-cursor! (@@ $temp))))))) diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/eval.jvm.lux index cb6f03d17..0108d2e83 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/eval.jvm.lux @@ -42,8 +42,8 @@ ) (exception: #export (Unknown-Kind-Of-Host-Object {host-object Object}) - (let [object-class (:! Text (Object::toString [] (Object::getClass [] (:! Object host-object)))) - text-representation (:! Text (Object::toString [] (:! Object host-object)))] + (let [object-class (:coerce Text (Object::toString [] (Object::getClass [] (:coerce Object host-object)))) + text-representation (:coerce Text (Object::toString [] (:coerce Object host-object)))] (format object-class " --- " text-representation))) (host.import org/armedbear/lisp/LispObject) @@ -72,21 +72,21 @@ (def: (parse-tuple lux-object host-object) (-> (-> Object (Error Any)) SimpleVector (Error Any)) - (let [size (:! Nat (SimpleVector::length [] host-object))] + (let [size (:coerce Nat (SimpleVector::length [] host-object))] (loop [idx +0 - output (:! (Array Any) (array.new size))] + output (:coerce (Array Any) (array.new size))] (if (n/< size idx) - (case (lux-object (SimpleVector::elt [(:! Int idx)] host-object)) + (case (lux-object (SimpleVector::elt [(:coerce Int idx)] host-object)) (#e.Error error) (#e.Error error) (#e.Success lux-value) - (recur (inc idx) (array.write idx (:! Any lux-value) output))) + (recur (inc idx) (array.write idx (:coerce Any lux-value) output))) (#e.Success output))))) (def: (variant tag flag value) (-> Nat Bool Any Any) - [(Long::intValue [] (:! Long tag)) + [(Long::intValue [] (:coerce Long tag)) (: Any (if flag //.unit @@ -101,52 +101,52 @@ (-> (-> Object (Error Any)) Cons (Error Any)) (let [variant-tag (Cons::car host-object)] (if (and (host.instance? org/armedbear/lisp/Symbol variant-tag) - (text/= //.variant-tag (Symbol::getName [] (:! Symbol variant-tag)))) + (text/= //.variant-tag (Symbol::getName [] (:coerce Symbol variant-tag)))) (do e.Monad<Error> - [#let [host-object (:! Cons (Cons::cdr host-object))] + [#let [host-object (:coerce Cons (Cons::cdr host-object))] tag (lux-object (Cons::car host-object)) - #let [host-object (:! Cons (Cons::cdr host-object))] + #let [host-object (:coerce Cons (Cons::cdr host-object))] #let [flag (host.instance? org/armedbear/lisp/SimpleString (Cons::car host-object))] value (lux-object (Cons::cdr host-object))] - (wrap (..variant (:! Nat tag) flag value))) - (ex.throw invalid-variant (:! Text (Object::toString [] (:! Object host-object))))))) + (wrap (..variant (:coerce Nat tag) flag value))) + (ex.throw invalid-variant (:coerce Text (Object::toString [] (:coerce Object host-object))))))) (def: (lux-object host-object) (-> Object (Error Any)) (cond (host.instance? org/armedbear/lisp/Bignum host-object) - (#e.Success (Bignum::longValue [] (:! Bignum host-object))) + (#e.Success (Bignum::longValue [] (:coerce Bignum host-object))) (host.instance? org/armedbear/lisp/Fixnum host-object) - (#e.Success (Fixnum::longValue [] (:! Fixnum host-object))) + (#e.Success (Fixnum::longValue [] (:coerce Fixnum host-object))) (host.instance? org/armedbear/lisp/DoubleFloat host-object) - (#e.Success (DoubleFloat::doubleValue [] (:! DoubleFloat host-object))) + (#e.Success (DoubleFloat::doubleValue [] (:coerce DoubleFloat host-object))) (host.instance? org/armedbear/lisp/Nil host-object) (#e.Success false) (host.instance? org/armedbear/lisp/Symbol host-object) - (if (is? Symbol::T (:! Symbol host-object)) + (if (is? Symbol::T (:coerce Symbol host-object)) (#e.Success true) - (ex.throw Unknown-Kind-Of-Host-Object (:! Object host-object))) + (ex.throw Unknown-Kind-Of-Host-Object (:coerce Object host-object))) (host.instance? org/armedbear/lisp/SimpleString host-object) - (#e.Success (SimpleString::getStringValue [] (:! SimpleString host-object))) + (#e.Success (SimpleString::getStringValue [] (:coerce SimpleString host-object))) (host.instance? org/armedbear/lisp/SimpleVector host-object) - (parse-tuple lux-object (:! SimpleVector host-object)) + (parse-tuple lux-object (:coerce SimpleVector host-object)) (host.instance? org/armedbear/lisp/Cons host-object) - (parse-variant lux-object (:! Cons host-object)) + (parse-variant lux-object (:coerce Cons host-object)) ## else - (ex.throw Unknown-Kind-Of-Host-Object (:! Object host-object)))) + (ex.throw Unknown-Kind-Of-Host-Object (:coerce Object host-object)))) (def: #export (eval code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! //.Host) (get@ #//.interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce //.Host) (get@ #//.interpreter))] (case (interpreter code) (#e.Error error) (exec (log! (format "eval #e.Error\n" diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/primitive.jvm.lux index 6bb4ec140..4e26c4218 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/primitive.jvm.lux @@ -15,11 +15,11 @@ (def: #export translate-nat (-> Nat (Meta Expression)) - (|>> (:! Int) _.int meta/wrap)) + (|>> (:coerce Int) _.int meta/wrap)) (def: #export translate-deg (-> Deg (Meta Expression)) - (|>> (:! Int) _.int meta/wrap)) + (|>> (:coerce Int) _.int meta/wrap)) (def: #export translate-frac (-> Frac (Meta Expression)) diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/runtime.jvm.lux index 1819a8601..cd12328e2 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/runtime.jvm.lux @@ -33,7 +33,7 @@ (def: #export (variant tag last? value) (-> Nat Bool Expression Expression) - (variant' (_.int (:! Int tag)) (flag last?) value)) + (variant' (_.int (:coerce Int tag)) (flag last?) value)) (def: #export none Expression diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/statement.jvm.lux index dab065e62..549142f3f 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/statement.jvm.lux @@ -34,7 +34,7 @@ (wrap []) tags - (moduleL.declare-tags tags (macro.export? metaV) (:! Type expressionV))) + (moduleL.declare-tags tags (macro.export? metaV) (:coerce Type expressionV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (wrap [])) diff --git a/new-luxc/source/luxc/lang/translation/js.lux b/new-luxc/source/luxc/lang/translation/js.lux index d38409b10..9fd2d098f 100644 --- a/new-luxc/source/luxc/lang/translation/js.lux +++ b/new-luxc/source/luxc/lang/translation/js.lux @@ -93,26 +93,26 @@ (Meta Any) (function (_ compiler) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Nothing)) + (:coerce Nothing)) compiler) []]))) (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler)) + (let [old (:coerce Host (get@ #.host compiler)) [old-name old-sub] (get@ #context old) new-name (format old-name "$" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #context [new-name +0] old)) + (:coerce Nothing (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -124,7 +124,7 @@ (function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #context) (let> [name sub] name))]))) @@ -132,15 +132,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> Anchor (Meta a) (Meta a))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler))] + (let [old (:coerce Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #anchor (get@ #anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -150,7 +150,7 @@ (def: #export anchor (Meta Anchor) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #anchor)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -160,7 +160,7 @@ (def: #export module-buffer (Meta StringBuilder) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #module-buffer)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #module-buffer)) #.None ((lang.throw No-Active-Module-Buffer "") compiler) @@ -170,14 +170,14 @@ (def: #export program-buffer (Meta StringBuilder) (function (_ compiler) - (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) + (#e.Success [compiler (|> compiler (get@ #.host) (:coerce Host) (get@ #program-buffer))]))) (def: (execute code) (-> Expression (Meta Any)) (function (_ compiler) (case (|> compiler (get@ #.host) - (:! Host) + (:coerce Host) (get@ #interpreter) (ScriptEngine::eval [code])) (#e.Error error) @@ -193,7 +193,7 @@ (AbstractJSObject (isFunction) boolean true) (AbstractJSObject (call [args (Array Object)]) Object - (Object::toString [] (:! Object js-object))) + (Object::toString [] (:coerce Object js-object))) )) (def: (::slice js-object value) @@ -203,10 +203,10 @@ (AbstractJSObject (isFunction) boolean true) (AbstractJSObject (call [args (Array Object)]) Object - (:! Object - (js-object (Arrays::copyOfRange [value - (|> args (array.read +0) maybe.assume (:! Int)) - (.int (array.size value))])))) + (:coerce Object + (js-object (Arrays::copyOfRange [value + (|> args (array.read +0) maybe.assume (:coerce Int)) + (.int (array.size value))])))) )) (def: #export int-high-field Text "H") @@ -218,7 +218,7 @@ (def: jvm-int (-> Nat Integer) - (|>> (:! Long) (Long::intValue []))) + (|>> (:coerce Long) (Long::intValue []))) (def: low-mask Nat @@ -238,7 +238,7 @@ [] ## Methods (IntValue (getValue) Long - (:! Long value)) + (:coerce Long value)) (AbstractJSObject (getMember [member String]) Object (cond (text/= int-high-field member) (|> value .nat high jvm-int) @@ -262,13 +262,13 @@ [] ## Methods (StructureValue (getValue) (Array Object) - (:! (Array Object) value)) + (:coerce (Array Object) value)) (AbstractJSObject (isArray) boolean true) (AbstractJSObject (getMember [member String]) Object (cond (text/= "toString" member) - (:! Object - (::toString value)) + (:coerce Object + (::toString value)) (text/= "length" member) (jvm-int (array.size value)) @@ -276,32 +276,32 @@ (text/= "slice" member) (let [js-object (: (-> Object JSObject) (|>> (cond> [(host.instance? (Array Object))] - [(:! (Array Object)) js-structure] + [(:coerce (Array Object)) js-structure] [(host.instance? Long)] - [(:! Int) js-int] + [(:coerce Int) js-int] ## else - [(:! JSObject)])))] - (:! Object - (::slice js-object value))) + [(:coerce JSObject)])))] + (:coerce Object + (::slice js-object value))) ## else - (error! (ex.construct Unknown-Member (format " member = " (:! Text member) "\n" - "object(structure) = " (Object::toString [] (:! Object value)) "\n"))))) + (error! (ex.construct Unknown-Member (format " member = " (:coerce Text member) "\n" + "object(structure) = " (Object::toString [] (:coerce Object value)) "\n"))))) (AbstractJSObject (getSlot [idx int]) Object (|> value - (array.read (|> idx (Integer::longValue []) (:! Nat))) + (array.read (|> idx (Integer::longValue []) (:coerce Nat))) maybe.assume (cond> [(host.instance? (Array Object))] - [(:! (Array Object)) js-structure] + [(:coerce (Array Object)) js-structure] [(host.instance? Long)] - [(:! Int) js-int] + [(:coerce Int) js-int] ## else - [(:! JSObject)]) - (:! Object))) + [(:coerce JSObject)]) + (:coerce Object))) )) (def: #export unit Text "") @@ -320,7 +320,7 @@ (-> JS (Meta Any)) (do macro.Monad<Meta> [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence code)] + #let [_ (Appendable::append [(:coerce CharSequence code)] module-buffer)]] (execute code))) @@ -335,7 +335,7 @@ module-buffer module-buffer program-buffer program-buffer #let [module-code (StringBuilder::toString [] module-buffer) - _ (Appendable::append [(:! CharSequence (format module-code "\n"))] + _ (Appendable::append [(:coerce CharSequence (format module-code "\n"))] program-buffer)]] (wrap (ioC.write target (format (module-name module) "/" module-js-name) diff --git a/new-luxc/source/luxc/lang/translation/js/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/js/eval.jvm.lux index 94136f356..8019ded53 100644 --- a/new-luxc/source/luxc/lang/translation/js/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/eval.jvm.lux @@ -61,13 +61,13 @@ (^multi [(#.Some high) (#.Some low)] (and (host.instance? Number high) (host.instance? Number low)) - [[(Number::longValue [] (:! Number high)) - (Number::longValue [] (:! Number low))] + [[(Number::longValue [] (:coerce Number high)) + (Number::longValue [] (:coerce Number low))] [high low]]) - (#.Some (.int (n/+ (|> high (:! Nat) (bit.left-shift +32)) - (if (i/< 0 (:! Int low)) - (|> low (:! Nat) (bit.left-shift +32) (bit.logical-right-shift +32)) - (|> low (:! Nat)))))) + (#.Some (.int (n/+ (|> high (:coerce Nat) (bit.left-shift +32)) + (if (i/< 0 (:coerce Int low)) + (|> low (:coerce Nat) (bit.left-shift +32) (bit.logical-right-shift +32)) + (|> low (:coerce Nat)))))) _ #.None)) @@ -79,7 +79,7 @@ (JSObject::getMember [//.variant-value-field] js-object)] (^multi [(#.Some tag) ?flag (#.Some value)] (host.instance? Number tag) - [[(Number::intValue [] (:! Number tag)) + [[(Number::intValue [] (:coerce Number tag)) (lux-object value)] [tag (#.Some value)]]) (#.Some [tag (maybe.default (host.null) ?flag) value]) @@ -101,7 +101,7 @@ (#.Some member) (case (lux-object member) (#e.Success parsed-member) - (recur num-keys (inc idx) (array.write idx (:! Object parsed-member) output)) + (recur num-keys (inc idx) (array.write idx (:coerce Object parsed-member) output)) (#e.Error error) #.None) @@ -117,24 +117,24 @@ (ex.throw Null-Has-No-Lux-Representation "") (host.instance? Integer js-object) - (ex.return (Integer::longValue [] (:! Integer js-object))) + (ex.return (Integer::longValue [] (:coerce Integer js-object))) (or (host.instance? java/lang/Boolean js-object) (host.instance? java/lang/String js-object)) (ex.return js-object) (host.instance? Number js-object) - (ex.return (Number::doubleValue [] (:! Number js-object))) + (ex.return (Number::doubleValue [] (:coerce Number js-object))) (~~ (do-template [<interface> <method>] [(host.instance? <interface> js-object) - (ex.return (<method> [] (:! <interface> js-object)))] + (ex.return (<method> [] (:coerce <interface> js-object)))] [StructureValue StructureValue::getValue] [IntValue IntValue::getValue])) (host.instance? ScriptObjectMirror js-object) - (let [js-object (:! ScriptObjectMirror js-object)] + (let [js-object (:coerce ScriptObjectMirror js-object)] (case (int js-object) (#.Some value) (ex.return value) @@ -154,17 +154,17 @@ ## js-object ## else - (ex.throw Unknown-Kind-Of-JS-Object (Object::toString [] (:! Object js-object))))))) + (ex.throw Unknown-Kind-Of-JS-Object (Object::toString [] (:coerce Object js-object))))))) ## else - (ex.throw Unknown-Kind-Of-JS-Object (Object::toString [] (:! Object js-object)))))) + (ex.throw Unknown-Kind-Of-JS-Object (Object::toString [] (:coerce Object js-object)))))) (def: #export (eval code) (-> Expression (Meta Any)) (function (_ compiler) (case (|> compiler (get@ #.host) - (:! //.Host) + (:coerce //.Host) (get@ #//.interpreter) (ScriptEngine::eval [code])) (#e.Error error) diff --git a/new-luxc/source/luxc/lang/translation/js/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/js/primitive.jvm.lux index 305f46adf..5fedc9a9e 100644 --- a/new-luxc/source/luxc/lang/translation/js/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/primitive.jvm.lux @@ -31,7 +31,7 @@ (def: deg-to-nat (-> Deg Nat) - (|>> (:! Nat))) + (|>> (:coerce Nat))) (def: #export translate-deg (-> Deg (Meta Expression)) diff --git a/new-luxc/source/luxc/lang/translation/js/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/js/statement.jvm.lux index 849ae76c2..317193691 100644 --- a/new-luxc/source/luxc/lang/translation/js/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/statement.jvm.lux @@ -33,7 +33,7 @@ (wrap []) tags - (moduleL.declare-tags tags (macro.export? metaV) (:! Type expressionV))) + (moduleL.declare-tags tags (macro.export? metaV) (:coerce Type expressionV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (wrap [])) diff --git a/new-luxc/source/luxc/lang/translation/jvm/case.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/case.jvm.lux index 28560854d..f5d288827 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/case.jvm.lux @@ -86,9 +86,9 @@ ($i.long (|> value <prep>)) $i.LCMP ($i.IFNE @else)))) - ([#.Nat (:! Int)] + ([#.Nat (:coerce Int)] [#.Int (: Int)] - [#.Deg (:! Int)]) + [#.Deg (:coerce Int)]) [_ (#.Frac value)] (macro/wrap (|>> peekI diff --git a/new-luxc/source/luxc/lang/translation/jvm/common.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/common.jvm.lux index b678677ce..2f35bad7c 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/common.jvm.lux @@ -65,17 +65,17 @@ (All [a] (-> (Meta a) (Meta [Artifacts a]))) (function (_ compiler) (case (action (update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #artifacts (dict.new text.Hash<Text>)) - (:! Nothing)) + (:coerce Nothing)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) - (set@ #artifacts (|> (get@ #.host compiler) (:! Host) (get@ #artifacts))) - (:! Nothing)) + (|>> (:coerce Host) + (set@ #artifacts (|> (get@ #.host compiler) (:coerce Host) (get@ #artifacts))) + (:coerce Nothing)) compiler') - [(|> compiler' (get@ #.host) (:! Host) (get@ #artifacts)) + [(|> compiler' (get@ #.host) (:coerce Host) (get@ #artifacts)) output]]) (#e.Error error) @@ -84,12 +84,12 @@ (def: #export (record-artifact name content) (-> Text Blob (Meta Any)) (function (_ compiler) - (if (|> compiler (get@ #.host) (:! Host) (get@ #artifacts) (dict.contains? name)) + (if (|> compiler (get@ #.host) (:coerce Host) (get@ #artifacts) (dict.contains? name)) (ex.throw Cannot-Overwrite-Artifact name) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (update@ #artifacts (dict.put name content)) - (:! Nothing)) + (:coerce Nothing)) compiler) []])))) @@ -97,7 +97,7 @@ (-> Text Bytecode (Meta Any)) (function (_ compiler) (let [store (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #store))] (if (dict.contains? name (|> store atom.read io.run)) (ex.throw Class-Already-Stored name) @@ -107,7 +107,7 @@ (def: #export (load-class name) (-> Text (Meta (Class Object))) (function (_ compiler) - (let [host (:! Host (get@ #.host compiler)) + (let [host (:coerce Host (get@ #.host compiler)) store (|> host (get@ #store) atom.read io.run)] (if (dict.contains? name store) (#e.Success [compiler (ClassLoader::loadClass [name] (get@ #loader host))]) diff --git a/new-luxc/source/luxc/lang/translation/jvm/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/statement.jvm.lux index 4c52231f3..07c85e58c 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/statement.jvm.lux @@ -87,7 +87,7 @@ (wrap []) tags - (&module.declare-tags tags (macro.export? metaV) (:! Type valueV))) + (&module.declare-tags tags (macro.export? metaV) (:coerce Type valueV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (commonT.record-artifact (format bytecode-name ".class") bytecode))))) diff --git a/new-luxc/source/luxc/lang/translation/lua.lux b/new-luxc/source/luxc/lang/translation/lua.lux index d09746351..307b6a181 100644 --- a/new-luxc/source/luxc/lang/translation/lua.lux +++ b/new-luxc/source/luxc/lang/translation/lua.lux @@ -96,7 +96,7 @@ (function (_ code) (let [lua-function (ChunkLoader::loadTextChunk [variable "lux compilation" code] loader)] - ("lux try" (io (DirectCallExecutor::call [state-context (:! Object lua-function) (array.new +0)] + ("lux try" (io (DirectCallExecutor::call [state-context (:coerce Object lua-function) (array.new +0)] executor)))))) #module-buffer #.None #program-buffer (StringBuilder::new [])})) @@ -107,26 +107,26 @@ (Meta Any) (function (_ compiler) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Nothing)) + (:coerce Nothing)) compiler) []]))) (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler)) + (let [old (:coerce Host (get@ #.host compiler)) [old-name old-sub] (get@ #context old) new-name (format old-name "___" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #context [new-name +0] old)) + (:coerce Nothing (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -138,7 +138,7 @@ (function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #context) (let> [name sub] name))]))) @@ -146,15 +146,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> Anchor (Meta a) (Meta a))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler))] + (let [old (:coerce Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #anchor (get@ #anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -164,7 +164,7 @@ (def: #export anchor (Meta Anchor) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #anchor)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -174,7 +174,7 @@ (def: #export module-buffer (Meta StringBuilder) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #module-buffer)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #module-buffer)) #.None ((lang.throw No-Active-Module-Buffer "") compiler) @@ -184,12 +184,12 @@ (def: #export program-buffer (Meta StringBuilder) (function (_ compiler) - (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) + (#e.Success [compiler (|> compiler (get@ #.host) (:coerce Host) (get@ #program-buffer))]))) (def: (execute code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! Host) (get@ #interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce Host) (get@ #interpreter))] (case (interpreter code) (#e.Error error) ((lang.throw Cannot-Execute error) compiler) @@ -211,7 +211,7 @@ (-> Lua (Meta Any)) (do macro.Monad<Meta> [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence code)] + #let [_ (Appendable::append [(:coerce CharSequence code)] module-buffer)]] (execute code))) @@ -222,7 +222,7 @@ module-buffer module-buffer program-buffer program-buffer #let [module-code (StringBuilder::toString [] module-buffer) - _ (Appendable::append [(:! CharSequence (format module-code "\n"))] + _ (Appendable::append [(:coerce CharSequence (format module-code "\n"))] program-buffer)]] (wrap (ioC.write target (format (lang.normalize-name module) "/" lua-module-name) diff --git a/new-luxc/source/luxc/lang/translation/lua/case.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/case.jvm.lux index ed084b44d..a72bf0011 100644 --- a/new-luxc/source/luxc/lang/translation/lua/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/case.jvm.lux @@ -38,7 +38,7 @@ (let [method (if tail? runtimeT.product//right runtimeT.product//left)] - (method source (lua.int (:! Int idx))))) + (method source (lua.int (:coerce Int idx))))) valueO path)))) @@ -102,22 +102,22 @@ [_ (<tag> value)] (meta/wrap (lua.when! (lua.not (lua.= (|> value <format>) cursor-top)) (lua.return! pm-error)))) - ([#.Nat (<| lua.int (:! Int))] + ([#.Nat (<| lua.int (:coerce Int))] [#.Int lua.int] - [#.Deg (<| lua.int (:! Int))] + [#.Deg (<| lua.int (:coerce Int))] [#.Bool lua.bool] [#.Frac lua.float] [#.Text lua.string]) (^template [<pm> <getter>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (push-cursor! (<getter> cursor-top (lua.int (:! Int idx)))))) + (meta/wrap (push-cursor! (<getter> cursor-top (lua.int (:coerce Int idx)))))) (["lux case tuple left" runtimeT.product//left] ["lux case tuple right" runtimeT.product//right]) (^template [<pm> <flag>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (lua.block! (list (lua.set! "temp" (runtimeT.sum//get cursor-top (lua.int (:! Int idx)) <flag>)) + (meta/wrap (lua.block! (list (lua.set! "temp" (runtimeT.sum//get cursor-top (lua.int (:coerce Int idx)) <flag>)) (lua.if! (lua.= lua.nil "temp") (lua.return! pm-error) (push-cursor! "temp")))))) diff --git a/new-luxc/source/luxc/lang/translation/lua/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/eval.jvm.lux index 0e413e7ad..0330f79c2 100644 --- a/new-luxc/source/luxc/lang/translation/lua/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/eval.jvm.lux @@ -45,7 +45,7 @@ (^multi [(#.Some tag) ?flag (#.Some value)] [(lux-object value) (#.Some value)]) - (#.Some [(Long::intValue [] (:! Long tag)) + (#.Some [(Long::intValue [] (:coerce Long tag)) (: Any (case ?flag (#.Some _) "" #.None (host.null))) value]) @@ -54,17 +54,17 @@ (def: (array lux-object host-object) (-> (-> Object (Error Any)) DefaultTable (Maybe (Array Object))) - (let [init-num-keys (:! Nat (Table::rawlen [] host-object))] + (let [init-num-keys (:coerce Nat (Table::rawlen [] host-object))] (loop [num-keys init-num-keys idx +0 output (: (Array Object) (array.new init-num-keys))] (if (n/< num-keys idx) - (case (Table::get-idx (:! Long (inc idx)) host-object) + (case (Table::get-idx (:coerce Long (inc idx)) host-object) (#.Some member) (case (lux-object member) (#e.Success parsed-member) - (recur num-keys (inc idx) (array.write idx (:! Object parsed-member) output)) + (recur num-keys (inc idx) (array.write idx (:coerce Object parsed-member) output)) (#e.Error error) #.None) @@ -85,10 +85,10 @@ (ex.return host-object) (host.instance? ByteString host-object) - (ex.return (ByteString::decode [] (:! ByteString host-object))) + (ex.return (ByteString::decode [] (:coerce ByteString host-object))) (host.instance? DefaultTable host-object) - (let [host-object (:! DefaultTable host-object)] + (let [host-object (:coerce DefaultTable host-object)] (case (variant lux-object host-object) (#.Some value) (ex.return value) @@ -99,23 +99,23 @@ (ex.return value) #.None - (ex.throw Unknown-Kind-Of-Host-Object (format "SECOND " (Object::toString [] (:! Object host-object))))))) + (ex.throw Unknown-Kind-Of-Host-Object (format "SECOND " (Object::toString [] (:coerce Object host-object))))))) ## else - (ex.throw Unknown-Kind-Of-Host-Object (format "FIRST " (Object::toString [] (:! Object host-object)))) + (ex.throw Unknown-Kind-Of-Host-Object (format "FIRST " (Object::toString [] (:coerce Object host-object)))) )) (def: #export (eval code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! //.Host) (get@ #//.interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce //.Host) (get@ #//.interpreter))] (case (interpreter (format "return " code ";")) (#e.Error error) ((lang.throw Cannot-Evaluate error) compiler) (#e.Success output) (case (lux-object (|> output - (:! (Array Object)) + (:coerce (Array Object)) (array.read +0) maybe.assume)) (#e.Success parsed-output) diff --git a/new-luxc/source/luxc/lang/translation/lua/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/primitive.jvm.lux index c322e5005..5769f6890 100644 --- a/new-luxc/source/luxc/lang/translation/lua/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/primitive.jvm.lux @@ -16,11 +16,11 @@ (def: #export translate-nat (-> Nat (Meta Expression)) - (|>> (:! Int) %i meta/wrap)) + (|>> (:coerce Int) %i meta/wrap)) (def: #export translate-deg (-> Deg (Meta Expression)) - (|>> (:! Int) %i meta/wrap)) + (|>> (:coerce Int) %i meta/wrap)) (def: #export translate-frac (-> Frac (Meta Expression)) diff --git a/new-luxc/source/luxc/lang/translation/lua/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/statement.jvm.lux index 3a438ae65..8ff9c1ccd 100644 --- a/new-luxc/source/luxc/lang/translation/lua/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/statement.jvm.lux @@ -34,7 +34,7 @@ (wrap []) tags - (moduleL.declare-tags tags (macro.export? metaV) (:! Type expressionV))) + (moduleL.declare-tags tags (macro.export? metaV) (:coerce Type expressionV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (wrap [])) diff --git a/new-luxc/source/luxc/lang/translation/php.lux b/new-luxc/source/luxc/lang/translation/php.lux index 8ee0f9c14..fe4e6095c 100644 --- a/new-luxc/source/luxc/lang/translation/php.lux +++ b/new-luxc/source/luxc/lang/translation/php.lux @@ -80,26 +80,26 @@ (Meta Any) (function (_ compiler) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Nothing)) + (:coerce Nothing)) compiler) []]))) (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler)) + (let [old (:coerce Host (get@ #.host compiler)) [old-name old-sub] (get@ #context old) new-name (format old-name "___" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #context [new-name +0] old)) + (:coerce Nothing (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -111,7 +111,7 @@ (function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #context) (let> [name sub] name))]))) @@ -119,15 +119,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> Anchor (Meta a) (Meta a))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler))] + (let [old (:coerce Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #anchor (get@ #anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -137,7 +137,7 @@ (def: #export anchor (Meta Anchor) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #anchor)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -147,7 +147,7 @@ (def: #export module-buffer (Meta StringBuilder) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #module-buffer)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #module-buffer)) #.None ((lang.throw No-Active-Module-Buffer "") compiler) @@ -157,13 +157,13 @@ (def: #export program-buffer (Meta StringBuilder) (function (_ compiler) - (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) + (#e.Success [compiler (|> compiler (get@ #.host) (:coerce Host) (get@ #program-buffer))]))) (do-template [<name> <field> <inputT> <outputT>] [(def: (<name> code) (-> <inputT> (Meta <outputT>)) (function (_ compiler) - (let [runner (|> compiler (get@ #.host) (:! Host) (get@ <field>))] + (let [runner (|> compiler (get@ #.host) (:coerce Host) (get@ <field>))] (case (runner code) (#e.Error error) ((lang.throw Cannot-Execute error) compiler) @@ -189,7 +189,7 @@ (-> Statement (Meta Any)) (do macro.Monad<Meta> [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence (_.code code))] + #let [_ (Appendable::append [(:coerce CharSequence (_.code code))] module-buffer)]] (load! code))) @@ -200,7 +200,7 @@ module-buffer module-buffer program-buffer program-buffer #let [module-code (StringBuilder::toString [] module-buffer) - _ (Appendable::append [(:! CharSequence (format module-code "\n"))] + _ (Appendable::append [(:coerce CharSequence (format module-code "\n"))] program-buffer)]] (wrap (ioC.write target (format (lang.normalize-name module) "/" ..module-name) diff --git a/new-luxc/source/luxc/lang/translation/php/case.jvm.lux b/new-luxc/source/luxc/lang/translation/php/case.jvm.lux index 3a5eff053..6f78637cf 100644 --- a/new-luxc/source/luxc/lang/translation/php/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/case.jvm.lux @@ -39,7 +39,7 @@ (let [method (if tail? runtimeT.product//right runtimeT.product//left)] - (method source (_.int (:! Int idx))))) + (method source (_.int (:coerce Int idx))))) valueO pathP)))) @@ -114,22 +114,22 @@ [_ (<tag> value)] (meta/wrap (_.when! (_.not (_.= (|> value <format>) cursor-top)) fail-pm!))) - ([#.Nat (<| _.int (:! Int))] + ([#.Nat (<| _.int (:coerce Int))] [#.Int _.int] - [#.Deg (<| _.int (:! Int))] + [#.Deg (<| _.int (:coerce Int))] [#.Bool _.bool] [#.Frac _.float] [#.Text _.string]) (^template [<pm> <getter>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (push-cursor! (<getter> cursor-top (_.int (:! Int idx)))))) + (meta/wrap (push-cursor! (<getter> cursor-top (_.int (:coerce Int idx)))))) (["lux case tuple left" runtimeT.product//left] ["lux case tuple right" runtimeT.product//right]) (^template [<pm> <flag>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (|> (_.set! @temp (runtimeT.sum//get cursor-top (_.int (:! Int idx)) <flag>)) + (meta/wrap (|> (_.set! @temp (runtimeT.sum//get cursor-top (_.int (:coerce Int idx)) <flag>)) (_.then! (_.if! (_.is-null/1 @temp) fail-pm! (push-cursor! @temp)))))) diff --git a/new-luxc/source/luxc/lang/translation/php/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/php/eval.jvm.lux index 54ec6abc2..4b954c4f1 100644 --- a/new-luxc/source/luxc/lang/translation/php/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/eval.jvm.lux @@ -29,8 +29,8 @@ (intValue [] Integer)) (exception: #export (Unknown-Kind-Of-Host-Object {host-object Object}) - (let [object-class (:! Text (Object::toString [] (Object::getClass [] (:! Object host-object)))) - text-representation (:! Text (Object::toString [] (:! Object host-object)))] + (let [object-class (:coerce Text (Object::toString [] (Object::getClass [] (:coerce Object host-object)))) + text-representation (:coerce Text (Object::toString [] (:coerce Object host-object)))] (format object-class " --- " text-representation))) (host.import php/runtime/Memory) @@ -63,18 +63,18 @@ (-> (-> Object (Error Any)) ArrayMemory (Error Any)) (let [size (ArrayMemory::size [] host-object)] (loop [idx 0 - output (: (Array Any) (array.new (:! Nat size)))] + output (: (Array Any) (array.new (:coerce Nat size)))] (if (i/< size idx) (let [value (|> host-object (ArrayMemory::get [(LongMemory::new [idx])]) - (:! ReferenceMemory) (ReferenceMemory::getValue []))] + (:coerce ReferenceMemory) (ReferenceMemory::getValue []))] (if (host.instance? php/runtime/memory/NullMemory value) (recur (inc idx) - (array.write (:! Nat idx) (host.null) output)) + (array.write (:coerce Nat idx) (host.null) output)) (do e.Monad<Error> [lux-value (lux-object value)] (recur (inc idx) - (array.write (:! Nat idx) lux-value output))))) + (array.write (:coerce Nat idx) lux-value output))))) (ex.return output))))) (def: (variant lux-object host-object) @@ -83,11 +83,11 @@ [variant-tag (lux-object (ArrayMemory::get [(StringMemory::new [//.variant-tag-field])] host-object)) variant-value (lux-object (ArrayMemory::get [(StringMemory::new [//.variant-value-field])] host-object))] (wrap (: Any - [(Long::intValue [] (:! Long variant-tag)) + [(Long::intValue [] (:coerce Long variant-tag)) (: Any (if (|> host-object (ArrayMemory::get [(StringMemory::new [//.variant-flag-field])]) - (:! ReferenceMemory) + (:coerce ReferenceMemory) (ReferenceMemory::getValue []) (host.instance? php/runtime/memory/NullMemory)) (host.null) @@ -103,21 +103,21 @@ (ex.return true) (host.instance? php/runtime/memory/LongMemory host-object) - (ex.return (LongMemory::toLong [] (:! LongMemory host-object))) + (ex.return (LongMemory::toLong [] (:coerce LongMemory host-object))) (host.instance? php/runtime/memory/DoubleMemory host-object) - (ex.return (DoubleMemory::toDouble [] (:! DoubleMemory host-object))) + (ex.return (DoubleMemory::toDouble [] (:coerce DoubleMemory host-object))) (host.instance? php/runtime/memory/StringMemory host-object) - (ex.return (StringMemory::toString [] (:! StringMemory host-object))) + (ex.return (StringMemory::toString [] (:coerce StringMemory host-object))) (host.instance? php/runtime/memory/ReferenceMemory host-object) - (lux-object (ReferenceMemory::getValue [] (:! ReferenceMemory host-object))) + (lux-object (ReferenceMemory::getValue [] (:coerce ReferenceMemory host-object))) (host.instance? php/runtime/memory/ArrayMemory host-object) - (if (ArrayMemory::isMap [] (:! ArrayMemory host-object)) - (variant lux-object (:! ArrayMemory host-object)) - (tuple lux-object (:! ArrayMemory host-object))) + (if (ArrayMemory::isMap [] (:coerce ArrayMemory host-object)) + (variant lux-object (:coerce ArrayMemory host-object)) + (tuple lux-object (:coerce ArrayMemory host-object))) ## else (ex.throw Unknown-Kind-Of-Host-Object host-object))) @@ -125,7 +125,7 @@ (def: #export (eval code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! //.Host) (get@ #//.interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce //.Host) (get@ #//.interpreter))] (case (interpreter code) (#e.Error error) ((lang.throw Cannot-Evaluate error) compiler) diff --git a/new-luxc/source/luxc/lang/translation/php/expression.jvm.lux b/new-luxc/source/luxc/lang/translation/php/expression.jvm.lux index 43497c93e..cd67be0f0 100644 --- a/new-luxc/source/luxc/lang/translation/php/expression.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/expression.jvm.lux @@ -37,9 +37,9 @@ [_ (<tag> value)] (|> value <generator>)) ([#.Bool primitiveT.translate-bool] - [#.Nat (<| primitiveT.translate-int (:! Int))] + [#.Nat (<| primitiveT.translate-int (:coerce Int))] [#.Int primitiveT.translate-int] - [#.Deg (<| primitiveT.translate-int (:! Int))] + [#.Deg (<| primitiveT.translate-int (:coerce Int))] [#.Frac primitiveT.translate-frac] [#.Text primitiveT.translate-text]) diff --git a/new-luxc/source/luxc/lang/translation/php/reference.jvm.lux b/new-luxc/source/luxc/lang/translation/php/reference.jvm.lux index 9146684e4..4364d87ea 100644 --- a/new-luxc/source/luxc/lang/translation/php/reference.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/reference.jvm.lux @@ -12,7 +12,7 @@ (do-template [<register> <prefix>] [(def: #export <register> (-> Register Var) - (|>> (:! Int) %i (format <prefix>) _.var))] + (|>> (:coerce Int) %i (format <prefix>) _.var))] [closure "c"] [variable "v"]) @@ -21,7 +21,7 @@ (-> Variable Var) (if (variableL.captured? var) (closure (variableL.captured-register var)) - (variable (:! Nat var)))) + (variable (:coerce Nat var)))) (def: #export global (-> Ident Var) diff --git a/new-luxc/source/luxc/lang/translation/php/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/php/statement.jvm.lux index a20e164ca..70a39a575 100644 --- a/new-luxc/source/luxc/lang/translation/php/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/statement.jvm.lux @@ -34,7 +34,7 @@ (wrap []) tags - (moduleL.declare-tags tags (macro.export? metaV) (:! Type expressionV))) + (moduleL.declare-tags tags (macro.export? metaV) (:coerce Type expressionV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (wrap [])) diff --git a/new-luxc/source/luxc/lang/translation/python.lux b/new-luxc/source/luxc/lang/translation/python.lux index 3dde69d2a..8dac22fca 100644 --- a/new-luxc/source/luxc/lang/translation/python.lux +++ b/new-luxc/source/luxc/lang/translation/python.lux @@ -77,26 +77,26 @@ (Meta Any) (function (_ compiler) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Nothing)) + (:coerce Nothing)) compiler) []]))) (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler)) + (let [old (:coerce Host (get@ #.host compiler)) [old-name old-sub] (get@ #context old) new-name (format old-name "___" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #context [new-name +0] old)) + (:coerce Nothing (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -108,7 +108,7 @@ (function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #context) (let> [name sub] name))]))) @@ -116,15 +116,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> Anchor (Meta a) (Meta a))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler))] + (let [old (:coerce Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #anchor (get@ #anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -134,7 +134,7 @@ (def: #export anchor (Meta Anchor) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #anchor)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -144,7 +144,7 @@ (def: #export module-buffer (Meta StringBuilder) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #module-buffer)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #module-buffer)) #.None ((lang.throw No-Active-Module-Buffer "") compiler) @@ -154,13 +154,13 @@ (def: #export program-buffer (Meta StringBuilder) (function (_ compiler) - (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) + (#e.Success [compiler (|> compiler (get@ #.host) (:coerce Host) (get@ #program-buffer))]))) (do-template [<name> <field> <inputT> <outputT>] [(def: (<name> code) (-> <inputT> (Meta <outputT>)) (function (_ compiler) - (let [runner (|> compiler (get@ #.host) (:! Host) (get@ <field>))] + (let [runner (|> compiler (get@ #.host) (:coerce Host) (get@ <field>))] (case (runner code) (#e.Error error) ((lang.throw Cannot-Execute error) compiler) @@ -187,7 +187,7 @@ (-> <inputT> (Meta <outputT>)) (do macro.Monad<Meta> [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence (<un-wrap> code))] + #let [_ (Appendable::append [(:coerce CharSequence (<un-wrap> code))] module-buffer)]] (<eval> code)))] @@ -202,7 +202,7 @@ module-buffer module-buffer program-buffer program-buffer #let [module-code (StringBuilder::toString [] module-buffer) - _ (Appendable::append [(:! CharSequence (format module-code "\n"))] + _ (Appendable::append [(:coerce CharSequence (format module-code "\n"))] program-buffer)]] (wrap (ioC.write target (format (lang.normalize-name module) "/" python-module-name) diff --git a/new-luxc/source/luxc/lang/translation/python/case.jvm.lux b/new-luxc/source/luxc/lang/translation/python/case.jvm.lux index f51acc402..aedf2a6e1 100644 --- a/new-luxc/source/luxc/lang/translation/python/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/case.jvm.lux @@ -38,7 +38,7 @@ (let [method (if tail? runtimeT.product//right runtimeT.product//left)] - (method source (python.int (:! Int idx))))) + (method source (python.int (:coerce Int idx))))) valueO pathP)))) @@ -115,23 +115,23 @@ [_ (<tag> value)] (meta/wrap (python.when! (python.not (python.= (|> value <format>) cursor-top)) fail-pm!))) - ([#.Nat (<| python.int (:! Int))] + ([#.Nat (<| python.int (:coerce Int))] [#.Int python.int] - [#.Deg (<| python.int (:! Int))] + [#.Deg (<| python.int (:coerce Int))] [#.Bool python.bool] [#.Frac python.float] [#.Text python.string]) (^template [<pm> <getter>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (push-cursor! (<getter> cursor-top (python.int (:! Int idx)))))) + (meta/wrap (push-cursor! (<getter> cursor-top (python.int (:coerce Int idx)))))) (["lux case tuple left" runtimeT.product//left] ["lux case tuple right" runtimeT.product//right]) (^template [<pm> <flag>] (^code (<pm> (~ [_ (#.Nat idx)]))) (meta/wrap ($_ python.then! - (python.set! (list $temp) (runtimeT.sum//get cursor-top (python.int (:! Int idx)) <flag>)) + (python.set! (list $temp) (runtimeT.sum//get cursor-top (python.int (:coerce Int idx)) <flag>)) (python.if! (python.= python.none (@@ $temp)) fail-pm! (push-cursor! (@@ $temp)))))) diff --git a/new-luxc/source/luxc/lang/translation/python/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/python/eval.jvm.lux index df1e7004c..88fdd3173 100644 --- a/new-luxc/source/luxc/lang/translation/python/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/eval.jvm.lux @@ -46,11 +46,11 @@ (def: (tuple lux-object host-object) (-> (-> PyObject (Error Any)) PyObject (Error Any)) - (let [size (:! Nat (PyObject::__len__ [] host-object))] + (let [size (:coerce Nat (PyObject::__len__ [] host-object))] (loop [idx +0 - output (:! (Array Any) (array.new size))] + output (:coerce (Array Any) (array.new size))] (if (n/< size idx) - (case (PyObject::__getitem__ [(:! Int idx)] host-object) + (case (PyObject::__getitem__ [(:coerce Int idx)] host-object) (#e.Error error) (#e.Error error) @@ -65,7 +65,7 @@ (def: python-type (-> PyObject Text) - (|>> (PyObject::getType []) (PyType::getName []) (:! Text))) + (|>> (PyObject::getType []) (PyType::getName []) (:coerce Text))) (def: tag-field (PyString::new [//.variant-tag-field])) (def: flag-field (PyString::new [//.variant-flag-field])) @@ -84,9 +84,9 @@ (#e.Success tag)] [(lux-object value) (#e.Success value)]) - (#e.Success [(Long::intValue [] (:! Long tag)) + (#e.Success [(Long::intValue [] (:coerce Long tag)) (: Any - (case (python-type (:! PyObject flag)) + (case (python-type (:coerce PyObject flag)) "NoneType" (host.null) @@ -127,7 +127,7 @@ (def: #export (eval code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! //.Host) (get@ #//.interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce //.Host) (get@ #//.interpreter))] (case (interpreter code) (#e.Error error) (exec (log! (format "eval #e.Error\n" diff --git a/new-luxc/source/luxc/lang/translation/python/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/python/primitive.jvm.lux index 7b2ba1786..f1cf731a2 100644 --- a/new-luxc/source/luxc/lang/translation/python/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/primitive.jvm.lux @@ -13,11 +13,11 @@ (def: #export translate-nat (-> Nat (Meta Expression)) - (|>> (:! Int) python.int meta/wrap)) + (|>> (:coerce Int) python.int meta/wrap)) (def: #export translate-deg (-> Deg (Meta Expression)) - (|>> (:! Int) python.int meta/wrap)) + (|>> (:coerce Int) python.int meta/wrap)) (def: #export translate-frac (-> Frac (Meta Expression)) diff --git a/new-luxc/source/luxc/lang/translation/python/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/python/statement.jvm.lux index 23b51371c..c241afa8a 100644 --- a/new-luxc/source/luxc/lang/translation/python/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/statement.jvm.lux @@ -34,7 +34,7 @@ (wrap []) tags - (moduleL.declare-tags tags (macro.export? metaV) (:! Type expressionV))) + (moduleL.declare-tags tags (macro.export? metaV) (:coerce Type expressionV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (wrap [])) diff --git a/new-luxc/source/luxc/lang/translation/r.lux b/new-luxc/source/luxc/lang/translation/r.lux index 4864cc286..e9c984636 100644 --- a/new-luxc/source/luxc/lang/translation/r.lux +++ b/new-luxc/source/luxc/lang/translation/r.lux @@ -74,7 +74,7 @@ #interpreter (function (_ code) (do e.Monad<Error> [output (ScriptEngine::eval [(r.expression code)] interpreter)] - (wrap (maybe.default (:! Object []) + (wrap (maybe.default (:coerce Object []) output)))) #module-buffer #.None #program-buffer (StringBuilder::new [])}))) @@ -85,26 +85,26 @@ (Meta Any) (function (_ compiler) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Nothing)) + (:coerce Nothing)) compiler) []]))) (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler)) + (let [old (:coerce Host (get@ #.host compiler)) [old-name old-sub] (get@ #context old) new-name (format old-name "f___" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #context [new-name +0] old)) + (:coerce Nothing (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -116,7 +116,7 @@ (function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #context) (let> [name sub] name))]))) @@ -124,15 +124,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> Anchor (Meta a) (Meta a))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler))] + (let [old (:coerce Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #anchor (get@ #anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -142,7 +142,7 @@ (def: #export anchor (Meta Anchor) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #anchor)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -152,7 +152,7 @@ (def: #export module-buffer (Meta StringBuilder) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #module-buffer)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #module-buffer)) #.None ((lang.throw No-Active-Module-Buffer "") compiler) @@ -162,13 +162,13 @@ (def: #export program-buffer (Meta StringBuilder) (function (_ compiler) - (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) + (#e.Success [compiler (|> compiler (get@ #.host) (:coerce Host) (get@ #program-buffer))]))) (do-template [<name> <field> <outputT>] [(def: (<name> code) (-> Expression (Meta <outputT>)) (function (_ compiler) - (let [runner (|> compiler (get@ #.host) (:! Host) (get@ <field>))] + (let [runner (|> compiler (get@ #.host) (:coerce Host) (get@ <field>))] (case (runner code) (#e.Error error) ((lang.throw Cannot-Execute error) compiler) @@ -197,7 +197,7 @@ (-> Expression (Meta Any)) (do macro.Monad<Meta> [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence (r.expression code))] + #let [_ (Appendable::append [(:coerce CharSequence (r.expression code))] module-buffer)]] (load! code))) @@ -210,7 +210,7 @@ module-buffer module-buffer program-buffer program-buffer #let [module-code (StringBuilder::toString [] module-buffer) - _ (Appendable::append [(:! CharSequence (format module-code "\n"))] + _ (Appendable::append [(:coerce CharSequence (format module-code "\n"))] program-buffer)]] (wrap (ioC.write target (format (lang.normalize-name module) "/" r-module-name) diff --git a/new-luxc/source/luxc/lang/translation/r/case.jvm.lux b/new-luxc/source/luxc/lang/translation/r/case.jvm.lux index 21d8f1def..3aa3d4a8a 100644 --- a/new-luxc/source/luxc/lang/translation/r/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/case.jvm.lux @@ -39,7 +39,7 @@ (let [method (if tail? runtimeT.product//right runtimeT.product//left)] - (method source (r.int (:! Int idx))))) + (method source (r.int (:coerce Int idx))))) valueO pathP)))) @@ -124,20 +124,20 @@ [_ (<tag> value)] (meta/wrap (r.when (r.not (runtimeT.int//= (|> value <format>) cursor-top)) fail-pm!))) - ([#.Nat (<| runtimeT.int (:! Int))] + ([#.Nat (<| runtimeT.int (:coerce Int))] [#.Int runtimeT.int] - [#.Deg (<| runtimeT.int (:! Int))]) + [#.Deg (<| runtimeT.int (:coerce Int))]) (^template [<pm> <getter>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (push-cursor! (<getter> cursor-top (r.int (:! Int idx)))))) + (meta/wrap (push-cursor! (<getter> cursor-top (r.int (:coerce Int idx)))))) (["lux case tuple left" runtimeT.product//left] ["lux case tuple right" runtimeT.product//right]) (^template [<pm> <flag>] (^code (<pm> (~ [_ (#.Nat idx)]))) (meta/wrap ($_ r.then - (r.set! $temp (runtimeT.sum//get cursor-top (r.int (:! Int idx)) <flag>)) + (r.set! $temp (runtimeT.sum//get cursor-top (r.int (:coerce Int idx)) <flag>)) (r.if (r.= r.null (@@ $temp)) fail-pm! (push-cursor! (@@ $temp)))))) diff --git a/new-luxc/source/luxc/lang/translation/r/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/r/eval.jvm.lux index e3a255e41..eb20d73c5 100644 --- a/new-luxc/source/luxc/lang/translation/r/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/eval.jvm.lux @@ -51,21 +51,21 @@ (def: (parse-tuple lux-object host-object) (-> (-> Object (Error Any)) ListVector (Error Any)) - (let [size (:! Nat (ListVector::length [] host-object))] + (let [size (:coerce Nat (ListVector::length [] host-object))] (loop [idx +0 - output (:! (Array Any) (array.new size))] + output (:coerce (Array Any) (array.new size))] (if (n/< size idx) - (case (ListVector::getElementAsSEXP [(:! Int idx)] host-object) + (case (ListVector::getElementAsSEXP [(:coerce Int idx)] host-object) (#e.Error error) (#e.Error error) (#e.Success value) - (case (lux-object (:! Object value)) + (case (lux-object (:coerce Object value)) (#e.Error error) (#e.Error error) (#e.Success lux-value) - (recur (inc idx) (array.write idx (:! Any lux-value) output)))) + (recur (inc idx) (array.write idx (:coerce Any lux-value) output)))) (#e.Success output))))) (def: (parse-variant lux-object host-object) @@ -74,9 +74,9 @@ [tag (ListVector::get-field-sexp [//.variant-tag-field] host-object) flag (ListVector::get-field-sexp [//.variant-flag-field] host-object) value (ListVector::get-field-sexp [//.variant-value-field] host-object) - value (lux-object (:! Object value))] + value (lux-object (:coerce Object value))] (wrap [(|> tag - (:! IntArrayVector) + (:coerce IntArrayVector) (IntArrayVector::getElementAsInt [0]) (Long::intValue [])) (: Any @@ -90,35 +90,35 @@ (do e.Monad<Error> [high (ListVector::get-field-sexp [//.int-high-field] host-object) low (ListVector::get-field-sexp [//.int-low-field] host-object) - #let [get-int-32 (|>> (IntArrayVector::getElementAsInt [0]) (:! Nat)) - high (get-int-32 (:! IntArrayVector high)) - low (get-int-32 (:! IntArrayVector low))]] - (wrap (:! Int + #let [get-int-32 (|>> (IntArrayVector::getElementAsInt [0]) (:coerce Nat)) + high (get-int-32 (:coerce IntArrayVector high)) + low (get-int-32 (:coerce IntArrayVector low))]] + (wrap (:coerce Int (n/+ (|> high (bit.left-shift +32)) - (if (i/< 0 (:! Int low)) + (if (i/< 0 (:coerce Int low)) (|> low (bit.left-shift +32) (bit.logical-right-shift +32)) low)))))) (def: (lux-object host-object) (-> Object (Error Any)) (cond (host.instance? StringArrayVector host-object) - (#e.Success (StringArrayVector::getElementAsString [0] (:! StringArrayVector host-object))) + (#e.Success (StringArrayVector::getElementAsString [0] (:coerce StringArrayVector host-object))) (host.instance? LogicalArrayVector host-object) - (#e.Success (i/= 1 (LogicalArrayVector::getElementAsRawLogical [0] (:! LogicalArrayVector host-object)))) + (#e.Success (i/= 1 (LogicalArrayVector::getElementAsRawLogical [0] (:coerce LogicalArrayVector host-object)))) (host.instance? IntArrayVector host-object) - (#e.Success (IntArrayVector::getElementAsInt [0] (:! IntArrayVector host-object))) + (#e.Success (IntArrayVector::getElementAsInt [0] (:coerce IntArrayVector host-object))) (host.instance? DoubleArrayVector host-object) - (#e.Success (DoubleArrayVector::getElementAsDouble [0] (:! DoubleArrayVector host-object))) + (#e.Success (DoubleArrayVector::getElementAsDouble [0] (:coerce DoubleArrayVector host-object))) (host.instance? ListVector host-object) - (case (parse-int (:! ListVector host-object)) + (case (parse-int (:coerce ListVector host-object)) (#e.Error error) - (case (parse-variant lux-object (:! ListVector host-object)) + (case (parse-variant lux-object (:coerce ListVector host-object)) (#e.Error error) - (parse-tuple lux-object (:! ListVector host-object)) + (parse-tuple lux-object (:coerce ListVector host-object)) output output) @@ -127,14 +127,14 @@ output) ## else - (let [object-class (:! Text (Object::toString [] (Object::getClass [] (:! Object host-object)))) - text-representation (:! Text (Object::toString [] (:! Object host-object)))] + (let [object-class (:coerce Text (Object::toString [] (Object::getClass [] (:coerce Object host-object)))) + text-representation (:coerce Text (Object::toString [] (:coerce Object host-object)))] (ex.throw Unknown-Kind-Of-Host-Object (format object-class " --- " text-representation))))) (def: #export (eval code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! //.Host) (get@ #//.interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce //.Host) (get@ #//.interpreter))] (case (interpreter code) (#e.Error error) (exec (log! (format "eval #e.Error\n" diff --git a/new-luxc/source/luxc/lang/translation/r/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/r/primitive.jvm.lux index a6101f749..ad89f2e31 100644 --- a/new-luxc/source/luxc/lang/translation/r/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/primitive.jvm.lux @@ -15,11 +15,11 @@ (def: #export translate-nat (-> Nat (Meta Expression)) - (|>> (:! Int) runtimeT.int meta/wrap)) + (|>> (:coerce Int) runtimeT.int meta/wrap)) (def: #export translate-deg (-> Deg (Meta Expression)) - (|>> (:! Int) runtimeT.int meta/wrap)) + (|>> (:coerce Int) runtimeT.int meta/wrap)) (def: #export translate-frac (-> Frac (Meta Expression)) diff --git a/new-luxc/source/luxc/lang/translation/r/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/r/statement.jvm.lux index 62349abcf..e09410f40 100644 --- a/new-luxc/source/luxc/lang/translation/r/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/statement.jvm.lux @@ -34,7 +34,7 @@ (wrap []) tags - (moduleL.declare-tags tags (macro.export? metaV) (:! Type expressionV))) + (moduleL.declare-tags tags (macro.export? metaV) (:coerce Type expressionV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (wrap [])) diff --git a/new-luxc/source/luxc/lang/translation/ruby.lux b/new-luxc/source/luxc/lang/translation/ruby.lux index 808d8105c..1ed9f30e1 100644 --- a/new-luxc/source/luxc/lang/translation/ruby.lux +++ b/new-luxc/source/luxc/lang/translation/ruby.lux @@ -71,26 +71,26 @@ (Meta Any) (function (_ compiler) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Nothing)) + (:coerce Nothing)) compiler) []]))) (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler)) + (let [old (:coerce Host (get@ #.host compiler)) [old-name old-sub] (get@ #context old) new-name (format old-name "___" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #context [new-name +0] old)) + (:coerce Nothing (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -102,7 +102,7 @@ (function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #context) (let> [name sub] name))]))) @@ -110,15 +110,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> Anchor (Meta a) (Meta a))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler))] + (let [old (:coerce Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #anchor (get@ #anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -128,7 +128,7 @@ (def: #export anchor (Meta Anchor) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #anchor)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -138,7 +138,7 @@ (def: #export module-buffer (Meta StringBuilder) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #module-buffer)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #module-buffer)) #.None ((lang.throw No-Active-Module-Buffer "") compiler) @@ -148,12 +148,12 @@ (def: #export program-buffer (Meta StringBuilder) (function (_ compiler) - (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) + (#e.Success [compiler (|> compiler (get@ #.host) (:coerce Host) (get@ #program-buffer))]))) (def: (execute code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! Host) (get@ #interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce Host) (get@ #interpreter))] (case (interpreter code) (#e.Error error) ((lang.throw Cannot-Execute error) compiler) @@ -175,7 +175,7 @@ (-> Ruby (Meta Any)) (do macro.Monad<Meta> [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence code)] + #let [_ (Appendable::append [(:coerce CharSequence code)] module-buffer)]] (execute code))) @@ -186,7 +186,7 @@ module-buffer module-buffer program-buffer program-buffer #let [module-code (StringBuilder::toString [] module-buffer) - _ (Appendable::append [(:! CharSequence (format module-code "\n"))] + _ (Appendable::append [(:coerce CharSequence (format module-code "\n"))] program-buffer)]] (wrap (ioC.write target (format (lang.normalize-name module) "/" ruby-module-name) diff --git a/new-luxc/source/luxc/lang/translation/ruby/case.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/case.jvm.lux index d76b2a757..b7b1f131d 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/case.jvm.lux @@ -38,7 +38,7 @@ (let [method (if tail? runtimeT.product//right runtimeT.product//left)] - (method source (ruby.int (:! Int idx))))) + (method source (ruby.int (:coerce Int idx))))) valueO path)))) @@ -107,22 +107,22 @@ [_ (<tag> value)] (meta/wrap (ruby.when! (ruby.not (ruby.= (|> value <format>) cursor-top)) (ruby.raise pm-error)))) - ([#.Nat (<| ruby.int (:! Int))] + ([#.Nat (<| ruby.int (:coerce Int))] [#.Int ruby.int] - [#.Deg (<| ruby.int (:! Int))] + [#.Deg (<| ruby.int (:coerce Int))] [#.Bool ruby.bool] [#.Frac ruby.float] [#.Text ruby.string]) (^template [<pm> <getter>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (push-cursor! (<getter> cursor-top (ruby.int (:! Int idx)))))) + (meta/wrap (push-cursor! (<getter> cursor-top (ruby.int (:coerce Int idx)))))) (["lux case tuple left" runtimeT.product//left] ["lux case tuple right" runtimeT.product//right]) (^template [<pm> <flag>] (^code (<pm> (~ [_ (#.Nat idx)]))) - (meta/wrap (ruby.block! (list (ruby.set! (list "temp") (runtimeT.sum//get cursor-top (ruby.int (:! Int idx)) <flag>)) + (meta/wrap (ruby.block! (list (ruby.set! (list "temp") (runtimeT.sum//get cursor-top (ruby.int (:coerce Int idx)) <flag>)) (ruby.if! (ruby.= ruby.nil "temp") (ruby.raise pm-error) (push-cursor! "temp")))))) diff --git a/new-luxc/source/luxc/lang/translation/ruby/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/eval.jvm.lux index 7d43e5460..3c590e8ee 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/eval.jvm.lux @@ -37,11 +37,11 @@ (def: (tuple lux-object host-object) (-> (-> Object (Error Any)) RubyArray (Error Any)) - (let [size (:! Nat (RubyArray::getLength [] host-object))] + (let [size (:coerce Nat (RubyArray::getLength [] host-object))] (loop [idx +0 - output (:! (Array Any) (array.new size))] + output (:coerce (Array Any) (array.new size))] (if (n/< size idx) - (case (RubyArray::get [(:! Int idx)] host-object) + (case (RubyArray::get [(:coerce Int idx)] host-object) #.None (recur (inc idx) output) @@ -56,13 +56,13 @@ (def: (variant lux-object host-object) (-> (-> Object (Error Any)) RubyHash (Error Any)) - (case [(RubyHash::get [(:! Object //.variant-tag-field)] host-object) - (RubyHash::get [(:! Object //.variant-flag-field)] host-object) - (RubyHash::get [(:! Object //.variant-value-field)] host-object)] + (case [(RubyHash::get [(:coerce Object //.variant-tag-field)] host-object) + (RubyHash::get [(:coerce Object //.variant-flag-field)] host-object) + (RubyHash::get [(:coerce Object //.variant-value-field)] host-object)] (^multi [(#.Some tag) ?flag (#.Some value)] [(lux-object value) (#.Some value)]) - (#e.Success [(Long::intValue [] (:! Long tag)) + (#e.Success [(Long::intValue [] (:coerce Long tag)) (: Any (case ?flag (#.Some _) "" #.None (host.null))) value]) @@ -81,28 +81,28 @@ (ex.return host-object) (host.instance? org/jruby/RubyArray host-object) - (tuple lux-object (:! RubyArray host-object)) + (tuple lux-object (:coerce RubyArray host-object)) (host.instance? org/jruby/RubyHash host-object) - (case (variant lux-object (:! RubyHash host-object)) + (case (variant lux-object (:coerce RubyHash host-object)) (#e.Success value) (#e.Success value) _ - (let [object-class (:! Text (Object::toString [] (Object::getClass [] (:! Object host-object)))) - text-representation (:! Text (Object::toString [] (:! Object host-object)))] + (let [object-class (:coerce Text (Object::toString [] (Object::getClass [] (:coerce Object host-object)))) + text-representation (:coerce Text (Object::toString [] (:coerce Object host-object)))] (ex.throw Unknown-Kind-Of-Host-Object (format object-class " --- " text-representation)))) ## else - (let [object-class (:! Text (Object::toString [] (Object::getClass [] (:! Object host-object)))) - text-representation (:! Text (Object::toString [] (:! Object host-object)))] + (let [object-class (:coerce Text (Object::toString [] (Object::getClass [] (:coerce Object host-object)))) + text-representation (:coerce Text (Object::toString [] (:coerce Object host-object)))] (ex.throw Unknown-Kind-Of-Host-Object (format object-class " --- " text-representation))) ))) (def: #export (eval code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! //.Host) (get@ #//.interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce //.Host) (get@ #//.interpreter))] (case (interpreter code) (#e.Error error) (exec (log! (format "eval #e.Error\n" @@ -111,7 +111,7 @@ ((lang.throw Cannot-Evaluate error) compiler)) (#e.Success output) - (case (lux-object (:! Object output)) + (case (lux-object (:coerce Object output)) (#e.Success parsed-output) (exec ## (log! (format "eval #e.Success\n" ## "<< " code)) diff --git a/new-luxc/source/luxc/lang/translation/ruby/primitive.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/primitive.jvm.lux index 1e76ef9e4..1f05cf2fd 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/primitive.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/primitive.jvm.lux @@ -16,11 +16,11 @@ (def: #export translate-nat (-> Nat (Meta Expression)) - (|>> (:! Int) %i meta/wrap)) + (|>> (:coerce Int) %i meta/wrap)) (def: #export translate-deg (-> Deg (Meta Expression)) - (|>> (:! Int) %i meta/wrap)) + (|>> (:coerce Int) %i meta/wrap)) (def: #export translate-frac (-> Frac (Meta Expression)) diff --git a/new-luxc/source/luxc/lang/translation/ruby/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/statement.jvm.lux index 135a09039..83792921d 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/statement.jvm.lux @@ -34,7 +34,7 @@ (wrap []) tags - (moduleL.declare-tags tags (macro.export? metaV) (:! Type expressionV))) + (moduleL.declare-tags tags (macro.export? metaV) (:coerce Type expressionV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (wrap [])) diff --git a/new-luxc/source/luxc/lang/translation/scheme.lux b/new-luxc/source/luxc/lang/translation/scheme.lux index a117899fa..af3208414 100644 --- a/new-luxc/source/luxc/lang/translation/scheme.lux +++ b/new-luxc/source/luxc/lang/translation/scheme.lux @@ -72,7 +72,7 @@ #interpreter (function (_ code) (do e.Monad<Error> [output (Language::eval [(scheme.expression code)] interpreter)] - (wrap (maybe.default (:! Object []) + (wrap (maybe.default (:coerce Object []) output)))) #module-buffer #.None #program-buffer (StringBuilder::new [])}))) @@ -85,26 +85,26 @@ (Meta Any) (function (_ compiler) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Nothing)) + (:coerce Nothing)) compiler) []]))) (def: #export (with-sub-context expr) (All [a] (-> (Meta a) (Meta [Text a]))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler)) + (let [old (:coerce Host (get@ #.host compiler)) [old-name old-sub] (get@ #context old) new-name (format old-name "f___" (%i (.int old-sub)))] (case (expr (set@ #.host - (:! Nothing (set@ #context [new-name +0] old)) + (:coerce Nothing (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #context [old-name (inc old-sub)]) - (:! Nothing)) + (:coerce Nothing)) compiler') [new-name output]]) @@ -116,7 +116,7 @@ (function (_ compiler) (#e.Success [compiler (|> (get@ #.host compiler) - (:! Host) + (:coerce Host) (get@ #context) (let> [name sub] name))]))) @@ -124,15 +124,15 @@ (def: #export (with-anchor anchor expr) (All [a] (-> Anchor (Meta a) (Meta a))) (function (_ compiler) - (let [old (:! Host (get@ #.host compiler))] + (let [old (:coerce Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Nothing (set@ #anchor (#.Some anchor) old)) + (:coerce Nothing (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host - (|>> (:! Host) + (|>> (:coerce Host) (set@ #anchor (get@ #anchor old)) - (:! Nothing)) + (:coerce Nothing)) compiler') output]) @@ -142,7 +142,7 @@ (def: #export anchor (Meta Anchor) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #anchor)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #anchor)) (#.Some anchor) (#e.Success [compiler anchor]) @@ -152,7 +152,7 @@ (def: #export module-buffer (Meta StringBuilder) (function (_ compiler) - (case (|> compiler (get@ #.host) (:! Host) (get@ #module-buffer)) + (case (|> compiler (get@ #.host) (:coerce Host) (get@ #module-buffer)) #.None ((lang.throw No-Active-Module-Buffer "") compiler) @@ -162,13 +162,13 @@ (def: #export program-buffer (Meta StringBuilder) (function (_ compiler) - (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) + (#e.Success [compiler (|> compiler (get@ #.host) (:coerce Host) (get@ #program-buffer))]))) (do-template [<name> <field> <outputT>] [(def: (<name> code) (-> Expression (Meta <outputT>)) (function (_ compiler) - (let [runner (|> compiler (get@ #.host) (:! Host) (get@ <field>))] + (let [runner (|> compiler (get@ #.host) (:coerce Host) (get@ <field>))] (case (runner code) (#e.Error error) ((lang.throw Cannot-Execute error) compiler) @@ -192,7 +192,7 @@ (-> Expression (Meta Any)) (do macro.Monad<Meta> [module-buffer module-buffer - #let [_ (Appendable::append [(:! CharSequence (scheme.expression code))] + #let [_ (Appendable::append [(:coerce CharSequence (scheme.expression code))] module-buffer)]] (load! code))) @@ -205,7 +205,7 @@ module-buffer module-buffer program-buffer program-buffer #let [module-code (StringBuilder::toString [] module-buffer) - _ (Appendable::append [(:! CharSequence (format module-code "\n"))] + _ (Appendable::append [(:coerce CharSequence (format module-code "\n"))] program-buffer)]] (wrap (ioC.write target (format (lang.normalize-name module) "/" r-module-name) diff --git a/new-luxc/source/luxc/lang/translation/scheme/eval.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/eval.jvm.lux index 362deee4a..72c58587c 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/eval.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/eval.jvm.lux @@ -60,21 +60,21 @@ (def: (parse-tuple lux-object host-object) (-> (-> Object (Error Any)) (FVector Object) (Error Any)) - (let [size (:! Nat (FVector::getBufferLength [] host-object))] + (let [size (:coerce Nat (FVector::getBufferLength [] host-object))] (loop [idx +0 - output (:! (Array Any) (array.new size))] + output (:coerce (Array Any) (array.new size))] (if (n/< size idx) - (case (lux-object (FVector::get [(:! Int idx)] host-object)) + (case (lux-object (FVector::get [(:coerce Int idx)] host-object)) (#e.Error error) (#e.Error error) (#e.Success lux-value) - (recur (inc idx) (array.write idx (:! Any lux-value) output))) + (recur (inc idx) (array.write idx (:coerce Any lux-value) output))) (#e.Success output))))) (def: (variant tag flag value) (-> Nat Bool Any Any) - [(Long::intValue [] (:! Long tag)) + [(Long::intValue [] (:coerce Long tag)) (: Any (if flag //.unit @@ -83,24 +83,24 @@ (def: (to-text value) (-> Any Text) - (let [value-text (:! Text (Object::toString [] (:! Object value))) - class-text (:! Text (Object::toString [] (Object::getClass [] (:! Object value))))] + (let [value-text (:coerce Text (Object::toString [] (:coerce Object value))) + class-text (:coerce Text (Object::toString [] (Object::getClass [] (:coerce Object value))))] (format value-text " : " class-text))) (def: (parse-variant lux-object host-object) (-> (-> Object (Error Any)) Pair (Error Any)) (let [variant-tag (Pair::getCar [] host-object)] (if (and (host.instance? gnu/mapping/SimpleSymbol variant-tag) - (text/= //.variant-tag (Symbol::getName [] (:! Symbol variant-tag)))) + (text/= //.variant-tag (Symbol::getName [] (:coerce Symbol variant-tag)))) (do e.Monad<Error> - [#let [host-object (:! Pair (Pair::getCdr [] host-object))] + [#let [host-object (:coerce Pair (Pair::getCdr [] host-object))] tag (lux-object (Pair::getCar [] host-object)) - #let [host-object (:! Pair (Pair::getCdr [] host-object))] + #let [host-object (:coerce Pair (Pair::getCdr [] host-object))] #let [flag (host.instance? java/lang/String (Pair::getCar [] host-object))] value (lux-object (Pair::getCdr [] host-object))] - (wrap (..variant (:! Nat tag) flag value))) - (ex.throw invalid-variant (:! Text (Object::toString [] (:! Object host-object))))))) + (wrap (..variant (:coerce Nat tag) flag value))) + (ex.throw invalid-variant (:coerce Text (Object::toString [] (:coerce Object host-object))))))) (def: (lux-object host-object) (-> Object (Error Any)) @@ -109,32 +109,32 @@ (#e.Success host-object) (host.instance? gnu/math/IntNum host-object) - (#e.Success (IntNum::longValue [] (:! IntNum host-object))) + (#e.Success (IntNum::longValue [] (:coerce IntNum host-object))) (host.instance? gnu/math/DFloNum host-object) - (#e.Success (DFloNum::doubleValue [] (:! DFloNum host-object))) + (#e.Success (DFloNum::doubleValue [] (:coerce DFloNum host-object))) (host.instance? gnu/lists/FString host-object) - (#e.Success (FString::toString [] (:! FString host-object))) + (#e.Success (FString::toString [] (:coerce FString host-object))) (host.instance? gnu/lists/FVector host-object) - (parse-tuple lux-object (:! (FVector Object) host-object)) + (parse-tuple lux-object (:coerce (FVector Object) host-object)) (host.instance? gnu/lists/EmptyList host-object) (#e.Success //.unit) (host.instance? gnu/lists/Pair host-object) - (parse-variant lux-object (:! Pair host-object)) + (parse-variant lux-object (:coerce Pair host-object)) ## else - (let [object-class (:! Text (Object::toString [] (Object::getClass [] (:! Object host-object)))) - text-representation (:! Text (Object::toString [] (:! Object host-object)))] + (let [object-class (:coerce Text (Object::toString [] (Object::getClass [] (:coerce Object host-object)))) + text-representation (:coerce Text (Object::toString [] (:coerce Object host-object)))] (ex.throw Unknown-Kind-Of-Host-Object (format object-class " --- " text-representation))))) (def: #export (eval code) (-> Expression (Meta Any)) (function (_ compiler) - (let [interpreter (|> compiler (get@ #.host) (:! //.Host) (get@ #//.interpreter))] + (let [interpreter (|> compiler (get@ #.host) (:coerce //.Host) (get@ #//.interpreter))] (case (interpreter code) (#e.Error error) (exec (log! (format "eval #e.Error\n" diff --git a/new-luxc/source/luxc/lang/translation/scheme/statement.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/statement.jvm.lux index 43e18cb85..aa1411c18 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/statement.jvm.lux @@ -34,7 +34,7 @@ (wrap []) tags - (moduleL.declare-tags tags (macro.export? metaV) (:! Type expressionV))) + (moduleL.declare-tags tags (macro.export? metaV) (:coerce Type expressionV))) (wrap [])) #let [_ (log! (format "DEF " (%ident def-ident)))]] (wrap [])) diff --git a/new-luxc/source/luxc/repl.lux b/new-luxc/source/luxc/repl.lux index 987cc2472..a6579e939 100644 --- a/new-luxc/source/luxc/repl.lux +++ b/new-luxc/source/luxc/repl.lux @@ -22,23 +22,23 @@ [poly #+ Poly]) (lang [syntax #+ Aliases] [type] - (type [check])) + (type [check]) + [".L" init] + [".L" module] + [".L" scope] + [".L" extension] + (extension [".E" analysis])) (concurrency [promise] [task #+ Task]) [io] (world [file #+ File] [console #+ Console])) (luxc [lang] - (lang [".L" module] - [".L" scope] - [".L" host] + (lang [".L" host] [".L" translation] [".L" eval] - [".L" init] (translation (jvm [".T" runtime])) - [".L" extension] - (extension [".E" analysis] - [".E" synthesis] + (extension [".E" synthesis] [".E" translation] [".E" statement])))) @@ -67,11 +67,11 @@ (|> compiler (set@ [#.info #.mode] #.REPL) (set@ #.extensions - (:! Nothing - {#extensionL.analysis analysisE.defaults - #extensionL.synthesis synthesisE.defaults - #extensionL.translation translationE.defaults - #extensionL.statement statementE.defaults})) + (:coerce Nothing + {#extensionL.analysis analysisE.defaults + #extensionL.synthesis synthesisE.defaults + #extensionL.translation translationE.defaults + #extensionL.statement statementE.defaults})) (translationL.translate-module source-dirs target-dir translationL.prelude)) (#e.Error error) @@ -108,7 +108,7 @@ (~~ (do-template [<type> <formatter>] [(do p.Monad<Parser> [_ (poly.like <type>)] - (wrap (|>> (:! <type>) <formatter>)))] + (wrap (|>> (:coerce <type>) <formatter>)))] [Bool %b] [Nat %n] @@ -123,7 +123,7 @@ (~~ (do-template [<type> <formatter>] [(do p.Monad<Parser> [_ (poly.like <type>)] - (wrap (|>> (:! <type>) <formatter>)))] + (wrap (|>> (:coerce <type>) <formatter>)))] [Type %type] [Code %code] @@ -137,12 +137,12 @@ (do p.Monad<Parser> [[_ elemT] (poly.apply (p.seq (poly.this List) poly.any)) elemR (poly.local (list elemT) representation)] - (wrap (|>> (:! (List Any)) (%list elemR)))) + (wrap (|>> (:coerce (List Any)) (%list elemR)))) (do p.Monad<Parser> [[_ elemT] (poly.apply (p.seq (poly.this Maybe) poly.any)) elemR (poly.local (list elemT) representation)] - (wrap (|>> (:! (Maybe Any)) + (wrap (|>> (:coerce (Maybe Any)) (case> #.None "#.None" @@ -166,7 +166,7 @@ (format (%code (code.tag tag)) " " (repr recordV)) (#.Cons [tag repr] tail) - (let [[leftV rightV] (:! [Any Any] recordV)] + (let [[leftV rightV] (:coerce [Any Any] recordV)] (format (%code (code.tag tag)) " " (repr leftV) " " (recur tail rightV)))))] (format "{" record-body "}")))))) @@ -188,13 +188,13 @@ "" (#.Cons [tag-name tag-idx repr] #.Nil) - (let [[_tag _last? _value] (:! [Nat Text Any] variantV)] + (let [[_tag _last? _value] (:coerce [Nat Text Any] variantV)] (if (n/= tag-idx _tag) (format "(" (%code (code.tag tag-name)) " " (repr _value) ")") (undefined))) (#.Cons [tag-name tag-idx repr] tail) - (let [[_tag _last? _value] (:! [Nat Text Any] variantV)] + (let [[_tag _last? _value] (:coerce [Nat Text Any] variantV)] (if (n/= tag-idx _tag) (format "(" (%code (code.tag tag-name)) " " (repr _value) ")") (recur tail variantV))))))))) @@ -232,7 +232,7 @@ (lastR tupleV) (#.Cons headR tailR) - (let [[leftV rightV] (:! [Any Any] tupleV)] + (let [[leftV rightV] (:coerce [Any Any] tupleV)] (format (headR leftV) " " (recur tailR rightV)))))] (format "[" tuple-body "]")))))) diff --git a/new-luxc/test/test/luxc/lang/translation/case.lux b/new-luxc/test/test/luxc/lang/translation/case.lux index f7df17c42..a16715729 100644 --- a/new-luxc/test/test/luxc/lang/translation/case.lux +++ b/new-luxc/test/test/luxc/lang/translation/case.lux @@ -74,7 +74,7 @@ ("lux case seq" ("lux case bind" +0) ("lux case exec" false)))))) (case> (#e.Success valueT) - (:! Bool valueT) + (:coerce Bool valueT) (#e.Error error) (exec (log! error) @@ -84,7 +84,7 @@ ("lux case seq" ("lux case bind" +0) ("lux case exec" (0)))))) (case> (#e.Success valueT) - (n/= to-bind (:! Nat valueT)) + (n/= to-bind (:coerce Nat valueT)) (#e.Error error) (exec (log! error) diff --git a/new-luxc/test/test/luxc/lang/translation/common.lux b/new-luxc/test/test/luxc/lang/translation/common.lux index 05a1d069f..793abd4d5 100644 --- a/new-luxc/test/test/luxc/lang/translation/common.lux +++ b/new-luxc/test/test/luxc/lang/translation/common.lux @@ -30,7 +30,7 @@ (|> (run (` (<name> (~ (code.nat subject)) (~ (code.nat param))))) (case> (#e.Success valueT) - (n/= (<reference> param subject) (:! Nat valueT)) + (n/= (<reference> param subject) (:coerce Nat valueT)) (#e.Error error) (exec (log! error) @@ -51,7 +51,7 @@ (~ (code.nat param))))) (case> (#e.Success valueT) (i/= (bit.arithmetic-right-shift param (nat-to-int subject)) - (:! Int valueT)) + (:coerce Int valueT)) (#e.Error error) (exec (log! error) @@ -71,7 +71,7 @@ [(test <name> (|> (run (` (<name>))) (case> (#e.Success valueT) - (i/= <reference> (:! Int valueT)) + (i/= <reference> (:coerce Int valueT)) (#e.Error error) (exec (log! error) @@ -84,7 +84,7 @@ [(test <name> (|> (run (` (<name> (~ (code.int subject))))) (case> (#e.Success valueT) - (<comp> (<prepare> subject) (:! <type> valueT)) + (<comp> (<prepare> subject) (:coerce <type> valueT)) (#e.Error error) (exec (log! error) @@ -92,17 +92,17 @@ (let [subject <subject-expr>])))] ["lux int to-frac" Frac int-to-frac f/= subject] - ["lux int char" Text (|>> (:! Nat) text.from-code) text/= (|> subject - (:! Nat) - (n/% (bit.left-shift +8 +1)) - (:! Int))] + ["lux int char" Text (|>> (:coerce Nat) text.from-code) text/= (|> subject + (:coerce Nat) + (n/% (bit.left-shift +8 +1)) + (:coerce Int))] )) (~~ (do-template [<name> <reference> <outputT> <comp>] [(test <name> (exec (log! <name>) (|> (run (` (<name> (~ (code.int subject)) (~ (code.int param))))) (case> (#e.Success valueT) - (<comp> (<reference> param subject) (:! <outputT> valueT)) + (<comp> (<reference> param subject) (:coerce <outputT> valueT)) (#e.Error error) (exec (log! error) @@ -127,7 +127,7 @@ [(test <name> (|> (run (` (<name> (~ (code.frac subject)) (~ (code.frac param))))) (case> (#e.Success valueT) - (<comp> (<reference> param subject) (:! <outputT> valueT)) + (<comp> (<reference> param subject) (:coerce <outputT> valueT)) _ false)))] @@ -153,7 +153,7 @@ [(test <name> (|> (run (` (<name>))) (case> (#e.Success valueT) - (<test> (:! Frac valueT)) + (<test> (:coerce Frac valueT)) _ false)))] @@ -169,7 +169,7 @@ [(test <forward> (|> (run (` (<backward> (<forward> (~ (code.frac subject)))))) (case> (#e.Success valueT) - (|> valueT (:! Frac) (f/- subject) frac/abs <test>) + (|> valueT (:coerce Frac) (f/- subject) frac/abs <test>) (#e.Error error) (exec (log! error) @@ -218,48 +218,48 @@ (test "Can compare texts for equality." (and (|> (run (` ("lux text =" (~ sample0S) (~ sample0S)))) (case> (#e.Success valueV) - (:! Bool valueV) + (:coerce Bool valueV) _ false)) (|> (run (` ("lux text =" (~ sample0S) (~ sample1S)))) (case> (#e.Success valueV) - (not (:! Bool valueV)) + (not (:coerce Bool valueV)) _ false)))) (test "Can compare texts for order." (|> (run (` ("lux text <" (~ sample1S) (~ sample0S)))) (case> (#e.Success valueV) - (:! Bool valueV) + (:coerce Bool valueV) _ false))) (test "Can get length of text." (|> (run (` ("lux text size" (~ sample0S)))) (case> (#e.Success valueV) - (n/= sample-size (:! Nat valueV)) + (n/= sample-size (:coerce Nat valueV)) _ false))) (test "Can concatenate text." (|> (run (` ("lux text size" (~ concatenatedS)))) (case> (#e.Success valueV) - (n/= (n/* +2 sample-size) (:! Nat valueV)) + (n/= (n/* +2 sample-size) (:coerce Nat valueV)) _ false))) (test "Can find index of sub-text." (and (|> (run (` ("lux text index" (~ concatenatedS) (~ sample0S) +0))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Nat) valueV) (#.Some valueV)]) + [(:coerce (Maybe Nat) valueV) (#.Some valueV)]) (n/= +0 valueV) _ false)) (|> (run (` ("lux text index" (~ concatenatedS) (~ sample1S) +0))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Nat) valueV) (#.Some valueV)]) + [(:coerce (Maybe Nat) valueV) (#.Some valueV)]) (n/= sample-size valueV) _ @@ -269,7 +269,7 @@ ("lux text hash" (~ sample0S)) ("lux text hash" (~ sample0S))))) (case> (#e.Success valueV) - (:! Bool valueV) + (:coerce Bool valueV) (#e.Error error) (exec (log! error) @@ -282,7 +282,7 @@ (~ sample1S) (~ sample2S))))) (case> (#e.Success valueV) - (:! Bool valueV) + (:coerce Bool valueV) (#e.Error error) (exec (log! error) @@ -295,7 +295,7 @@ (~ sample1S) (~ sample2S))))) (case> (#e.Success valueV) - (:! Bool valueV) + (:coerce Bool valueV) (#e.Error error) (exec (log! error) @@ -306,7 +306,7 @@ (~ (code.nat from)) (~ (code.nat to))))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Text) valueV) (#.Some valueV)]) + [(:coerce (Maybe Text) valueV) (#.Some valueV)]) (text/= expected valueV) _ @@ -319,7 +319,7 @@ (~ sample0S) (~ (code.nat char-idx))))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Int) valueV) (#.Some valueV)]) + [(:coerce (Maybe Int) valueV) (#.Some valueV)]) (text.contains? ("lux int char" valueV) sample0) @@ -339,7 +339,7 @@ (test "Can get size of array." (|> (run (` ("lux array size" (~ array0S)))) (case> (#e.Success valueV) - (n/= size (:! Nat valueV)) + (n/= size (:coerce Nat valueV)) (#e.Error error) (exec (log! error) @@ -347,14 +347,14 @@ (test "Can get element from array (if it exists)." (and (|> (run (` ("lux array get" (~ array0S) (~ (code.nat idx))))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Nat) valueV) #.None]) + [(:coerce (Maybe Nat) valueV) #.None]) true _ false)) (|> (run (` ("lux array get" (~ array1S) (~ (code.nat idx))))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Nat) valueV) (#.Some valueV)]) + [(:coerce (Maybe Nat) valueV) (#.Some valueV)]) (n/= value valueV) _ @@ -365,7 +365,7 @@ (~ (code.nat idx))) (~ (code.nat idx))))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Nat) valueV) #.None]) + [(:coerce (Maybe Nat) valueV) #.None]) true _ @@ -428,7 +428,7 @@ (and (|> (run (` ("lux try" ("lux function" +1 [] ("lux io error" (~ (code.text message))))))) (case> (^multi (#e.Success valueV) - [(:! (e.Error Text) valueV) (#e.Error error)]) + [(:coerce (e.Error Text) valueV) (#e.Error error)]) (text.contains? message error) _ @@ -436,7 +436,7 @@ (|> (run (` ("lux try" ("lux function" +1 [] (~ (code.text message)))))) (case> (^multi (#e.Success valueV) - [(:! (e.Error Text) valueV) (#e.Success valueV)]) + [(:coerce (e.Error Text) valueV) (#e.Success valueV)]) (text/= message valueV) _ @@ -444,7 +444,7 @@ (test "Can obtain current time in milli-seconds." (|> (run (` [("lux io current-time") ("lux io current-time")])) (case> (#e.Success valueV) - (let [[pre post] (:! [Nat Nat] valueV)] + (let [[pre post] (:coerce [Nat Nat] valueV)] (n/>= pre post)) (#e.Error error) @@ -464,7 +464,7 @@ (test "Can read atoms." (|> (run (` ("lux atom read" (~ atomS)))) (case> (#e.Success valueV) - (n/= pre (:! Nat valueV)) + (n/= pre (:coerce Nat valueV)) (#e.Error error) (exec (log! error) @@ -475,7 +475,7 @@ [("lux atom compare-and-swap" (1) (0) (~ postS)) ("lux atom read" (1))])))) (case> (#e.Success valueV) - (let [[swapped? current-value] (:! [Bool Nat] valueV)] + (let [[swapped? current-value] (:coerce [Bool Nat] valueV)] (and swapped? (n/= post current-value))) @@ -487,7 +487,7 @@ [("lux atom compare-and-swap" (1) (~ postS) (~ postS)) ("lux atom read" (1))])))) (case> (#e.Success valueV) - (let [[swapped? current-value] (:! [Bool Nat] valueV)] + (let [[swapped? current-value] (:coerce [Bool Nat] valueV)] (and (not swapped?) (n/= pre current-value))) @@ -508,7 +508,7 @@ (test "Can read boxes." (|> (run (` ("lux box read" (~ boxS)))) (case> (#e.Success valueV) - (n/= pre (:! Nat valueV)) + (n/= pre (:coerce Nat valueV)) (#e.Error error) (exec (log! error) @@ -518,7 +518,7 @@ ("lux let" +1 ("lux box write" (~ postS) (0)) ("lux box read" (0)))))) (case> (#e.Success valueV) - (n/= post (:! Nat valueV)) + (n/= post (:coerce Nat valueV)) (#e.Error error) (exec (log! error) @@ -531,7 +531,7 @@ (test "Can query the concurrency level of the machine." (|> (run (` ("lux process parallelism-level"))) (case> (#e.Success valueV) - (n/>= +1 (:! Nat valueV)) + (n/>= +1 (:coerce Nat valueV)) (#e.Error error) (exec (log! error) @@ -571,34 +571,34 @@ (<| (times +100) (all-specs run-jvm))) -(context: "[JS] Common procedures." - (<| (times +100) - (all-specs run-js))) +## (context: "[JS] Common procedures." +## (<| (times +100) +## (all-specs run-js))) -(context: "[Lua] Common procedures." - (<| (times +100) - (all-specs run-lua))) +## (context: "[Lua] Common procedures." +## (<| (times +100) +## (all-specs run-lua))) -(context: "[Ruby] Common procedures." - (<| (times +100) - (all-specs run-ruby))) +## (context: "[Ruby] Common procedures." +## (<| (times +100) +## (all-specs run-ruby))) -(context: "[Python] Common procedures." - (<| (times +100) - (all-specs run-python))) +## (context: "[Python] Common procedures." +## (<| (times +100) +## (all-specs run-python))) -(context: "[R] Common procedures." - (<| (times +100) - (all-specs run-r))) +## (context: "[R] Common procedures." +## (<| (times +100) +## (all-specs run-r))) -(context: "[Scheme] Common procedures." - (<| (times +100) - (all-specs run-scheme))) +## (context: "[Scheme] Common procedures." +## (<| (times +100) +## (all-specs run-scheme))) -(context: "[Common Lisp] Common procedures." - (<| (times +100) - (all-specs run-common-lisp))) +## (context: "[Common Lisp] Common procedures." +## (<| (times +100) +## (all-specs run-common-lisp))) -(context: "[PHP] Common procedures." - (<| (times +100) - (all-specs run-php))) +## (context: "[PHP] Common procedures." +## (<| (times +100) +## (all-specs run-php))) diff --git a/new-luxc/test/test/luxc/lang/translation/function.lux b/new-luxc/test/test/luxc/lang/translation/function.lux index 69cd174dd..fd96aeeb9 100644 --- a/new-luxc/test/test/luxc/lang/translation/function.lux +++ b/new-luxc/test/test/luxc/lang/translation/function.lux @@ -51,7 +51,7 @@ (test "Can read arguments." (|> (run (` ("lux call" (~ functionS) (~+ argsS)))) (case> (#e.Success valueT) - (f/= arg-value (:! Frac valueT)) + (f/= arg-value (:coerce Frac valueT)) (#e.Error error) (exec (log! error) @@ -65,7 +65,7 @@ ("lux call" (~ functionS) (~+ preS)) (~+ postS)))) (case> (#e.Success valueT) - (f/= arg-value (:! Frac valueT)) + (f/= arg-value (:coerce Frac valueT)) (#e.Error error) (exec (log! error) @@ -84,7 +84,7 @@ ((~ (code.int arg-var))))))] (|> (run (` ("lux call" (~ functionS) (~+ argsS)))) (case> (#e.Success valueT) - (f/= arg-value (:! Frac valueT)) + (f/= arg-value (:coerce Frac valueT)) (#e.Error error) (exec (log! error) @@ -95,34 +95,34 @@ (<| (times +100) (function-spec run-jvm))) -(context: "[JS] Function." - (<| (times +100) - (function-spec run-js))) +## (context: "[JS] Function." +## (<| (times +100) +## (function-spec run-js))) -(context: "[Lua] Function." - (<| (times +100) - (function-spec run-lua))) +## (context: "[Lua] Function." +## (<| (times +100) +## (function-spec run-lua))) -(context: "[Ruby] Function." - (<| (times +100) - (function-spec run-ruby))) +## (context: "[Ruby] Function." +## (<| (times +100) +## (function-spec run-ruby))) -(context: "[Python] Function." - (<| (times +100) - (function-spec run-python))) +## (context: "[Python] Function." +## (<| (times +100) +## (function-spec run-python))) -(context: "[R] Function." - (<| (times +100) - (function-spec run-r))) +## (context: "[R] Function." +## (<| (times +100) +## (function-spec run-r))) -(context: "[Scheme] Function." - (<| (times +100) - (function-spec run-scheme))) +## (context: "[Scheme] Function." +## (<| (times +100) +## (function-spec run-scheme))) -(context: "[Common Lisp] Function." - (<| (times +100) - (function-spec run-common-lisp))) +## (context: "[Common Lisp] Function." +## (<| (times +100) +## (function-spec run-common-lisp))) -(context: "[PHP] Function." - (<| (times +100) - (function-spec run-php))) +## (context: "[PHP] Function." +## (<| (times +100) +## (function-spec run-php))) diff --git a/new-luxc/test/test/luxc/lang/translation/js.lux b/new-luxc/test/test/luxc/lang/translation/js.lux index e6443cce8..6f4fb572d 100644 --- a/new-luxc/test/test/luxc/lang/translation/js.lux +++ b/new-luxc/test/test/luxc/lang/translation/js.lux @@ -23,7 +23,7 @@ (-> Synthesis Bool) (|> (run-js (` ("lux is" (~ synthesis) (~ synthesis)))) (case> (#e.Success valueV) - (:! Bool valueV) + (:coerce Bool valueV) _ false))) @@ -34,7 +34,7 @@ [(def: (<name> angle) (-> <type> Check) (|>> (case> (#e.Success valueV) - (<=> (<pre> angle) (:! <type> valueV)) + (<=> (<pre> angle) (:coerce <type> valueV)) (#e.Error error) false)))] @@ -74,7 +74,7 @@ (test "Cannot get non-existing fields from objects." (|> (run-js (` ("js object get" (~ field) (~ empty-object)))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Int) valueV) #.None]) + [(:coerce (Maybe Int) valueV) #.None]) true _ @@ -82,8 +82,8 @@ (test "Can get fields from objects." (|> (run-js (` ("js object get" (~ field) (~ object)))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Int) valueV) (#.Some valueV)]) - (i/= value (:! Int valueV)) + [(:coerce (Maybe Int) valueV) (#.Some valueV)]) + (i/= value (:coerce Int valueV)) _ false))) @@ -91,7 +91,7 @@ (|> (run-js (let [post-delete (` ("js object delete" (~ field) (~ object)))] (` ("js object get" (~ field) (~ post-delete))))) (case> (^multi (#e.Success valueV) - [(:! (Maybe Int) valueV) #.None]) + [(:coerce (Maybe Int) valueV) #.None]) true _ @@ -100,7 +100,7 @@ (let [base (` ("js object new" ("js global" "Number") (~ (code.text (%f frac-value)))))] (|> (run-js (` ("lux frac +" (~ base) 0.0))) (case> (#e.Success valueV) - (f/= frac-value (:! Frac valueV)) + (f/= frac-value (:coerce Frac valueV)) (#e.Error error) false)))) @@ -125,7 +125,7 @@ (test "Can get an element from an array." (|> (run-js (` ("js array read" (~ (code.nat idx)) (~ arrayS)))) (case> (^multi (#e.Success elemV) - [[(list.nth idx elems) (:! (Maybe Nat) elemV)] + [[(list.nth idx elems) (:coerce (Maybe Nat) elemV)] [(#.Some reference) (#.Some sample)]]) (n/= reference sample) @@ -137,7 +137,7 @@ (|> (run-js (` ("js array read" (~ idxS) ("js array write" (~ idxS) (~ overwriteS) (~ arrayS))))) (case> (^multi (#e.Success elemV) - [(:! (Maybe Nat) elemV) + [(:coerce (Maybe Nat) elemV) (#.Some sample)]) (n/= overwrite sample) @@ -150,7 +150,7 @@ (length-check length)) (|> (run-js (` ("js array read" (~ idxS) (~ deleteS)))) (case> (^multi (#e.Success elemV) - [(:! (Maybe Nat) elemV) + [(:coerce (Maybe Nat) elemV) #.None]) true diff --git a/new-luxc/test/test/luxc/lang/translation/jvm.lux b/new-luxc/test/test/luxc/lang/translation/jvm.lux index a835ce9d4..23877a51e 100644 --- a/new-luxc/test/test/luxc/lang/translation/jvm.lux +++ b/new-luxc/test/test/luxc/lang/translation/jvm.lux @@ -37,7 +37,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success valueT) - (<test> <sample> (:! <cast> valueT)) + (<test> <sample> (:coerce <cast> valueT)) (#e.Error error) false)))] @@ -69,7 +69,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success valueT) - (<test> <sample> (:! <cast> valueT)) + (<test> <sample> (:coerce <cast> valueT)) (#e.Error error) false)))] @@ -96,7 +96,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success valueT) - (<test> <sample> (:! <cast> valueT)) + (<test> <sample> (:coerce <cast> valueT)) (#e.Error error) false)))] @@ -138,7 +138,7 @@ (macro.run (io.run init-jvm)) (case> (#e.Success valueT) (<test> (<reference> param subject) - (:! <type> valueT)) + (:coerce <type> valueT)) (#e.Error error) false)))] @@ -177,7 +177,7 @@ (macro.run (io.run init-jvm)) (case> (#e.Success valueT) (n/= (<reference> param subject) - (:! Nat valueT)) + (:coerce Nat valueT)) (#e.Error error) false)))] @@ -211,7 +211,7 @@ (macro.run (io.run init-jvm)) (case> (#e.Success valueT) (<test> (<reference> shift (<pre-subject> subject)) - (:! <type> valueT)) + (:coerce <type> valueT)) (#e.Error error) false)))] @@ -243,7 +243,7 @@ (macro.run (io.run init-jvm)) (case> (#e.Success valueT) (bool/= (<reference> param subject) - (:! Bool valueT)) + (:coerce Bool valueT)) (#e.Error error) false)))] @@ -300,7 +300,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputZ) - (<test> <value> (:! <type> outputZ)) + (<test> <value> (:coerce <type> outputZ)) (#e.Error error) false)))] @@ -350,7 +350,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (<test> <value> (:! <type> outputT)) + (<test> <value> (:coerce <type> outputT)) (#e.Error error) false)))] @@ -378,7 +378,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (f/= valueD (:! Frac outputT)) + (f/= valueD (:coerce Frac outputT)) (#e.Error error) false))) @@ -389,7 +389,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (n/= size (:! Nat outputT)) + (n/= size (:coerce Nat outputT)) (#e.Error error) false))) @@ -440,7 +440,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (:! Bool outputT) + (:coerce Bool outputT) (#e.Error error) false))) @@ -451,7 +451,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (not (:! Bool outputT)) + (not (:coerce Bool outputT)) (#e.Error error) false))) @@ -462,7 +462,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (i/= sample (:! Int outputT)) + (i/= sample (:coerce Int outputT)) (#e.Error error) false))) @@ -477,7 +477,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (case (:! (e.Error Any) outputT) + (case (:coerce (e.Error Any) outputT) (#e.Error error) (text.contains? exception-message error) @@ -493,7 +493,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (|> outputT (:! Class) (Class::getName []) (text/= class)) + (|> outputT (:coerce Class) (Class::getName []) (text/= class)) (#e.Error error) false))) @@ -504,7 +504,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (:! Bool outputT) + (:coerce Bool outputT) (#e.Error error) false))) @@ -536,7 +536,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (i/= GregorianCalendar::AD (:! Int outputT)) + (i/= GregorianCalendar::AD (:coerce Int outputT)) (#e.Error error) false))) @@ -548,7 +548,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (is? hostL.unit (:! Text outputT)) + (is? hostL.unit (:coerce Text outputT)) (#e.Error error) false))) @@ -559,7 +559,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (text/= sample-string (:! Text outputT)) + (text/= sample-string (:coerce Text outputT)) (#e.Error error) false))) @@ -572,7 +572,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (text/= other-sample-string (:! Text outputT)) + (text/= other-sample-string (:coerce Text outputT)) (#e.Error error) false))) @@ -601,7 +601,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (i/= sample (:! Int outputT)) + (i/= sample (:coerce Int outputT)) (#e.Error error) false))) @@ -614,7 +614,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (:! Bool outputT) + (:coerce Bool outputT) (#e.Error error) false))) @@ -627,7 +627,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (:! Bool outputT) + (:coerce Bool outputT) (#e.Error error) false))) @@ -638,7 +638,7 @@ (lang.with-current-module "") (macro.run (io.run init-jvm)) (case> (#e.Success outputT) - (host.instance? ArrayList (:! Object outputT)) + (host.instance? ArrayList (:coerce Object outputT)) (#e.Error error) false))) diff --git a/new-luxc/test/test/luxc/lang/translation/primitive.lux b/new-luxc/test/test/luxc/lang/translation/primitive.lux index 42d78f646..5d368cc60 100644 --- a/new-luxc/test/test/luxc/lang/translation/primitive.lux +++ b/new-luxc/test/test/luxc/lang/translation/primitive.lux @@ -27,7 +27,7 @@ [(test (format "Can translate " <desc> ".") (|> (run (<synthesis> <sample>)) (case> (#e.Success valueT) - (<test> <sample> (:! <type> valueT)) + (<test> <sample> (:coerce <type> valueT)) (#e.Error error) (exec (log! error) diff --git a/new-luxc/test/test/luxc/lang/translation/reference.lux b/new-luxc/test/test/luxc/lang/translation/reference.lux index 41032f0c7..17cd78d54 100644 --- a/new-luxc/test/test/luxc/lang/translation/reference.lux +++ b/new-luxc/test/test/luxc/lang/translation/reference.lux @@ -35,7 +35,7 @@ (test "Can refer to definitions." (|> (define def-name (//synthesis.i64 def-value)) (case> (#e.Success valueT) - (i/= def-value (:! Int valueT)) + (i/= def-value (:coerce Int valueT)) (#e.Error error) (exec (log! error) @@ -51,7 +51,7 @@ register (//synthesis.variable/local register)])) (case> (#e.Success outputT) - (i/= value (:! Int outputT)) + (i/= value (:coerce Int outputT)) (#e.Error error) (exec (log! error) diff --git a/new-luxc/test/test/luxc/lang/translation/structure.lux b/new-luxc/test/test/luxc/lang/translation/structure.lux index 6e512f3ec..2a757d3a6 100644 --- a/new-luxc/test/test/luxc/lang/translation/structure.lux +++ b/new-luxc/test/test/luxc/lang/translation/structure.lux @@ -30,10 +30,10 @@ (test "Can translate tuple." (|> (run (code.tuple (list/map code.int tuple-in))) (case> (#e.Success tuple-out) - (let [tuple-out (:! (Array Any) tuple-out)] + (let [tuple-out (:coerce (Array Any) tuple-out)] (and (n/= size (array.size tuple-out)) (list.every? (function (_ [left right]) - (i/= left (:! Int right))) + (i/= left (:coerce Int right))) (list.zip2 tuple-in (array.to-list tuple-out))))) (#e.Error error) @@ -50,19 +50,19 @@ (test "Can translate variant." (|> (run (` ((~ (code.nat tag-in)) (~ (code.bool last?-in)) (~ (code.int value-in))))) (case> (#e.Success valueT) - (let [valueT (:! (Array Any) valueT)] + (let [valueT (:coerce (Array Any) valueT)] (and (n/= +3 (array.size valueT)) - (let [tag-out (:! Integer (maybe.assume (array.read +0 valueT))) + (let [tag-out (:coerce Integer (maybe.assume (array.read +0 valueT))) last?-out (array.read +1 valueT) - value-out (:! Any (maybe.assume (array.read +2 valueT))) - same-tag? (n/= tag-in (|> tag-out host.int-to-long (:! Nat))) + value-out (:coerce Any (maybe.assume (array.read +2 valueT))) + same-tag? (n/= tag-in (|> tag-out host.int-to-long (:coerce Nat))) same-flag? (case last?-out (#.Some last?-out') - (and last?-in (text/= "" (:! Text last?-out'))) + (and last?-in (text/= "" (:coerce Text last?-out'))) #.None (not last?-in)) - same-value? (i/= value-in (:! Int value-out))] + same-value? (i/= value-in (:coerce Int value-out))] (and same-tag? same-flag? same-value?)))) diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux index 72e22a485..55499d6cc 100644 --- a/stdlib/source/lux.lux +++ b/stdlib/source/lux.lux @@ -2859,16 +2859,16 @@ _ (fail "Wrong syntax for :")})) -(macro:' #export (:! tokens) +(macro:' #export (:coerce tokens) (list [(tag$ ["lux" "doc"]) (text$ "## The type-coercion macro. - (:! Dinosaur (list 1 2 3))")]) + (:coerce Dinosaur (list 1 2 3))")]) ("lux case" tokens {(#Cons type (#Cons value #Nil)) (return (list (` ("lux coerce" (type (~ type)) (~ value))))) _ - (fail "Wrong syntax for :!")})) + (fail "Wrong syntax for :coerce")})) (def:''' (empty? xs) #Nil @@ -5329,7 +5329,7 @@ (do-template [<name> <to>] [(def: #export <name> (-> (I64 Any) <to>) - (|>> (:! <to>)))] + (|>> (:coerce <to>)))] [i64 I64] [nat Nat] @@ -5700,7 +5700,7 @@ (case (flatten-alias type) (^template [<name> <type> <wrapper>] (#Named ["lux" <name>] _) - (wrap (<wrapper> (:! <type> value)))) + (wrap (<wrapper> (:coerce <type> value)))) (["Bool" Bool bool$] ["Nat" Nat nat$] ["Int" Int int$] diff --git a/stdlib/source/lux/concurrency/stm.lux b/stdlib/source/lux/concurrency/stm.lux index 791419444..5c9e2d68c 100644 --- a/stdlib/source/lux/concurrency/stm.lux +++ b/stdlib/source/lux/concurrency/stm.lux @@ -76,8 +76,8 @@ (All [a] (-> (Var a) Tx (Maybe a))) (|> tx (list.find (function (_ [_var _original _current]) - (is? (:! (Var Any) var) - (:! (Var Any) _var)))) + (is? (:coerce (Var Any) var) + (:coerce (Var Any) _var)))) (:: maybe.Monad<Maybe> map (function (_ [_var _original _current]) _current)) (:assume) @@ -102,11 +102,11 @@ #.Nil (#.Cons [_var _original _current] tx') - (if (is? (:! (Var Any) var) - (:! (Var Any) _var)) - (#.Cons {#var (:! (Var Any) _var) - #original (:! Any _original) - #current (:! Any value)} + (if (is? (:coerce (Var Any) var) + (:coerce (Var Any) _var)) + (#.Cons {#var (:coerce (Var Any) _var) + #original (:coerce Any _original) + #current (:coerce Any value)} tx') (#.Cons {#var _var #original _original @@ -220,7 +220,7 @@ (if was-first? (exec (|> (io.run (atom.read pending-commits)) (promise.await (function (recur [head tail]) - (io (exec (process-commit (:! [(STM Any) (Promise Any)] head)) + (io (exec (process-commit (:coerce [(STM Any) (Promise Any)] head)) (promise.await recur tail)))))) (wrap [])) (wrap []))) diff --git a/stdlib/source/lux/data/bit.lux b/stdlib/source/lux/data/bit.lux index a0f8e18a7..22ac6522a 100644 --- a/stdlib/source/lux/data/bit.lux +++ b/stdlib/source/lux/data/bit.lux @@ -47,11 +47,11 @@ (def: #export not {#.doc "Bitwise negation."} (All [s] (-> (I64 s) (I64 s))) - (xor (:! I64 -1))) + (xor (:coerce I64 -1))) (def: (flag idx) (-> Nat I64) - (|> +1 (:! I64) (left-shift idx))) + (|> +1 (:coerce I64) (left-shift idx))) (def: #export (clear idx input) {#.doc "Clear bit at given index."} @@ -70,7 +70,7 @@ (def: #export (set? idx input) (-> Nat (I64 Any) Bool) - (|> input (:! I64) (..and (flag idx)) (n/= +0) .not)) + (|> input (:coerce I64) (..and (flag idx)) (n/= +0) .not)) (do-template [<name> <main> <comp>] [(def: #export (<name> distance input) @@ -86,4 +86,4 @@ (def: #export (region size offset) (-> Nat Nat I64) - (|> +1 (:! I64) (left-shift size) dec (left-shift offset))) + (|> +1 (:coerce I64) (left-shift size) dec (left-shift offset))) diff --git a/stdlib/source/lux/data/number.lux b/stdlib/source/lux/data/number.lux index 640bff8a2..df685c150 100644 --- a/stdlib/source/lux/data/number.lux +++ b/stdlib/source/lux/data/number.lux @@ -80,10 +80,10 @@ (def: * d/*) (def: / d//) (def: % d/%) - (def: (negate x) (d/- x (:! Deg -1))) + (def: (negate x) (d/- x (:coerce Deg -1))) (def: abs id) (def: (signum x) - (:! Deg -1))) + (:coerce Deg -1))) (do-template [<type> <order> <succ> <pred>] [(struct: #export _ (Enum <type>) @@ -103,10 +103,10 @@ (def: top <top>) (def: bottom <bottom>))] - [ Nat Enum<Nat> (:! Nat -1) +0] + [ Nat Enum<Nat> (:coerce Nat -1) +0] [ Int Enum<Int> 9_223_372_036_854_775_807 -9_223_372_036_854_775_808] [Frac Enum<Frac> ("lux frac max") ("lux frac min")] - [ Deg Enum<Deg> (:! Deg -1) (:! Deg +0)] + [ Deg Enum<Deg> (:coerce Deg -1) (:coerce Deg +0)] ) (do-template [<name> <type> <identity> <compose>] @@ -364,7 +364,7 @@ (#.Some digit-value) (recur (inc idx) - (|> output (i/* <base>) (i/+ (:! Int digit-value)))))) + (|> output (i/* <base>) (i/+ (:coerce Int digit-value)))))) (#e.Success (i/* sign output))))) (#e.Error <error>)))))] @@ -381,7 +381,7 @@ (do-template [<struct> <nat> <char-bit-size> <error>] [(struct: #export <struct> (Codec Text Deg) (def: (encode value) - (let [raw-output (de-prefix (:: <nat> encode (:! Nat value))) + (let [raw-output (de-prefix (:: <nat> encode (:coerce Nat value))) max-num-chars (n// <char-bit-size> +64) raw-size ("lux text size" raw-output) zero-padding (loop [zeroes-left (n/- raw-size max-num-chars) @@ -400,7 +400,7 @@ (^multi (^ (#.Some (char "."))) [(:: <nat> decode ("lux text concat" "+" (de-prefix repr))) (#e.Success output)]) - (#e.Success (:! Deg output)) + (#e.Success (:coerce Deg output)) _ (#e.Error ("lux text concat" <error> repr))) @@ -751,7 +751,7 @@ (loop [idx idx carry +0 output output] - (if (i/>= 0 (:! Int idx)) + (if (i/>= 0 (:coerce Int idx)) (let [raw (|> (digits-get idx output) (n/* +5) (n/+ carry))] @@ -765,7 +765,7 @@ (loop [times power output (|> (make-digits []) (digits-put power +1))] - (if (i/>= 0 (:! Int times)) + (if (i/>= 0 (:coerce Int times)) (recur (dec times) (digits-times-5! power output)) output))) @@ -775,7 +775,7 @@ (loop [idx (dec bit.width) all-zeroes? true output ""] - (if (i/>= 0 (:! Int idx)) + (if (i/>= 0 (:coerce Int idx)) (let [digit (digits-get idx digits)] (if (and (n/= +0 digit) all-zeroes?) @@ -783,7 +783,7 @@ (recur (dec idx) false ("lux text concat" - (:: Codec<Text,Int> encode (:! Int digit)) + (:: Codec<Text,Int> encode (:coerce Int digit)) output)))) (if all-zeroes? "0" @@ -794,7 +794,7 @@ (loop [idx (dec bit.width) carry +0 output (make-digits [])] - (if (i/>= 0 (:! Int idx)) + (if (i/>= 0 (:coerce Int idx)) (let [raw ($_ n/+ carry (digits-get idx param) @@ -855,13 +855,13 @@ (struct: #export _ (Codec Text Deg) (def: (encode input) - (let [input (:! Nat input) + (let [input (:coerce Nat input) last-idx (dec bit.width)] (if (n/= +0 input) ".0" (loop [idx last-idx digits (make-digits [])] - (if (i/>= 0 (:! Int idx)) + (if (i/>= 0 (:coerce Int idx)) (if (bit.set? idx input) (let [digits' (digits-add (digits-power (n/- idx last-idx)) digits)] @@ -897,7 +897,7 @@ (recur (digits-sub! power digits) (inc idx) (bit.set (n/- idx (dec bit.width)) output)))) - (#e.Success (:! Deg output)))) + (#e.Success (:coerce Deg output)))) #.None (#e.Error ("lux text concat" "Wrong syntax for Deg: " input))) @@ -1009,4 +1009,4 @@ (struct: #export _ (Hash Deg) (def: eq Eq<Deg>) - (def: hash (|>> (:! Nat)))) + (def: hash (|>> (:coerce Nat)))) diff --git a/stdlib/source/lux/data/text.lux b/stdlib/source/lux/data/text.lux index 6d11bb9b0..58826e2c9 100644 --- a/stdlib/source/lux/data/text.lux +++ b/stdlib/source/lux/data/text.lux @@ -209,7 +209,7 @@ (def: #export from-code (-> Nat Text) - (|>> (:! Int) "lux int char")) + (|>> (:coerce Int) "lux int char")) (def: #export (space? char) {#.doc "Checks whether the character is white-space."} diff --git a/stdlib/source/lux/host.js.lux b/stdlib/source/lux/host.js.lux index 7ad985f1a..876ab0c38 100644 --- a/stdlib/source/lux/host.js.lux +++ b/stdlib/source/lux/host.js.lux @@ -40,8 +40,8 @@ {#.doc (doc "A way to get fields from objects." (get "ceil" (ref "Math")) (get "ceil" (-> Frac Frac) (ref "Math")))} - (wrap (list (` (:! (~ type) - ("js get-field" (~ object) (~ field-name))))))) + (wrap (list (` (:coerce (~ type) + ("js get-field" (~ object) (~ field-name))))))) (syntax: #export (object {kvs (p.some (p.seq s.any s.any))}) {#.doc (doc "A way to create JavaScript objects." @@ -57,8 +57,8 @@ {#.doc (doc "A way to refer to JavaScript variables." (ref "document") (ref "Math.ceil" (-> Frac Frac)))} - (wrap (list (` (:! (~ (default (' ..Object) type)) - ("js ref" (~ (code.text name)))))))) + (wrap (list (` (:coerce (~ (default (' ..Object) type)) + ("js ref" (~ (code.text name)))))))) (do-template [<name> <proc> <doc>] [(syntax: #export (<name>) @@ -77,9 +77,9 @@ (call! (ref "Math") "ceil" [123.45]))} (case shape (#.Left [function args ?type]) - (wrap (list (` (:! (~ (default (' ..Object) ?type)) - ("js call" (~ function) (~+ args)))))) + (wrap (list (` (:coerce (~ (default (' ..Object) ?type)) + ("js call" (~ function) (~+ args)))))) (#.Right [object field args ?type]) - (wrap (list (` (:! (~ (default (' ..Object) ?type)) - ("js object-call" (~ object) (~ (code.text field)) (~+ args)))))))) + (wrap (list (` (:coerce (~ (default (' ..Object) ?type)) + ("js object-call" (~ object) (~ (code.text field)) (~+ args)))))))) diff --git a/stdlib/source/lux/host.jvm.lux b/stdlib/source/lux/host.jvm.lux index 5fbeae68d..ae4b78aac 100644 --- a/stdlib/source/lux/host.jvm.lux +++ b/stdlib/source/lux/host.jvm.lux @@ -1561,8 +1561,8 @@ [return-type (let [g!temp (code.symbol ["" " Ω "])] (` (let [(~ g!temp) (~ return-term)] - (if (not (null? (:! (primitive "java.lang.Object") - (~ g!temp)))) + (if (not (null? (:coerce (primitive "java.lang.Object") + (~ g!temp)))) (~ g!temp) (error! "Cannot produce null references from method calls.")))))]) diff --git a/stdlib/source/lux/io.lux b/stdlib/source/lux/io.lux index 21d70de61..a50c501d1 100644 --- a/stdlib/source/lux/io.lux +++ b/stdlib/source/lux/io.lux @@ -27,13 +27,13 @@ (struct: #export _ (Functor IO) (def: (map f ma) - (io (f (ma (:! Nothing [])))))) + (io (f (ma (:coerce Nothing [])))))) (struct: #export _ (Apply IO) (def: functor Functor<IO>) (def: (apply ff fa) - (io ((ff (:! Nothing [])) (fa (:! Nothing [])))))) + (io ((ff (:coerce Nothing [])) (fa (:coerce Nothing [])))))) (struct: #export _ (Monad IO) (def: functor Functor<IO>) @@ -42,12 +42,12 @@ (io x)) (def: (join mma) - (io ((mma (:! Nothing [])) (:! Nothing []))))) + (io ((mma (:coerce Nothing [])) (:coerce Nothing []))))) (def: #export (run action) {#.doc "A way to execute IO computations and perform their side-effects."} (All [a] (-> (IO a) a)) - (action (:! Nothing []))) + (action (:coerce Nothing []))) (def: #export (exit code) (-> Int (IO Nothing)) diff --git a/stdlib/source/lux/lang/compiler/analysis/case.lux b/stdlib/source/lux/lang/compiler/analysis/case.lux index 9e67a24f9..84eb23af5 100644 --- a/stdlib/source/lux/lang/compiler/analysis/case.lux +++ b/stdlib/source/lux/lang/compiler/analysis/case.lux @@ -194,8 +194,8 @@ (Operation [(List Pattern) a]))) (function (_ [memberT memberC] then) (do @ - [[memberP [memberP+ thenA]] ((:! (All [a] (-> (Maybe Nat) Type Code (Operation a) (Operation [Pattern a]))) - analyse-pattern) + [[memberP [memberP+ thenA]] ((:coerce (All [a] (-> (Maybe Nat) Type Code (Operation a) (Operation [Pattern a]))) + analyse-pattern) #.None memberT memberC then)] (wrap [(list& memberP memberP+) thenA])))) (do @ diff --git a/stdlib/source/lux/lang/compiler/extension/analysis/common.lux b/stdlib/source/lux/lang/compiler/extension/analysis/common.lux index 6bd1a93bf..ca1c51df9 100644 --- a/stdlib/source/lux/lang/compiler/extension/analysis/common.lux +++ b/stdlib/source/lux/lang/compiler/extension/analysis/common.lux @@ -102,14 +102,14 @@ ## (^ (list typeC valueC)) ## (do compiler.Monad<Operation> ## [actualT (eval Type typeC) -## _ (typeA.infer (:! Type actualT))] +## _ (typeA.infer (:coerce Type actualT))] ## (typeA.with-type <type> ## (analyse valueC))) ## _ ## (lang.throw ///bundle.incorrect-arity [extension +2 (list.size args)]))))] -## [lux//check (:! Type actualT)] +## [lux//check (:coerce Type actualT)] ## [lux//coerce Any] ## ) diff --git a/stdlib/source/lux/lang/compiler/extension/analysis/host.jvm.lux b/stdlib/source/lux/lang/compiler/extension/analysis/host.jvm.lux index 56da166c5..1fb9d8d90 100644 --- a/stdlib/source/lux/lang/compiler/extension/analysis/host.jvm.lux +++ b/stdlib/source/lux/lang/compiler/extension/analysis/host.jvm.lux @@ -545,10 +545,10 @@ (def: (java-type-to-class type) (-> java/lang/reflect/Type (Meta Text)) (cond (host.instance? Class type) - (macro/wrap (Class::getName [] (:! Class type))) + (macro/wrap (Class::getName [] (:coerce Class type))) (host.instance? ParameterizedType type) - (java-type-to-class (ParameterizedType::getRawType [] (:! ParameterizedType type))) + (java-type-to-class (ParameterizedType::getRawType [] (:coerce ParameterizedType type))) ## else (lang.throw Cannot-Convert-To-Class (jvm-type-name type)))) @@ -561,7 +561,7 @@ (def: (java-type-to-lux-type mappings java-type) (-> Mappings java/lang/reflect/Type (Meta Type)) (cond (host.instance? TypeVariable java-type) - (let [var-name (TypeVariable::getName [] (:! TypeVariable java-type))] + (let [var-name (TypeVariable::getName [] (:coerce TypeVariable java-type))] (case (dict.get var-name mappings) (#.Some var-type) (macro/wrap var-type) @@ -570,7 +570,7 @@ (lang.throw Unknown-Type-Var var-name))) (host.instance? WildcardType java-type) - (let [java-type (:! WildcardType java-type)] + (let [java-type (:coerce WildcardType java-type)] (case [(array.read +0 (WildcardType::getUpperBounds [] java-type)) (array.read +0 (WildcardType::getLowerBounds [] java-type))] (^or [(#.Some bound) _] [_ (#.Some bound)]) @@ -580,7 +580,7 @@ (macro/wrap Any))) (host.instance? Class java-type) - (let [java-type (:! (Class Object) java-type) + (let [java-type (:coerce (Class Object) java-type) class-name (Class::getName [] java-type)] (macro/wrap (case (array.size (Class::getTypeParameters [] java-type)) +0 @@ -594,7 +594,7 @@ (type.univ-q arity))))) (host.instance? ParameterizedType java-type) - (let [java-type (:! ParameterizedType java-type) + (let [java-type (:coerce ParameterizedType java-type) raw (ParameterizedType::getRawType [] java-type)] (if (host.instance? Class raw) (do macro.Monad<Meta> @@ -602,13 +602,13 @@ (ParameterizedType::getActualTypeArguments []) array.to-list (monad.map @ (java-type-to-lux-type mappings)))] - (macro/wrap (#.Primitive (Class::getName [] (:! (Class Object) raw)) + (macro/wrap (#.Primitive (Class::getName [] (:coerce (Class Object) raw)) paramsT))) (lang.throw jvm-type-is-not-a-class raw))) (host.instance? GenericArrayType java-type) (do macro.Monad<Meta> - [innerT (|> (:! GenericArrayType java-type) + [innerT (|> (:coerce GenericArrayType java-type) (GenericArrayType::getGenericComponentType []) (java-type-to-lux-type mappings))] (wrap (#.Primitive "#Array" (list innerT)))) @@ -884,10 +884,10 @@ (def: (java-type-to-parameter type) (-> java/lang/reflect/Type (Meta Text)) (cond (host.instance? Class type) - (macro/wrap (Class::getName [] (:! Class type))) + (macro/wrap (Class::getName [] (:coerce Class type))) (host.instance? ParameterizedType type) - (java-type-to-parameter (ParameterizedType::getRawType [] (:! ParameterizedType type))) + (java-type-to-parameter (ParameterizedType::getRawType [] (:coerce ParameterizedType type))) (or (host.instance? TypeVariable type) (host.instance? WildcardType type)) @@ -895,7 +895,7 @@ (host.instance? GenericArrayType type) (do macro.Monad<Meta> - [componentP (java-type-to-parameter (GenericArrayType::getGenericComponentType [] (:! GenericArrayType type)))] + [componentP (java-type-to-parameter (GenericArrayType::getGenericComponentType [] (:coerce GenericArrayType type)))] (wrap (format componentP "[]"))) ## else diff --git a/stdlib/source/lux/lang/compiler/synthesis/case.lux b/stdlib/source/lux/lang/compiler/synthesis/case.lux index b7f224168..c12930963 100644 --- a/stdlib/source/lux/lang/compiler/synthesis/case.lux +++ b/stdlib/source/lux/lang/compiler/synthesis/case.lux @@ -99,7 +99,7 @@ rightP <default>)) ([#//.Bool bool/=] - [#//.I64 (:! (Eq I64) i/=)] + [#//.I64 (:coerce (Eq I64) i/=)] [#//.F64 frac/=] [#//.Text text/=]) diff --git a/stdlib/source/lux/lang/compiler/translation/scheme/case.jvm.lux b/stdlib/source/lux/lang/compiler/translation/scheme/case.jvm.lux index e5d12a005..40d2625fb 100644 --- a/stdlib/source/lux/lang/compiler/translation/scheme/case.jvm.lux +++ b/stdlib/source/lux/lang/compiler/translation/scheme/case.jvm.lux @@ -32,7 +32,7 @@ (.let [method (.if tail? //runtime.product//right //runtime.product//left)] - (method source (_.int (:! Int idx))))) + (method source (_.int (:coerce Int idx))))) valueO pathP)))) diff --git a/stdlib/source/lux/macro.lux b/stdlib/source/lux/macro.lux index 91a83864c..982dec71b 100644 --- a/stdlib/source/lux/macro.lux +++ b/stdlib/source/lux/macro.lux @@ -251,7 +251,7 @@ [def-type def-anns def-value] (: (Maybe Definition) (|> (: Module $module) (get@ #.definitions) (get name)))] (if (and (macro? def-anns) (or (export? def-anns) (text/= module this-module))) - (#.Some (:! Macro def-value)) + (#.Some (:coerce Macro def-value)) (case (get-symbol-ann (ident-for #.alias) def-anns) (#.Some [r-module r-name]) (find-macro' modules this-module r-module r-name) @@ -539,7 +539,7 @@ (-> Ident (Meta Type)) (do Monad<Meta> [[def-type def-data def-value] (find-def name)] - (wrap (:! Type def-value)))) + (wrap (:coerce Type def-value)))) (def: #export (definitions module-name) {#.doc "The entire list of definitions in a module (including the unexported/private ones)."} diff --git a/stdlib/source/lux/world/blob.jvm.lux b/stdlib/source/lux/world/blob.jvm.lux index df9fcf8d2..4565e5499 100644 --- a/stdlib/source/lux/world/blob.jvm.lux +++ b/stdlib/source/lux/world/blob.jvm.lux @@ -27,7 +27,7 @@ (def: i64 (-> (primitive "java.lang.Byte") I64) - (|>> host.byte-to-long (:! I64) (bit.and byte-mask))) + (|>> host.byte-to-long (:coerce I64) (bit.and byte-mask))) (def: byte (-> (I64 Any) (primitive "java.lang.Byte")) @@ -134,7 +134,7 @@ (ex.throw index-out-of-bounds <description>) ## else - (#e.Success (Arrays::copyOfRange [blob (:! Int from) (:! Int (inc to))])))))) + (#e.Success (Arrays::copyOfRange [blob (:coerce Int from) (:coerce Int (inc to))])))))) (def: #export (slice' from blob) (-> Nat Blob (e.Error Blob)) diff --git a/stdlib/source/lux/world/console.lux b/stdlib/source/lux/world/console.lux index b66dce4da..49432f777 100644 --- a/stdlib/source/lux/world/console.lux +++ b/stdlib/source/lux/world/console.lux @@ -82,7 +82,7 @@ (wrap (StringBuffer::toString [] buffer)))) _ - (exec (Appendable::append [(:! String char)] buffer) + (exec (Appendable::append [(:coerce String char)] buffer) (recur [])))))))) (def: (write message) diff --git a/stdlib/test/test/lux.lux b/stdlib/test/test/lux.lux index 3c731ebc4..6061f4829 100644 --- a/stdlib/test/test/lux.lux +++ b/stdlib/test/test/lux.lux @@ -145,7 +145,7 @@ (def: frac-deg (r.Random Deg) (|> r.deg - (:: r.Functor<Random> map (|>> (:! Nat) (bit.left-shift +11) (bit.right-shift +11) (:! Deg))))) + (:: r.Functor<Random> map (|>> (bit.left-shift +11) (bit.right-shift +11))))) (do-template [category rand-gen -> <- = <cap>] [(context: (format "[" category "] " "Numeric conversions") diff --git a/stdlib/test/test/lux/lang/compiler/analysis/function.lux b/stdlib/test/test/lux/lang/compiler/analysis/function.lux index 147cbcc9e..33bae5c9b 100644 --- a/stdlib/test/test/lux/lang/compiler/analysis/function.lux +++ b/stdlib/test/test/lux/lang/compiler/analysis/function.lux @@ -24,7 +24,7 @@ (// ["_." primitive] ["_." structure])) -(def: analyse (expressionA.analyser (:! lang.Eval []))) +(def: analyse (expressionA.analyser (:coerce lang.Eval []))) (def: (check-apply expectedT num-args analysis) (-> Type Nat (Meta Analysis) Bool) diff --git a/stdlib/test/test/lux/lang/compiler/analysis/primitive.lux b/stdlib/test/test/lux/lang/compiler/analysis/primitive.lux index 18b8f6c46..0d4bffb39 100644 --- a/stdlib/test/test/lux/lang/compiler/analysis/primitive.lux +++ b/stdlib/test/test/lux/lang/compiler/analysis/primitive.lux @@ -17,7 +17,7 @@ [".A" expression]))) test)) -(def: #export analyse (expressionA.analyser (:! lang.Eval []))) +(def: #export analyse (expressionA.analyser (:coerce lang.Eval []))) (def: unit (r.Random Code) diff --git a/stdlib/test/test/lux/lang/compiler/analysis/reference.lux b/stdlib/test/test/lux/lang/compiler/analysis/reference.lux index ff7ce3412..98db0a006 100644 --- a/stdlib/test/test/lux/lang/compiler/analysis/reference.lux +++ b/stdlib/test/test/lux/lang/compiler/analysis/reference.lux @@ -20,7 +20,7 @@ test) (// ["_." primitive])) -(def: analyse (expressionA.analyser (:! lang.Eval []))) +(def: analyse (expressionA.analyser (:coerce lang.Eval []))) (context: "References" (<| (times +100) diff --git a/stdlib/test/test/lux/lang/compiler/analysis/structure.lux b/stdlib/test/test/lux/lang/compiler/analysis/structure.lux index 2f3e369d6..1ad28e16b 100644 --- a/stdlib/test/test/lux/lang/compiler/analysis/structure.lux +++ b/stdlib/test/test/lux/lang/compiler/analysis/structure.lux @@ -26,7 +26,7 @@ test) (// ["_." primitive])) -(def: analyse (expressionA.analyser (:! lang.Eval []))) +(def: analyse (expressionA.analyser (:coerce lang.Eval []))) (do-template [<name> <on-success> <on-error>] [(def: #export <name> diff --git a/stdlib/test/test/lux/lang/compiler/synthesis/primitive.lux b/stdlib/test/test/lux/lang/compiler/synthesis/primitive.lux index 1c8368204..aa0da89ea 100644 --- a/stdlib/test/test/lux/lang/compiler/synthesis/primitive.lux +++ b/stdlib/test/test/lux/lang/compiler/synthesis/primitive.lux @@ -33,7 +33,7 @@ (case [synthesis analysis] [(#//.Primitive (#//.Text valueS)) (#analysisL.Primitive (#analysisL.Unit valueA))] - (is? valueS (:! Text valueA)) + (is? valueS (:coerce Text valueA)) [(#//.Primitive (#//.Bool valueS)) (#analysisL.Primitive (#analysisL.Bool valueA))] |