From 2e5852abb1ac0ae5abdd8709238aca447f62520e Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sat, 7 Nov 2020 00:29:40 -0400 Subject: Pure-Lux implementation for biggest and smallest Frac values. --- .../source/lux/data/collection/queue/priority.lux | 183 +++++++++++---------- stdlib/source/lux/data/collection/tree/finger.lux | 129 +++++++++------ stdlib/source/lux/data/number/frac.lux | 29 +++- stdlib/source/lux/data/text/unicode.lux | 42 +++-- stdlib/source/lux/extension.lux | 14 +- stdlib/source/lux/locale.lux | 6 +- stdlib/source/lux/macro/code.lux | 48 +++--- stdlib/source/lux/macro/poly.lux | 14 +- stdlib/source/lux/macro/syntax.lux | 14 +- stdlib/source/lux/macro/syntax/common/reader.lux | 14 +- stdlib/source/lux/macro/syntax/common/writer.lux | 10 +- stdlib/source/lux/macro/template.lux | 32 ++-- stdlib/source/lux/math/logic/continuous.lux | 6 +- stdlib/source/lux/math/modular.lux | 18 +- stdlib/source/lux/math/random.lux | 50 +++--- stdlib/source/lux/meta.lux | 92 +++++------ stdlib/source/lux/target/common-lisp.lux | 38 ++--- stdlib/source/lux/target/js.lux | 34 ++-- stdlib/source/lux/target/jvm/attribute.lux | 2 +- stdlib/source/lux/target/jvm/attribute/code.lux | 10 +- stdlib/source/lux/target/jvm/bytecode.lux | 16 +- .../lux/target/jvm/bytecode/environment/limit.lux | 4 +- .../jvm/bytecode/environment/limit/registry.lux | 18 +- stdlib/source/lux/target/jvm/class.lux | 4 +- stdlib/source/lux/target/jvm/constant.lux | 6 +- stdlib/source/lux/target/jvm/constant/pool.lux | 12 +- stdlib/source/lux/target/jvm/constant/tag.lux | 6 +- stdlib/source/lux/target/jvm/field.lux | 4 +- stdlib/source/lux/target/jvm/method.lux | 6 +- stdlib/source/lux/target/jvm/modifier.lux | 4 +- stdlib/source/lux/target/jvm/reflection.lux | 28 ++-- stdlib/source/lux/target/jvm/type.lux | 12 +- stdlib/source/lux/target/jvm/type/alias.lux | 2 +- stdlib/source/lux/target/jvm/type/descriptor.lux | 8 +- stdlib/source/lux/target/jvm/type/lux.lux | 56 +++---- stdlib/source/lux/target/jvm/type/parser.lux | 10 +- stdlib/source/lux/target/jvm/type/reflection.lux | 4 +- stdlib/source/lux/target/jvm/type/signature.lux | 16 +- stdlib/source/lux/target/lua.lux | 24 +-- stdlib/source/lux/target/php.lux | 28 ++-- stdlib/source/lux/target/python.lux | 32 ++-- stdlib/source/lux/target/ruby.lux | 32 ++-- stdlib/source/lux/target/scheme.lux | 22 +-- stdlib/source/lux/test.lux | 74 ++++----- stdlib/source/lux/tool/compiler/default/init.lux | 16 +- .../source/lux/tool/compiler/default/platform.lux | 58 +++---- .../language/lux/phase/extension/analysis/lux.lux | 3 - .../lux/phase/extension/generation/js/common.lux | 35 ---- .../lux/phase/extension/generation/jvm/common.lux | 20 --- .../lux/phase/extension/generation/lua/common.lux | 18 -- .../phase/extension/generation/python/common.lux | 18 -- .../lux/phase/extension/generation/ruby/common.lux | 18 -- .../generation/common-lisp/extension/common.lux | 18 -- .../lux/phase/generation/php/extension/common.lux | 18 -- .../phase/generation/scheme/extension/common.lux | 18 -- stdlib/source/poly/lux/abstract/equivalence.lux | 34 ++-- stdlib/source/poly/lux/data/format/json.lux | 74 ++++----- stdlib/source/program/aedifex.lux | 36 +++- stdlib/source/program/aedifex/cli.lux | 11 +- stdlib/source/program/aedifex/command/deploy.lux | 72 +++----- stdlib/source/program/aedifex/dependency.lux | 22 +-- stdlib/source/program/aedifex/repository.lux | 76 ++++++++- stdlib/source/program/aedifex/upload.lux | 95 ----------- stdlib/source/spec/lux/abstract/apply.lux | 20 +-- stdlib/source/spec/lux/abstract/codec.lux | 6 +- stdlib/source/spec/lux/abstract/comonad.lux | 20 +-- stdlib/source/spec/lux/abstract/enum.lux | 18 +- stdlib/source/spec/lux/abstract/equivalence.lux | 10 +- stdlib/source/spec/lux/abstract/fold.lux | 4 +- stdlib/source/spec/lux/abstract/functor.lux | 14 +- .../spec/lux/abstract/functor/contravariant.lux | 4 +- stdlib/source/spec/lux/abstract/interval.lux | 6 +- stdlib/source/spec/lux/abstract/monad.lux | 20 +-- stdlib/source/spec/lux/abstract/monoid.lux | 14 +- stdlib/source/spec/lux/abstract/order.lux | 48 +++--- stdlib/source/spec/lux/world/shell.lux | 4 +- stdlib/source/test/aedifex.lux | 4 +- stdlib/source/test/aedifex/cli.lux | 2 +- stdlib/source/test/aedifex/command/deploy.lux | 129 +++++++++++++++ stdlib/source/test/aedifex/repository.lux | 6 +- stdlib/source/test/lux/data/collection.lux | 2 + .../test/lux/data/collection/tree/finger.lux | 133 +++++++++++++++ 82 files changed, 1226 insertions(+), 1111 deletions(-) delete mode 100644 stdlib/source/program/aedifex/upload.lux create mode 100644 stdlib/source/test/aedifex/command/deploy.lux create mode 100644 stdlib/source/test/lux/data/collection/tree/finger.lux (limited to 'stdlib') diff --git a/stdlib/source/lux/data/collection/queue/priority.lux b/stdlib/source/lux/data/collection/queue/priority.lux index 555c7b8d3..36f827f86 100644 --- a/stdlib/source/lux/data/collection/queue/priority.lux +++ b/stdlib/source/lux/data/collection/queue/priority.lux @@ -8,104 +8,111 @@ [number ["n" nat ("#@." interval)]] [collection - [tree - ["." finger (#+ Tree)]]]]]) + ["." tree #_ + ["#" finger (#+ Tree)]]]] + [type (#+ :by-example) + [abstract (#+ abstract: :abstraction :representation)]]]) -(type: #export Priority Nat) - -(type: #export (Queue a) - (Maybe (Tree Priority a))) +(type: #export Priority + Nat) (def: #export max Priority n@top) (def: #export min Priority n@bottom) -(def: #export empty - Queue - #.None) +(def: builder + (tree.builder n.maximum)) -(def: #export (peek queue) - (All [a] (-> (Queue a) (Maybe a))) - (do maybe.monad - [fingers queue] - (wrap (maybe.assume (finger.search (n.= (finger.tag fingers)) fingers))))) +(def: :@: + (:by-example [@] + {(tree.Builder @ Priority) + ..builder} + @)) -(def: #export (size queue) - (All [a] (-> (Queue a) Nat)) - (case queue - #.None - 0 +(abstract: #export (Queue a) + (Maybe (Tree :@: Priority a)) - (#.Some fingers) - (loop [node (get@ #finger.node fingers)] - (case node - (#finger.Leaf _ _) - 1 + (def: #export empty + Queue + (:abstraction #.None)) - (#finger.Branch _ left right) - (n.+ (recur left) (recur right)))))) + (def: #export (peek queue) + (All [a] (-> (Queue a) (Maybe a))) + (do maybe.monad + [tree (:representation queue)] + (tree.search (n.= (tree.tag tree)) + tree))) -(def: #export empty? - (All [a] (-> (Queue a) Bit)) - (|>> ..size (n.= 0))) + (def: #export (size queue) + (All [a] (-> (Queue a) Nat)) + (case (:representation queue) + #.None + 0 -(def: #export (member? equivalence queue member) - (All [a] (-> (Equivalence a) (Queue a) a Bit)) - (case queue - #.None - #0 - - (#.Some fingers) - (loop [node (get@ #finger.node fingers)] - (case node - (#finger.Leaf _ reference) - (:: equivalence = reference member) - - (#finger.Branch _ left right) - (or (recur left) - (recur right)))))) - -(def: #export (pop queue) - (All [a] (-> (Queue a) (Queue a))) - (do maybe.monad - [fingers queue - #let [highest-priority (finger.tag fingers)] - node' (loop [node (get@ #finger.node fingers)] - (case node - (#finger.Leaf priority reference) - (if (n.= highest-priority priority) - #.None - (#.Some node)) - - (#finger.Branch priority left right) - (if (n.= highest-priority (finger.tag (set@ #finger.node left fingers))) - (case (recur left) - #.None - (#.Some right) - - (#.Some =left) - (|> (finger.branch (set@ #finger.node =left fingers) - (set@ #finger.node right fingers)) - (get@ #finger.node) - #.Some)) - (case (recur right) - #.None - (#.Some left) - - (#.Some =right) - (|> (finger.branch (set@ #finger.node left fingers) - (set@ #finger.node =right fingers)) - (get@ #finger.node) - #.Some)) - )))] - (wrap (set@ #finger.node node' fingers)))) - -(def: #export (push priority value queue) - (All [a] (-> Priority a (Queue a) (Queue a))) - (let [addition {#finger.monoid n.maximum - #finger.node (#finger.Leaf priority value)}] - (case queue + (#.Some tree) + (loop [node tree] + (case (tree.root node) + (0 #0 _) + 1 + + (0 #1 [left right]) + (n.+ (recur left) (recur right)))))) + + (def: #export (member? equivalence queue member) + (All [a] (-> (Equivalence a) (Queue a) a Bit)) + (case (:representation queue) #.None - (#.Some addition) + false + + (#.Some tree) + (loop [node tree] + (case (tree.root node) + (0 #0 reference) + (:: equivalence = reference member) + + (0 #1 [left right]) + (or (recur left) + (recur right)))))) + + (def: #export (pop queue) + (All [a] (-> (Queue a) (Queue a))) + (:abstraction + (do maybe.monad + [tree (:representation queue) + #let [highest-priority (tree.tag tree)]] + (loop [node tree] + (case (tree.root node) + (0 #0 reference) + (if (n.= highest-priority (tree.tag node)) + #.None + (#.Some node)) + + (0 #1 left right) + (if (n.= highest-priority (tree.tag left)) + (case (recur left) + #.None + (#.Some right) + + (#.Some =left) + (#.Some (:: ..builder branch =left right))) + (case (recur right) + #.None + (#.Some left) + + (#.Some =right) + (#.Some (:: ..builder branch left =right))))))))) + + (def: #export (push priority value queue) + (All [a] (-> Priority a (Queue a) (Queue a))) + (let [addition (:: ..builder leaf priority value)] + (:abstraction + (case (:representation queue) + #.None + (#.Some addition) + + (#.Some tree) + (#.Some (:: ..builder branch tree addition)))))) + ) - (#.Some fingers) - (#.Some (finger.branch fingers addition))))) +(def: #export empty? + (All [a] (-> (Queue a) Bit)) + (|>> ..size (n.= 0))) diff --git a/stdlib/source/lux/data/collection/tree/finger.lux b/stdlib/source/lux/data/collection/tree/finger.lux index 3a6e52948..e120b068a 100644 --- a/stdlib/source/lux/data/collection/tree/finger.lux +++ b/stdlib/source/lux/data/collection/tree/finger.lux @@ -2,62 +2,83 @@ [lux #* [abstract [predicate (#+ Predicate)] - ["." monoid (#+ Monoid)]]]) - -(type: #export (Node m a) - (#Leaf m a) - (#Branch m (Node m a) (Node m a))) - -(type: #export (Tree m a) - {#monoid (Monoid m) - #node (Node m a)}) - -(def: #export (tag tree) - (All [m a] (-> (Tree m a) m)) - (case (get@ #node tree) - (^or (#Leaf tag _) - (#Branch tag _ _)) - tag)) - -(def: #export (value tree) - (All [m a] (-> (Tree m a) a)) - (case (get@ #node tree) - (#Leaf tag value) - value - - (#Branch tag left right) - (value (set@ #node left tree)))) - -(def: #export (branch left right) - (All [m a] (-> (Tree m a) (Tree m a) (Tree m a))) - (let [Monoid (get@ #monoid right)] - {#monoid Monoid - #node (#Branch (:: Monoid compose (tag left) (tag right)) - (get@ #node left) - (get@ #node right))})) - -(def: #export (search pred tree) - (All [m a] (-> (-> m Bit) (Tree m a) (Maybe a))) - (let [tag@compose (get@ [#monoid #monoid.compose] tree)] - (if (pred (tag tree)) - (loop [_tag (get@ [#monoid #monoid.identity] tree) - _node (get@ #node tree)] - (case _node - (#Leaf _ value) - (#.Some value) - - (#Branch _ left right) - (let [shifted-tag (tag@compose _tag (tag (set@ #node left tree)))] - (if (pred shifted-tag) - (recur _tag left) - (recur shifted-tag right))))) - #.None))) + ["." monoid (#+ Monoid)]] + [type (#+ :by-example) + [abstract (#+ abstract: :abstraction :representation)]]]) + +(abstract: #export (Tree @ t v) + {#monoid (Monoid t) + #tag t + #root (| v + [(Tree @ t v) (Tree @ t v)])} + + (signature: #export (Builder @ t) + (: (All [v] + (-> t v (Tree @ t v))) + leaf) + (: (All [v] + (-> (Tree @ t v) + (Tree @ t v) + (Tree @ t v))) + branch)) + + (template [ ] + [(def: #export + (All [@ t v] (-> (Tree @ t v) )) + (|>> :representation (get@ )))] + + [tag #tag t] + [root #root (Either v [(Tree @ t v) (Tree @ t v)])] + ) + + (structure: #export (builder monoid) + (All [t] (Ex [@] (-> (Monoid t) (Builder @ t)))) + + (def: (leaf tag value) + (:abstraction + {#monoid monoid + #tag tag + #root (0 #0 value)})) + + (def: (branch left right) + (:abstraction + {#monoid monoid + #tag (:: monoid compose (..tag left) (..tag right)) + #root (0 #1 [left right])}))) + + (def: #export (value tree) + (All [@ t v] (-> (Tree @ t v) v)) + (case (get@ #root (:representation tree)) + (0 #0 value) + value + + (0 #1 [left right]) + (value left))) + + (def: #export (search predicate tree) + (All [@ t v] (-> (Predicate t) (Tree @ t v) (Maybe v))) + (let [[monoid tag root] (:representation tree)] + (if (predicate tag) + (let [(^open "tag//.") monoid] + (loop [_tag tag//identity + _node root] + (case _node + (0 #0 value) + (#.Some value) + + (0 #1 [left right]) + (let [shifted-tag (tag//compose _tag (..tag left))] + (if (predicate shifted-tag) + (recur _tag (get@ #root (:representation left))) + (recur shifted-tag (get@ #root (:representation right)))))))) + #.None))) + ) (def: #export (found? predicate tree) - (All [m a] (-> (Predicate m) (Tree m a) Bit)) - (case (search predicate tree) + (All [@ t v] (-> (Predicate t) (Tree @ t v) Bit)) + (case (..search predicate tree) (#.Some _) - #1 + true #.None - #0)) + false)) diff --git a/stdlib/source/lux/data/number/frac.lux b/stdlib/source/lux/data/number/frac.lux index 633872f9c..099d01d39 100644 --- a/stdlib/source/lux/data/number/frac.lux +++ b/stdlib/source/lux/data/number/frac.lux @@ -135,6 +135,18 @@ (def: &equivalence ..equivalence) (def: < ..<)) +(def: #export smallest + Frac + (math.pow -1074.0 +2.0)) + +(def: #export biggest + Frac + (let [f2^-52 (math.pow -52.0 +2.0) + f2^+1023 (math.pow +1023.0 +2.0)] + (|> +2.0 + (..- f2^-52) + (..* f2^+1023)))) + (template [ ] [(structure: #export (Monoid Frac) @@ -144,8 +156,8 @@ [addition ..+ +0.0] [multiplication ..* +1.0] - [maximum ..max ("lux f64 min")] - [minimum ..min ("lux f64 max")] + [maximum ..max (..* -1.0 ..biggest)] + [minimum ..min ..biggest] ) (template [ ] @@ -390,13 +402,12 @@ (let [sign (..signum value) raw-bin (:: ..binary encode value) dot-idx (maybe.assume ("lux text index" 0 "." raw-bin)) - whole-part ("lux text clip" (if (..= -1.0 sign) 1 0) dot-idx raw-bin) - decimal-part ("lux text clip" (inc dot-idx) ("lux text size" raw-bin) raw-bin) - hex-output (|> ( #0 decimal-part) - ("lux text concat" ".") - ("lux text concat" ( #1 whole-part)) - ("lux text concat" (if (..= -1.0 sign) "-" "")))] - hex-output)) + whole-part ("lux text clip" 1 dot-idx raw-bin) + decimal-part ("lux text clip" (inc dot-idx) ("lux text size" raw-bin) raw-bin)] + (|> ( #0 decimal-part) + ("lux text concat" ".") + ("lux text concat" ( #1 whole-part)) + ("lux text concat" (if (..= -1.0 sign) "-" "+"))))) (def: (decode repr) (let [sign (case ("lux text index" 0 "-" repr) diff --git a/stdlib/source/lux/data/text/unicode.lux b/stdlib/source/lux/data/text/unicode.lux index 234309ddf..e173034a9 100644 --- a/stdlib/source/lux/data/text/unicode.lux +++ b/stdlib/source/lux/data/text/unicode.lux @@ -8,9 +8,9 @@ ["n" nat ("#@." interval)]] [collection ["." list ("#@." fold functor)] - [tree - ["." finger (#+ Tree)]]]] - [type + ["." tree #_ + ["#" finger (#+ Tree)]]]] + [type (#+ :by-example) abstract]] [// (#+ Char)]) @@ -189,20 +189,29 @@ [basic-latin/lower-alpha "0061" "007A"] ) +(def: builder + (tree.builder ..monoid)) + +(def: :@: + (:by-example [@] + {(tree.Builder @ Segment) + ..builder} + @)) + (abstract: #export Set - (Tree Segment []) + (Tree :@: Segment []) (def: #export (compose left right) (-> Set Set Set) (:abstraction - (finger.branch (:representation left) - (:representation right)))) + (:: builder branch + (:representation left) + (:representation right)))) (def: (singleton segment) (-> Segment Set) (:abstraction - {#finger.monoid ..monoid - #finger.node (#finger.Leaf segment [])})) + (:: builder leaf segment []))) (def: #export (set [head tail]) (-> [Segment (List Segment)] Set) @@ -341,21 +350,22 @@ (def: #export (range set) (-> Set [Char Char]) - (let [tag (finger.tag (:representation set))] + (let [tag (tree.tag (:representation set))] [(..start tag) (..end tag)])) (def: #export (member? set character) (-> Set Char Bit) - (let [[_monoid node] (:representation set)] - (loop [node node] - (case node - (#finger.Leaf segment _) - (..within? segment character) + (loop [tree (:representation set)] + (if (..within? (tree.tag tree) character) + (case (tree.root tree) + (0 #0 _) + true - (#finger.Branch _ left right) + (0 #1 left right) (or (recur left) - (recur right)))))) + (recur right))) + false))) ) (template [ ] diff --git a/stdlib/source/lux/extension.lux b/stdlib/source/lux/extension.lux index b880d6e7d..cb9013f11 100644 --- a/stdlib/source/lux/extension.lux +++ b/stdlib/source/lux/extension.lux @@ -3,14 +3,14 @@ [abstract ["." monad]] [control - ["<>" parser ("#@." monad) + ["<>" parser ("#//." monad) ["" code (#+ Parser)] ["" analysis] ["" synthesis]]] [data ["." product] [collection - ["." list ("#@." functor)]]] + ["." list ("#//." functor)]]] [meta (#+ with-gensyms)] [macro ["." code] @@ -27,7 +27,7 @@ (-> Code (Parser Input)) ($_ <>.and .local-identifier - (<>@wrap default))) + (<>//wrap default))) (def: complex (Parser Input) @@ -60,7 +60,7 @@ [(syntax: #export ( {[name extension phase archive inputs] (..declaration (` ))} body) - (let [g!parser (case (list@map product.right inputs) + (let [g!parser (case (list//map product.right inputs) #.Nil (` ) @@ -73,9 +73,9 @@ (wrap (list (` ( (~ name) (.function ((~ g!handler) (~ g!name) (~ g!phase) (~ g!archive) (~ g!inputs)) (.case ((~! ) (~ g!parser) (~ g!inputs)) - (#.Right [(~+ (list@map (|>> product.left - code.local-identifier) - inputs))]) + (#.Right [(~+ (list//map (|>> product.left + code.local-identifier) + inputs))]) (~ body) (#.Left (~ g!error)) diff --git a/stdlib/source/lux/locale.lux b/stdlib/source/lux/locale.lux index b49909be6..9946753b7 100644 --- a/stdlib/source/lux/locale.lux +++ b/stdlib/source/lux/locale.lux @@ -4,7 +4,7 @@ [equivalence (#+ Equivalence)] [hash (#+ Hash)]] [data - ["." maybe ("#@." functor)] + ["." maybe ("#//." functor)] ["." text ["%" format (#+ format)] ["." encoding (#+ Encoding)]]] @@ -24,10 +24,10 @@ (-> Language (Maybe Territory) (Maybe Encoding) Locale) (:abstraction (format (language.code language) (|> territory - (maybe@map (|>> territory.long-code (format ..territory-separator))) + (maybe//map (|>> territory.long-code (format ..territory-separator))) (maybe.default "")) (|> encoding - (maybe@map (|>> encoding.name (format ..encoding-separator))) + (maybe//map (|>> encoding.name (format ..encoding-separator))) (maybe.default ""))))) (def: #export code diff --git a/stdlib/source/lux/macro/code.lux b/stdlib/source/lux/macro/code.lux index 82ccd1f9d..e2d528dad 100644 --- a/stdlib/source/lux/macro/code.lux +++ b/stdlib/source/lux/macro/code.lux @@ -10,9 +10,9 @@ ["." int] ["." rev] ["." frac]] - ["." text ("#@." monoid equivalence)] + ["." text ("#//." monoid equivalence)] [collection - ["." list ("#@." functor fold)]]] + ["." list ("#//." functor fold)]]] [meta ["." location]]]) @@ -106,33 +106,33 @@ (text.encode value) [_ (#.Tag name)] - (text@compose "#" (:: name.codec encode name)) + (text//compose "#" (:: name.codec encode name)) (^template [ ] [_ ( members)] - ($_ text@compose + ($_ text//compose - (list@fold (function (_ next prev) - (let [next (format next)] - (if (text@= "" prev) - next - ($_ text@compose prev " " next)))) - "" - members) + (list//fold (function (_ next prev) + (let [next (format next)] + (if (text//= "" prev) + next + ($_ text//compose prev " " next)))) + "" + members) )) ([#.Form "(" ")"] [#.Tuple "[" "]"]) [_ (#.Record pairs)] - ($_ text@compose + ($_ text//compose "{" - (list@fold (function (_ [left right] prev) - (let [next ($_ text@compose (format left) " " (format right))] - (if (text@= "" prev) - next - ($_ text@compose prev " " next)))) - "" - pairs) + (list//fold (function (_ [left right] prev) + (let [next ($_ text//compose (format left) " " (format right))] + (if (text//= "" prev) + next + ($_ text//compose prev " " next)))) + "" + pairs) "}") )) @@ -144,15 +144,15 @@ (case ast (^template [] [location ( parts)] - [location ( (list@map (replace original substitute) parts))]) + [location ( (list//map (replace original substitute) parts))]) ([#.Form] [#.Tuple]) [location (#.Record parts)] - [location (#.Record (list@map (function (_ [left right]) - [(replace original substitute left) - (replace original substitute right)]) - parts))] + [location (#.Record (list//map (function (_ [left right]) + [(replace original substitute left) + (replace original substitute right)]) + parts))] _ ast))) diff --git a/stdlib/source/lux/macro/poly.lux b/stdlib/source/lux/macro/poly.lux index 31f56f16b..328e74ef1 100644 --- a/stdlib/source/lux/macro/poly.lux +++ b/stdlib/source/lux/macro/poly.lux @@ -13,7 +13,7 @@ [number ["n" nat]] [collection - ["." list ("#@." fold functor)] + ["." list ("#//." fold functor)] ["." dictionary]]] ["." meta (#+ with-gensyms)] [macro @@ -50,7 +50,7 @@ (def: (derivation-name poly args) (-> Text (List Text) (Maybe Text)) (if (common-poly-name? poly) - (#.Some (list@fold (text.replace-once "?") poly args)) + (#.Some (list//fold (text.replace-once "?") poly args)) #.None)) (syntax: #export (derived: {export csr.export} @@ -64,7 +64,7 @@ (wrap name) (^multi #.None - [(derivation-name (product.right poly-func) (list@map product.right poly-args)) + [(derivation-name (product.right poly-func) (list//map product.right poly-args)) (#.Some derived-name)]) (wrap derived-name) @@ -75,7 +75,7 @@ custom-impl #.None - (` ((~ (code.identifier poly-func)) (~+ (list@map code.identifier poly-args)))))]] + (` ((~ (code.identifier poly-func)) (~+ (list//map code.identifier poly-args)))))]] (wrap (.list (` (def: (~+ (csw.export export)) (~ (code.identifier ["" name])) {#.struct? #1} @@ -86,7 +86,7 @@ (case type (#.Primitive name params) (` (#.Primitive (~ (code.text name)) - (list (~+ (list@map (to-code env) params))))) + (list (~+ (list//map (to-code env) params))))) (^template [] ( idx) @@ -113,7 +113,7 @@ (^template [ ] ( left right) - (` ( (~+ (list@map (to-code env) ( type)))))) + (` ( (~+ (list//map (to-code env) ( type)))))) ([| #.Sum type.flatten-variant] [& #.Product type.flatten-tuple]) @@ -122,7 +122,7 @@ (^template [] ( scope body) - (` ( (list (~+ (list@map (to-code env) scope))) + (` ( (list (~+ (list//map (to-code env) scope))) (~ (to-code env body))))) ([#.UnivQ] [#.ExQ]) )) diff --git a/stdlib/source/lux/macro/syntax.lux b/stdlib/source/lux/macro/syntax.lux index 6488be2be..78ae223d2 100644 --- a/stdlib/source/lux/macro/syntax.lux +++ b/stdlib/source/lux/macro/syntax.lux @@ -8,14 +8,14 @@ ["" code (#+ Parser)]]] [data ["." maybe] - ["." text ("#@." monoid)] + ["." text ("#//." monoid)] [number ["." nat] ["." int] ["." rev] ["." frac]] [collection - ["." list ("#@." functor)]]] + ["." list ("#//." functor)]]] ["." meta (#+ with-gensyms)]] [// ["." code]]) @@ -28,7 +28,7 @@ (#try.Success [tokens output]) (#try.Failure error) - (#try.Failure ($_ text@compose + (#try.Failure ($_ text//compose "Failed to parse: " (code.format binding) text.new-line error))))) @@ -49,11 +49,11 @@ {interfaces (tuple (some (super-class-decl^ imports class-vars)))} {constructor-args (constructor-args^ imports class-vars)} {methods (some (overriden-method-def^ imports))}) - (let [def-code ($_ text@compose "anon-class:" + (let [def-code ($_ text//compose "anon-class:" (spaced (list (super-class-decl$ (maybe.default object-super-class super)) - (with-brackets (spaced (list@map super-class-decl$ interfaces))) - (with-brackets (spaced (list@map constructor-arg$ constructor-args))) - (with-brackets (spaced (list@map (method-def$ id) methods))))))] + (with-brackets (spaced (list//map super-class-decl$ interfaces))) + (with-brackets (spaced (list//map constructor-arg$ constructor-args))) + (with-brackets (spaced (list//map (method-def$ id) methods))))))] (wrap (list (` ((~ (code.text def-code)))))))))} (let [[exported? tokens] (: [Bit (List Code)] (case tokens diff --git a/stdlib/source/lux/macro/syntax/common/reader.lux b/stdlib/source/lux/macro/syntax/common/reader.lux index 4d0e6b97e..776674926 100644 --- a/stdlib/source/lux/macro/syntax/common/reader.lux +++ b/stdlib/source/lux/macro/syntax/common/reader.lux @@ -3,10 +3,10 @@ [abstract monad] [control - ["p" parser ("#@." monad) + ["p" parser ("#//." monad) ["s" code (#+ Parser)]]] [data - ["." name ("#@." equivalence)] + ["." name ("#//." equivalence)] ["." product] ["." maybe] [collection @@ -18,8 +18,8 @@ (def: #export export (Parser Bit) - (p.either (p.after (s.tag! (name-of #export)) (p@wrap #1)) - (p@wrap #0))) + (p.either (p.after (s.tag! (name-of #export)) (p//wrap #1)) + (p//wrap #0))) (def: #export declaration {#.doc (doc "A reader for declaration syntax." @@ -28,7 +28,7 @@ (foo bar baz))} (Parser //.Declaration) (p.either (p.and s.local-identifier - (p@wrap (list))) + (p//wrap (list))) (s.form (p.and s.local-identifier (p.some s.local-identifier))))) @@ -44,7 +44,7 @@ type s.any value s.any] (wrap [(#.Some type) value]))) - (p.and (p@wrap #.None) + (p.and (p//wrap #.None) s.any))) (def: _definition-anns-tag^ @@ -90,7 +90,7 @@ (-> (List [Name Code]) (List Text)) (<| (maybe.default (list)) (: (Maybe (List Text))) - (case (list.find (|>> product.left (name@= ["lux" "func-args"])) meta-data) + (case (list.find (|>> product.left (name//= ["lux" "func-args"])) meta-data) (^multi (#.Some [_ value]) [(p.run tuple-meta^ (list value)) (#.Right [_ args])] diff --git a/stdlib/source/lux/macro/syntax/common/writer.lux b/stdlib/source/lux/macro/syntax/common/writer.lux index a067f0c10..e2e10f319 100644 --- a/stdlib/source/lux/macro/syntax/common/writer.lux +++ b/stdlib/source/lux/macro/syntax/common/writer.lux @@ -5,7 +5,7 @@ ["." function]] [data [collection - ["." list ("#@." functor)]] + ["." list ("#//." functor)]] ["." product]] [macro ["." code]]] @@ -20,12 +20,12 @@ (def: #export (declaration declaration) (-> //.Declaration Code) (` ((~ (code.local-identifier (get@ #//.declaration-name declaration))) - (~+ (list@map code.local-identifier - (get@ #//.declaration-args declaration)))))) + (~+ (list//map code.local-identifier + (get@ #//.declaration-args declaration)))))) (def: #export annotations (-> //.Annotations Code) - (|>> (list@map (product.both code.tag function.identity)) + (|>> (list//map (product.both code.tag function.identity)) code.record)) (def: #export (typed-input value) @@ -35,4 +35,4 @@ (def: #export type-variables (-> (List //.Type-Var) (List Code)) - (list@map code.local-identifier)) + (list//map code.local-identifier)) diff --git a/stdlib/source/lux/macro/template.lux b/stdlib/source/lux/macro/template.lux index ed6d3a66b..c54f11d8c 100644 --- a/stdlib/source/lux/macro/template.lux +++ b/stdlib/source/lux/macro/template.lux @@ -3,18 +3,18 @@ [abstract ["." monad (#+ do)]] [control - ["<>" parser ("#@." functor) + ["<>" parser ("#//." functor) ["<.>" code (#+ Parser)]]] [data - ["." bit ("#@." codec)] + ["." bit ("#//." codec)] ["." text] [number - ["." nat ("#@." decimal)] - ["." int ("#@." decimal)] - ["." rev ("#@." decimal)] - ["." frac ("#@." decimal)]] + ["." nat ("#//." decimal)] + ["." int ("#//." decimal)] + ["." rev ("#//." decimal)] + ["." frac ("#//." decimal)]] [collection - ["." list ("#@." monad)]]] + ["." list ("#//." monad)]]] ["." meta]] [// [syntax (#+ syntax:)] @@ -30,12 +30,12 @@ body) (do {! meta.monad} [g!locals (|> locals - (list@map meta.gensym) + (list//map meta.gensym) (monad.seq !))] (wrap (list (` (.with-expansions [(~+ (|> (list.zip/2 locals g!locals) - (list@map (function (_ [name identifier]) - (list (code.local-identifier name) (as-is identifier)))) - list@join))] + (list//map (function (_ [name identifier]) + (list (code.local-identifier name) (as-is identifier)))) + list//join))] (~ body))))))) (def: (name-side module-side? parser) @@ -62,11 +62,11 @@ full-tag (<>.either .local-tag full-tag)) - (<>@map bit@encode .bit) - (<>@map nat@encode .nat) - (<>@map int@encode .int) - (<>@map rev@encode .rev) - (<>@map frac@encode .frac) + (<>//map bit//encode .bit) + (<>//map nat//encode .nat) + (<>//map int//encode .int) + (<>//map rev//encode .rev) + (<>//map frac//encode .frac) ))) (def: (part module-side?) diff --git a/stdlib/source/lux/math/logic/continuous.lux b/stdlib/source/lux/math/logic/continuous.lux index b959593ea..3ec4103e1 100644 --- a/stdlib/source/lux/math/logic/continuous.lux +++ b/stdlib/source/lux/math/logic/continuous.lux @@ -2,10 +2,10 @@ [lux (#- false true or and not) [data [number - ["r" rev ("#@." interval)]]]]) + ["r" rev ("#//." interval)]]]]) -(def: #export true Rev r@top) -(def: #export false Rev r@bottom) +(def: #export true Rev r//top) +(def: #export false Rev r//bottom) (template [ ] [(def: #export diff --git a/stdlib/source/lux/math/modular.lux b/stdlib/source/lux/math/modular.lux index c00fceb0c..e93569638 100644 --- a/stdlib/source/lux/math/modular.lux +++ b/stdlib/source/lux/math/modular.lux @@ -11,8 +11,8 @@ ["s" code]]] [data [number - ["i" int ("#@." decimal)]] - ["." text ("#@." monoid)]] + ["i" int ("#//." decimal)]] + ["." text ("#//." monoid)]] [type abstract] [macro @@ -40,13 +40,13 @@ (exception: #export [m] (incorrect-modulus {modulus (Modulus m)} {parsed Int}) - (ex.report ["Expected" (i@encode (to-int modulus))] - ["Actual" (i@encode parsed)])) + (ex.report ["Expected" (i//encode (to-int modulus))] + ["Actual" (i//encode parsed)])) (exception: #export [rm sm] (cannot-equalize-moduli {reference (Modulus rm)} {sample (Modulus sm)}) - (ex.report ["Reference" (i@encode (to-int reference))] - ["Sample" (i@encode (to-int sample))])) + (ex.report ["Reference" (i//encode (to-int reference))] + ["Sample" (i//encode (to-int sample))])) (def: #export (congruent? modulus reference sample) (All [m] (-> (Modulus m) Int Int Bit)) @@ -91,10 +91,10 @@ (def: (encode modular) (let [[remainder modulus] (:representation modular)] - ($_ text@compose - (i@encode remainder) + ($_ text//compose + (i//encode remainder) separator - (i@encode (to-int modulus))))) + (i//encode (to-int modulus))))) (def: decode (l.run (do p.monad diff --git a/stdlib/source/lux/math/random.lux b/stdlib/source/lux/math/random.lux index 8f2ef6006..e1a51bcaf 100644 --- a/stdlib/source/lux/math/random.lux +++ b/stdlib/source/lux/math/random.lux @@ -15,10 +15,10 @@ ["r" ratio] ["c" complex] ["f" frac]] - ["." text (#+ Char) ("#@." monoid) + ["." text (#+ Char) ("#//." monoid) ["." unicode]] [collection - ["." list ("#@." fold)] + ["." list ("#//." fold)] ["." array (#+ Array)] ["." dictionary (#+ Dictionary)] ["." queue (#+ Queue)] @@ -166,7 +166,7 @@ (do ..monad [x char-gen xs (text char-gen (dec size))] - (wrap (text@compose (text.from-code x) xs))))) + (wrap (text//compose (text.from-code x) xs))))) (template [ ] [(def: #export @@ -263,7 +263,7 @@ [array Array array.from-list] [queue Queue queue.from-list] - [stack Stack (list@fold stack.push stack.empty)] + [stack Stack (list//fold stack.push stack.empty)] ) (def: #export (set Hash size value-gen) @@ -309,30 +309,30 @@ (def: #export month (Random Month) - (let [(^open "/@.") ..monad] - (..either (..either (..either (/@wrap #month.January) - (..either (/@wrap #month.February) - (/@wrap #month.March))) - (..either (/@wrap #month.April) - (..either (/@wrap #month.May) - (/@wrap #month.June)))) - (..either (..either (/@wrap #month.July) - (..either (/@wrap #month.August) - (/@wrap #month.September))) - (..either (/@wrap #month.October) - (..either (/@wrap #month.November) - (/@wrap #month.December))))))) + (let [(^open "//.") ..monad] + (..either (..either (..either (//wrap #month.January) + (..either (//wrap #month.February) + (//wrap #month.March))) + (..either (//wrap #month.April) + (..either (//wrap #month.May) + (//wrap #month.June)))) + (..either (..either (//wrap #month.July) + (..either (//wrap #month.August) + (//wrap #month.September))) + (..either (//wrap #month.October) + (..either (//wrap #month.November) + (//wrap #month.December))))))) (def: #export day (Random Day) - (let [(^open "/@.") ..monad] - (..either (..either (/@wrap #day.Sunday) - (..either (/@wrap #day.Monday) - (/@wrap #day.Tuesday))) - (..either (..either (/@wrap #day.Wednesday) - (/@wrap #day.Thursday)) - (..either (/@wrap #day.Friday) - (/@wrap #day.Saturday)))))) + (let [(^open "//.") ..monad] + (..either (..either (//wrap #day.Sunday) + (..either (//wrap #day.Monday) + (//wrap #day.Tuesday))) + (..either (..either (//wrap #day.Wednesday) + (//wrap #day.Thursday)) + (..either (//wrap #day.Friday) + (//wrap #day.Saturday)))))) (def: #export (run prng calc) (All [a] (-> PRNG (Random a) [PRNG a])) diff --git a/stdlib/source/lux/meta.lux b/stdlib/source/lux/meta.lux index 47e7a5721..73d5fee2f 100644 --- a/stdlib/source/lux/meta.lux +++ b/stdlib/source/lux/meta.lux @@ -9,13 +9,13 @@ [data ["." product] ["." maybe] - ["." text ("#@." monoid equivalence)] - ["." name ("#@." codec equivalence)] + ["." text ("#//." monoid equivalence)] + ["." name ("#//." codec equivalence)] [number ["n" nat] ["i" int]] [collection - ["." list ("#@." monoid monad)]]] + ["." list ("#//." monoid monad)]]] [macro ["." code]]] [/ @@ -81,7 +81,7 @@ #.None (#.Cons [k' v] plist') - (if (text@= k k') + (if (text//= k k') (#.Some v) (get k plist')))) @@ -132,7 +132,7 @@ (#try.Success [compiler module]) _ - (#try.Failure ($_ text@compose "Unknown module: " name))))) + (#try.Failure ($_ text//compose "Unknown module: " name))))) (def: #export current-module-name (Meta Text) @@ -231,7 +231,7 @@ (do ..monad [expansion ((:coerce Macro' macro) args) expansion' (monad.map ..monad expand expansion)] - (wrap (list@join expansion'))) + (wrap (list//join expansion'))) #.None (:: ..monad wrap (list syntax)))) @@ -251,23 +251,23 @@ (do ..monad [expansion ((:coerce Macro' macro) args) expansion' (monad.map ..monad expand-all expansion)] - (wrap (list@join expansion'))) + (wrap (list//join expansion'))) #.None (do ..monad [parts' (monad.map ..monad expand-all (list& (code.identifier name) args))] - (wrap (list (code.form (list@join parts'))))))) + (wrap (list (code.form (list//join parts'))))))) [_ (#.Form (#.Cons [harg targs]))] (do ..monad [harg+ (expand-all harg) targs+ (monad.map ..monad expand-all targs)] - (wrap (list (code.form (list@compose harg+ (list@join (: (List (List Code)) targs+))))))) + (wrap (list (code.form (list//compose harg+ (list//join (: (List (List Code)) targs+))))))) [_ (#.Tuple members)] (do ..monad [members' (monad.map ..monad expand-all members)] - (wrap (list (code.tuple (list@join members'))))) + (wrap (list (code.tuple (list//join members'))))) _ (:: ..monad wrap (list syntax)))) @@ -286,7 +286,7 @@ [id ..count] (wrap (|> id (:: n.decimal encode) - ($_ text@compose "__gensym__" prefix) + ($_ text//compose "__gensym__" prefix) [""] code.identifier)))) (def: (get-local-identifier ast) @@ -296,12 +296,12 @@ (:: ..monad wrap name) _ - (fail (text@compose "Code is not a local identifier: " (code.format ast))))) + (fail (text//compose "Code is not a local identifier: " (code.format ast))))) (def: #export wrong-syntax-error (-> Name Text) - (|>> name@encode - (text@compose "Wrong syntax for "))) + (|>> name//encode + (text//compose "Wrong syntax for "))) (macro: #export (with-gensyms tokens) {#.doc (doc "Creates new identifiers and offers them to the body expression." @@ -317,9 +317,9 @@ (^ (list [_ (#.Tuple identifiers)] body)) (do {! ..monad} [identifier-names (monad.map ! get-local-identifier identifiers) - #let [identifier-defs (list@join (list@map (: (-> Text (List Code)) - (function (_ name) (list (code.identifier ["" name]) (` (gensym (~ (code.text name))))))) - identifier-names))]] + #let [identifier-defs (list//join (list//map (: (-> Text (List Code)) + (function (_ name) (list (code.identifier ["" name]) (` (gensym (~ (code.text name))))))) + identifier-names))]] (wrap (list (` ((~! do) (~! ..monad) [(~+ identifier-defs)] (~ body)))))) @@ -389,7 +389,7 @@ (-> Text (Meta Type)) (function (_ compiler) (let [test (: (-> [Text [Type Any]] Bit) - (|>> product.left (text@= name)))] + (|>> product.left (text//= name)))] (case (do maybe.monad [scope (list.find (function (_ env) (or (list.any? test (: (List [Text [Type Any]]) @@ -407,7 +407,7 @@ ((clean-type var-type) compiler) #.None - (#try.Failure ($_ text@compose "Unknown variable: " name)))))) + (#try.Failure ($_ text//compose "Unknown variable: " name)))))) (def: #export (find-def name) {#.doc "Looks-up a definition's whole data in the available modules (including the current one)."} @@ -425,19 +425,19 @@ _ (let [current-module (|> compiler (get@ #.current-module) (maybe.default "???")) - separator ($_ text@compose text.new-line " ")] - (#try.Failure ($_ text@compose - "Unknown definition: " (name@encode name) text.new-line + separator ($_ text//compose text.new-line " ")] + (#try.Failure ($_ text//compose + "Unknown definition: " (name//encode name) text.new-line " Current module: " current-module text.new-line (case (get current-module (get@ #.modules compiler)) (#.Some this-module) - ($_ text@compose + ($_ text//compose " Imports: " (|> this-module (get@ #.imports) (text.join-with separator)) text.new-line - " Aliases: " (|> this-module (get@ #.module-aliases) (list@map (function (_ [alias real]) ($_ text@compose alias " => " real))) (text.join-with separator)) text.new-line) + " Aliases: " (|> this-module (get@ #.module-aliases) (list//map (function (_ [alias real]) ($_ text//compose alias " => " real))) (text.join-with separator)) text.new-line) _ "") - " All Known modules: " (|> compiler (get@ #.modules) (list@map product.left) (text.join-with separator)) text.new-line))))))) + " All Known modules: " (|> compiler (get@ #.modules) (list//map product.left) (text.join-with separator)) text.new-line))))))) (def: #export (find-export name) {#.doc "Looks-up a definition's type in the available modules (including the current one)."} @@ -446,15 +446,15 @@ [definition (..find-def name)] (case definition (#.Left de-aliased) - (fail ($_ text@compose + (fail ($_ text//compose "Aliases are not considered exports: " - (name@encode name))) + (name//encode name))) (#.Right definition) (let [[exported? def-type def-data def-value] definition] (if exported? (wrap definition) - (fail ($_ text@compose "Definition is not an export: " (name@encode name)))))))) + (fail ($_ text//compose "Definition is not an export: " (name//encode name)))))))) (def: #export (find-def-type name) {#.doc "Looks-up a definition's type in the available modules (including the current one)."} @@ -499,7 +499,7 @@ (function (_ compiler) (case (get module (get@ #.modules compiler)) #.None - (#try.Failure ($_ text@compose "Unknown module: " module)) + (#try.Failure ($_ text//compose "Unknown module: " module)) (#.Some module) (#try.Success [compiler (get@ #.definitions module)])))) @@ -578,14 +578,14 @@ (-> Text Text (Meta Bit)) (do ..monad [(^slots [#.imports]) (..find-module module)] - (wrap (list.any? (text@= import) imports)))) + (wrap (list.any? (text//= import) imports)))) (def: #export (imported? import) (-> Text (Meta Bit)) (let [(^open ".") ..monad] (|> ..current-module-name (map ..find-module) join - (map (|>> (get@ #.imports) (list.any? (text@= import))))))) + (map (|>> (get@ #.imports) (list.any? (text//= import))))))) (def: #export (resolve-tag tag) {#.doc "Given a tag, finds out what is its index, its related tag-list and it's associated type."} @@ -597,17 +597,17 @@ imported! (..imported? module)] (case (get name (get@ #.tags =module)) (#.Some [idx tag-list exported? type]) - (if (or (text@= this-module-name module) + (if (or (text//= this-module-name module) (and imported! exported?)) (wrap [idx tag-list type]) - (..fail ($_ text@compose "Cannot access tag: " (name@encode tag) " from module " this-module-name))) + (..fail ($_ text//compose "Cannot access tag: " (name//encode tag) " from module " this-module-name))) _ - (..fail ($_ text@compose - "Unknown tag: " (name@encode tag) text.new-line + (..fail ($_ text//compose + "Unknown tag: " (name//encode tag) text.new-line " Known tags: " (|> =module (get@ #.tags) - (list@map (|>> product.left [module] name@encode (text.prefix text.new-line))) + (list//map (|>> product.left [module] name//encode (text.prefix text.new-line))) (text.join-with "")) ))))) @@ -620,9 +620,9 @@ (wrap (|> (get@ #.types =module) (list.filter (function (_ [type-name [tag-list exported? type]]) (or exported? - (text@= this-module-name module)))) - (list@map (function (_ [type-name [tag-list exported? type]]) - [tag-list type])))))) + (text//= this-module-name module)))) + (list//map (function (_ [type-name [tag-list exported? type]]) + [tag-list type])))))) (def: #export locals {#.doc "All the local variables currently in scope, separated in different scopes."} @@ -634,10 +634,10 @@ (#.Some scopes) (#try.Success [compiler - (list@map (|>> (get@ [#.locals #.mappings]) - (list@map (function (_ [name [type _]]) - [name type]))) - scopes)])))) + (list//map (|>> (get@ [#.locals #.mappings]) + (list//map (function (_ [name [type _]]) + [name type]))) + scopes)])))) (def: #export (un-alias def-name) {#.doc "Given an aliased definition's name, returns the original definition being referenced."} @@ -686,9 +686,9 @@ (do ..monad [location ..location output ( token) - #let [_ (log! ($_ text@compose (name@encode (name-of )) " @ " (location.format location))) - _ (list@map (|>> code.format log!) - output) + #let [_ (log! ($_ text//compose (name//encode (name-of )) " @ " (location.format location))) + _ (list//map (|>> code.format log!) + output) _ (log! "")]] (wrap (if omit? (list) diff --git a/stdlib/source/lux/target/common-lisp.lux b/stdlib/source/lux/target/common-lisp.lux index b38ec0fee..b1853a42f 100644 --- a/stdlib/source/lux/target/common-lisp.lux +++ b/stdlib/source/lux/target/common-lisp.lux @@ -8,7 +8,7 @@ ["." text ["%" format (#+ format)]] [collection - ["." list ("#@." monad fold)]]] + ["." list ("#//." monad fold)]]] [macro ["." template]] [type @@ -141,7 +141,7 @@ (def: #export args (-> (List Var/1) Var/*) - (|>> (list@map ..code) + (|>> (list//map ..code) (text.join-with " ") ..as-form :abstraction)) @@ -149,7 +149,7 @@ (def: #export (args& singles rest) (-> (List Var/1) Var/1 Var/*) (|> (format (|> singles - (list@map ..code) + (list//map ..code) (text.join-with " ")) " &rest " (:representation rest)) ..as-form @@ -157,7 +157,7 @@ (def: form (-> (List (Expression Any)) Expression) - (|>> (list@map ..code) + (|>> (list//map ..code) (text.join-with " ") ..as-form :abstraction)) @@ -178,9 +178,9 @@ (def: #export (labels definitions body) (-> (List [Var/1 Lambda]) (Expression Any) (Computation Any)) (..form (list (..var "labels") - (..form (list@map (function (_ [def-name [def-args def-body]]) - (..form (list def-name (:transmutation def-args) def-body))) - definitions)) + (..form (list//map (function (_ [def-name [def-args def-body]]) + (..form (list def-name (:transmutation def-args) def-body))) + definitions)) body))) (def: #export (destructuring-bind [bindings expression] body) @@ -334,8 +334,8 @@ (-> (List [Var/1 (Expression Any)]) (Expression Any) (Computation Any)) (..form (list (..var ) (|> bindings - (list@map (function (_ [name value]) - (..form (list name value)))) + (list//map (function (_ [name value]) + (..form (list name value)))) ..form) body)))] @@ -372,11 +372,11 @@ (-> (List Handler) (Expression Any) (Computation Any)) (..form (list& (..var "handler-case") body - (list@map (function (_ [type condition handler]) - (..form (list type - (:transmutation (..args (list condition))) - handler))) - handlers)))) + (list//map (function (_ [type condition handler]) + (..form (list type + (:transmutation (..args (list condition))) + handler))) + handlers)))) (template [ ] [(def: #export ( conditions expression) @@ -391,7 +391,7 @@ _ (:abstraction - (format (|> conditions (list@map ..symbol) + (format (|> conditions (list//map ..symbol) (list& (..symbol "or")) ..form :representation) " " (:representation expression)))))] @@ -413,10 +413,10 @@ (def: #export (cond clauses else) (-> (List [(Expression Any) (Expression Any)]) (Expression Any) (Computation Any)) - (list@fold (function (_ [test then] next) - (..if test then next)) - (:transmutation else) - (list.reverse clauses))) + (list//fold (function (_ [test then] next) + (..if test then next)) + (:transmutation else) + (list.reverse clauses))) ) (def: #export (while condition body) diff --git a/stdlib/source/lux/target/js.lux b/stdlib/source/lux/target/js.lux index bc4b3949d..41eba97bb 100644 --- a/stdlib/source/lux/target/js.lux +++ b/stdlib/source/lux/target/js.lux @@ -9,7 +9,7 @@ ["." text ["%" format (#+ format)]] [collection - ["." list ("#@." functor fold)]]] + ["." list ("#//." functor fold)]]] [macro ["." template]] [type @@ -110,7 +110,7 @@ (def: #export array (-> (List Expression) Computation) - (|>> (list@map ..code) + (|>> (list//map ..code) (text.join-with ..argument-separator) ..element :abstraction)) @@ -130,7 +130,7 @@ (def: #export (apply/* function inputs) (-> Expression (List Expression) Computation) (|> inputs - (list@map ..code) + (list//map ..code) (text.join-with ..argument-separator) ..expression (format (:representation function)) @@ -142,8 +142,8 @@ (def: #export object (-> (List [Text Expression]) Computation) - (|>> (list@map (.function (_ [key val]) - (format (:representation (..string key)) ..field-separator (:representation val)))) + (|>> (list//map (.function (_ [key val]) + (format (:representation (..string key)) ..field-separator (:representation val)))) (text.join-with ..argument-separator) (text.enclose ["{" "}"]) ..expression @@ -175,7 +175,7 @@ ..block (format "function " (:representation name) (|> inputs - (list@map ..code) + (list//map ..code) (text.join-with ..argument-separator) ..expression) " ") @@ -194,7 +194,7 @@ ..block (format "function" (|> inputs - (list@map ..code) + (list//map ..code) (text.join-with ..argument-separator) ..expression) " ") @@ -276,7 +276,7 @@ (-> Expression (List Expression) Computation) (|> (format "new " (:representation constructor) (|> inputs - (list@map ..code) + (list//map ..code) (text.join-with ..argument-separator) ..expression)) ..expression @@ -399,11 +399,11 @@ (-> Expression (List [(List Literal) Statement]) (Maybe Statement) Statement) (:abstraction (format "switch (" (:representation input) ") " (|> (format (|> cases - (list@map (.function (_ [when then]) - (format (|> when - (list@map (|>> :representation (text.enclose ["case " ":"]))) - (text.join-with text.new-line)) - (..nest (:representation then))))) + (list//map (.function (_ [when then]) + (format (|> when + (list//map (|>> :representation (text.enclose ["case " ":"]))) + (text.join-with text.new-line)) + (..nest (:representation then))))) (text.join-with text.new-line)) text.new-line (case default @@ -418,10 +418,10 @@ (def: #export (cond clauses else!) (-> (List [Expression Statement]) Statement Statement) - (list@fold (.function (_ [test then!] next!) - (..if test then! next!)) - else! - (list.reverse clauses))) + (list//fold (.function (_ [test then!] next!) + (..if test then! next!)) + else! + (list.reverse clauses))) (template [ + + +] [(`` (def: #export ( function) diff --git a/stdlib/source/lux/target/jvm/attribute.lux b/stdlib/source/lux/target/jvm/attribute.lux index 083ebaa15..99ceeafb5 100644 --- a/stdlib/source/lux/target/jvm/attribute.lux +++ b/stdlib/source/lux/target/jvm/attribute.lux @@ -11,7 +11,7 @@ [number ["n" nat]] [format - [".F" binary (#+ Writer) ("#@." monoid)]]]] + [".F" binary (#+ Writer)]]]] ["." // #_ ["#." index (#+ Index)] [encoding diff --git a/stdlib/source/lux/target/jvm/attribute/code.lux b/stdlib/source/lux/target/jvm/attribute/code.lux index 3a9629c1f..012c25809 100644 --- a/stdlib/source/lux/target/jvm/attribute/code.lux +++ b/stdlib/source/lux/target/jvm/attribute/code.lux @@ -8,9 +8,9 @@ [number ["n" nat]] [format - [".F" binary (#+ Writer) ("#@." monoid)]] + [".F" binary (#+ Writer) ("#//." monoid)]] [collection - ["." row (#+ Row) ("#@." functor fold)]]]] + ["." row (#+ Row) ("#//." functor fold)]]]] ["." /// #_ [bytecode [environment @@ -48,8 +48,8 @@ ## attribute_info attributes[attributes_count]; (|> code (get@ #attributes) - (row@map length) - (row@fold n.+ 0)))) + (row//map length) + (row//fold n.+ 0)))) (def: #export (equivalence attribute-equivalence) (All [attribute] @@ -64,7 +64,7 @@ ## https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3 (def: #export (writer writer code) (All [Attribute] (-> (Writer Attribute) (Writer (Code Attribute)))) - ($_ binaryF@compose + ($_ binaryF//compose ## u2 max_stack; ## u2 max_locals; (///limit.writer (get@ #limit code)) diff --git a/stdlib/source/lux/target/jvm/bytecode.lux b/stdlib/source/lux/target/jvm/bytecode.lux index 2b3d600f7..31b99e9cf 100644 --- a/stdlib/source/lux/target/jvm/bytecode.lux +++ b/stdlib/source/lux/target/jvm/bytecode.lux @@ -20,7 +20,7 @@ ["i" int] ["." i32 (#+ I32)]] [collection - ["." list ("#@." functor fold)] + ["." list ("#//." functor fold)] ["." dictionary (#+ Dictionary)] ["." row (#+ Row)]]] [macro @@ -28,7 +28,7 @@ ["." / #_ ["#." address (#+ Address)] ["#." jump (#+ Jump Big-Jump)] - ["_" instruction (#+ Primitive-Array-Type Instruction Estimator) ("#@." monoid)] + ["_" instruction (#+ Primitive-Array-Type Instruction Estimator) ("#//." monoid)] ["#." environment (#+ Environment) [limit ["/." registry (#+ Register Registry)] @@ -93,7 +93,7 @@ [[left-exceptions left-instruction] (left resolver) [right-exceptions right-instruction] (right resolver)] (wrap [(:: row.monoid compose left-exceptions right-exceptions) - (_@compose left-instruction right-instruction)])))))) + (_//compose left-instruction right-instruction)])))))) (type: #export (Bytecode a) (State' Try [Pool Environment Tracker] (Writer Relative a))) @@ -843,7 +843,7 @@ (wrap (let [@from (get@ #program-counter tracker)] [[pool environment' - (|> (list@fold (..acknowledge-label actual) tracker (list& default at-minimum afterwards)) + (|> (list//fold (..acknowledge-label actual) tracker (list& default at-minimum afterwards)) (set@ #program-counter program-counter'))] [(function (_ resolver) (let [get (: (-> Label (Maybe [Stack (Maybe Address)])) @@ -886,7 +886,7 @@ (wrap (let [@from (get@ #program-counter tracker)] [[pool environment' - (|> (list@fold (..acknowledge-label actual) tracker (list& default (list@map product.right cases))) + (|> (list//fold (..acknowledge-label actual) tracker (list& default (list//map product.right cases))) (set@ #program-counter program-counter'))] [(function (_ resolver) (let [get (: (-> Label (Maybe [Stack (Maybe Address)])) @@ -903,7 +903,7 @@ [>default (:: ! map ..big-jump (..jump @from @default)) >cases (|> @cases (monad.map ! (|>> (..jump @from) (:: ! map ..big-jump))) - (:: ! map (|>> (list.zip/2 (list@map product.left cases)))))] + (:: ! map (|>> (list.zip/2 (list//map product.left cases)))))] (wrap [..no-exceptions (bytecode >default >cases)])) #.None @@ -970,8 +970,8 @@ {#//constant/pool.name method #//constant/pool.descriptor (type.descriptor type)}) #let [consumption (|> inputs - (list@map ..type-size) - (list@fold n.+ (if 0 1)) + (list//map ..type-size) + (list//fold n.+ (if 0 1)) //unsigned.u1 try.assume) production (|> output ..type-size //unsigned.u1 try.assume)]] diff --git a/stdlib/source/lux/target/jvm/bytecode/environment/limit.lux b/stdlib/source/lux/target/jvm/bytecode/environment/limit.lux index 1bbb40e15..7ca0f0e83 100644 --- a/stdlib/source/lux/target/jvm/bytecode/environment/limit.lux +++ b/stdlib/source/lux/target/jvm/bytecode/environment/limit.lux @@ -9,7 +9,7 @@ [number ["n" nat]] ["." format #_ - ["#" binary (#+ Writer) ("#@." monoid)]]]] + ["#" binary (#+ Writer) ("#//." monoid)]]]] ["." / #_ ["#." stack (#+ Stack)] ["#." registry (#+ Registry)] @@ -49,7 +49,7 @@ (def: #export (writer limit) (Writer Limit) - ($_ format@compose + ($_ format//compose (/stack.writer (get@ #stack limit)) (/registry.writer (get@ #registry limit)) )) diff --git a/stdlib/source/lux/target/jvm/bytecode/environment/limit/registry.lux b/stdlib/source/lux/target/jvm/bytecode/environment/limit/registry.lux index 8156c46c0..c192a3fdd 100644 --- a/stdlib/source/lux/target/jvm/bytecode/environment/limit/registry.lux +++ b/stdlib/source/lux/target/jvm/bytecode/environment/limit/registry.lux @@ -3,14 +3,14 @@ [abstract ["." equivalence (#+ Equivalence)]] [control - ["." try (#+ Try) ("#@." functor)]] + ["." try (#+ Try) ("#//." functor)]] [data [number ["n" nat]] [format [binary (#+ Writer)]] [collection - ["." list ("#@." functor fold)]]] + ["." list ("#//." functor fold)]]] [type abstract]] ["." ///// #_ @@ -36,12 +36,12 @@ (-> (Type Method) Nat) (let [[inputs output exceptions] (/////type/parser.method type)] (|> inputs - (list@map (function (_ input) - (if (or (is? /////type.long input) - (is? /////type.double input)) - ..wide - ..normal))) - (list@fold n.+ 0)))) + (list//map (function (_ input) + (if (or (is? /////type.long input) + (is? /////type.double input)) + ..wide + ..normal))) + (list//fold n.+ 0)))) (template [ ] [(def: #export @@ -49,7 +49,7 @@ (|>> ..minimal (n.+ ) /////unsigned.u2 - (try@map ..registry)))] + (try//map ..registry)))] [0 static] [1 virtual] diff --git a/stdlib/source/lux/target/jvm/class.lux b/stdlib/source/lux/target/jvm/class.lux index 5a975cf8a..08bd81e56 100644 --- a/stdlib/source/lux/target/jvm/class.lux +++ b/stdlib/source/lux/target/jvm/class.lux @@ -11,7 +11,7 @@ [number (#+) [i64 (#+)]] [format - [".F" binary (#+ Writer) ("#@." monoid)]] + [".F" binary (#+ Writer) ("#//." monoid)]] [collection ["." row (#+ Row)]]] [type @@ -115,7 +115,7 @@ (def: #export (writer class) (Writer Class) - (`` ($_ binaryF@compose + (`` ($_ binaryF//compose (~~ (template [ ] [( (get@ class))] diff --git a/stdlib/source/lux/target/jvm/constant.lux b/stdlib/source/lux/target/jvm/constant.lux index b114ba945..d62100634 100644 --- a/stdlib/source/lux/target/jvm/constant.lux +++ b/stdlib/source/lux/target/jvm/constant.lux @@ -13,7 +13,7 @@ ["." frac]] ["." text] [format - [".F" binary (#+ Writer) ("#@." monoid)]] + [".F" binary (#+ Writer) ("#//." monoid)]] [collection ["." row (#+ Row)]]] [type @@ -234,7 +234,7 @@ (case value (^template [ ] ( value) - (binaryF@compose (/tag.writer ) - ( value))) + (binaryF//compose (/tag.writer ) + ( value))) () )))) diff --git a/stdlib/source/lux/target/jvm/constant/pool.lux b/stdlib/source/lux/target/jvm/constant/pool.lux index 2d2b1b940..17e3f0302 100644 --- a/stdlib/source/lux/target/jvm/constant/pool.lux +++ b/stdlib/source/lux/target/jvm/constant/pool.lux @@ -15,9 +15,9 @@ ["." frac]] ["." text] ["." format #_ - ["#" binary (#+ Writer) ("specification@." monoid)]] + ["#" binary (#+ Writer) ("specification//." monoid)]] [collection - ["." row (#+ Row) ("#@." fold)]]] + ["." row (#+ Row) ("#//." fold)]]] [type abstract] [macro @@ -144,10 +144,10 @@ (def: #export writer (Writer Pool) (function (_ [next pool]) - (row@fold (function (_ [_index post] pre) - (specification@compose pre (//.writer post))) - (format.bits/16 (!index next)) - pool))) + (row//fold (function (_ [_index post] pre) + (specification//compose pre (//.writer post))) + (format.bits/16 (!index next)) + pool))) (def: #export empty Pool diff --git a/stdlib/source/lux/target/jvm/constant/tag.lux b/stdlib/source/lux/target/jvm/constant/tag.lux index ce1b7d20a..fc2311ab9 100644 --- a/stdlib/source/lux/target/jvm/constant/tag.lux +++ b/stdlib/source/lux/target/jvm/constant/tag.lux @@ -11,7 +11,7 @@ abstract]] ["." /// #_ [encoding - ["#." unsigned (#+ U1) ("u1@." equivalence)]]]) + ["#." unsigned (#+ U1) ("u1//." equivalence)]]]) (abstract: #export Tag U1 @@ -19,8 +19,8 @@ (structure: #export equivalence (Equivalence Tag) (def: (= reference sample) - (u1@= (:representation reference) - (:representation sample)))) + (u1//= (:representation reference) + (:representation sample)))) (template [ ] [(def: #export diff --git a/stdlib/source/lux/target/jvm/field.lux b/stdlib/source/lux/target/jvm/field.lux index 8541076f7..c5231ea26 100644 --- a/stdlib/source/lux/target/jvm/field.lux +++ b/stdlib/source/lux/target/jvm/field.lux @@ -8,7 +8,7 @@ [number (#+) [i64 (#+)]] [format - [".F" binary (#+ Writer) ("#@." monoid)]] + [".F" binary (#+ Writer) ("#//." monoid)]] [collection ["." row (#+ Row)]]] [type @@ -51,7 +51,7 @@ (def: #export (writer field) (Writer Field) - (`` ($_ binaryF@compose + (`` ($_ binaryF//compose (~~ (template [ ] [( (get@ field))] diff --git a/stdlib/source/lux/target/jvm/method.lux b/stdlib/source/lux/target/jvm/method.lux index daae88521..823cb1e11 100644 --- a/stdlib/source/lux/target/jvm/method.lux +++ b/stdlib/source/lux/target/jvm/method.lux @@ -10,13 +10,13 @@ [number (#+) [i64 (#+)]] ["." format #_ - ["#" binary (#+ Writer) ("#@." monoid)]] + ["#" binary (#+ Writer) ("#//." monoid)]] [collection ["." row (#+ Row)]]] [type [abstract (#+)]]] ["." // #_ - ["#." modifier (#+ Modifier modifiers:) ("#@." monoid)] + ["#." modifier (#+ Modifier modifiers:)] ["#." index (#+ Index)] ["#." attribute (#+ Attribute) ["#/." code]] @@ -95,7 +95,7 @@ (def: #export (writer field) (Writer Method) - (`` ($_ format@compose + (`` ($_ format//compose (~~ (template [ ] [( (get@ field))] diff --git a/stdlib/source/lux/target/jvm/modifier.lux b/stdlib/source/lux/target/jvm/modifier.lux index c9fd34125..cd6d2671f 100644 --- a/stdlib/source/lux/target/jvm/modifier.lux +++ b/stdlib/source/lux/target/jvm/modifier.lux @@ -11,9 +11,7 @@ ["." number (#+ hex) ["." i64]] [format - [".F" binary (#+ Writer)]] - [collection - ["." list ("#@." functor)]]] + [".F" binary (#+ Writer)]]] [type abstract] [meta (#+ with-gensyms)] diff --git a/stdlib/source/lux/target/jvm/reflection.lux b/stdlib/source/lux/target/jvm/reflection.lux index 9cbcd4535..b87230b07 100644 --- a/stdlib/source/lux/target/jvm/reflection.lux +++ b/stdlib/source/lux/target/jvm/reflection.lux @@ -12,10 +12,10 @@ [data [number ["n" nat]] - ["." text ("#@." equivalence) + ["." text ("#//." equivalence) ["%" format (#+ format)]] [collection - ["." list ("#@." fold functor)] + ["." list ("#//." fold functor)] ["." array] ["." dictionary]]]] ["." // #_ @@ -131,8 +131,8 @@ (:coerce (java/lang/Class java/lang/Object)) java/lang/Class::getName)] (`` (if (or (~~ (template [] - [(text@= (/reflection.reflection ) - class-name)] + [(text//= (/reflection.reflection ) + class-name)] [/reflection.boolean] [/reflection.byte] @@ -210,8 +210,8 @@ (:coerce (java/lang/Class java/lang/Object)) java/lang/Class::getName)] (`` (cond (~~ (template [ ] - [(text@= (/reflection.reflection ) - class-name) + [(text//= (/reflection.reflection ) + class-name) (#try.Success )] [/reflection.boolean /.boolean] @@ -244,8 +244,8 @@ (let [class-name (|> reflection (:coerce (java/lang/Class java/lang/Object)) java/lang/Class::getName)] - (if (text@= (/reflection.reflection /reflection.void) - class-name) + (if (text//= (/reflection.reflection /reflection.void) + class-name) (#try.Success /.void) )) @@ -280,14 +280,14 @@ class-params (array.to-list (java/lang/Class::getTypeParameters class)) num-class-params (list.size class-params) num-type-params (list.size params)] - (if (text@= class-name name) + (if (text//= class-name name) (if (n.= num-class-params num-type-params) (|> params - (list.zip/2 (list@map (|>> java/lang/reflect/TypeVariable::getName) - class-params)) - (list@fold (function (_ [name paramT] mapping) - (dictionary.put name paramT mapping)) - /lux.fresh) + (list.zip/2 (list//map (|>> java/lang/reflect/TypeVariable::getName) + class-params)) + (list//fold (function (_ [name paramT] mapping) + (dictionary.put name paramT mapping)) + /lux.fresh) #try.Success) (exception.throw ..type-parameter-mismatch [num-class-params num-type-params class type])) (exception.throw ..cannot-correspond [class type]))) diff --git a/stdlib/source/lux/target/jvm/type.lux b/stdlib/source/lux/target/jvm/type.lux index 613c8f5c3..9dbcb12c2 100644 --- a/stdlib/source/lux/target/jvm/type.lux +++ b/stdlib/source/lux/target/jvm/type.lux @@ -10,7 +10,7 @@ [number ["n" nat]] [collection - ["." list ("#@." functor)]]] + ["." list ("#//." functor)]]] [type abstract]] ["." // #_ @@ -79,14 +79,14 @@ (def: #export (class name parameters) (-> External (List (Type Parameter)) (Type Class)) (:abstraction - [(/signature.class name (list@map ..signature parameters)) + [(/signature.class name (list//map ..signature parameters)) (/descriptor.class name) (/reflection.class name)])) (def: #export (declaration name variables) (-> External (List (Type Var)) (Type Declaration)) (:abstraction - [(/signature.declaration name (list@map ..signature variables)) + [(/signature.declaration name (list//map ..signature variables)) (/descriptor.declaration name) (/reflection.declaration name)])) @@ -134,10 +134,10 @@ (List (Type Class))] (Type Method)) (:abstraction - [(/signature.method [(list@map ..signature inputs) + [(/signature.method [(list//map ..signature inputs) (..signature output) - (list@map ..signature exceptions)]) - (/descriptor.method [(list@map ..descriptor inputs) + (list//map ..signature exceptions)]) + (/descriptor.method [(list//map ..descriptor inputs) (..descriptor output)]) (:assume ..void)])) diff --git a/stdlib/source/lux/target/jvm/type/alias.lux b/stdlib/source/lux/target/jvm/type/alias.lux index d21cbc1c2..f384a0ea1 100644 --- a/stdlib/source/lux/target/jvm/type/alias.lux +++ b/stdlib/source/lux/target/jvm/type/alias.lux @@ -5,7 +5,7 @@ [control ["." try] ["." exception (#+ exception:)] - ["<>" parser ("#@." monad) + ["<>" parser ["" text (#+ Parser)]]] [data ["." maybe] diff --git a/stdlib/source/lux/target/jvm/type/descriptor.lux b/stdlib/source/lux/target/jvm/type/descriptor.lux index abcbfbbb9..27e44ec7f 100644 --- a/stdlib/source/lux/target/jvm/type/descriptor.lux +++ b/stdlib/source/lux/target/jvm/type/descriptor.lux @@ -6,10 +6,10 @@ ["." maybe] [number ["n" nat]] - ["." text ("#@." equivalence) + ["." text ("#//." equivalence) ["%" format (#+ format)]] [collection - ["." list ("#@." functor)]]] + ["." list ("#//." functor)]]] [type abstract]] ["." // #_ @@ -92,7 +92,7 @@ (Descriptor Method)) (:abstraction (format (|> inputs - (list@map ..descriptor) + (list//map ..descriptor) (text.join-with "") (text.enclose ["(" ")"])) (:representation output)))) @@ -101,7 +101,7 @@ (All [category] (Equivalence (Descriptor category))) (def: (= parameter subject) - (text@= (:representation parameter) (:representation subject)))) + (text//= (:representation parameter) (:representation subject)))) (def: #export class-name (-> (Descriptor Object) Internal) diff --git a/stdlib/source/lux/target/jvm/type/lux.lux b/stdlib/source/lux/target/jvm/type/lux.lux index 83a61de01..cbaf50a99 100644 --- a/stdlib/source/lux/target/jvm/type/lux.lux +++ b/stdlib/source/lux/target/jvm/type/lux.lux @@ -5,18 +5,18 @@ [control ["." try] ["." exception (#+ exception:)] - ["<>" parser ("#@." monad) + ["<>" parser ("#//." monad) ["" text (#+ Parser)]]] [data ["." product] - ["." text ("#@." equivalence) + ["." text ("#//." equivalence) ["%" format (#+ format)]] [collection ["." array] ["." dictionary (#+ Dictionary)]]] [type abstract - ["." check (#+ Check) ("#@." monad)]]] + ["." check (#+ Check) ("#//." monad)]]] ["." // [category (#+ Void Value Return Method Primitive Object Class Array Var Parameter)] ["#." descriptor] @@ -47,13 +47,13 @@ (def: void (Parser (Check Type)) (<>.after //parser.void - (<>@wrap (check@wrap .Any)))) + (<>//wrap (check//wrap .Any)))) (template [ ] [(def: (Parser (Check Type)) (<>.after - (<>@wrap (check@wrap (#.Primitive (//reflection.reflection ) #.Nil)))))] + (<>//wrap (check//wrap (#.Primitive (//reflection.reflection ) #.Nil)))))] [boolean //parser.boolean //reflection.boolean] [byte //parser.byte //reflection.byte] @@ -81,8 +81,8 @@ (def: wildcard (Parser (Check Type)) (<>.after //parser.wildcard - (<>@wrap (check@map product.right - check.existential)))) + (<>//wrap (check//map product.right + check.existential)))) (def: (var mapping) (-> Mapping (Parser (Check Type))) @@ -93,7 +93,7 @@ (check.throw ..unknown-var [var]) (#.Some type) - (check@wrap type))))) + (check//wrap type))))) (def: (class' parameter) (-> (Parser (Check Type)) (Parser (Check Type))) @@ -114,7 +114,7 @@ (-> (Parser (Check Type)) (Parser (Check Type))) (|> (<>.after (.this )) ## TODO: Re-enable Lower and Upper, instead of using the simplified limit. - ## (<>@map (check@map (|>> .type))) + ## (<>//map (check//map (|>> .type))) ))] [lower //signature.lower-prefix ..Lower] @@ -140,25 +140,25 @@ (def: array (-> (Parser (Check Type)) (Parser (Check Type))) - (|>> (<>@map (check@map (function (_ elementT) - (case elementT - (#.Primitive name #.Nil) - (if (`` (or (~~ (template [] - [(text@= (//reflection.reflection ) name)] - - [//reflection.boolean] - [//reflection.byte] - [//reflection.short] - [//reflection.int] - [//reflection.long] - [//reflection.float] - [//reflection.double] - [//reflection.char])))) - (#.Primitive (|> name //reflection.class //reflection.array //reflection.reflection) #.Nil) - (|> elementT array.Array .type)) - - _ - (|> elementT array.Array .type))))) + (|>> (<>//map (check//map (function (_ elementT) + (case elementT + (#.Primitive name #.Nil) + (if (`` (or (~~ (template [] + [(text//= (//reflection.reflection ) name)] + + [//reflection.boolean] + [//reflection.byte] + [//reflection.short] + [//reflection.int] + [//reflection.long] + [//reflection.float] + [//reflection.double] + [//reflection.char])))) + (#.Primitive (|> name //reflection.class //reflection.array //reflection.reflection) #.Nil) + (|> elementT array.Array .type)) + + _ + (|> elementT array.Array .type))))) (<>.after (.this //descriptor.array-prefix)))) (def: #export (type mapping) diff --git a/stdlib/source/lux/target/jvm/type/parser.lux b/stdlib/source/lux/target/jvm/type/parser.lux index 499776376..d57bd41a3 100644 --- a/stdlib/source/lux/target/jvm/type/parser.lux +++ b/stdlib/source/lux/target/jvm/type/parser.lux @@ -5,7 +5,7 @@ [control ["." try] ["." function] - ["<>" parser ("#@." monad) + ["<>" parser ("#//." monad) ["" text (#+ Parser)]]] [data ["." product] @@ -25,7 +25,7 @@ [(def: #export (Parser (Type )) (<>.after (.this (//signature.signature )) - (<>@wrap )))] + (<>//wrap )))] [Void void //signature.void //.void] [Primitive boolean //signature.boolean //.boolean] @@ -86,7 +86,7 @@ (def: #export var (Parser (Type Var)) - (<>@map //.var ..var')) + (<>//map //.var ..var')) (def: #export var? (-> (Type Value) (Maybe Text)) @@ -106,7 +106,7 @@ [(def: (-> (Parser (Type Class)) (Parser (Type Parameter))) (|>> (<>.after (.this )) - (<>@map )))] + (<>//map )))] [lower //signature.lower-prefix //.lower] [upper //signature.upper-prefix //.upper] @@ -145,7 +145,7 @@ (def: #export array' (-> (Parser (Type Value)) (Parser (Type Array))) (|>> (<>.after (.this //descriptor.array-prefix)) - (<>@map //.array))) + (<>//map //.array))) (def: #export class (Parser (Type Class)) diff --git a/stdlib/source/lux/target/jvm/type/reflection.lux b/stdlib/source/lux/target/jvm/type/reflection.lux index 4ad2caf70..a0e0b0f5e 100644 --- a/stdlib/source/lux/target/jvm/type/reflection.lux +++ b/stdlib/source/lux/target/jvm/type/reflection.lux @@ -3,7 +3,7 @@ [abstract [equivalence (#+ Equivalence)]] [data - ["." text ("#@." equivalence) + ["." text ("#//." equivalence) ["%" format (#+ format)]]] [type abstract]] @@ -25,7 +25,7 @@ (All [category] (Equivalence (Reflection category))) (def: (= parameter subject) - (text@= (:representation parameter) (:representation subject)))) + (text//= (:representation parameter) (:representation subject)))) (template [ ] [(def: #export diff --git a/stdlib/source/lux/target/jvm/type/signature.lux b/stdlib/source/lux/target/jvm/type/signature.lux index 5fd3c3487..2fc8aa7c7 100644 --- a/stdlib/source/lux/target/jvm/type/signature.lux +++ b/stdlib/source/lux/target/jvm/type/signature.lux @@ -4,10 +4,10 @@ [equivalence (#+ Equivalence)] [hash (#+ Hash)]] [data - ["." text ("#@." hash) + ["." text ("#//." hash) ["%" format (#+ format)]] [collection - ["." list ("#@." functor)]]] + ["." list ("#//." functor)]]] [type abstract]] ["." // #_ @@ -84,7 +84,7 @@ _ (format ..parameters-start (|> parameters - (list@map ..signature) + (list//map ..signature) (text.join-with "")) ..parameters-end)) //descriptor.class-suffix))) @@ -109,25 +109,25 @@ (Signature Method)) (:abstraction (format (|> inputs - (list@map ..signature) + (list//map ..signature) (text.join-with "") (text.enclose [..arguments-start ..arguments-end])) (:representation output) (|> exceptions - (list@map (|>> :representation (format ..exception-prefix))) + (list//map (|>> :representation (format ..exception-prefix))) (text.join-with ""))))) (structure: #export equivalence (All [category] (Equivalence (Signature category))) (def: (= parameter subject) - (text@= (:representation parameter) - (:representation subject)))) + (text//= (:representation parameter) + (:representation subject)))) (structure: #export hash (All [category] (Hash (Signature category))) (def: &equivalence ..equivalence) - (def: hash (|>> :representation text@hash))) + (def: hash (|>> :representation text//hash))) ) diff --git a/stdlib/source/lux/target/lua.lux b/stdlib/source/lux/target/lua.lux index 37db0694f..68c961ef7 100644 --- a/stdlib/source/lux/target/lua.lux +++ b/stdlib/source/lux/target/lua.lux @@ -11,7 +11,7 @@ ["." text ["%" format (#+ format)]] [collection - ["." list ("#@." functor fold)]]] + ["." list ("#//." functor fold)]]] [macro ["." template] ["." code] @@ -114,15 +114,15 @@ (def: #export array (-> (List (Expression Any)) Literal) - (|>> (list@map ..code) + (|>> (list//map ..code) (text.join-with ..input-separator) (text.enclose ["{" "}"]) :abstraction)) (def: #export table (-> (List [Text (Expression Any)]) Literal) - (|>> (list@map (.function (_ [key value]) - (format key " = " (:representation value)))) + (|>> (list//map (.function (_ [key value]) + (format key " = " (:representation value)))) (text.join-with ..input-separator) (text.enclose ["{" "}"]) :abstraction)) @@ -144,7 +144,7 @@ (def: #export (apply/* args func) (-> (List (Expression Any)) (Expression Any) (Computation Any)) (|> args - (list@map ..code) + (list//map ..code) (text.join-with ..input-separator) (text.enclose ["(" ")"]) (format (:representation func)) @@ -153,7 +153,7 @@ (def: #export (do method table args) (-> Text (Expression Any) (List (Expression Any)) (Computation Any)) (|> args - (list@map ..code) + (list//map ..code) (text.join-with ..input-separator) (text.enclose ["(" ")"]) (format (:representation table) ":" method) @@ -212,7 +212,7 @@ (def: locations (-> (List (Location Any)) Text) - (|>> (list@map ..code) + (|>> (list//map ..code) (text.join-with ..input-separator))) (def: #export (local vars) @@ -253,7 +253,7 @@ (-> (List Var) (Expression Any) Statement Statement) (:abstraction (format "for " (|> vars - (list@map ..code) + (list//map ..code) (text.join-with ..input-separator)) " in " (:representation source) " do" (..nest (:representation body!)) @@ -303,7 +303,7 @@ (def: #export (cond clauses else!) (-> (List [(Expression Any) Statement]) Statement Statement) - (list@fold (.function (_ [test then!] next!) - (..if test then! next!)) - else! - (list.reverse clauses))) + (list//fold (.function (_ [test then!] next!) + (..if test then! next!)) + else! + (list.reverse clauses))) diff --git a/stdlib/source/lux/target/php.lux b/stdlib/source/lux/target/php.lux index 308183868..67a893bab 100644 --- a/stdlib/source/lux/target/php.lux +++ b/stdlib/source/lux/target/php.lux @@ -8,7 +8,7 @@ ["." text ["%" format (#+ format)]] [collection - ["." list ("#@." functor fold)]]] + ["." list ("#//." functor fold)]]] [macro ["." template]] [type @@ -137,7 +137,7 @@ (def: arguments (-> (List (Expression Any)) Text) - (|>> (list@map ..code) (text.join-with ..input-separator) ..group)) + (|>> (list//map ..code) (text.join-with ..input-separator) ..group)) (def: #export (apply/* args func) (-> (List (Expression Any)) (Expression Any) (Computation Any)) @@ -146,10 +146,10 @@ (def: parameters (-> (List Argument) Text) - (|>> (list@map (function (_ [reference? var]) - (.if reference? - (format "&" (:representation var)) - (:representation var)))) + (|>> (list//map (function (_ [reference? var]) + (.if reference? + (format "&" (:representation var)) + (:representation var)))) (text.join-with ..input-separator) ..group)) @@ -220,7 +220,7 @@ (def: #export (array/* values) (-> (List (Expression Any)) Literal) (|> values - (list@map ..code) + (list//map ..code) (text.join-with ..input-separator) ..group (format "array") @@ -233,8 +233,8 @@ (def: #export (array/** kvs) (-> (List [(Expression Any) (Expression Any)]) Literal) (|> kvs - (list@map (function (_ [key value]) - (format (:representation key) " => " (:representation value)))) + (list//map (function (_ [key value]) + (format (:representation key) " => " (:representation value)))) (text.join-with ..input-separator) ..group (format "array") @@ -386,7 +386,7 @@ (format "try " (..block (:representation body!)) text.new-line (|> excepts - (list@map catch) + (list//map catch) (text.join-with text.new-line))))) (template [ ] @@ -432,10 +432,10 @@ (def: #export (cond clauses else!) (-> (List [(Expression Any) Statement]) Statement Statement) - (list@fold (function (_ [test then!] next!) - (..if test then! next!)) - else! - (list.reverse clauses))) + (list//fold (function (_ [test then!] next!) + (..if test then! next!)) + else! + (list.reverse clauses))) (def: #export command-line-arguments Var diff --git a/stdlib/source/lux/target/python.lux b/stdlib/source/lux/target/python.lux index 2d7ff89a2..393ac68cf 100644 --- a/stdlib/source/lux/target/python.lux +++ b/stdlib/source/lux/target/python.lux @@ -13,7 +13,7 @@ ["." text ["%" format (#+ format)]] [collection - ["." list ("#@." functor fold)]]] + ["." list ("#//." functor fold)]]] [macro ["." template] ["." code] @@ -151,7 +151,7 @@ ..expression (format left-delimiter (|> entries - (list@map entry-serializer) + (list//map entry-serializer) (text.join-with ", ")) right-delimiter)))) @@ -184,7 +184,7 @@ (-> (Expression Any) (List (Expression Any)) (Computation Any)) (<| :abstraction ..expression - (format (:representation func) "(" (text.join-with ", " (list@map ..code args)) ")"))) + (format (:representation func) "(" (text.join-with ", " (list//map ..code args)) ")"))) (template [ ] [(def: ( var) @@ -202,7 +202,7 @@ ..expression (format (:representation func) (format "(" (|> args - (list@map (function (_ arg) (format (:representation arg) ", "))) + (list//map (function (_ arg) (format (:representation arg) ", "))) (text.join-with "")) ( extra) ")"))))] @@ -277,13 +277,13 @@ (-> (List (Var Any)) (Expression Any) (Computation Any)) (<| :abstraction ..expression - (format "lambda " (|> arguments (list@map ..code) (text.join-with ", ")) ": " + (format "lambda " (|> arguments (list//map ..code) (text.join-with ", ")) ": " (:representation body)))) (def: #export (set vars value) (-> (List (Location Any)) (Expression Any) (Statement Any)) (:abstraction - (format (|> vars (list@map ..code) (text.join-with ", ")) + (format (|> vars (list//map ..code) (text.join-with ", ")) " = " (:representation value)))) @@ -352,10 +352,10 @@ (format "try:" (..nest (:representation body!)) (|> excepts - (list@map (function (_ [classes exception catch!]) - (format text.new-line "except (" (text.join-with ", " (list@map ..code classes)) - ") as " (:representation exception) ":" - (..nest (:representation catch!))))) + (list//map (function (_ [classes exception catch!]) + (format text.new-line "except (" (text.join-with ", " (list//map ..code classes)) + ") as " (:representation exception) ":" + (..nest (:representation catch!))))) (text.join-with ""))))) (template [ ] @@ -373,7 +373,7 @@ (-> SVar (List (Ex [k] (Var k))) (Statement Any) (Statement Any)) (:abstraction (format "def " (:representation name) - "(" (|> args (list@map ..code) (text.join-with ", ")) "):" + "(" (|> args (list//map ..code) (text.join-with ", ")) "):" (..nest (:representation body))))) (def: #export (import module-name) @@ -388,17 +388,17 @@ (def: #export (cond clauses else!) (-> (List [(Expression Any) (Statement Any)]) (Statement Any) (Statement Any)) - (list@fold (.function (_ [test then!] next!) - (..if test then! next!)) - else! - (list.reverse clauses))) + (list//fold (.function (_ [test then!] next!) + (..if test then! next!)) + else! + (list.reverse clauses))) (syntax: (arity-inputs {arity s.nat}) (wrap (case arity 0 (.list) _ (|> (dec arity) (enum.range n.enum 0) - (list@map (|>> %.nat code.local-identifier)))))) + (list//map (|>> %.nat code.local-identifier)))))) (syntax: (arity-types {arity s.nat}) (wrap (list.repeat arity (` (Expression Any))))) diff --git a/stdlib/source/lux/target/ruby.lux b/stdlib/source/lux/target/ruby.lux index 9ac60c6c0..21ac6f73d 100644 --- a/stdlib/source/lux/target/ruby.lux +++ b/stdlib/source/lux/target/ruby.lux @@ -8,7 +8,7 @@ ["." text ["%" format (#+ format)]] [collection - ["." list ("#@." functor fold)]]] + ["." list ("#//." functor fold)]]] [macro ["." template]] [type @@ -171,15 +171,15 @@ (def: #export array (-> (List (Expression Any)) Literal) - (|>> (list@map (|>> :representation)) + (|>> (list//map (|>> :representation)) (text.join-with ..input-separator) (text.enclose ["[" "]"]) :abstraction)) (def: #export hash (-> (List [(Expression Any) (Expression Any)]) Literal) - (|>> (list@map (.function (_ [k v]) - (format (:representation k) " => " (:representation v)))) + (|>> (list//map (.function (_ [k v]) + (format (:representation k) " => " (:representation v)))) (text.join-with ..input-separator) (text.enclose ["{" "}"]) :abstraction)) @@ -187,7 +187,7 @@ (def: #export (apply/* args func) (-> (List (Expression Any)) (Expression Any) (Computation Any)) (|> args - (list@map (|>> :representation)) + (list//map (|>> :representation)) (text.join-with ..input-separator) (text.enclose ["(" ")"]) (format (:representation func)) @@ -229,7 +229,7 @@ (-> (List (Location Any)) (Expression Any) (Statement Any)) (:abstraction (format (|> vars - (list@map (|>> :representation)) + (list//map (|>> :representation)) (text.join-with ..input-separator)) " = " (:representation value) ..statement-suffix))) @@ -280,10 +280,10 @@ (format "begin" text.new-line (:representation body!) (|> rescues - (list@map (.function (_ [classes exception rescue]) - (format text.new-line "rescue " (text.join-with ..input-separator classes) - " => " (:representation exception) - text.new-line (..nest (:representation rescue))))) + (list//map (.function (_ [classes exception rescue]) + (format text.new-line "rescue " (text.join-with ..input-separator classes) + " => " (:representation exception) + text.new-line (..nest (:representation rescue))))) (text.join-with text.new-line))))) (def: #export (return value) @@ -312,7 +312,7 @@ ..block (format "def " (:representation name) (|> args - (list@map (|>> :representation)) + (list//map (|>> :representation)) (text.join-with ..input-separator) (text.enclose ["(" ")"])) text.new-line (:representation body!)))) @@ -320,7 +320,7 @@ (def: #export (lambda name args body!) (-> (Maybe LVar) (List (Var Any)) (Statement Any) Literal) (let [proc (|> (format (|> args - (list@map (|>> :representation)) + (list//map (|>> :representation)) (text.join-with ..input-separator) (text.enclose' "|")) " " @@ -380,7 +380,7 @@ (def: #export (cond clauses else!) (-> (List [(Expression Any) (Statement Any)]) (Statement Any) (Statement Any)) - (list@fold (.function (_ [test then!] next!) - (..if test then! next!)) - else! - (list.reverse clauses))) + (list//fold (.function (_ [test then!] next!) + (..if test then! next!)) + else! + (list.reverse clauses))) diff --git a/stdlib/source/lux/target/scheme.lux b/stdlib/source/lux/target/scheme.lux index c218367fa..342338450 100644 --- a/stdlib/source/lux/target/scheme.lux +++ b/stdlib/source/lux/target/scheme.lux @@ -8,7 +8,7 @@ ["." text ["%" format (#+ format)]] [collection - ["." list ("#@." functor fold)]]] + ["." list ("#//." functor fold)]]] [macro ["." template]] [type @@ -52,14 +52,14 @@ _ (|> (format " . " (:representation rest)) (format (|> mandatory - (list@map ..code) + (list//map ..code) (text.join-with " "))) (text.enclose ["(" ")"]) :abstraction)) #.None (|> mandatory - (list@map ..code) + (list//map ..code) (text.join-with " ") (text.enclose ["(" ")"]) :abstraction))) @@ -127,7 +127,7 @@ (def: form (-> (List (Code Any)) Code) - (|>> (list@map ..code) + (|>> (list//map ..code) (text.join-with " ") (text.enclose ["(" ")"]) :abstraction)) @@ -264,9 +264,9 @@ (-> (List [ Expression]) Expression Computation) (..form (list (..global ) (|> bindings - (list@map (.function (_ [binding/name binding/value]) - (..form (list (|> binding/name
)
-                                                   binding/value))))
+                         (list//map (.function (_ [binding/name binding/value])
+                                      (..form (list (|> binding/name 
)
+                                                    binding/value))))
                          ..form)
                      body)))]
 
