diff options
author | Eduardo Julian | 2018-05-06 00:45:45 -0400 |
---|---|---|
committer | Eduardo Julian | 2018-05-06 00:45:45 -0400 |
commit | 8787650c4b1641832db9df2c35bc3046e886220e (patch) | |
tree | 8c14799379226aa8452d39d91e9a56896db9187f /new-luxc/source/luxc/lang/translation | |
parent | 3c93d7a3aabaa49c67f9a498bc0d70f0af7f09d0 (diff) |
- Updated new-luxc to the latest stdlib changes.
Diffstat (limited to 'new-luxc/source/luxc/lang/translation')
59 files changed, 169 insertions, 169 deletions
diff --git a/new-luxc/source/luxc/lang/translation/common-lisp.lux b/new-luxc/source/luxc/lang/translation/common-lisp.lux index e76e614f8..4e18c48cf 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp.lux @@ -52,7 +52,7 @@ (type: #export Host {#context [Text Nat] #anchor (Maybe Anchor) - #loader (-> Expression (Error Unit)) + #loader (-> Expression (Error Top)) #interpreter (-> Expression (Error LispObject)) #module-buffer (Maybe StringBuilder) #program-buffer StringBuilder}) @@ -80,12 +80,12 @@ (def: #export r-module-name Text (format "module" file-extension)) (def: #export init-module-buffer - (Meta Unit) + (Meta Top) (function (_ compiler) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Void)) + (:! Bottom)) compiler) []]))) @@ -96,13 +96,13 @@ [old-name old-sub] (get@ #context old) new-name (format old-name "f___" (%i (nat-to-int old-sub)))] (case (expr (set@ #.host - (:! Void (set@ #context [new-name +0] old)) + (:! Bottom (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #context [old-name (n/inc old-sub)]) - (:! Void)) + (:! Bottom)) compiler') [new-name output]]) @@ -124,13 +124,13 @@ (function (_ compiler) (let [old (:! Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Void (set@ #anchor (#.Some anchor) old)) + (:! Bottom (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #anchor (get@ #anchor old)) - (:! Void)) + (:! Bottom)) compiler') output]) @@ -174,7 +174,7 @@ (#e.Success output) (#e.Success [compiler output])))))] - [load! #loader Unit] + [load! #loader Top] [interpret #interpreter LispObject] ) @@ -187,7 +187,7 @@ (lang.normalize-name (format module "$" name))) (def: #export (save code) - (-> Expression (Meta Unit)) + (-> Expression (Meta Top)) (do macro.Monad<Meta> [module-buffer module-buffer #let [_ (Appendable::append [(:! CharSequence (_.expression code))] @@ -197,7 +197,7 @@ (def: #export run interpret) (def: #export (save-module! target) - (-> File (Meta (Process Unit))) + (-> File (Meta (Process Top))) (do macro.Monad<Meta> [module macro.current-module-name module-buffer module-buffer 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 576fa8cc9..d132ba0b8 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 @@ -6,7 +6,7 @@ [text] text/format (coll [list "list/" Functor<List> Fold<List>] - [set #+ Set])) + (set ["set" unordered #+ Set]))) [macro #+ "meta/" Monad<Meta>] (macro [code])) (luxc [lang] 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 fa59ee45e..262f3f284 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 @@ -24,7 +24,7 @@ (#static forName [String] #try (Class Object))) (def: _0 - Unit + Top (case (Class::forName "org.armedbear.lisp.Symbol") (#e.Success _) (log! "LOADED") diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/procedure.jvm.lux index 0b9fa3544..ed8220613 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/procedure.jvm.lux @@ -4,7 +4,7 @@ ["ex" exception #+ exception:]) (data [maybe] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang ["ls" synthesis] (host ["_" common-lisp #+ Expression]))) diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/procedure/common.jvm.lux index 42edae95b..895ed8d72 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/procedure/common.jvm.lux @@ -8,7 +8,7 @@ text/format [number #+ hex] (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -33,7 +33,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 Expression) Expression)) @@ -61,7 +61,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g!_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/common-lisp/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/common-lisp/procedure/host.jvm.lux index c1b43da2f..af82491b6 100644 --- a/new-luxc/source/luxc/lang/translation/common-lisp/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/common-lisp/procedure/host.jvm.lux @@ -4,7 +4,7 @@ (data [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>]) (luxc ["&" lang] (lang ["la" analysis] 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 eae90e771..33f72b995 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 @@ -58,7 +58,7 @@ (p.either (p.seq s.local-symbol (p/wrap (list))) (s.form (p.seq s.local-symbol (p.some s.local-symbol))))) -(syntax: (runtime: [[name args] declaration] +(syntax: (runtime: {[name args] declaration} definition) (let [implementation (code.local-symbol (format "@@" name)) runtime (format prefix "__" (lang.normalize-name name)) @@ -93,7 +93,7 @@ (_.defun (~ $runtime) (list (~+ argsLC+)) (~ definition)))))))))))) -(syntax: #export (with-vars [vars (s.tuple (p.many s.local-symbol))] +(syntax: #export (with-vars {vars (s.tuple (p.many s.local-symbol))} body) (wrap (list (` (let [(~+ (|> vars (list/map (function (_ var) @@ -365,7 +365,7 @@ (def: #export artifact Text (format prefix //.file-extension)) (def: #export translate - (Meta (Process Unit)) + (Meta (Process Top)) (do macro.Monad<Meta> [_ //.init-module-buffer _ (//.save runtime)] 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 17f8b4ccb..e73d88c96 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 @@ -11,7 +11,7 @@ [".T" eval])) (def: #export (translate-def name expressionT expressionO metaV) - (-> Text Type Expression Code (Meta Unit)) + (-> Text Type Expression Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module name]]] diff --git a/new-luxc/source/luxc/lang/translation/js.lux b/new-luxc/source/luxc/lang/translation/js.lux index db76a2868..b318c7fbc 100644 --- a/new-luxc/source/luxc/lang/translation/js.lux +++ b/new-luxc/source/luxc/lang/translation/js.lux @@ -90,12 +90,12 @@ (def: #export module-js-name Text "module.js") (def: #export init-module-buffer - (Meta Unit) + (Meta Top) (function (_ compiler) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Void)) + (:! Bottom)) compiler) []]))) @@ -106,13 +106,13 @@ [old-name old-sub] (get@ #context old) new-name (format old-name "$" (%i (nat-to-int old-sub)))] (case (expr (set@ #.host - (:! Void (set@ #context [new-name +0] old)) + (:! Bottom (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #context [old-name (n/inc old-sub)]) - (:! Void)) + (:! Bottom)) compiler') [new-name output]]) @@ -134,13 +134,13 @@ (function (_ compiler) (let [old (:! Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Void (set@ #anchor (#.Some anchor) old)) + (:! Bottom (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #anchor (get@ #anchor old)) - (:! Void)) + (:! Bottom)) compiler') output]) @@ -173,7 +173,7 @@ (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) (def: (execute code) - (-> Expression (Meta Unit)) + (-> Expression (Meta Top)) (function (_ compiler) (case (|> compiler (get@ #.host) @@ -304,7 +304,7 @@ (:! Object))) )) -(def: #export unit Text "\u0000") +(def: #export unit Text "") (def: (module-name module) (-> Text Text) @@ -317,7 +317,7 @@ (format (module-name module) "$" (lang.normalize-name name))) (def: #export (save-js code) - (-> JS (Meta Unit)) + (-> JS (Meta Top)) (do macro.Monad<Meta> [module-buffer module-buffer #let [_ (Appendable::append [(:! CharSequence code)] @@ -325,11 +325,11 @@ (execute code))) (def: #export (save-definition name code) - (-> Ident Expression (Meta Unit)) + (-> Ident Expression (Meta Top)) (save-js (format "var " (definition-name name) " = " code ";\n"))) (def: #export (save-module! target) - (-> File (Meta (Process Unit))) + (-> File (Meta (Process Top))) (do macro.Monad<Meta> [module macro.current-module-name module-buffer module-buffer diff --git a/new-luxc/source/luxc/lang/translation/js/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/js/procedure.jvm.lux index f67c1e523..cd5757663 100644 --- a/new-luxc/source/luxc/lang/translation/js/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/procedure.jvm.lux @@ -4,7 +4,7 @@ ["ex" exception #+ exception:]) (data [maybe] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang ["ls" synthesis] (host [js #+ JS Expression Statement]))) diff --git a/new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux index 365f730e3..8e40799f2 100644 --- a/new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/procedure/common.jvm.lux @@ -7,7 +7,7 @@ [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -32,7 +32,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 Expression) Expression)) @@ -60,7 +60,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g!_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux index dc6d48bd8..00c2429a4 100644 --- a/new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/procedure/host.jvm.lux @@ -4,7 +4,7 @@ (data [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>]) (luxc ["&" lang] (lang ["la" analysis] diff --git a/new-luxc/source/luxc/lang/translation/js/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/js/runtime.jvm.lux index ea1b82e98..2adb118f8 100644 --- a/new-luxc/source/luxc/lang/translation/js/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/runtime.jvm.lux @@ -55,7 +55,7 @@ (-> Text (-> Text Expression) Statement) (format "var " name " = " (definition name) ";\n")) -(syntax: (runtime-implementation-name [runtime-name s.local-symbol]) +(syntax: (runtime-implementation-name {runtime-name s.local-symbol}) (wrap (list (code.local-symbol (format "__" runtime-name))))) (template: (runtime: <lux-name> <js-name> <js-definition>) @@ -911,7 +911,7 @@ (def: #export artifact Text (format prefix ".js")) (def: #export translate - (Meta (Process Unit)) + (Meta (Process Top)) (do macro.Monad<Meta> [_ //.init-module-buffer _ (//.save-js runtime)] 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 7bcd8e112..e15e4379a 100644 --- a/new-luxc/source/luxc/lang/translation/js/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/js/statement.jvm.lux @@ -11,7 +11,7 @@ [".T" eval])) (def: #export (translate-def name expressionT expressionJS metaV) - (-> Text Type Expression Code (Meta Unit)) + (-> Text Type Expression Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module name]]] 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 579eb565c..524433214 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/common.jvm.lux @@ -7,7 +7,7 @@ (data ["e" error #+ Error] [text "text/" Hash<Text>] text/format - (coll [dict #+ Dict])) + (coll (dictionary ["dict" unordered #+ Dict]))) [macro] [host] (world [blob #+ Blob] @@ -66,13 +66,13 @@ (case (action (update@ #.host (|>> (:! Host) (set@ #artifacts (dict.new text.Hash<Text>)) - (:! Void)) + (:! Bottom)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #artifacts (|> (get@ #.host compiler) (:! Host) (get@ #artifacts))) - (:! Void)) + (:! Bottom)) compiler') [(|> compiler' (get@ #.host) (:! Host) (get@ #artifacts)) output]]) @@ -81,19 +81,19 @@ (#e.Error error)))) (def: #export (record-artifact name content) - (-> Text Blob (Meta Unit)) + (-> Text Blob (Meta Top)) (function (_ compiler) (if (|> compiler (get@ #.host) (:! Host) (get@ #artifacts) (dict.contains? name)) (ex.throw Cannot-Overwrite-Artifact name) (#e.Success [(update@ #.host (|>> (:! Host) (update@ #artifacts (dict.put name content)) - (:! Void)) + (:! Bottom)) compiler) []])))) (def: #export (store-class name byte-code) - (-> Text Bytecode (Meta Unit)) + (-> Text Bytecode (Meta Top)) (function (_ compiler) (let [store (|> (get@ #.host compiler) (:! Host) diff --git a/new-luxc/source/luxc/lang/translation/jvm/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/procedure.jvm.lux index 3f852d832..49c91204a 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/procedure.jvm.lux @@ -4,7 +4,7 @@ ["ex" exception #+ exception:]) (data [maybe] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang (host ["$" jvm]) ["ls" synthesis])) diff --git a/new-luxc/source/luxc/lang/translation/jvm/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/procedure/common.jvm.lux index 158d4c788..9764045e7 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/procedure/common.jvm.lux @@ -7,7 +7,7 @@ [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -46,7 +46,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 $.Inst) $.Inst)) @@ -81,7 +81,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g!_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/jvm/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/jvm/procedure/host.jvm.lux index f8461be45..f6a0069f5 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/procedure/host.jvm.lux @@ -9,7 +9,7 @@ (text format ["l" lexer]) (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>] (macro [code] ["s" syntax #+ syntax:]) 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 26aaaa8e9..4400c1e90 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/statement.jvm.lux @@ -37,7 +37,7 @@ (getField [String] #try Field)) (def: #export (translate-def def-name valueT valueI metaV) - (-> Text Type $.Inst Code (Meta Unit)) + (-> Text Type $.Inst Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module def-name]]] @@ -93,7 +93,7 @@ (commonT.record-artifact (format bytecode-name ".class") bytecode))))) (def: #export (translate-program programI) - (-> $.Inst (Meta Unit)) + (-> $.Inst (Meta Top)) (let [nilI runtimeT.noneI num-inputsI (|>> ($i.ALOAD +0) $i.ARRAYLENGTH) decI (|>> ($i.int 1) $i.ISUB) diff --git a/new-luxc/source/luxc/lang/translation/lua.lux b/new-luxc/source/luxc/lang/translation/lua.lux index fdd66af81..5d25fb864 100644 --- a/new-luxc/source/luxc/lang/translation/lua.lux +++ b/new-luxc/source/luxc/lang/translation/lua.lux @@ -104,12 +104,12 @@ (def: #export lua-module-name Text "module.lua") (def: #export init-module-buffer - (Meta Unit) + (Meta Top) (function (_ compiler) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Void)) + (:! Bottom)) compiler) []]))) @@ -120,13 +120,13 @@ [old-name old-sub] (get@ #context old) new-name (format old-name "___" (%i (nat-to-int old-sub)))] (case (expr (set@ #.host - (:! Void (set@ #context [new-name +0] old)) + (:! Bottom (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #context [old-name (n/inc old-sub)]) - (:! Void)) + (:! Bottom)) compiler') [new-name output]]) @@ -148,13 +148,13 @@ (function (_ compiler) (let [old (:! Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Void (set@ #anchor (#.Some anchor) old)) + (:! Bottom (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #anchor (get@ #anchor old)) - (:! Void)) + (:! Bottom)) compiler') output]) @@ -187,7 +187,7 @@ (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) (def: (execute code) - (-> Expression (Meta Unit)) + (-> Expression (Meta Top)) (function (_ compiler) (let [interpreter (|> compiler (get@ #.host) (:! Host) (get@ #interpreter))] (case (interpreter code) @@ -201,14 +201,14 @@ (def: #export variant-flag-field "_lux_flag") (def: #export variant-value-field "_lux_value") -(def: #export unit Text "\u0000") +(def: #export unit Text "") (def: #export (definition-name [module name]) (-> Ident Text) (lang.normalize-name (format module "$" name))) (def: #export (save code) - (-> Lua (Meta Unit)) + (-> Lua (Meta Top)) (do macro.Monad<Meta> [module-buffer module-buffer #let [_ (Appendable::append [(:! CharSequence code)] @@ -216,7 +216,7 @@ (execute code))) (def: #export (save-module! target) - (-> File (Meta (Process Unit))) + (-> File (Meta (Process Top))) (do macro.Monad<Meta> [module macro.current-module-name module-buffer module-buffer diff --git a/new-luxc/source/luxc/lang/translation/lua/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/procedure.jvm.lux index 9b5cb6475..eaffddfa0 100644 --- a/new-luxc/source/luxc/lang/translation/lua/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/procedure.jvm.lux @@ -4,7 +4,7 @@ ["ex" exception #+ exception:]) (data [maybe] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang ["ls" synthesis] (host [lua #+ Lua Expression Statement]))) diff --git a/new-luxc/source/luxc/lang/translation/lua/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/procedure/common.jvm.lux index 9d0e22f78..91906d899 100644 --- a/new-luxc/source/luxc/lang/translation/lua/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/procedure/common.jvm.lux @@ -7,7 +7,7 @@ [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -32,7 +32,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 Expression) Expression)) @@ -60,7 +60,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/lua/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/procedure/host.jvm.lux index 85af96ec9..2271d354a 100644 --- a/new-luxc/source/luxc/lang/translation/lua/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/procedure/host.jvm.lux @@ -4,7 +4,7 @@ (data [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>]) (luxc ["&" lang] (lang ["la" analysis] diff --git a/new-luxc/source/luxc/lang/translation/lua/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/lua/runtime.jvm.lux index 12a0fe6a5..e0b037bf5 100644 --- a/new-luxc/source/luxc/lang/translation/lua/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/runtime.jvm.lux @@ -55,7 +55,7 @@ (p.either (p.seq s.local-symbol (p/wrap (list))) (s.form (p.seq s.local-symbol (p.some s.local-symbol))))) -(syntax: (runtime: [[name args] declaration] +(syntax: (runtime: {[name args] declaration} definition) (let [implementation (code.local-symbol (format "@@" name)) runtime (code.text (format "__" prefix "__" (lang.normalize-name name))) @@ -489,7 +489,7 @@ (def: #export artifact Text (format prefix ".lua")) (def: #export translate - (Meta (Process Unit)) + (Meta (Process Top)) (do macro.Monad<Meta> [_ //.init-module-buffer _ (//.save runtime)] 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 eb181d160..ee0725014 100644 --- a/new-luxc/source/luxc/lang/translation/lua/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/lua/statement.jvm.lux @@ -11,7 +11,7 @@ [".T" eval])) (def: #export (translate-def name expressionT expressionO metaV) - (-> Text Type Expression Code (Meta Unit)) + (-> Text Type Expression Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module name]]] diff --git a/new-luxc/source/luxc/lang/translation/php.lux b/new-luxc/source/luxc/lang/translation/php.lux index eeaa95309..8cbcaad3a 100644 --- a/new-luxc/source/luxc/lang/translation/php.lux +++ b/new-luxc/source/luxc/lang/translation/php.lux @@ -54,7 +54,7 @@ (type: #export Host {#context [Text Nat] #anchor (Maybe Anchor) - #loader (-> Statement (Error Unit)) + #loader (-> Statement (Error Top)) #interpreter (-> Expression (Error Object)) #module-buffer (Maybe StringBuilder) #program-buffer StringBuilder}) @@ -77,12 +77,12 @@ (def: #export module-name Text (format "module" extension)) (def: #export init-module-buffer - (Meta Unit) + (Meta Top) (function (_ compiler) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Void)) + (:! Bottom)) compiler) []]))) @@ -93,13 +93,13 @@ [old-name old-sub] (get@ #context old) new-name (format old-name "___" (%i (nat-to-int old-sub)))] (case (expr (set@ #.host - (:! Void (set@ #context [new-name +0] old)) + (:! Bottom (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #context [old-name (n/inc old-sub)]) - (:! Void)) + (:! Bottom)) compiler') [new-name output]]) @@ -121,13 +121,13 @@ (function (_ compiler) (let [old (:! Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Void (set@ #anchor (#.Some anchor) old)) + (:! Bottom (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #anchor (get@ #anchor old)) - (:! Void)) + (:! Bottom)) compiler') output]) @@ -171,7 +171,7 @@ (#e.Success output) (#e.Success [compiler output])))))] - [load! #loader Statement Unit] + [load! #loader Statement Top] [interpret #interpreter Expression Object] ) @@ -186,7 +186,7 @@ (lang.normalize-name (format module "$" name))) (def: #export (save code) - (-> Statement (Meta Unit)) + (-> Statement (Meta Top)) (do macro.Monad<Meta> [module-buffer module-buffer #let [_ (Appendable::append [(:! CharSequence (_.code code))] @@ -194,7 +194,7 @@ (load! code))) (def: #export (save-module! target) - (-> File (Meta (Process Unit))) + (-> File (Meta (Process Top))) (do macro.Monad<Meta> [module macro.current-module-name module-buffer module-buffer 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 0868811e7..0cfd66729 100644 --- a/new-luxc/source/luxc/lang/translation/php/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/case.jvm.lux @@ -6,7 +6,7 @@ [text] text/format (coll [list "list/" Functor<List> Fold<List>] - [set #+ Set])) + (set ["set" unordered #+ Set]))) [macro #+ "meta/" Monad<Meta>] (macro [code])) (luxc [lang] diff --git a/new-luxc/source/luxc/lang/translation/php/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/php/procedure.jvm.lux index 9748167ca..ab73cddee 100644 --- a/new-luxc/source/luxc/lang/translation/php/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/procedure.jvm.lux @@ -5,7 +5,7 @@ (data [maybe] [text] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang ["ls" synthesis] (host ["_" php #+ Expression Statement]))) diff --git a/new-luxc/source/luxc/lang/translation/php/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/php/procedure/common.jvm.lux index 384a88056..bcbea37cf 100644 --- a/new-luxc/source/luxc/lang/translation/php/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/procedure/common.jvm.lux @@ -8,7 +8,7 @@ text/format [number] (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -33,7 +33,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 Expression) Expression)) @@ -61,7 +61,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g!_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/php/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/php/procedure/host.jvm.lux index c1b43da2f..af82491b6 100644 --- a/new-luxc/source/luxc/lang/translation/php/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/procedure/host.jvm.lux @@ -4,7 +4,7 @@ (data [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>]) (luxc ["&" lang] (lang ["la" analysis] diff --git a/new-luxc/source/luxc/lang/translation/php/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/php/runtime.jvm.lux index fe02cf2fc..66827025e 100644 --- a/new-luxc/source/luxc/lang/translation/php/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/runtime.jvm.lux @@ -57,7 +57,7 @@ (p.either (p.seq s.local-symbol (p/wrap (list))) (s.form (p.seq s.local-symbol (p.some s.local-symbol))))) -(syntax: (runtime: [[name args] declaration] +(syntax: (runtime: {[name args] declaration} definition) (let [implementation (code.local-symbol (format "@@" name)) runtime (format "__" prefix "__" (lang.normalize-name name)) @@ -87,7 +87,7 @@ ((~! list/map) _.parameter (list (~+ argsLC+))) (~ definition)))))))))))) -(syntax: (with-vars [vars (s.tuple (p.many s.local-symbol))] +(syntax: (with-vars {vars (s.tuple (p.many s.local-symbol))} body) (wrap (list (` (let [(~+ (|> vars (list/map (function (_ var) @@ -433,7 +433,7 @@ (def: #export artifact Text (format prefix //.extension)) (def: #export translate - (Meta (Process Unit)) + (Meta (Process Top)) (do macro.Monad<Meta> [_ //.init-module-buffer _ (//.save runtime)] 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 592e579cf..afbf7e476 100644 --- a/new-luxc/source/luxc/lang/translation/php/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/php/statement.jvm.lux @@ -11,7 +11,7 @@ [".T" eval])) (def: #export (translate-def name expressionT expressionO metaV) - (-> Text Type Expression Code (Meta Unit)) + (-> Text Type Expression Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module name]]] diff --git a/new-luxc/source/luxc/lang/translation/python.lux b/new-luxc/source/luxc/lang/translation/python.lux index 77df53332..8739c278d 100644 --- a/new-luxc/source/luxc/lang/translation/python.lux +++ b/new-luxc/source/luxc/lang/translation/python.lux @@ -54,7 +54,7 @@ (type: #export Host {#context [Text Nat] #anchor (Maybe Anchor) - #loader (-> Statement (Error Unit)) + #loader (-> Statement (Error Top)) #interpreter (-> Expression (Error PyObject)) #module-buffer (Maybe StringBuilder) #program-buffer StringBuilder}) @@ -74,12 +74,12 @@ (def: #export python-module-name Text "module.py") (def: #export init-module-buffer - (Meta Unit) + (Meta Top) (function (_ compiler) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Void)) + (:! Bottom)) compiler) []]))) @@ -90,13 +90,13 @@ [old-name old-sub] (get@ #context old) new-name (format old-name "___" (%i (nat-to-int old-sub)))] (case (expr (set@ #.host - (:! Void (set@ #context [new-name +0] old)) + (:! Bottom (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #context [old-name (n/inc old-sub)]) - (:! Void)) + (:! Bottom)) compiler') [new-name output]]) @@ -118,13 +118,13 @@ (function (_ compiler) (let [old (:! Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Void (set@ #anchor (#.Some anchor) old)) + (:! Bottom (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #anchor (get@ #anchor old)) - (:! Void)) + (:! Bottom)) compiler') output]) @@ -168,7 +168,7 @@ (#e.Success output) (#e.Success [compiler output])))))] - [load! #loader Statement Unit] + [load! #loader Statement Top] [interpret #interpreter Expression PyObject] ) @@ -191,12 +191,12 @@ module-buffer)]] (<eval> code)))] - [save load! python.statement Statement Unit] + [save load! python.statement Statement Top] [run interpret python.expression Expression PyObject] ) (def: #export (save-module! target) - (-> File (Meta (Process Unit))) + (-> File (Meta (Process Top))) (do macro.Monad<Meta> [module macro.current-module-name module-buffer module-buffer 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 6769103d9..2c32b26a6 100644 --- a/new-luxc/source/luxc/lang/translation/python/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/case.jvm.lux @@ -6,7 +6,7 @@ [text] text/format (coll [list "list/" Functor<List> Fold<List>] - [set #+ Set])) + (set ["set" unordered #+ Set]))) [macro #+ "meta/" Monad<Meta>] (macro [code])) (luxc [lang] diff --git a/new-luxc/source/luxc/lang/translation/python/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/python/procedure.jvm.lux index 699c0c000..f793a0165 100644 --- a/new-luxc/source/luxc/lang/translation/python/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/procedure.jvm.lux @@ -4,7 +4,7 @@ ["ex" exception #+ exception:]) (data [maybe] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang ["ls" synthesis] (host [python #+ Expression Statement]))) diff --git a/new-luxc/source/luxc/lang/translation/python/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/python/procedure/common.jvm.lux index badca2d74..24e4197d1 100644 --- a/new-luxc/source/luxc/lang/translation/python/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/procedure/common.jvm.lux @@ -8,7 +8,7 @@ text/format [number] (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -33,7 +33,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 Expression) Expression)) @@ -61,7 +61,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g!_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/python/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/python/procedure/host.jvm.lux index c1b43da2f..af82491b6 100644 --- a/new-luxc/source/luxc/lang/translation/python/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/procedure/host.jvm.lux @@ -4,7 +4,7 @@ (data [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>]) (luxc ["&" lang] (lang ["la" analysis] diff --git a/new-luxc/source/luxc/lang/translation/python/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/python/runtime.jvm.lux index 6319c2121..5d0ea9186 100644 --- a/new-luxc/source/luxc/lang/translation/python/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/runtime.jvm.lux @@ -57,7 +57,7 @@ (p.either (p.seq s.local-symbol (p/wrap (list))) (s.form (p.seq s.local-symbol (p.some s.local-symbol))))) -(syntax: (runtime: [[name args] declaration] +(syntax: (runtime: {[name args] declaration} definition) (let [implementation (code.local-symbol (format "@@" name)) runtime (format "__" prefix "__" (lang.normalize-name name)) @@ -88,7 +88,7 @@ (list (~+ argsLC+)) (~ definition)))))))))))) -(syntax: (with-vars [vars (s.tuple (p.many s.local-symbol))] +(syntax: (with-vars {vars (s.tuple (p.many s.local-symbol))} body) (wrap (list (` (let [(~+ (|> vars (list/map (function (_ var) @@ -576,7 +576,7 @@ (def: #export artifact Text (format prefix ".py")) (def: #export translate - (Meta (Process Unit)) + (Meta (Process Top)) (do macro.Monad<Meta> [_ //.init-module-buffer _ (//.save runtime)] 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 36fe472d3..b267f5a64 100644 --- a/new-luxc/source/luxc/lang/translation/python/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/python/statement.jvm.lux @@ -11,7 +11,7 @@ [".T" eval])) (def: #export (translate-def name expressionT expressionO metaV) - (-> Text Type Expression Code (Meta Unit)) + (-> Text Type Expression Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module name]]] diff --git a/new-luxc/source/luxc/lang/translation/r.lux b/new-luxc/source/luxc/lang/translation/r.lux index 446df095d..410e167bc 100644 --- a/new-luxc/source/luxc/lang/translation/r.lux +++ b/new-luxc/source/luxc/lang/translation/r.lux @@ -56,7 +56,7 @@ (type: #export Host {#context [Text Nat] #anchor (Maybe Anchor) - #loader (-> Expression (Error Unit)) + #loader (-> Expression (Error Top)) #interpreter (-> Expression (Error Object)) #module-buffer (Maybe StringBuilder) #program-buffer StringBuilder}) @@ -82,12 +82,12 @@ (def: #export r-module-name Text "module.r") (def: #export init-module-buffer - (Meta Unit) + (Meta Top) (function (_ compiler) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Void)) + (:! Bottom)) compiler) []]))) @@ -98,13 +98,13 @@ [old-name old-sub] (get@ #context old) new-name (format old-name "f___" (%i (nat-to-int old-sub)))] (case (expr (set@ #.host - (:! Void (set@ #context [new-name +0] old)) + (:! Bottom (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #context [old-name (n/inc old-sub)]) - (:! Void)) + (:! Bottom)) compiler') [new-name output]]) @@ -126,13 +126,13 @@ (function (_ compiler) (let [old (:! Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Void (set@ #anchor (#.Some anchor) old)) + (:! Bottom (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #anchor (get@ #anchor old)) - (:! Void)) + (:! Bottom)) compiler') output]) @@ -176,7 +176,7 @@ (#e.Success output) (#e.Success [compiler output])))))] - [load! #loader Unit] + [load! #loader Top] [interpret #interpreter Object] ) @@ -194,7 +194,7 @@ (lang.normalize-name (format module "$" name))) (def: #export (save code) - (-> Expression (Meta Unit)) + (-> Expression (Meta Top)) (do macro.Monad<Meta> [module-buffer module-buffer #let [_ (Appendable::append [(:! CharSequence (r.expression code))] @@ -204,7 +204,7 @@ (def: #export run interpret) (def: #export (save-module! target) - (-> File (Meta (Process Unit))) + (-> File (Meta (Process Top))) (do macro.Monad<Meta> [module macro.current-module-name module-buffer module-buffer 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 8a61f0263..21d8f1def 100644 --- a/new-luxc/source/luxc/lang/translation/r/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/case.jvm.lux @@ -6,7 +6,7 @@ [text] text/format (coll [list "list/" Functor<List> Fold<List>] - [set #+ Set])) + (set ["set" unordered #+ Set]))) [macro #+ "meta/" Monad<Meta>] (macro [code])) (luxc [lang] diff --git a/new-luxc/source/luxc/lang/translation/r/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/r/procedure.jvm.lux index 0cb14d379..468d09523 100644 --- a/new-luxc/source/luxc/lang/translation/r/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/procedure.jvm.lux @@ -4,7 +4,7 @@ ["ex" exception #+ exception:]) (data [maybe] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang ["ls" synthesis] (host [r #+ Expression]))) diff --git a/new-luxc/source/luxc/lang/translation/r/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/r/procedure/common.jvm.lux index bc2289f6a..f190f88ed 100644 --- a/new-luxc/source/luxc/lang/translation/r/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/procedure/common.jvm.lux @@ -8,7 +8,7 @@ text/format [number] (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -33,7 +33,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 Expression) Expression)) @@ -61,7 +61,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g!_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/r/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/r/procedure/host.jvm.lux index c1b43da2f..af82491b6 100644 --- a/new-luxc/source/luxc/lang/translation/r/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/procedure/host.jvm.lux @@ -4,7 +4,7 @@ (data [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>]) (luxc ["&" lang] (lang ["la" analysis] diff --git a/new-luxc/source/luxc/lang/translation/r/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/r/runtime.jvm.lux index 30eaf2a77..7183815c7 100644 --- a/new-luxc/source/luxc/lang/translation/r/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/runtime.jvm.lux @@ -85,7 +85,7 @@ (p.either (p.seq s.local-symbol (p/wrap (list))) (s.form (p.seq s.local-symbol (p.some s.local-symbol))))) -(syntax: (runtime: [[name args] declaration] +(syntax: (runtime: {[name args] declaration} definition) (let [implementation (code.local-symbol (format "@@" name)) runtime (format prefix "__" (lang.normalize-name name)) @@ -121,7 +121,7 @@ (r.function (list (~+ argsLC+)) (~ definition))))))))))))) -(syntax: #export (with-vars [vars (s.tuple (p.many s.local-symbol))] +(syntax: #export (with-vars {vars (s.tuple (p.many s.local-symbol))} body) (wrap (list (` (let [(~+ (|> vars (list/map (function (_ var) @@ -1049,7 +1049,7 @@ (def: #export artifact Text (format prefix ".r")) (def: #export translate - (Meta (Process Unit)) + (Meta (Process Top)) (do macro.Monad<Meta> [_ //.init-module-buffer _ (//.save runtime)] 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 04a31d687..7ff6a23e8 100644 --- a/new-luxc/source/luxc/lang/translation/r/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/statement.jvm.lux @@ -11,7 +11,7 @@ [".T" eval])) (def: #export (translate-def name expressionT expressionO metaV) - (-> Text Type Expression Code (Meta Unit)) + (-> Text Type Expression Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module name]]] diff --git a/new-luxc/source/luxc/lang/translation/ruby.lux b/new-luxc/source/luxc/lang/translation/ruby.lux index e405b2b4f..16b0813d5 100644 --- a/new-luxc/source/luxc/lang/translation/ruby.lux +++ b/new-luxc/source/luxc/lang/translation/ruby.lux @@ -68,12 +68,12 @@ (def: #export ruby-module-name Text "module.rb") (def: #export init-module-buffer - (Meta Unit) + (Meta Top) (function (_ compiler) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Void)) + (:! Bottom)) compiler) []]))) @@ -84,13 +84,13 @@ [old-name old-sub] (get@ #context old) new-name (format old-name "___" (%i (nat-to-int old-sub)))] (case (expr (set@ #.host - (:! Void (set@ #context [new-name +0] old)) + (:! Bottom (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #context [old-name (n/inc old-sub)]) - (:! Void)) + (:! Bottom)) compiler') [new-name output]]) @@ -112,13 +112,13 @@ (function (_ compiler) (let [old (:! Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Void (set@ #anchor (#.Some anchor) old)) + (:! Bottom (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #anchor (get@ #anchor old)) - (:! Void)) + (:! Bottom)) compiler') output]) @@ -151,7 +151,7 @@ (#e.Success [compiler (|> compiler (get@ #.host) (:! Host) (get@ #program-buffer))]))) (def: (execute code) - (-> Expression (Meta Unit)) + (-> Expression (Meta Top)) (function (_ compiler) (let [interpreter (|> compiler (get@ #.host) (:! Host) (get@ #interpreter))] (case (interpreter code) @@ -165,14 +165,14 @@ (def: #export variant-flag-field "_lux_flag") (def: #export variant-value-field "_lux_value") -(def: #export unit Text "\u0000") +(def: #export unit Text "") (def: #export (definition-name [module name]) (-> Ident Text) (lang.normalize-name (format module "$" name))) (def: #export (save code) - (-> Ruby (Meta Unit)) + (-> Ruby (Meta Top)) (do macro.Monad<Meta> [module-buffer module-buffer #let [_ (Appendable::append [(:! CharSequence code)] @@ -180,7 +180,7 @@ (execute code))) (def: #export (save-module! target) - (-> File (Meta (Process Unit))) + (-> File (Meta (Process Top))) (do macro.Monad<Meta> [module macro.current-module-name module-buffer module-buffer diff --git a/new-luxc/source/luxc/lang/translation/ruby/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/procedure.jvm.lux index 0bda70ad9..036a68d0c 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/procedure.jvm.lux @@ -4,7 +4,7 @@ ["ex" exception #+ exception:]) (data [maybe] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang ["ls" synthesis] (host [ruby #+ Ruby Expression Statement]))) diff --git a/new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux index 39c1f561d..8e58c06d4 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/procedure/common.jvm.lux @@ -7,7 +7,7 @@ [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -32,7 +32,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 Expression) Expression)) @@ -60,7 +60,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g!_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/ruby/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/procedure/host.jvm.lux index c1b43da2f..af82491b6 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/procedure/host.jvm.lux @@ -4,7 +4,7 @@ (data [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>]) (luxc ["&" lang] (lang ["la" analysis] diff --git a/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux index 9e6383ce4..1e1e4c53a 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/runtime.jvm.lux @@ -55,7 +55,7 @@ (p.either (p.seq s.local-symbol (p/wrap (list))) (s.form (p.seq s.local-symbol (p.some s.local-symbol))))) -(syntax: (runtime: [[name args] declaration] +(syntax: (runtime: {[name args] declaration} definition) (let [implementation (code.local-symbol (format "@@" name)) runtime (code.text (format "__" prefix "__" (lang.normalize-name name))) @@ -378,7 +378,7 @@ (def: #export artifact Text (format prefix ".rb")) (def: #export translate - (Meta (Process Unit)) + (Meta (Process Top)) (do macro.Monad<Meta> [_ //.init-module-buffer _ (//.save runtime)] 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 5f2cdef06..972a6428e 100644 --- a/new-luxc/source/luxc/lang/translation/ruby/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/ruby/statement.jvm.lux @@ -11,7 +11,7 @@ [".T" eval])) (def: #export (translate-def name expressionT expressionO metaV) - (-> Text Type Expression Code (Meta Unit)) + (-> Text Type Expression Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module name]]] diff --git a/new-luxc/source/luxc/lang/translation/scheme.lux b/new-luxc/source/luxc/lang/translation/scheme.lux index c32890a84..451d5f8e2 100644 --- a/new-luxc/source/luxc/lang/translation/scheme.lux +++ b/new-luxc/source/luxc/lang/translation/scheme.lux @@ -55,7 +55,7 @@ (type: #export Host {#context [Text Nat] #anchor (Maybe Anchor) - #loader (-> Expression (Error Unit)) + #loader (-> Expression (Error Top)) #interpreter (-> Expression (Error Object)) #module-buffer (Maybe StringBuilder) #program-buffer StringBuilder}) @@ -82,12 +82,12 @@ (def: #export r-module-name Text (format "module" file-extension)) (def: #export init-module-buffer - (Meta Unit) + (Meta Top) (function (_ compiler) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #module-buffer (#.Some (StringBuilder::new []))) - (:! Void)) + (:! Bottom)) compiler) []]))) @@ -98,13 +98,13 @@ [old-name old-sub] (get@ #context old) new-name (format old-name "f___" (%i (nat-to-int old-sub)))] (case (expr (set@ #.host - (:! Void (set@ #context [new-name +0] old)) + (:! Bottom (set@ #context [new-name +0] old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #context [old-name (n/inc old-sub)]) - (:! Void)) + (:! Bottom)) compiler') [new-name output]]) @@ -126,13 +126,13 @@ (function (_ compiler) (let [old (:! Host (get@ #.host compiler))] (case (expr (set@ #.host - (:! Void (set@ #anchor (#.Some anchor) old)) + (:! Bottom (set@ #anchor (#.Some anchor) old)) compiler)) (#e.Success [compiler' output]) (#e.Success [(update@ #.host (|>> (:! Host) (set@ #anchor (get@ #anchor old)) - (:! Void)) + (:! Bottom)) compiler') output]) @@ -176,7 +176,7 @@ (#e.Success output) (#e.Success [compiler output])))))] - [load! #loader Unit] + [load! #loader Top] [interpret #interpreter Object] ) @@ -189,7 +189,7 @@ (lang.normalize-name (format module "$" name))) (def: #export (save code) - (-> Expression (Meta Unit)) + (-> Expression (Meta Top)) (do macro.Monad<Meta> [module-buffer module-buffer #let [_ (Appendable::append [(:! CharSequence (scheme.expression code))] @@ -199,7 +199,7 @@ (def: #export run interpret) (def: #export (save-module! target) - (-> File (Meta (Process Unit))) + (-> File (Meta (Process Top))) (do macro.Monad<Meta> [module macro.current-module-name module-buffer module-buffer diff --git a/new-luxc/source/luxc/lang/translation/scheme/case.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/case.jvm.lux index 0d67848c7..91ad5140d 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/case.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/case.jvm.lux @@ -6,7 +6,7 @@ [text] text/format (coll [list "list/" Functor<List> Fold<List>] - [set #+ Set])) + (set ["set" unordered #+ Set]))) [macro #+ "meta/" Monad<Meta>] (macro [code])) (luxc [lang] diff --git a/new-luxc/source/luxc/lang/translation/scheme/procedure.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/procedure.jvm.lux index 0876e9b19..8247baa0c 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/procedure.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/procedure.jvm.lux @@ -4,7 +4,7 @@ ["ex" exception #+ exception:]) (data [maybe] text/format - (coll [dict]))) + (coll (dictionary ["dict" unordered #+ Dict])))) (luxc ["&" lang] (lang ["ls" synthesis] (host ["_" scheme #+ Expression]))) diff --git a/new-luxc/source/luxc/lang/translation/scheme/procedure/common.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/procedure/common.jvm.lux index f6a468f76..5d8e2ac66 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/procedure/common.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/procedure/common.jvm.lux @@ -8,7 +8,7 @@ text/format [number #+ hex] (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro #+ with-gensyms] (macro [code] ["s" syntax #+ syntax:]) @@ -33,7 +33,7 @@ (type: #export Bundle (Dict Text Proc)) -(syntax: (Vector [size s.nat] elemT) +(syntax: (Vector {size s.nat} elemT) (wrap (list (` [(~+ (list.repeat size elemT))])))) (type: #export Nullary (-> (Vector +0 Expression) Expression)) @@ -61,7 +61,7 @@ "Expected: " (|> expected nat-to-int %i) "\n" " Actual: " (|> actual nat-to-int %i))) -(syntax: (arity: [name s.local-symbol] [arity s.nat]) +(syntax: (arity: {name s.local-symbol} {arity s.nat}) (with-gensyms [g!_ g!proc g!name g!translate g!inputs] (do @ [g!input+ (monad.seq @ (list.repeat arity (macro.gensym "input")))] diff --git a/new-luxc/source/luxc/lang/translation/scheme/procedure/host.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/procedure/host.jvm.lux index c1b43da2f..af82491b6 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/procedure/host.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/procedure/host.jvm.lux @@ -4,7 +4,7 @@ (data [text] text/format (coll [list "list/" Functor<List>] - [dict #+ Dict])) + (dictionary ["dict" unordered #+ Dict]))) [macro "macro/" Monad<Meta>]) (luxc ["&" lang] (lang ["la" analysis] diff --git a/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux b/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux index 585c80c86..816f92389 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/runtime.jvm.lux @@ -58,7 +58,7 @@ (p.either (p.seq s.local-symbol (p/wrap (list))) (s.form (p.seq s.local-symbol (p.some s.local-symbol))))) -(syntax: (runtime: [[name args] declaration] +(syntax: (runtime: {[name args] declaration} definition) (let [implementation (code.local-symbol (format "@@" name)) runtime (format prefix "__" (lang.normalize-name name)) @@ -107,7 +107,7 @@ (_.cdr (@@ list))))) _.nil)) -(syntax: #export (with-vars [vars (s.tuple (p.many s.local-symbol))] +(syntax: #export (with-vars {vars (s.tuple (p.many s.local-symbol))} body) (wrap (list (` (let [(~+ (|> vars (list/map (function (_ var) @@ -418,7 +418,7 @@ (def: #export artifact Text (format prefix //.file-extension)) (def: #export translate - (Meta (Process Unit)) + (Meta (Process Top)) (do macro.Monad<Meta> [_ //.init-module-buffer _ (//.save runtime)] 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 c9611cd2b..6fdb4073a 100644 --- a/new-luxc/source/luxc/lang/translation/scheme/statement.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/scheme/statement.jvm.lux @@ -11,7 +11,7 @@ [".T" eval])) (def: #export (translate-def name expressionT expressionO metaV) - (-> Text Type Expression Code (Meta Unit)) + (-> Text Type Expression Code (Meta Top)) (do macro.Monad<Meta> [current-module macro.current-module-name #let [def-ident [current-module name]]] |