@@ -288,10 +288,10 @@
 
   (def: #export (cond clauses else)
     (-> (List [Expression Expression]) Expression Computation)
-    (|> (list@fold (.function (_ [test then] next)
-                     (if test then next))
-                   else
-                   (list.reverse clauses))
+    (|> (list//fold (.function (_ [test then] next)
+                      (if test then next))
+                    else
+                    (list.reverse clauses))
         :representation
         :abstraction))
 
diff --git a/stdlib/source/lux/test.lux b/stdlib/source/lux/test.lux
index 2f54866c0..24b05c1fa 100644
--- a/stdlib/source/lux/test.lux
+++ b/stdlib/source/lux/test.lux
@@ -7,7 +7,7 @@
     ["." exception (#+ exception:)]
     ["." io]
     [concurrency
-     ["." promise (#+ Promise) ("#@." monad)]]
+     ["." promise (#+ Promise) ("#//." monad)]]
     ["<>" parser
      ["" code]]]
    [data
@@ -20,13 +20,13 @@
     ["." text
      ["%" format (#+ format)]]
     [collection
-     ["." list ("#@." functor fold)]
+     ["." list ("#//." functor fold)]
      ["." set (#+ Set)]]]
    [time
     ["." instant]
     ["." duration (#+ Duration)]]
    [math
-    ["." random (#+ Random) ("#@." monad)]]
+    ["." random (#+ Random) ("#//." monad)]]
    ["." meta]
    [macro
     [syntax (#+ syntax:)]
@@ -90,12 +90,12 @@
 
 (def: #export (context description)
   (-> Text Test Test)
-  (random@map (promise@map (function (_ [counters documentation])
-                             [counters (|> documentation
-                                           (text.split-all-with ..separator)
-                                           (list@map (|>> (format context-prefix)))
-                                           (text.join-with ..separator)
-                                           (format description ..separator))]))))
+  (random//map (promise//map (function (_ [counters documentation])
+                               [counters (|> documentation
+                                             (text.split-all-with ..separator)
+                                             (list//map (|>> (format context-prefix)))
+                                             (text.join-with ..separator)
+                                             (format description ..separator))]))))
 
 (def: failure-prefix "[Failure] ")
 (def: success-prefix "[Success] ")
@@ -104,13 +104,13 @@
   (-> Text Test)
   (|>> (format ..failure-prefix)
        [failure]
-       promise@wrap
-       random@wrap))
+       promise//wrap
+       random//wrap))
 
 (def: #export (assert message condition)
   {#.doc "Check that a condition is #1, and fail with the given message otherwise."}
   (-> Text Bit Assertion)
-  (<| promise@wrap
+  (<| promise//wrap
       (if condition
         [success (format ..success-prefix message)]
         [failure (format ..failure-prefix message)])))
@@ -239,13 +239,13 @@
 (def: (claim' coverage condition)
   (-> (List Name) Bit Assertion)
   (let [message (|> coverage
-                    (list@map %.name)
+                    (list//map %.name)
                     (text.join-with " & "))
         coverage (set.from-list name.hash coverage)]
     (|> (..assert message condition)
-        (promise@map (function (_ [counters documentation])
-                       [(update@ #actual-coverage (set.union coverage) counters)
-                        documentation])))))
+        (promise//map (function (_ [counters documentation])
+                        [(update@ #actual-coverage (set.union coverage) counters)
+                         documentation])))))
 
 (def: (cover' coverage condition)
   (-> (List Name) Bit Test)
@@ -255,13 +255,13 @@
 (def: (with-cover' coverage test)
   (-> (List Name) Test Test)
   (let [context (|> coverage
-                    (list@map %.name)
+                    (list//map %.name)
                     (text.join-with " & "))
         coverage (set.from-list name.hash coverage)]
-    (random@map (promise@map (function (_ [counters documentation])
-                               [(update@ #actual-coverage (set.union coverage) counters)
-                                documentation]))
-                (..context context test))))
+    (random//map (promise//map (function (_ [counters documentation])
+                                 [(update@ #actual-coverage (set.union coverage) counters)
+                                  documentation]))
+                 (..context context test))))
 
 (def: (name-code name)
   (-> Name Code)
@@ -276,9 +276,9 @@
 (template [ ]
   [(syntax: #export ( {coverage (.tuple (<>.many .any))}
                              condition)
-     (let [coverage (list@map (function (_ definition)
-                                (` ((~! ..reference) (~ definition))))
-                              coverage)]
+     (let [coverage (list//map (function (_ definition)
+                                 (` ((~! ..reference) (~ definition))))
+                               coverage)]
        (wrap (list (` ((~! )
                        (: (.List .Name)
                           (.list (~+ coverage)))
@@ -290,9 +290,9 @@
 
 (syntax: #export (with-cover {coverage (.tuple (<>.many .any))}
                    test)
-  (let [coverage (list@map (function (_ definition)
-                             (` ((~! ..reference) (~ definition))))
-                           coverage)]
+  (let [coverage (list//map (function (_ definition)
+                              (` ((~! ..reference) (~ definition))))
+                            coverage)]
     (wrap (list (` ((~! ..with-cover')
                     (: (.List .Name)
                        (.list (~+ coverage)))
@@ -306,12 +306,12 @@
   (-> Text Text Test Test)
   (let [coverage (|> coverage
                      (text.split-all-with ..coverage-separator)
-                     (list@map (|>> [module]))
+                     (list//map (|>> [module]))
                      (set.from-list name.hash))]
     (|> (..context module test)
-        (random@map (promise@map (function (_ [counters documentation])
-                                   [(update@ #expected-coverage (set.union coverage) counters)
-                                    documentation]))))))
+        (random//map (promise//map (function (_ [counters documentation])
+                                     [(update@ #expected-coverage (set.union coverage) counters)
+                                      documentation]))))))
 
 (syntax: #export (covering {module .identifier}
                            test)
@@ -320,7 +320,7 @@
      definitions (meta.definitions module)
      #let [coverage (|> definitions
                         (list.filter (|>> product.right product.left))
-                        (list@map product.left)
+                        (list//map product.left)
                         (text.join-with ..coverage-separator))]]
     (wrap (list (` ((~! ..covering')
                     (~ (code.text module))
@@ -350,12 +350,12 @@
                            (..assert (exception.construct ..error-during-execution [error]) false))
                          io.io
                          promise.future
-                         promise@join)))]]
+                         promise//join)))]]
     (wrap (do {! promise.monad}
-            [assertions (monad.seq ! (list@map run! tests))]
+            [assertions (monad.seq ! (list//map run! tests))]
             (wrap [(|> assertions
-                       (list@map product.left)
-                       (list@fold ..add-counters ..start))
+                       (list//map product.left)
+                       (list//fold ..add-counters ..start))
                    (|> assertions
-                       (list@map product.right)
+                       (list//map product.right)
                        (text.join-with ..separator))])))))
diff --git a/stdlib/source/lux/tool/compiler/default/init.lux b/stdlib/source/lux/tool/compiler/default/init.lux
index a3eaa03e3..441be4bed 100644
--- a/stdlib/source/lux/tool/compiler/default/init.lux
+++ b/stdlib/source/lux/tool/compiler/default/init.lux
@@ -9,13 +9,13 @@
    [data
     [binary (#+ Binary)]
     ["." product]
-    ["." text ("#@." hash)
+    ["." text ("#//." hash)
      ["%" format (#+ format)]]
     [collection
-     ["." list ("#@." functor)]
+     ["." list ("#//." functor)]
      ["." dictionary]
      ["." set]
-     ["." row ("#@." functor)]]]
+     ["." row ("#//." functor)]]]
    ["." meta]
    [world
     ["." file]]]
@@ -208,7 +208,7 @@
 (def: (default-dependencies prelude input)
   (-> Module ///.Input (List Module))
   (list& archive.runtime-module
-         (if (text@= prelude (get@ #///.module input))
+         (if (text//= prelude (get@ #///.module input))
            (list)
            (list prelude))))
 
@@ -226,7 +226,7 @@
         {#///.dependencies dependencies
          #///.process (function (_ state archive)
                         (do {! try.monad}
-                          [#let [hash (text@hash (get@ #///.code input))]
+                          [#let [hash (text//hash (get@ #///.code input))]
                            [state [source buffer]] (<| (///phase.run' state)
                                                        (..begin dependencies hash input))
                            #let [module (get@ #///.module input)]]
@@ -247,15 +247,15 @@
                                   (wrap [state
                                          (#.Right [[descriptor (document.write key analysis-module)]
                                                    (|> final-buffer
-                                                       (row@map (function (_ [name directive])
-                                                                  [name (write-directive directive)])))])]))
+                                                       (row//map (function (_ [name directive])
+                                                                   [name (write-directive directive)])))])]))
 
                                 (#.Some [source requirements temporary-payload])
                                 (let [[temporary-buffer temporary-registry] temporary-payload]
                                   (wrap [state
                                          (#.Left {#///.dependencies (|> requirements
                                                                         (get@ #///directive.imports)
-                                                                        (list@map product.left))
+                                                                        (list//map product.left))
                                                   #///.process (function (_ state archive)
                                                                  (recur (<| (///phase.run' state)
                                                                             (do {! ///phase.monad}
diff --git a/stdlib/source/lux/tool/compiler/default/platform.lux b/stdlib/source/lux/tool/compiler/default/platform.lux
index 5e3ad19f9..3e9d7a647 100644
--- a/stdlib/source/lux/tool/compiler/default/platform.lux
+++ b/stdlib/source/lux/tool/compiler/default/platform.lux
@@ -9,20 +9,20 @@
     ["." try (#+ Try)]
     ["." exception (#+ exception:)]
     [concurrency
-     ["." promise (#+ Promise Resolver) ("#@." monad)]
+     ["." promise (#+ Promise Resolver) ("#//." monad)]
      ["." stm (#+ Var STM)]]]
    [data
     ["." binary (#+ Binary)]
     ["." bit]
     ["." product]
     ["." maybe]
-    ["." text ("#@." equivalence)
+    ["." text ("#//." equivalence)
      ["%" format (#+ format)]]
     [collection
      ["." dictionary (#+ Dictionary)]
-     ["." row (#+ Row) ("#@." fold)]
+     ["." row (#+ Row) ("#//." fold)]
      ["." set (#+ Set)]
-     ["." list ("#@." monoid functor fold)]]
+     ["." list ("#//." monoid functor fold)]]
     [format
      ["_" binary (#+ Writer)]]]
    [world
@@ -210,13 +210,13 @@
                                  extender)]
        _ (ioW.enable (get@ #&file-system platform) static)
        [archive analysis-state bundles] (ioW.thaw (get@ #host platform) (get@ #&file-system platform) static import compilation-sources)
-       state (promise@wrap (initialize-state extender bundles analysis-state state))]
+       state (promise//wrap (initialize-state extender bundles analysis-state state))]
       (if (archive.archived? archive archive.runtime-module)
         (wrap [state archive])
         (do (try.with promise.monad)
           [[state [archive payload]] (|> (..process-runtime archive platform)
                                          (///phase.run' state)
-                                         promise@wrap)
+                                         promise//wrap)
            _ (..cache-module static platform 0 payload)]
           (wrap [state archive])))))
 
@@ -228,9 +228,9 @@
                 #///directive.state
                 #extension.state
                 #///generation.log])
-         (row@fold (function (_ right left)
-                     (format left text.new-line right))
-                   "")))
+         (row//fold (function (_ right left)
+                      (format left text.new-line right))
+                    "")))
 
   (def: with-reset-log
     (All []
@@ -277,10 +277,10 @@
                                          (|> mapping
                                              (dictionary.upsert source ..empty (set.add target))
                                              (dictionary.update source (set.union forward)))]
-                                     (list@fold (function (_ previous)
-                                                  (dictionary.upsert previous ..empty (set.add target)))
-                                                with-dependence+transitives
-                                                (set.to-list backward))))))]
+                                     (list//fold (function (_ previous)
+                                                   (dictionary.upsert previous ..empty (set.add target)))
+                                                 with-dependence+transitives
+                                                 (set.to-list backward))))))]
       (|> dependence
           (update@ #depends-on
                    (update-dependence
@@ -315,7 +315,7 @@
 
   (def: (verify-dependencies importer importee dependence)
     (-> Module Module Dependence (Try Any))
-    (cond (text@= importer importee)
+    (cond (text//= importer importee)
           (exception.throw ..module-cannot-import-itself [importer])
 
           (..circular-dependency? importer importee dependence)
@@ -355,7 +355,7 @@
                                         (:assume
                                          (stm.commit
                                           (do {! stm.monad}
-                                            [dependence (if (text@= archive.runtime-module importer)
+                                            [dependence (if (text//= archive.runtime-module importer)
                                                           (stm.read dependence)
                                                           (do !
                                                             [[_ dependence] (stm.update (..depend importer module) dependence)]
@@ -369,7 +369,7 @@
                                               (do !
                                                 [[archive state] (stm.read current)]
                                                 (if (archive.archived? archive module)
-                                                  (wrap [(promise@wrap (#try.Success [archive state]))
+                                                  (wrap [(promise//wrap (#try.Success [archive state]))
                                                          #.None])
                                                   (do !
                                                     [@pending (stm.read pending)]
@@ -399,7 +399,7 @@
                                                                           signal])]))
                                                         
                                                         (#try.Failure error)
-                                                        (wrap [(promise@wrap (#try.Failure error))
+                                                        (wrap [(promise//wrap (#try.Failure error))
                                                                #.None]))))))))))})
                _ (case signal
                    #.None
@@ -435,7 +435,7 @@
                                   (wrap [module lux-module])))
                             (archive.archived archive))
          #let [additions (|> modules
-                             (list@map product.left)
+                             (list//map product.left)
                              (set.from-list text.hash))]]
         (wrap (update@ [#extension.state
                         #///directive.analysis
@@ -445,11 +445,11 @@
                          (|> analysis-state
                              (:coerce .Lux)
                              (update@ #.modules (function (_ current)
-                                                  (list@compose (list.filter (|>> product.left
-                                                                                  (set.member? additions)
-                                                                                  not)
-                                                                             current)
-                                                                modules)))
+                                                  (list//compose (list.filter (|>> product.left
+                                                                                   (set.member? additions)
+                                                                                   not)
+                                                                              current)
+                                                                 modules)))
                              :assume))
                        state))))
 
@@ -486,7 +486,7 @@
                                  all-dependencies (: (List Module)
                                                      (list))]
                             (let [new-dependencies (get@ #///.dependencies compilation)
-                                  all-dependencies (list@compose new-dependencies all-dependencies)
+                                  all-dependencies (list//compose new-dependencies all-dependencies)
                                   continue! (:share []
                                                     {
                                                      platform}
@@ -502,11 +502,11 @@
                                                    (#.Cons _)
                                                    (do !
                                                      [archive,document+ (|> new-dependencies
-                                                                            (list@map (import! module))
+                                                                            (list//map (import! module))
                                                                             (monad.seq ..monad))
                                                       #let [archive (|> archive,document+
-                                                                        (list@map product.left)
-                                                                        (list@fold archive.merge archive))]]
+                                                                        (list//map product.left)
+                                                                        (list//fold archive.merge archive))]]
                                                      (wrap [archive (try.assume
                                                                      (..updated-state archive state))])))]
                                 (case ((get@ #///.process compilation)
@@ -533,11 +533,11 @@
                                                (..with-reset-log state)])
                                         
                                         (#try.Failure error)
-                                        (promise@wrap (#try.Failure error)))))
+                                        (promise//wrap (#try.Failure error)))))
 
                                   (#try.Failure error)
                                   (do !
                                     [_ (ioW.freeze (get@ #&file-system platform) static archive)]
-                                    (promise@wrap (#try.Failure error))))))))))]
+                                    (promise//wrap (#try.Failure error))))))))))]
         (compiler archive.runtime-module compilation-module)))
     ))
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
index 0e6d9ba7d..1c50d6eb5 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
@@ -273,9 +273,6 @@
           (///bundle.install "%" (binary Frac Frac Frac))
           (///bundle.install "=" (binary Frac Frac Bit))
           (///bundle.install "<" (binary Frac Frac Bit))
-          (///bundle.install "smallest" (nullary Frac))
-          (///bundle.install "min" (nullary Frac))
-          (///bundle.install "max" (nullary Frac))
           (///bundle.install "i64" (unary Frac Int))
           (///bundle.install "encode" (unary Frac Text))
           (///bundle.install "decode" (unary Text (type (Maybe Frac)))))))
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
index 13d67f8fa..2122a38a4 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
@@ -1,6 +1,5 @@
 (.module:
   [lux #*
-   [host (#+ import:)]
    [abstract
     ["." monad (#+ do)]]
    [control
@@ -57,37 +56,6 @@
   )
 
 ## [[Numbers]]
-(for {@.old
-      (as-is (import: java/lang/Double
-               (#static MIN_VALUE double)
-               (#static MAX_VALUE double))
-
-             (template [ ]
-               [(def: ( _)
-                  (Nullary Expression)
-                  (//primitive.f64 ))]
-
-               [f64//smallest (java/lang/Double::MIN_VALUE)]
-               [f64//min      (f.* -1.0 (java/lang/Double::MAX_VALUE))]
-               [f64//max      (java/lang/Double::MAX_VALUE)]
-               ))
-
-      @.js
-      (as-is (import: Number
-               (#static MIN_VALUE Frac)
-               (#static MAX_VALUE Frac))
-
-             (template [ ]
-               [(def: ( _)
-                  (Nullary Expression)
-                  (//primitive.f64 ))]
-
-               [f64//smallest (Number::MIN_VALUE)]
-               [f64//min      (f.* -1.0 (Number::MAX_VALUE))]
-               [f64//max      (Number::MAX_VALUE)]
-               )
-             )})
-
 (def: f64//decode
   (Unary Expression)
   (|>> list
@@ -212,9 +180,6 @@
           (/.install "%" (binary (product.uncurry _.%)))
           (/.install "=" (binary (product.uncurry _.=)))
           (/.install "<" (binary (product.uncurry _.<)))
-          (/.install "smallest" (nullary f64//smallest))
-          (/.install "min" (nullary f64//min))
-          (/.install "max" (nullary f64//max))
           (/.install "i64" (unary //runtime.i64//from-number))
           (/.install "encode" (unary (_.do "toString" (list))))
           (/.install "decode" (unary f64//decode)))))
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
index 68c69d153..5c98aeba1 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
@@ -1,6 +1,5 @@
 (.module:
   [lux (#- Type)
-   [host (#+ import:)]
    [abstract
     ["." monad (#+ do)]]
    [control
@@ -187,22 +186,6 @@
   [i64::logical-right-shift    _.lushr]
   )
 
-(import: java/lang/Double
-  (#static MIN_VALUE double)
-  (#static MAX_VALUE double))
-
-(template [ ]
-  [(def: ( _)
-     (Nullary (Bytecode Any))
-     ($_ _.compose
-         (_.double )
-         (///value.wrap type.double)))]
-
-  [f64::smallest (java/lang/Double::MIN_VALUE)]
-  [f64::min      (f.* -1.0 (java/lang/Double::MAX_VALUE))]
-  [f64::max      (java/lang/Double::MAX_VALUE)]
-  )
-
 (template [  ]
   [(def: ( [paramG subjectG])
      (Binary (Bytecode Any))
@@ -313,9 +296,6 @@
           (/////bundle.install "%" (binary ..f64::%))
           (/////bundle.install "=" (binary ..f64::=))
           (/////bundle.install "<" (binary ..f64::<))
-          (/////bundle.install "smallest" (nullary ..f64::smallest))
-          (/////bundle.install "min" (nullary ..f64::min))
-          (/////bundle.install "max" (nullary ..f64::max))
           (/////bundle.install "i64" (unary ..f64::i64))
           (/////bundle.install "encode" (unary ..f64::encode))
           (/////bundle.install "decode" (unary ..f64::decode)))))
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
index eb3529f6d..b9db6e702 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
@@ -1,6 +1,5 @@
 (.module:
   [lux #*
-   [host (#+ import:)]
    [abstract
     ["." monad (#+ do)]]
    [control
@@ -57,20 +56,6 @@
           (/.install "frac" (unary (_./ (_.float +1.0))))
           (/.install "char" (unary (!unary "string.char"))))))
 
-(import: java/lang/Double
-  (#static MIN_VALUE double)
-  (#static MAX_VALUE double))
-
-(template [ ]
-  [(def: ( _)
-     (Nullary Literal)
-     (_.float ))]
-
-  [frac//smallest (java/lang/Double::MIN_VALUE)]
-  [frac//min      (f.* -1.0 (java/lang/Double::MAX_VALUE))]
-  [frac//max      (java/lang/Double::MAX_VALUE)]
-  )
-
 (def: frac//decode
   (Unary (Expression Any))
   (|>> list _.apply/* (|> (_.var "tonumber")) _.return (_.closure (list)) //runtime.lux//try))
@@ -86,9 +71,6 @@
           (/.install "%" (binary (product.uncurry _.%)))
           (/.install "=" (binary (product.uncurry _.=)))
           (/.install "<" (binary (product.uncurry _.<)))
-          (/.install "smallest" (nullary frac//smallest))
-          (/.install "min" (nullary frac//min))
-          (/.install "max" (nullary frac//max))
           (/.install "int" (unary (!unary "math.floor")))
           (/.install "encode" (unary (!unary "tostring")))
           (/.install "decode" (unary ..frac//decode)))))
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
index 2c43370a6..1c58fec4c 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
@@ -1,6 +1,5 @@
 (.module:
   [lux #*
-   [host (#+ import:)]
    [abstract
     ["." monad (#+ do)]]
    [control
@@ -54,20 +53,6 @@
           (/.install "frac" (unary _.float/1))
           (/.install "char" (unary _.chr/1)))))
 
-(import: java/lang/Double
-  (#static MIN_VALUE double)
-  (#static MAX_VALUE double))
-
-(template [ ]
-  [(def: ( _)
-     (Nullary (Expression Any))
-     (_.float ))]
-
-  [frac//smallest (java/lang/Double::MIN_VALUE)]
-  [frac//min      (f.* -1.0 (java/lang/Double::MAX_VALUE))]
-  [frac//max      (java/lang/Double::MAX_VALUE)]
-  )
-
 (def: frac-procs
   Bundle
   (<| (/.prefix "frac")
@@ -79,9 +64,6 @@
           (/.install "%" (binary (product.uncurry _.%)))
           (/.install "=" (binary (product.uncurry _.=)))
           (/.install "<" (binary (product.uncurry _.<)))
-          (/.install "smallest" (nullary frac//smallest))
-          (/.install "min" (nullary frac//min))
-          (/.install "max" (nullary frac//max))
           (/.install "int" (unary _.int/1))
           (/.install "encode" (unary _.repr/1))
           (/.install "decode" (unary //runtime.frac//decode)))))
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
index ec5ba8e26..0ab831668 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
@@ -1,6 +1,5 @@
 (.module:
   [lux #*
-   [host (#+ import:)]
    [abstract
     ["." monad (#+ do)]]
    [control
@@ -50,20 +49,6 @@
           (/.install "-" (binary (..keep-i64 (product.uncurry _.-))))
           )))
 
-(import: java/lang/Double
-  (#static MIN_VALUE double)
-  (#static MAX_VALUE double))
-
-(template [ ]
-  [(def: ( _)
-     (Nullary (Expression Any))
-     (_.float ))]
-
-  [frac//smallest (java/lang/Double::MIN_VALUE)]
-  [frac//min      (f.* -1.0 (java/lang/Double::MAX_VALUE))]
-  [frac//max      (java/lang/Double::MAX_VALUE)]
-  )
-
 (def: int-procs
   Bundle
   (<| (/.prefix "int")
@@ -86,9 +71,6 @@
           (/.install "%" (binary (product.uncurry _.%)))
           (/.install "=" (binary (product.uncurry _.=)))
           (/.install "<" (binary (product.uncurry _.<)))
-          (/.install "smallest" (nullary frac//smallest))
-          (/.install "min" (nullary frac//min))
-          (/.install "max" (nullary frac//max))
           (/.install "int" (unary (_.do "floor" (list))))
           (/.install "encode" (unary (_.do "to_s" (list))))
           (/.install "decode" (unary //runtime.f64//decode)))))
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/common-lisp/extension/common.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/common-lisp/extension/common.lux
index 701738854..750688dd6 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/common-lisp/extension/common.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/common-lisp/extension/common.lux
@@ -1,6 +1,5 @@
 (.module:
   [lux #*
-   [host (#+ import:)]
    [abstract
     ["." monad (#+ do)]]
    [control
@@ -64,20 +63,6 @@
           (bundle.install "char" (unary (|>> _.code-char/1 _.string/1)))
           )))
 
-(import: java/lang/Double
-  (#static MIN_VALUE double)
-  (#static MAX_VALUE double))
-
-(template [ ]
-  [(def: ( _)
-     (Nullary (Expression Any))
-     (_.double ))]
-
-  [f64//smallest (java/lang/Double::MIN_VALUE)]
-  [f64//min      (f.* -1.0 (java/lang/Double::MAX_VALUE))]
-  [f64//max      (java/lang/Double::MAX_VALUE)]
-  )
-
 (def: f64-procs
   Bundle
   (<| (bundle.prefix "f64")
@@ -89,9 +74,6 @@
           (bundle.install "%" (binary (product.uncurry _.mod)))
           (bundle.install "=" (binary (product.uncurry _.=)))
           (bundle.install "<" (binary (product.uncurry _.<)))
-          (bundle.install "smallest" (nullary f64//smallest))
-          (bundle.install "min" (nullary f64//min))
-          (bundle.install "max" (nullary f64//max))
           (bundle.install "i64" (unary _.floor/1))
           (bundle.install "encode" (unary _.write-to-string/1))
           (bundle.install "decode" (unary (let [@temp (_.var "temp")]
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/extension/common.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/extension/common.lux
index 234192ede..2a4c4c50d 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/extension/common.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/extension/common.lux
@@ -1,6 +1,5 @@
 (.module:
   [lux #*
-   [host (#+ import:)]
    [abstract
     ["." monad (#+ do)]]
    [control
@@ -56,20 +55,6 @@
           (bundle.install "frac" (unary _.floatval/1))
           (bundle.install "char" (unary _.chr/1)))))
 
-(import: java/lang/Double
-  (#static MIN_VALUE double)
-  (#static MAX_VALUE double))
-
-(template [ ]
-  [(def: ( _)
-     (Nullary (Expression Any))
-     (_.float ))]
-
-  [frac//smallest (java/lang/Double::MIN_VALUE)]
-  [frac//min      (f.* -1.0 (java/lang/Double::MAX_VALUE))]
-  [frac//max      (java/lang/Double::MAX_VALUE)]
-  )
-
 (def: frac-procs
   Bundle
   (<| (bundle.prefix "frac")
@@ -81,9 +66,6 @@
           (bundle.install "%" (binary (product.uncurry _.%)))
           (bundle.install "=" (binary (product.uncurry _.=)))
           (bundle.install "<" (binary (product.uncurry _.<)))
-          (bundle.install "smallest" (nullary frac//smallest))
-          (bundle.install "min" (nullary frac//min))
-          (bundle.install "max" (nullary frac//max))
           (bundle.install "int" (unary _.intval/1))
           (bundle.install "encode" (unary _.strval/1))
           (bundle.install "decode" (unary (|>> _.floatval/1 ///runtime.some)))
diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux
index b13bc5834..782838b92 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux
@@ -1,6 +1,5 @@
 (.module:
   [lux #*
-   [host (#+ import:)]
    [abstract
     ["." monad (#+ do)]]
    [control
@@ -100,20 +99,6 @@
   Binary
   (///runtime.i64//logical-right-shift (_.remainder/2 (_.int +64) paramO) subjectO))
 
-(import: java/lang/Double
-  (#static MIN_VALUE double)
-  (#static MAX_VALUE double))
-
-(template [  ]
-  [(def: ( _)
-     Nullary
-     ( ))]
-
-  [f64::smallest (Double::MIN_VALUE)            _.float]
-  [f64::min      (f.* -1.0 (Double::MAX_VALUE)) _.float]
-  [f64::max      (Double::MAX_VALUE)            _.float]
-  )
-
 (template [ ]
   [(def: ( [subjectO paramO])
      Binary
@@ -185,9 +170,6 @@
           (bundle.install "%" (binary f64::%))
           (bundle.install "=" (binary f64::=))
           (bundle.install "<" (binary f64::<))
-          (bundle.install "smallest" (nullary f64::smallest))
-          (bundle.install "min" (nullary f64::min))
-          (bundle.install "max" (nullary f64::max))
           (bundle.install "i64" (unary _.exact/1))
           (bundle.install "encode" (unary _.number->string/1))
           (bundle.install "decode" (unary ///runtime.frac//decode)))))
diff --git a/stdlib/source/poly/lux/abstract/equivalence.lux b/stdlib/source/poly/lux/abstract/equivalence.lux
index 8826b9ed9..a4d139aa4 100644
--- a/stdlib/source/poly/lux/abstract/equivalence.lux
+++ b/stdlib/source/poly/lux/abstract/equivalence.lux
@@ -11,14 +11,14 @@
     ["." bit]
     ["." maybe]
     [number
-     ["." nat ("#@." decimal)]
+     ["." nat ("#//." decimal)]
      ["." int]
      ["." rev]
      ["." frac]]
-    ["." text ("#@." monoid)
+    ["." text ("#//." monoid)
      ["%" format (#+ format)]]
     [collection
-     ["." list ("#@." monad)]
+     ["." list ("#//." monad)]
      ["." row]
      ["." array]
      ["." queue]
@@ -115,15 +115,15 @@
               (wrap (` (: (~ (@Equivalence inputT))
                           (function ((~ g!_) (~ g!left) (~ g!right))
                             (case [(~ g!left) (~ g!right)]
-                              (~+ (list@join (list@map (function (_ [tag g!eq])
-                                                         (if (nat.= last tag)
-                                                           (list (` [((~ (code.nat (dec tag))) #1 (~ g!left))
-                                                                     ((~ (code.nat (dec tag))) #1 (~ g!right))])
-                                                                 (` ((~ g!eq) (~ g!left) (~ g!right))))
-                                                           (list (` [((~ (code.nat tag)) #0 (~ g!left))
-                                                                     ((~ (code.nat tag)) #0 (~ g!right))])
-                                                                 (` ((~ g!eq) (~ g!left) (~ g!right))))))
-                                                       (list.enumeration members))))
+                              (~+ (list//join (list//map (function (_ [tag g!eq])
+                                                           (if (nat.= last tag)
+                                                             (list (` [((~ (code.nat (dec tag))) #1 (~ g!left))
+                                                                       ((~ (code.nat (dec tag))) #1 (~ g!right))])
+                                                                   (` ((~ g!eq) (~ g!left) (~ g!right))))
+                                                             (list (` [((~ (code.nat tag)) #0 (~ g!left))
+                                                                       ((~ (code.nat tag)) #0 (~ g!right))])
+                                                                   (` ((~ g!eq) (~ g!left) (~ g!right))))))
+                                                         (list.enumeration members))))
                               (~ g!_)
                               #0))))))
             ## Tuples
@@ -131,13 +131,13 @@
               [g!eqs (.tuple (p.many equivalence))
                #let [g!_ (code.local-identifier "_____________")
                      indices (list.indices (list.size g!eqs))
-                     g!lefts (list@map (|>> nat@encode (text@compose "left") code.local-identifier) indices)
-                     g!rights (list@map (|>> nat@encode (text@compose "right") code.local-identifier) indices)]]
+                     g!lefts (list//map (|>> nat//encode (text//compose "left") code.local-identifier) indices)
+                     g!rights (list//map (|>> nat//encode (text//compose "right") code.local-identifier) indices)]]
               (wrap (` (: (~ (@Equivalence inputT))
                           (function ((~ g!_) [(~+ g!lefts)] [(~+ g!rights)])
                             (and (~+ (|> (list.zip/3 g!eqs g!lefts g!rights)
-                                         (list@map (function (_ [g!eq g!left g!right])
-                                                     (` ((~ g!eq) (~ g!left) (~ g!right)))))))))))))
+                                         (list//map (function (_ [g!eq g!left g!right])
+                                                      (` ((~ g!eq) (~ g!left) (~ g!right)))))))))))))
             ## Type recursion
             (do !
               [[g!self bodyC] (.recursive equivalence)
@@ -156,7 +156,7 @@
             (do !
               [[funcC varsC bodyC] (.polymorphic equivalence)]
               (wrap (` (: (All [(~+ varsC)]
-                            (-> (~+ (list@map (|>> (~) ((~! /.Equivalence)) (`)) varsC))
+                            (-> (~+ (list//map (|>> (~) ((~! /.Equivalence)) (`)) varsC))
                                 ((~! /.Equivalence) ((~ (poly.to-code *env* inputT)) (~+ varsC)))))
                           (function ((~ funcC) (~+ varsC))
                             (~ bodyC))))))
diff --git a/stdlib/source/poly/lux/data/format/json.lux b/stdlib/source/poly/lux/data/format/json.lux
index 9cc39c994..afe34c404 100644
--- a/stdlib/source/poly/lux/data/format/json.lux
+++ b/stdlib/source/poly/lux/data/format/json.lux
@@ -18,14 +18,14 @@
     ["." product]
     [number
      ["." i64]
-     ["n" nat ("#@." decimal)]
+     ["n" nat ("#//." decimal)]
      ["." int]
-     ["." frac ("#@." decimal)]]
-    ["." text ("#@." equivalence)
+     ["." frac ("#//." decimal)]]
+    ["." text ("#//." equivalence)
      ["%" format (#+ format)]]
     [collection
-     ["." list ("#@." fold monad)]
-     ["." row (#+ Row row) ("#@." monad)]
+     ["." list ("#//." fold monad)]
+     ["." row (#+ Row row) ("#//." monad)]
      ["d" dictionary]]]
    [time
     ## ["." instant]
@@ -146,8 +146,8 @@
                                            codec//encode))]
             (wrap (` (: (~ (@JSON//encode inputT))
                         (|>> ((~! d.entries))
-                             ((~! list@map) (function ((~ g!_) [(~ g!key) (~ g!val)])
-                                              [(~ g!key) ((~ =val=) (~ g!val))]))
+                             ((~! list//map) (function ((~ g!_) [(~ g!key) (~ g!val)])
+                                               [(~ g!key) ((~ =val=) (~ g!val))]))
                              ((~! d.from-list) (~! text.hash))
                              #/.Object)))))
           (do !
@@ -161,7 +161,7 @@
                                          (.exactly .List)
                                          codec//encode))]
             (wrap (` (: (~ (@JSON//encode inputT))
-                        (|>> ((~! list@map) (~ =sub=)) ((~! row.from-list)) #/.Array)))))
+                        (|>> ((~! list//map) (~ =sub=)) ((~! row.from-list)) #/.Array)))))
           (do !
             [#let [g!_ (code.local-identifier "_______")
                    g!input (code.local-identifier "_______input")]
@@ -170,28 +170,28 @@
             (wrap (` (: (~ (@JSON//encode inputT))
                         (function ((~ g!_) (~ g!input))
                           (case (~ g!input)
-                            (~+ (list@join (list@map (function (_ [tag g!encode])
-                                                       (if (n.= last tag)
-                                                         (list (` ((~ (code.nat (dec tag))) #1 (~ g!input)))
-                                                               (` ((~! /.json) [(~ (code.frac (..tag (dec tag))))
-                                                                                #1
-                                                                                ((~ g!encode) (~ g!input))])))
-                                                         (list (` ((~ (code.nat tag)) #0 (~ g!input)))
-                                                               (` ((~! /.json) [(~ (code.frac (..tag tag)))
-                                                                                #0
-                                                                                ((~ g!encode) (~ g!input))])))))
-                                                     (list.enumeration members))))))))))
+                            (~+ (list//join (list//map (function (_ [tag g!encode])
+                                                         (if (n.= last tag)
+                                                           (list (` ((~ (code.nat (dec tag))) #1 (~ g!input)))
+                                                                 (` ((~! /.json) [(~ (code.frac (..tag (dec tag))))
+                                                                                  #1
+                                                                                  ((~ g!encode) (~ g!input))])))
+                                                           (list (` ((~ (code.nat tag)) #0 (~ g!input)))
+                                                                 (` ((~! /.json) [(~ (code.frac (..tag tag)))
+                                                                                  #0
+                                                                                  ((~ g!encode) (~ g!input))])))))
+                                                       (list.enumeration members))))))))))
           (do !
             [g!encoders (.tuple (p.many codec//encode))
              #let [g!_ (code.local-identifier "_______")
                    g!members (|> (list.size g!encoders)
                                  list.indices
-                                 (list@map (|>> n@encode code.local-identifier)))]]
+                                 (list//map (|>> n//encode code.local-identifier)))]]
             (wrap (` (: (~ (@JSON//encode inputT))
                         (function ((~ g!_) [(~+ g!members)])
-                          ((~! /.json) [(~+ (list@map (function (_ [g!member g!encode])
-                                                        (` ((~ g!encode) (~ g!member))))
-                                                      (list.zip/2 g!members g!encoders)))]))))))
+                          ((~! /.json) [(~+ (list//map (function (_ [g!member g!encode])
+                                                         (` ((~ g!encode) (~ g!member))))
+                                                       (list.zip/2 g!members g!encoders)))]))))))
           ## Type recursion
           (do !
             [[selfC non-recC] (.recursive codec//encode)
@@ -208,8 +208,8 @@
           (do !
             [[funcC varsC bodyC] (.polymorphic codec//encode)]
             (wrap (` (: (All [(~+ varsC)]
-                          (-> (~+ (list@map (function (_ varC) (` (-> (~ varC) /.JSON)))
-                                            varsC))
+                          (-> (~+ (list//map (function (_ varC) (` (-> (~ varC) /.JSON)))
+                                             varsC))
                               (-> ((~ (poly.to-code *env* inputT)) (~+ varsC))
                                   /.JSON)))
                         (function ((~ funcC) (~+ varsC))
@@ -281,17 +281,17 @@
              #let [last (dec (list.size members))]]
             (wrap (` (: (~ (@JSON//decode inputT))
                         ($_ ((~! p.or))
-                            (~+ (list@map (function (_ [tag memberC])
-                                            (if (n.= last tag)
-                                              (` (|> (~ memberC)
-                                                     ((~! p.after) ((~! .boolean!) (~ (code.bit #1))))
-                                                     ((~! p.after) ((~! .number!) (~ (code.frac (..tag (dec tag))))))
-                                                     ((~! .array))))
-                                              (` (|> (~ memberC)
-                                                     ((~! p.after) ((~! .boolean!) (~ (code.bit #0))))
-                                                     ((~! p.after) ((~! .number!) (~ (code.frac (..tag tag)))))
-                                                     ((~! .array))))))
-                                          (list.enumeration members))))))))
+                            (~+ (list//map (function (_ [tag memberC])
+                                             (if (n.= last tag)
+                                               (` (|> (~ memberC)
+                                                      ((~! p.after) ((~! .boolean!) (~ (code.bit #1))))
+                                                      ((~! p.after) ((~! .number!) (~ (code.frac (..tag (dec tag))))))
+                                                      ((~! .array))))
+                                               (` (|> (~ memberC)
+                                                      ((~! p.after) ((~! .boolean!) (~ (code.bit #0))))
+                                                      ((~! p.after) ((~! .number!) (~ (code.frac (..tag tag)))))
+                                                      ((~! .array))))))
+                                           (list.enumeration members))))))))
           (do !
             [g!decoders (.tuple (p.many codec//decode))]
             (wrap (` (: (~ (@JSON//decode inputT))
@@ -312,7 +312,7 @@
           (do !
             [[funcC varsC bodyC] (.polymorphic codec//decode)]
             (wrap (` (: (All [(~+ varsC)]
-                          (-> (~+ (list@map (|>> (~) .Parser (`)) varsC))
+                          (-> (~+ (list//map (|>> (~) .Parser (`)) varsC))
                               (.Parser ((~ (poly.to-code *env* inputT)) (~+ varsC)))))
                         (function ((~ funcC) (~+ varsC))
                           (~ bodyC))))))
diff --git a/stdlib/source/program/aedifex.lux b/stdlib/source/program/aedifex.lux
index d4c9036f3..a9b4c9514 100644
--- a/stdlib/source/program/aedifex.lux
+++ b/stdlib/source/program/aedifex.lux
@@ -4,15 +4,16 @@
     [monad (#+ do)]]
    [control
     [pipe (#+ do>)]
-    ["." try (#+ Try)]
     ["." io (#+ IO)]
+    ["." try (#+ Try)]
+    ["." exception (#+ exception:)]
     [parser
      ["." cli (#+ program:)]
      ["" code]]
     [security
      ["!" capability]]
     [concurrency
-     ["." promise (#+ Promise)]]]
+     ["." promise (#+ Promise) ("#@." monad)]]]
    [data
     [binary (#+ Binary)]
     ["." text
@@ -21,7 +22,8 @@
     [format
      ["." xml]]
     [collection
-     ["." set]]]
+     ["." set]
+     ["." dictionary (#+ Dictionary)]]]
    [tool
     [compiler
      [language
@@ -38,6 +40,7 @@
    ["#." pom]
    ["#." cli]
    ["#." cache]
+   ["#." repository (#+ Address)]
    ["#." dependency #_
     ["#" resolution]]
    ["#." command
@@ -70,6 +73,14 @@
             (log! (format "Could not resolve dependencies:" text.new-line
                           error))))))
 
+(exception: (cannot-find-repository {repository Text}
+                                    {options (Dictionary Text Address)})
+  (exception.report
+   ["Repository" (%.text repository)]
+   ["Options" (exception.enumerate (function (_ [name repo])
+                                     (format (%.text name) " := " (%.text repo)))
+                                   (dictionary.entries options))]))
+
 (program: [{[profile operation] /cli.command}]
   (do {! io.monad}
     [?profile (/input.read io.monad file.default profile)]
@@ -92,10 +103,23 @@
         (exec (/command/install.do! (file.async file.default) profile)
           (wrap []))
 
-        (#/cli.Deploy repository user password)
-        (exec (/command/deploy.do! repository user password profile)
-          (wrap []))
+        (#/cli.Deploy repository identity)
+        (exec (case [(get@ #/.identity profile)
+                     (dictionary.get repository (get@ #/.deploy-repositories profile))]
+                [(#.Some artifact) (#.Some repository)]
+                (/command/deploy.do! (/repository.async (/repository.default repository))
+                                     (file.async file.default)
+                                     identity
+                                     artifact
+                                     profile)
 
+                [#.None _]
+                (promise@wrap (exception.throw /.no-identity []))
+
+                [_ #.None]
+                (promise@wrap (exception.throw ..cannot-find-repository [repository (get@ #/.deploy-repositories profile)])))
+          (wrap []))
+        
         (#/cli.Compilation compilation)
         (case compilation
           #/cli.Build (exec (/command/build.do! profile)
diff --git a/stdlib/source/program/aedifex/cli.lux b/stdlib/source/program/aedifex/cli.lux
index efc261189..adf52a18b 100644
--- a/stdlib/source/program/aedifex/cli.lux
+++ b/stdlib/source/program/aedifex/cli.lux
@@ -8,7 +8,7 @@
    [data
     ["." text]]]
   [//
-   [repository (#+ User Password)]
+   [repository (#+ Identity)]
    ["/" profile (#+ Name)]])
 
 (type: #export Compilation
@@ -36,7 +36,7 @@
   #POM
   #Dependencies
   #Install
-  (#Deploy Text User Password)
+  (#Deploy Text Identity)
   (#Compilation Compilation)
   (#Auto Compilation))
 
@@ -69,10 +69,9 @@
       (cli.this "deps")
       (cli.this "install")
       (<>.after (cli.this "deploy")
-                ($_ <>.and
-                    cli.any
-                    cli.any
-                    cli.any))
+                (<>.and cli.any
+                        (<>.and cli.any
+                                cli.any)))
       ..compilation
       (<>.after (cli.this "auto")
                 ..compilation)
diff --git a/stdlib/source/program/aedifex/command/deploy.lux b/stdlib/source/program/aedifex/command/deploy.lux
index aa48946bf..a083d8f53 100644
--- a/stdlib/source/program/aedifex/command/deploy.lux
+++ b/stdlib/source/program/aedifex/command/deploy.lux
@@ -3,16 +3,13 @@
    [abstract
     [monad (#+ do)]]
    [control
-    ["." exception (#+ exception:)]
     [concurrency
-     ["." promise ("#@." monad)]]]
+     ["." promise (#+ Promise) ("#@." monad)]]]
    [data
     [binary (#+ Binary)]
     [text
-     ["%" format (#+ format)]
      ["." encoding]]
     [collection
-     ["." dictionary (#+ Dictionary)]
      ["." set]]
     [format
      ["." binary]
@@ -24,53 +21,28 @@
    [compositor
     ["." export]]]
   ["." /// #_
-   ["/" profile (#+ Profile)]
-   ["//" upload]
+   [repository (#+ Identity Repository)]
+   [command (#+ Command)]
+   ["/" profile]
    ["#." action (#+ Action)]
-   ["#." command (#+ Command)]
    ["#." pom]
    ["#." hash]
-   ["#." repository (#+ User Password)]
-   ["#." artifact
-    ["#/." type]]
-   ["#." dependency
-    ["#/." resolution]]])
+   ["#." artifact (#+ Artifact)
+    ["#/." extension (#+ Extension)]]])
 
-(exception: #export (cannot-find-repository {repository Text}
-                                            {options (Dictionary Text ///repository.Address)})
-  (exception.report
-   ["Repository" (%.text repository)]
-   ["Options" (exception.enumerate (function (_ [name repo])
-                                     (format (%.text name) " := " (%.text repo)))
-                                   (dictionary.entries options))]))
-
-(def: #export (do! repository user password profile)
-  (-> Text User Password (Command Any))
-  (case [(get@ #/.identity profile)
-         (dictionary.get repository (get@ #/.deploy-repositories profile))]
-    [#.None _]
-    (promise@wrap (exception.throw /.no-identity []))
-
-    [_ #.None]
-    (promise@wrap (exception.throw ..cannot-find-repository [repository (get@ #/.deploy-repositories profile)]))
-
-    [(#.Some identity) (#.Some repository)]
-    (let [deploy! (: (-> ///artifact/type.Type Binary (Action Any))
-                     (function (_ type content)
-                       (promise.future
-                        (//.upload repository
-                                   user
-                                   password
-                                   {#///dependency.artifact identity
-                                    #///dependency.type type}
-                                   content))))]
-      (do {! ///action.monad}
-        [library (:: ! map (binary.run tar.writer)
-                     (export.library (file.async file.default)
-                                     (set.to-list (get@ #/.sources profile))))
-         pom (promise@wrap (///pom.write profile))
-         _ (deploy! ///artifact/type.pom (|> pom (:: xml.codec encode) encoding.to-utf8))
-         _ (deploy! ///artifact/type.lux-library library)
-         _ (deploy! ///artifact/type.sha-1 (///hash.data (///hash.sha-1 library)))
-         _ (deploy! ///artifact/type.md5 (///hash.data (///hash.md5 library)))]
-        (wrap [])))))
+(def: #export (do! repository fs identity artifact profile)
+  (-> (Repository Promise) (file.System Promise) Identity Artifact (Command Any))
+  (let [deploy! (: (-> Extension Binary (Action Any))
+                   (:: repository upload identity artifact))]
+    (do {! ///action.monad}
+      [library (|> profile
+                   (get@ #/.sources)
+                   set.to-list
+                   (export.library fs)
+                   (:: ! map (binary.run tar.writer)))
+       pom (promise@wrap (///pom.write profile))
+       _ (deploy! ///artifact/extension.pom (|> pom (:: xml.codec encode) encoding.to-utf8))
+       _ (deploy! ///artifact/extension.lux-library library)
+       _ (deploy! ///artifact/extension.sha-1 (///hash.data (///hash.sha-1 library)))
+       _ (deploy! ///artifact/extension.md5 (///hash.data (///hash.md5 library)))]
+      (wrap []))))
diff --git a/stdlib/source/program/aedifex/dependency.lux b/stdlib/source/program/aedifex/dependency.lux
index 629618620..db997ef3b 100644
--- a/stdlib/source/program/aedifex/dependency.lux
+++ b/stdlib/source/program/aedifex/dependency.lux
@@ -1,30 +1,26 @@
 (.module:
   [lux (#- Type)
    [abstract
-    ["." equivalence (#+ Equivalence)]
+    [equivalence (#+ Equivalence)]
     ["." hash (#+ Hash)]]
    [data
-    ["." text]]
-   [world
-    [net (#+ URL)]]]
+    ["." text
+     ["%" format (#+ format)]]]]
   ["." // #_
-   ["#." artifact (#+ Artifact)
+   ["#" artifact (#+ Artifact)
     [type (#+ Type)]]])
 
 (type: #export Dependency
   {#artifact Artifact
    #type Type})
 
-(def: #export equivalence
-  (Equivalence Dependency)
-  ($_ equivalence.product
-      //artifact.equivalence
-      text.equivalence
-      ))
-
 (def: #export hash
   (Hash Dependency)
   ($_ hash.product
-      //artifact.hash
+      //.hash
       text.hash
       ))
+
+(def: #export equivalence
+  (Equivalence Dependency)
+  (:: hash &equivalence))
diff --git a/stdlib/source/program/aedifex/repository.lux b/stdlib/source/program/aedifex/repository.lux
index f92b1e5b9..0c8f92993 100644
--- a/stdlib/source/program/aedifex/repository.lux
+++ b/stdlib/source/program/aedifex/repository.lux
@@ -1,17 +1,23 @@
 (.module:
   [lux #*
+   ["." host (#+ import:)]
    [abstract
     [monad (#+ do)]]
    [control
     ["." io (#+ IO)]
     ["." try (#+ Try)]
+    ["." exception (#+ exception:)]
     [concurrency
      ["." promise (#+ Promise)]
      ["." stm]]]
    [data
-    [binary (#+ Binary)]]
+    [binary (#+ Binary)]
+    ["." text
+     ["%" format (#+ format)]
+     ["." encoding]]]
    [world
-    [net (#+ URL)]]]
+    [net (#+ URL)
+     ["." uri]]]]
   ["." // #_
    ["#." artifact (#+ Artifact)
     ["#/." extension (#+ Extension)]]])
@@ -83,3 +89,69 @@
             (#try.Failure error)
             (wrap (#try.Failure error))))))
      )))
+
+(import: java/lang/AutoCloseable
+  (close [] #io #try void))
+
+(import: java/io/OutputStream
+  (flush [] #io #try void)
+  (write [[byte]] #io #try void))
+
+(import: java/lang/String)
+
+(import: java/net/URLConnection
+  (setDoOutput [boolean] #io #try void)
+  (setRequestProperty [java/lang/String java/lang/String] #io #try void)
+  (getOutputStream [] #io #try java/io/OutputStream))
+
+(import: java/net/HttpURLConnection
+  (setRequestMethod [java/lang/String] #io #try void)
+  (getResponseCode [] #io #try int))
+
+(import: java/net/URL
+  (new [java/lang/String])
+  (openConnection [] #io #try java/net/URLConnection))
+
+(import: java/util/Base64$Encoder
+  (encodeToString [[byte]] java/lang/String))
+
+(import: java/util/Base64
+  (#static getEncoder [] java/util/Base64$Encoder))
+
+(exception: #export (failure {code Int})
+  (exception.report
+   ["Code" (%.int code)]))
+
+(def: (basic-auth user password)
+  (-> User Password Text)
+  (format "Basic " (java/util/Base64$Encoder::encodeToString (encoding.to-utf8 (format user ":" password))
+                                                             (java/util/Base64::getEncoder))))
+
+(def: (url address artifact extension)
+  (-> Address Artifact Extension URL)
+  (format address uri.separator (//artifact.uri artifact) extension))
+
+(structure: #export (default address)
+  (All [s] (-> Address (Repository IO)))
+
+  (def: (download artifact extension)
+    (io.io (#try.Failure "YOLO")))
+
+  (def: (upload [user password] artifact extension content)
+    (do (try.with io.monad)
+      [connection (|> (..url address artifact extension)
+                      java/net/URL::new
+                      java/net/URL::openConnection)
+       #let [connection (:coerce java/net/HttpURLConnection connection)]
+       _ (java/net/HttpURLConnection::setRequestMethod "PUT" connection)
+       _ (java/net/URLConnection::setDoOutput true connection)
+       _ (java/net/URLConnection::setRequestProperty "Authorization" (..basic-auth user password) connection)
+       stream (java/net/URLConnection::getOutputStream connection)
+       _ (java/io/OutputStream::write content stream)
+       _ (java/io/OutputStream::flush stream)
+       _ (java/lang/AutoCloseable::close stream)
+       code (java/net/HttpURLConnection::getResponseCode connection)]
+      (case code
+        +200 (wrap [])
+        _ (:: io.monad wrap (exception.throw ..failure [code])))))
+  )
diff --git a/stdlib/source/program/aedifex/upload.lux b/stdlib/source/program/aedifex/upload.lux
deleted file mode 100644
index 391413f03..000000000
--- a/stdlib/source/program/aedifex/upload.lux
+++ /dev/null
@@ -1,95 +0,0 @@
-(.module:
-  [lux #*
-   ["." host (#+ import:)]
-   [abstract
-    [monad (#+ Monad do)]]
-   [control
-    ["." io (#+ IO)]
-    ["." try (#+ Try)]
-    ["." exception (#+ exception:)]]
-   [data
-    ["." binary (#+ Binary)]
-    ["." text
-     ["%" format (#+ format)]
-     ["." encoding]]]
-   [time
-    ["." instant]]
-   [world
-    [net (#+ URL)
-     ["." uri]]]]
-  ["." // #_
-   ["#." repository (#+ Address User Password)]
-   ["#." dependency (#+ Dependency)]
-   ["#." artifact]])
-
-(type: #export (Action a)
-  (IO (Try a)))
-
-(def: #export monad
-  (:coerce (Monad Action)
-           (try.with io.monad)))
-
-(def: (url repository dependency)
-  (-> Address Dependency URL)
-  (format repository
-          uri.separator
-          (//artifact.uri (get@ #//dependency.artifact dependency))
-          "."
-          (get@ #//dependency.type dependency)))
-
-(import: java/lang/AutoCloseable
-  (close [] #io #try void))
-
-(import: java/io/OutputStream
-  (flush [] #io #try void)
-  (write [[byte]] #io #try void))
-
-(import: java/lang/String)
-
-(import: java/net/URLConnection
-  (setDoOutput [boolean] #io #try void)
-  (setRequestProperty [java/lang/String java/lang/String] #io #try void)
-  (getOutputStream [] #io #try java/io/OutputStream))
-
-(import: java/net/HttpURLConnection
-  (setRequestMethod [java/lang/String] #io #try void)
-  (getResponseCode [] #io #try int))
-
-(import: java/net/URL
-  (new [java/lang/String])
-  (openConnection [] #io #try java/net/URLConnection))
-
-(import: java/util/Base64$Encoder
-  (encodeToString [[byte]] java/lang/String))
-
-(import: java/util/Base64
-  (#static getEncoder [] java/util/Base64$Encoder))
-
-(exception: #export (failure {code Int})
-  (exception.report
-   ["Code" (%.int code)]))
-
-(def: (basic-auth user password)
-  (-> User Password Text)
-  (format "Basic " (java/util/Base64$Encoder::encodeToString (encoding.to-utf8 (format user ":" password))
-                                                             (java/util/Base64::getEncoder))))
-
-(def: #export (upload repository user password dependency content)
-  (-> Address User Password Dependency Binary
-      (Action Any))
-  (do {! ..monad}
-    [connection (|> (..url repository dependency)
-                    java/net/URL::new
-                    java/net/URL::openConnection)
-     #let [connection (:coerce java/net/HttpURLConnection connection)]
-     _ (java/net/HttpURLConnection::setRequestMethod "PUT" connection)
-     _ (java/net/URLConnection::setDoOutput true connection)
-     _ (java/net/URLConnection::setRequestProperty "Authorization" (..basic-auth user password) connection)
-     stream (java/net/URLConnection::getOutputStream connection)
-     _ (java/io/OutputStream::write content stream)
-     _ (java/io/OutputStream::flush stream)
-     _ (java/lang/AutoCloseable::close stream)
-     code (java/net/HttpURLConnection::getResponseCode connection)]
-    (case code
-      +200 (wrap [])
-      _ (:: io.monad wrap (exception.throw ..failure [code])))))
diff --git a/stdlib/source/spec/lux/abstract/apply.lux b/stdlib/source/spec/lux/abstract/apply.lux
index a9925b928..399e69e9e 100644
--- a/stdlib/source/spec/lux/abstract/apply.lux
+++ b/stdlib/source/spec/lux/abstract/apply.lux
@@ -15,36 +15,36 @@
   [//
    [functor (#+ Injection Comparison)]])
 
-(def: (identity injection comparison (^open "_@."))
+(def: (identity injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (Apply f) Test))
   (do {! random.monad}
     [sample (:: ! map injection random.nat)]
     (_.test "Identity."
             ((comparison n.=)
-             (_@apply (injection function.identity) sample)
+             (_//apply (injection function.identity) sample)
              sample))))
 
-(def: (homomorphism injection comparison (^open "_@."))
+(def: (homomorphism injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (Apply f) Test))
   (do {! random.monad}
     [sample random.nat
      increase (:: ! map n.+ random.nat)]
     (_.test "Homomorphism."
             ((comparison n.=)
-             (_@apply (injection increase) (injection sample))
+             (_//apply (injection increase) (injection sample))
              (injection (increase sample))))))
 
-(def: (interchange injection comparison (^open "_@."))
+(def: (interchange injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (Apply f) Test))
   (do {! random.monad}
     [sample random.nat
      increase (:: ! map n.+ random.nat)]
     (_.test "Interchange."
             ((comparison n.=)
-             (_@apply (injection increase) (injection sample))
-             (_@apply (injection (function (_ f) (f sample))) (injection increase))))))
+             (_//apply (injection increase) (injection sample))
+             (_//apply (injection (function (_ f) (f sample))) (injection increase))))))
 
-(def: (composition injection comparison (^open "_@."))
+(def: (composition injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (Apply f) Test))
   (do {! random.monad}
     [sample random.nat
@@ -52,12 +52,12 @@
      decrease (:: ! map n.- random.nat)]
     (_.test "Composition."
             ((comparison n.=)
-             (_$ _@apply
+             (_$ _//apply
                  (injection function.compose)
                  (injection increase)
                  (injection decrease)
                  (injection sample))
-             ($_ _@apply
+             ($_ _//apply
                  (injection increase)
                  (injection decrease)
                  (injection sample))))))
diff --git a/stdlib/source/spec/lux/abstract/codec.lux b/stdlib/source/spec/lux/abstract/codec.lux
index ece213c31..e5740cf53 100644
--- a/stdlib/source/spec/lux/abstract/codec.lux
+++ b/stdlib/source/spec/lux/abstract/codec.lux
@@ -12,15 +12,15 @@
     [//
      [equivalence (#+ Equivalence)]]]})
 
-(def: #export (spec (^open "/@.") (^open "/@.") generator)
+(def: #export (spec (^open "@//.") (^open "@//.") generator)
   (All [m a] (-> (Equivalence a) (/.Codec m a) (Random a) Test))
   (do random.monad
     [expected generator]
     (_.with-cover [/.Codec]
       (_.test "Isomorphism."
-              (case (|> expected /@encode /@decode)
+              (case (|> expected @//encode @//decode)
                 (#try.Success actual)
-                (/@= expected actual)
+                (@//= expected actual)
                 
                 (#try.Failure _)
                 false)))))
diff --git a/stdlib/source/spec/lux/abstract/comonad.lux b/stdlib/source/spec/lux/abstract/comonad.lux
index b69581037..a45c89e26 100644
--- a/stdlib/source/spec/lux/abstract/comonad.lux
+++ b/stdlib/source/spec/lux/abstract/comonad.lux
@@ -13,19 +13,19 @@
   [//
    [functor (#+ Injection Comparison)]])
 
-(def: (left-identity injection (^open "_@."))
+(def: (left-identity injection (^open "_//."))
   (All [f] (-> (Injection f) (CoMonad f) Test))
   (do {! random.monad}
     [sample random.nat
      morphism (:: ! map (function (_ diff)
-                          (|>> _@unwrap (n.+ diff)))
+                          (|>> _//unwrap (n.+ diff)))
                   random.nat)
      #let [start (injection sample)]]
     (_.test "Left identity."
             (n.= (morphism start)
-                 (|> start _@split (_@map morphism) _@unwrap)))))
+                 (|> start _//split (_//map morphism) _//unwrap)))))
 
-(def: (right-identity injection comparison (^open "_@."))
+(def: (right-identity injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (CoMonad f) Test))
   (do random.monad
     [sample random.nat
@@ -33,23 +33,23 @@
            == (comparison n.=)]]
     (_.test "Right identity."
             (== start
-                (|> start _@split (_@map _@unwrap))))))
+                (|> start _//split (_//map _//unwrap))))))
 
-(def: (associativity injection comparison (^open "_@."))
+(def: (associativity injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (CoMonad f) Test))
   (do {! random.monad}
     [sample random.nat
      increase (:: ! map (function (_ diff)
-                          (|>> _@unwrap (n.+ diff)))
+                          (|>> _//unwrap (n.+ diff)))
                   random.nat)
      decrease (:: ! map (function (_ diff)
-                          (|>> _@unwrap(n.- diff)))
+                          (|>> _//unwrap(n.- diff)))
                   random.nat)
      #let [start (injection sample)
            == (comparison n.=)]]
     (_.test "Associativity."
-            (== (|> start _@split (_@map (|>> _@split (_@map increase) decrease)))
-                (|> start _@split (_@map increase) _@split (_@map decrease))))))
+            (== (|> start _//split (_//map (|>> _//split (_//map increase) decrease)))
+                (|> start _//split (_//map increase) _//split (_//map decrease))))))
 
 (def: #export (spec injection comparison subject)
   (All [f] (-> (Injection f) (Comparison f) (CoMonad f) Test))
diff --git a/stdlib/source/spec/lux/abstract/enum.lux b/stdlib/source/spec/lux/abstract/enum.lux
index 198d3da50..7f541b0e9 100644
--- a/stdlib/source/spec/lux/abstract/enum.lux
+++ b/stdlib/source/spec/lux/abstract/enum.lux
@@ -8,19 +8,19 @@
   {1
    ["." /]})
 
-(def: #export (spec (^open "/@.") gen-sample)
+(def: #export (spec (^open "@//.") gen-sample)
   (All [a] (-> (/.Enum a) (Random a) Test))
   (do random.monad
     [sample gen-sample]
     (<| (_.with-cover [/.Enum])
         ($_ _.and
             (_.test "Successor and predecessor are inverse functions."
-                    (and (/@= (|> sample /@succ /@pred)
-                              sample)
-                         (/@= (|> sample /@pred /@succ)
-                              sample)
-                         (not (/@= (/@succ sample)
-                                   sample))
-                         (not (/@= (/@pred sample)
-                                   sample))))
+                    (and (@//= (|> sample @//succ @//pred)
+                               sample)
+                         (@//= (|> sample @//pred @//succ)
+                               sample)
+                         (not (@//= (@//succ sample)
+                                    sample))
+                         (not (@//= (@//pred sample)
+                                    sample))))
             ))))
diff --git a/stdlib/source/spec/lux/abstract/equivalence.lux b/stdlib/source/spec/lux/abstract/equivalence.lux
index b511ba176..1d8db459c 100644
--- a/stdlib/source/spec/lux/abstract/equivalence.lux
+++ b/stdlib/source/spec/lux/abstract/equivalence.lux
@@ -8,7 +8,7 @@
   {1
    ["." / (#+ Equivalence)]})
 
-(def: #export (spec (^open "_@.") generator)
+(def: #export (spec (^open "_//.") generator)
   (All [a] (-> (Equivalence a) (Random a) Test))
   (do random.monad
     [left generator
@@ -16,8 +16,8 @@
     (<| (_.with-cover [/.Equivalence])
         ($_ _.and
             (_.test "Reflexivity."
-                    (_@= left left))
+                    (_//= left left))
             (_.test "Symmetry."
-                    (if (_@= left right)
-                      (_@= right left)
-                      (not (_@= right left))))))))
+                    (if (_//= left right)
+                      (_//= right left)
+                      (not (_//= right left))))))))
diff --git a/stdlib/source/spec/lux/abstract/fold.lux b/stdlib/source/spec/lux/abstract/fold.lux
index 71377f991..c1d87dba1 100644
--- a/stdlib/source/spec/lux/abstract/fold.lux
+++ b/stdlib/source/spec/lux/abstract/fold.lux
@@ -12,11 +12,11 @@
    [functor (#+ Injection Comparison)]]
   {1 ["." /]})
 
-(def: #export (spec injection comparison (^open "/@."))
+(def: #export (spec injection comparison (^open "@//."))
   (All [f] (-> (Injection f) (Comparison f) (/.Fold f) Test))
   (do random.monad
     [subject random.nat
      parameter random.nat]
     (_.cover [/.Fold]
-             (n.= (/@fold n.+ parameter (injection subject))
+             (n.= (@//fold n.+ parameter (injection subject))
                   (n.+ parameter subject)))))
diff --git a/stdlib/source/spec/lux/abstract/functor.lux b/stdlib/source/spec/lux/abstract/functor.lux
index d40ded1a2..b237a388e 100644
--- a/stdlib/source/spec/lux/abstract/functor.lux
+++ b/stdlib/source/spec/lux/abstract/functor.lux
@@ -22,26 +22,26 @@
     (-> (Equivalence a)
         (Equivalence (f a)))))
 
-(def: (identity injection comparison (^open "/@."))
+(def: (identity injection comparison (^open "@//."))
   (All [f] (-> (Injection f) (Comparison f) (Functor f) Test))
   (do {! random.monad}
     [sample (:: ! map injection random.nat)]
     (_.test "Identity."
             ((comparison n.=)
-             (/@map function.identity sample)
+             (@//map function.identity sample)
              sample))))
 
-(def: (homomorphism injection comparison (^open "/@."))
+(def: (homomorphism injection comparison (^open "@//."))
   (All [f] (-> (Injection f) (Comparison f) (Functor f) Test))
   (do {! random.monad}
     [sample random.nat
      increase (:: ! map n.+ random.nat)]
     (_.test "Homomorphism."
             ((comparison n.=)
-             (/@map increase (injection sample))
+             (@//map increase (injection sample))
              (injection (increase sample))))))
 
-(def: (composition injection comparison (^open "/@."))
+(def: (composition injection comparison (^open "@//."))
   (All [f] (-> (Injection f) (Comparison f) (Functor f) Test))
   (do {! random.monad}
     [sample (:: ! map injection random.nat)
@@ -49,8 +49,8 @@
      decrease (:: ! map n.- random.nat)]
     (_.test "Composition."
             ((comparison n.=)
-             (|> sample (/@map increase) (/@map decrease))
-             (|> sample (/@map (|>> increase decrease)))))))
+             (|> sample (@//map increase) (@//map decrease))
+             (|> sample (@//map (|>> increase decrease)))))))
 
 (def: #export (spec injection comparison functor)
   (All [f] (-> (Injection f) (Comparison f) (Functor f) Test))
diff --git a/stdlib/source/spec/lux/abstract/functor/contravariant.lux b/stdlib/source/spec/lux/abstract/functor/contravariant.lux
index b21e28e68..8adf0139d 100644
--- a/stdlib/source/spec/lux/abstract/functor/contravariant.lux
+++ b/stdlib/source/spec/lux/abstract/functor/contravariant.lux
@@ -14,11 +14,11 @@
   {1
    ["." / (#+ Functor)]})
 
-(def: (identity equivalence value (^open "/@."))
+(def: (identity equivalence value (^open "@//."))
   (All [f a] (-> (Equivalence (f a)) (f a) (Functor f) Test))
   (_.test "Law of identity."
           (equivalence
-           (/@map function.identity value)
+           (@//map function.identity value)
            value)))
 
 (def: #export (spec equivalence value functor)
diff --git a/stdlib/source/spec/lux/abstract/interval.lux b/stdlib/source/spec/lux/abstract/interval.lux
index 1541f1cee..0cd255eb2 100644
--- a/stdlib/source/spec/lux/abstract/interval.lux
+++ b/stdlib/source/spec/lux/abstract/interval.lux
@@ -9,14 +9,14 @@
   {1
    ["." /]})
 
-(def: #export (spec (^open "/@.") gen-sample)
+(def: #export (spec (^open "@//.") gen-sample)
   (All [a] (-> (/.Interval a) (Random a) Test))
   (<| (_.with-cover [/.Interval])
       (do random.monad
         [sample gen-sample]
         ($_ _.and
             (_.test "No value is bigger than the top."
-                    (/@< /@top sample))
+                    (@//< @//top sample))
             (_.test "No value is smaller than the bottom."
-                    (order.> /@&order /@bottom sample))
+                    (order.> @//&order @//bottom sample))
             ))))
diff --git a/stdlib/source/spec/lux/abstract/monad.lux b/stdlib/source/spec/lux/abstract/monad.lux
index c9abf9b25..21ccafe75 100644
--- a/stdlib/source/spec/lux/abstract/monad.lux
+++ b/stdlib/source/spec/lux/abstract/monad.lux
@@ -11,41 +11,41 @@
   [//
    [functor (#+ Injection Comparison)]])
 
-(def: (left-identity injection comparison (^open "_@."))
+(def: (left-identity injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (Monad f) Test))
   (do {! random.monad}
     [sample random.nat
      morphism (:: ! map (function (_ diff)
-                          (|>> (n.+ diff) _@wrap))
+                          (|>> (n.+ diff) _//wrap))
                   random.nat)]
     (_.test "Left identity."
             ((comparison n.=)
-             (|> (injection sample) (_@map morphism) _@join)
+             (|> (injection sample) (_//map morphism) _//join)
              (morphism sample)))))
 
-(def: (right-identity injection comparison (^open "_@."))
+(def: (right-identity injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (Monad f) Test))
   (do random.monad
     [sample random.nat]
     (_.test "Right identity."
             ((comparison n.=)
-             (|> (injection sample) (_@map _@wrap) _@join)
+             (|> (injection sample) (_//map _//wrap) _//join)
              (injection sample)))))
 
-(def: (associativity injection comparison (^open "_@."))
+(def: (associativity injection comparison (^open "_//."))
   (All [f] (-> (Injection f) (Comparison f) (Monad f) Test))
   (do {! random.monad}
     [sample random.nat
      increase (:: ! map (function (_ diff)
-                          (|>> (n.+ diff) _@wrap))
+                          (|>> (n.+ diff) _//wrap))
                   random.nat)
      decrease (:: ! map (function (_ diff)
-                          (|>> (n.- diff) _@wrap))
+                          (|>> (n.- diff) _//wrap))
                   random.nat)]
     (_.test "Associativity."
             ((comparison n.=)
-             (|> (injection sample) (_@map increase) _@join (_@map decrease) _@join)
-             (|> (injection sample) (_@map (|>> increase (_@map decrease) _@join)) _@join)))))
+             (|> (injection sample) (_//map increase) _//join (_//map decrease) _//join)
+             (|> (injection sample) (_//map (|>> increase (_//map decrease) _//join)) _//join)))))
 
 (def: #export (spec injection comparison monad)
   (All [f] (-> (Injection f) (Comparison f) (Monad f) Test))
diff --git a/stdlib/source/spec/lux/abstract/monoid.lux b/stdlib/source/spec/lux/abstract/monoid.lux
index eca057360..23e35d0db 100644
--- a/stdlib/source/spec/lux/abstract/monoid.lux
+++ b/stdlib/source/spec/lux/abstract/monoid.lux
@@ -10,7 +10,7 @@
     [//
      [equivalence (#+ Equivalence)]]]})
 
-(def: #export (spec (^open "/@.") (^open "/@.") gen-sample)
+(def: #export (spec (^open "@//.") (^open "@//.") gen-sample)
   (All [a] (-> (Equivalence a) (/.Monoid a) (Random a) Test))
   (do random.monad
     [sample gen-sample
@@ -20,12 +20,12 @@
     (<| (_.with-cover [/.Monoid])
         ($_ _.and
             (_.test "Left identity."
-                    (/@= sample
-                         (/@compose /@identity sample)))
+                    (@//= sample
+                          (@//compose @//identity sample)))
             (_.test "Right identity."
-                    (/@= sample
-                         (/@compose sample /@identity)))
+                    (@//= sample
+                          (@//compose sample @//identity)))
             (_.test "Associativity."
-                    (/@= (/@compose left (/@compose mid right))
-                         (/@compose (/@compose left mid) right)))
+                    (@//= (@//compose left (@//compose mid right))
+                          (@//compose (@//compose left mid) right)))
             ))))
diff --git a/stdlib/source/spec/lux/abstract/order.lux b/stdlib/source/spec/lux/abstract/order.lux
index 35aef0c9d..7fa8c618c 100644
--- a/stdlib/source/spec/lux/abstract/order.lux
+++ b/stdlib/source/spec/lux/abstract/order.lux
@@ -8,7 +8,7 @@
   {1
    ["." /]})
 
-(def: #export (spec (^open "/@.") generator)
+(def: #export (spec (^open "@//.") generator)
   (All [a] (-> (/.Order a) (Random a) Test))
   (<| (_.with-cover [/.Order])
       ($_ _.and
@@ -16,41 +16,41 @@
             [parameter generator
              subject generator]
             (_.test "Values are either ordered, or they are equal. All options are mutually exclusive."
-                    (cond (/@< parameter subject)
-                          (not (or (/@< subject parameter)
-                                   (/@= parameter subject)))
+                    (cond (@//< parameter subject)
+                          (not (or (@//< subject parameter)
+                                   (@//= parameter subject)))
 
-                          (/@< subject parameter)
-                          (not (/@= parameter subject))
+                          (@//< subject parameter)
+                          (not (@//= parameter subject))
 
                           ## else
-                          (/@= parameter subject))))
+                          (@//= parameter subject))))
           (do random.monad
             [parameter generator
-             subject (random.filter (|>> (/@= parameter) not)
+             subject (random.filter (|>> (@//= parameter) not)
                                     generator)
              extra (random.filter (function (_ value)
-                                    (not (or (/@= parameter value)
-                                             (/@= subject value))))
+                                    (not (or (@//= parameter value)
+                                             (@//= subject value))))
                                   generator)]
             (_.test "Transitive property."
-                    (if (/@< parameter subject)
-                      (let [greater? (and (/@< subject extra)
-                                          (/@< parameter extra))
-                            lesser? (and (/@< extra parameter)
-                                         (/@< extra subject))
-                            in-between? (and (/@< parameter extra)
-                                             (/@< extra subject))]
+                    (if (@//< parameter subject)
+                      (let [greater? (and (@//< subject extra)
+                                          (@//< parameter extra))
+                            lesser? (and (@//< extra parameter)
+                                         (@//< extra subject))
+                            in-between? (and (@//< parameter extra)
+                                             (@//< extra subject))]
                         (or greater?
                             lesser?
                             in-between?))
-                      ## (/@< subject parameter)
-                      (let [greater? (and (/@< extra subject)
-                                          (/@< extra parameter))
-                            lesser? (and (/@< parameter extra)
-                                         (/@< subject extra))
-                            in-between? (and (/@< subject extra)
-                                             (/@< extra parameter))]
+                      ## (@//< subject parameter)
+                      (let [greater? (and (@//< extra subject)
+                                          (@//< extra parameter))
+                            lesser? (and (@//< parameter extra)
+                                         (@//< subject extra))
+                            in-between? (and (@//< subject extra)
+                                             (@//< extra parameter))]
                         (or greater?
                             lesser?
                             in-between?)))))
diff --git a/stdlib/source/spec/lux/world/shell.lux b/stdlib/source/spec/lux/world/shell.lux
index 286cc7ce2..d0b62ddc6 100644
--- a/stdlib/source/spec/lux/world/shell.lux
+++ b/stdlib/source/spec/lux/world/shell.lux
@@ -11,7 +11,7 @@
      ["." promise (#+ Promise)]]]
    [data
     ["." product]
-    ["." text ("#@." equivalence)
+    ["." text ("#//." equivalence)
      ["%" format (#+ format)]]
     [number
      ["n" nat]
@@ -41,7 +41,7 @@
         (_.claim [/.Can-Read]
                  (case ?read
                    (#try.Success actual)
-                   (text@= expected actual)
+                   (text//= expected actual)
                    
                    (#try.Failure error)
                    false))
diff --git a/stdlib/source/test/aedifex.lux b/stdlib/source/test/aedifex.lux
index c9994aafa..e3a2717cd 100644
--- a/stdlib/source/test/aedifex.lux
+++ b/stdlib/source/test/aedifex.lux
@@ -11,7 +11,8 @@
    ["#." command #_
     ["#/." clean]
     ["#/." pom]
-    ["#/." install]]
+    ["#/." install]
+    ["#/." deploy]]
    ["#." local]
    ["#." cache]
    ["#." dependency]
@@ -32,6 +33,7 @@
       /command/clean.test
       /command/pom.test
       /command/install.test
+      /command/deploy.test
       /local.test
       /cache.test
       /dependency.test
diff --git a/stdlib/source/test/aedifex/cli.lux b/stdlib/source/test/aedifex/cli.lux
index 1edfb381f..b7be4e8bf 100644
--- a/stdlib/source/test/aedifex/cli.lux
+++ b/stdlib/source/test/aedifex/cli.lux
@@ -60,7 +60,7 @@
     #/.POM (list "pom")
     #/.Dependencies (list "deps")
     #/.Install (list "install")
-    (#/.Deploy repository user password) (list "deploy" repository user password)
+    (#/.Deploy repository [user password]) (list "deploy" repository user password)
     (#/.Compilation compilation) (..format-compilation compilation)
     (#/.Auto compilation) (list& "auto" (..format-compilation compilation))))
 
diff --git a/stdlib/source/test/aedifex/command/deploy.lux b/stdlib/source/test/aedifex/command/deploy.lux
new file mode 100644
index 000000000..20718f915
--- /dev/null
+++ b/stdlib/source/test/aedifex/command/deploy.lux
@@ -0,0 +1,129 @@
+(.module:
+  [lux #*
+   ["_" test (#+ Test)]
+   [abstract
+    ["." monad (#+ do)]]
+   [control
+    ["." try (#+ Try) ("#@." functor)]
+    ["." exception]
+    [concurrency
+     ["." promise (#+ Promise)]]
+    [security
+     ["!" capability]]]
+   [data
+    ["." maybe]
+    ["." binary]
+    ["." text ("#@." equivalence)
+     ["%" format (#+ format)]
+     ["." encoding]]
+    ["." format #_
+     ["#" binary]
+     ["." tar]
+     ["." xml]]
+    [collection
+     ["." set (#+ Set)]
+     ["." dictionary (#+ Dictionary)]]]
+   [math
+    ["." random (#+ Random)]]
+   [world
+    ["." file (#+ Path File)]]]
+  [program
+   [compositor
+    ["." export]]]
+  [///
+   ["@." profile]
+   ["@." repository]]
+  {#program
+   ["." /
+    ["//#" /// #_
+     ["#" profile]
+     ["#." action]
+     ["#." pom]
+     ["#." local]
+     ["#." hash]
+     ["#." repository (#+ Identity Repository)]
+     ["#." artifact (#+ Artifact)
+      ["#/." extension]]]]})
+
+(def: (make-sources! fs sources)
+  (-> (file.System Promise) (Set Path) (Promise (Try Any)))
+  (loop [sources (set.to-list sources)]
+    (case sources
+      #.Nil
+      (|> []
+          (:: try.monad wrap)
+          (:: promise.monad wrap))
+      
+      (#.Cons head tail)
+      (do (try.with promise.monad)
+        [_ (: (Promise (Try Path))
+              (file.make-directories promise.monad fs head))
+         _ (: (Promise (Try (File Promise)))
+              (file.get-file promise.monad fs (format head (:: fs separator) head ".lux")))]
+        (recur tail)))))
+
+(def: (execute! repository fs identity artifact profile)
+  (-> (Repository Promise) (file.System Promise)
+      Identity Artifact ///.Profile
+      (Promise (Try Any)))
+  (do ///action.monad
+    [_ (..make-sources! fs (get@ #///.sources profile))
+     _ (: (Promise (Try Path))
+          (file.make-directories promise.monad fs (///local.repository fs)))]
+    (/.do! repository fs identity artifact profile)))
+
+(def: #export test
+  Test
+  (<| (_.covering /._)
+      (do {! random.monad}
+        [[artifact expected-pom profile]
+         (random.one (function (_ profile)
+                       (do maybe.monad
+                         [artifact (get@ #///.identity profile)
+                          expected-pom (try.to-maybe (///pom.write profile))]
+                         (wrap [artifact expected-pom profile])))
+                     @profile.random)
+         
+         identity @repository.identity
+         #let [repository (///repository.mock (@repository.simulation identity)
+                                              @repository.empty)
+               fs (file.mock (:: file.default separator))]]
+        (wrap (do {! promise.monad}
+                [verdict (do {! ///action.monad}
+                           [_ (..execute! repository fs identity artifact profile)
+                            expected-library (|> profile
+                                                 (get@ #///.sources)
+                                                 set.to-list
+                                                 (export.library fs)
+                                                 (:: ! map (format.run tar.writer)))
+                            
+                            actual-pom (:: repository download artifact ///artifact/extension.pom)
+                            actual-library (:: repository download artifact ///artifact/extension.lux-library)
+                            actual-sha-1 (:: repository download artifact ///artifact/extension.sha-1)
+                            actual-md5 (:: repository download artifact ///artifact/extension.md5)
+
+                            #let [deployed-library!
+                                  (:: binary.equivalence =
+                                      expected-library
+                                      actual-library)
+
+                                  deployed-pom!
+                                  (:: binary.equivalence =
+                                      (|> expected-pom (:: xml.codec encode) encoding.to-utf8)
+                                      actual-pom)
+
+                                  deployed-sha-1!
+                                  (:: binary.equivalence =
+                                      (///hash.data (///hash.sha-1 expected-library))
+                                      actual-sha-1)
+
+                                  deployed-md5!
+                                  (:: binary.equivalence =
+                                      (///hash.data (///hash.md5 expected-library))
+                                      actual-md5)]]
+                           (wrap (and deployed-library!
+                                      deployed-pom!
+                                      deployed-sha-1!
+                                      deployed-md5!)))]
+                (_.claim [/.do!]
+                         (try.default false verdict)))))))
diff --git a/stdlib/source/test/aedifex/repository.lux b/stdlib/source/test/aedifex/repository.lux
index 4f96d9329..5f05d342e 100644
--- a/stdlib/source/test/aedifex/repository.lux
+++ b/stdlib/source/test/aedifex/repository.lux
@@ -27,7 +27,7 @@
      ["#." artifact (#+ Version Artifact)
       ["#/." extension (#+ Extension)]]]]})
 
-(def: identity
+(def: #export identity
   (Random Identity)
   (random.and (random.ascii/alpha 10)
               (random.ascii/alpha 10)))
@@ -59,11 +59,11 @@
 (type: Store
   (Dictionary [Artifact Extension] Binary))
 
-(def: empty
+(def: #export empty
   Store
   (dictionary.new ..item-hash))
 
-(structure: (simulation identity)
+(structure: #export (simulation identity)
   (-> Identity (/.Simulation Store))
 
   (def: (on-download artifact extension state)
diff --git a/stdlib/source/test/lux/data/collection.lux b/stdlib/source/test/lux/data/collection.lux
index 497123614..bcbda46b9 100644
--- a/stdlib/source/test/lux/data/collection.lux
+++ b/stdlib/source/test/lux/data/collection.lux
@@ -17,6 +17,7 @@
     ["#/." multi]
     ["#/." ordered]]
    ["#." tree
+    ["#/." finger]
     ["#/." zipper]]])
 
 (def: dictionary
@@ -46,6 +47,7 @@
   Test
   ($_ _.and
       /tree.test
+      /tree/finger.test
       /tree/zipper.test
       ))
 
diff --git a/stdlib/source/test/lux/data/collection/tree/finger.lux b/stdlib/source/test/lux/data/collection/tree/finger.lux
new file mode 100644
index 000000000..a0dfabb54
--- /dev/null
+++ b/stdlib/source/test/lux/data/collection/tree/finger.lux
@@ -0,0 +1,133 @@
+(.module:
+  [lux #*
+   ["_" test (#+ Test)]
+   [abstract
+    [monad (#+ do)]]
+   [data
+    ["." maybe ("#@." functor)]
+    ["." text ("#@." equivalence monoid)]
+    [number
+     ["n" nat]]]
+   [math
+    ["." random]]
+   [type (#+ :by-example)]]
+  {1
+   ["." /]})
+
+(def: builder
+  (/.builder text.monoid))
+
+(def: :@:
+  (:by-example [@]
+               {(/.Builder @ Text)
+                ..builder}
+               @))
+
+(def: #export test
+  Test
+  (<| (_.covering /._)
+      (_.with-cover [/.Tree])
+      (do {! random.monad}
+        [tag-left (random.ascii/alpha-num 1)
+         tag-right (random.filter (|>> (text@= tag-left) not)
+                                  (random.ascii/alpha-num 1))
+         expected-left random.nat
+         expected-right random.nat]
+        ($_ _.and
+            (_.cover [/.Builder /.builder]
+                     (exec (/.builder text.monoid)
+                       true))
+            (_.cover [/.tag]
+                     (and (text@= tag-left
+                                  (/.tag (:: ..builder leaf tag-left expected-left)))
+                          (text@= (text@compose tag-left tag-right)
+                                  (/.tag (:: ..builder branch
+                                             (:: ..builder leaf tag-left expected-left)
+                                             (:: ..builder leaf tag-right expected-right))))))
+            (_.cover [/.root]
+                     (and (case (/.root (:: ..builder leaf tag-left expected-left))
+                            (#.Left actual)
+                            (n.= expected-left actual)
+                            
+                            (#.Right _)
+                            false)
+                          (case (/.root (:: ..builder branch
+                                            (:: ..builder leaf tag-left expected-left)
+                                            (:: ..builder leaf tag-right expected-right)))
+                            (#.Left _)
+                            false
+                            
+                            (#.Right [left right])
+                            (case [(/.root left)
+                                   (/.root right)]
+                              [(#.Left actual-left) (#.Left actual-right)]
+                              (and (n.= expected-left actual-left)
+                                   (n.= expected-right actual-right))
+                              
+                              _
+                              false))))
+            (_.cover [/.value]
+                     (and (n.= expected-left
+                               (/.value (:: ..builder leaf tag-left expected-left)))
+                          (n.= expected-left
+                               (/.value (:: ..builder branch
+                                            (:: ..builder leaf tag-left expected-left)
+                                            (:: ..builder leaf tag-right expected-right))))))
+            (_.cover [/.search]
+                     (let [can-find-correct-one!
+                           (|> (:: ..builder leaf tag-left expected-left)
+                               (/.search (text.contains? tag-left))
+                               (maybe@map (n.= expected-left))
+                               (maybe.default false))
+
+                           cannot-find-incorrect-one!
+                           (|> (:: ..builder leaf tag-right expected-right)
+                               (/.search (text.contains? tag-left))
+                               (maybe@map (n.= expected-left))
+                               (maybe.default false)
+                               not)
+
+                           can-find-left!
+                           (|> (:: ..builder branch
+                                   (:: ..builder leaf tag-left expected-left)
+                                   (:: ..builder leaf tag-right expected-right))
+                               (/.search (text.contains? tag-left))
+                               (maybe@map (n.= expected-left))
+                               (maybe.default false))
+
+                           can-find-right!
+                           (|> (:: ..builder branch
+                                   (:: ..builder leaf tag-left expected-left)
+                                   (:: ..builder leaf tag-right expected-right))
+                               (/.search (text.contains? tag-right))
+                               (maybe@map (n.= expected-right))
+                               (maybe.default false))]
+                       (and can-find-correct-one!
+                            cannot-find-incorrect-one!
+                            can-find-left!
+                            can-find-right!)))
+            (_.cover [/.found?]
+                     (let [can-find-correct-one!
+                           (/.found? (text.contains? tag-left)
+                                     (:: ..builder leaf tag-left expected-left))
+
+                           cannot-find-incorrect-one!
+                           (not (/.found? (text.contains? tag-left)
+                                          (:: ..builder leaf tag-right expected-right)))
+
+                           can-find-left!
+                           (/.found? (text.contains? tag-left)
+                                     (:: ..builder branch
+                                         (:: ..builder leaf tag-left expected-left)
+                                         (:: ..builder leaf tag-right expected-right)))
+
+                           can-find-right!
+                           (/.found? (text.contains? tag-right)
+                                     (:: ..builder branch
+                                         (:: ..builder leaf tag-left expected-left)
+                                         (:: ..builder leaf tag-right expected-right)))]
+                       (and can-find-correct-one!
+                            cannot-find-incorrect-one!
+                            can-find-left!
+                            can-find-right!)))
+            ))))
-- 
cgit v1.2.3