From e00ba096c8837abe85d366e0c1293c09dbe84d81 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Wed, 18 Aug 2021 03:29:15 -0400 Subject: Some bug fixes. --- stdlib/source/library/lux.lux | 90 ++--- stdlib/source/library/lux/abstract/apply.lux | 3 +- stdlib/source/library/lux/abstract/interval.lux | 7 +- stdlib/source/library/lux/abstract/monad.lux | 12 +- .../source/library/lux/abstract/monad/indexed.lux | 14 +- stdlib/source/library/lux/abstract/monoid.lux | 2 - .../source/library/lux/control/concatenative.lux | 14 +- .../library/lux/control/concurrency/actor.lux | 38 +- .../library/lux/control/concurrency/async.lux | 11 +- .../source/library/lux/control/concurrency/frp.lux | 8 +- .../library/lux/control/concurrency/semaphore.lux | 34 +- .../library/lux/control/concurrency/thread.lux | 8 +- stdlib/source/library/lux/control/exception.lux | 22 +- stdlib/source/library/lux/control/function.lux | 2 +- .../library/lux/control/function/contract.lux | 13 +- .../source/library/lux/control/function/memo.lux | 5 - .../source/library/lux/control/function/mixin.lux | 9 - .../source/library/lux/control/function/mutual.lux | 62 +-- stdlib/source/library/lux/control/io.lux | 1 - stdlib/source/library/lux/control/maybe.lux | 3 +- stdlib/source/library/lux/control/parser.lux | 33 +- .../source/library/lux/control/parser/analysis.lux | 8 - .../source/library/lux/control/parser/binary.lux | 18 +- stdlib/source/library/lux/control/parser/cli.lux | 9 - stdlib/source/library/lux/control/parser/code.lux | 13 - .../library/lux/control/parser/environment.lux | 6 - stdlib/source/library/lux/control/parser/json.lux | 2 +- stdlib/source/library/lux/control/parser/text.lux | 6 +- stdlib/source/library/lux/control/parser/type.lux | 14 +- stdlib/source/library/lux/control/pipe.lux | 69 ---- stdlib/source/library/lux/control/reader.lux | 8 +- stdlib/source/library/lux/control/region.lux | 11 +- stdlib/source/library/lux/control/remember.lux | 7 - .../library/lux/control/security/capability.lux | 15 +- .../source/library/lux/control/security/policy.lux | 41 +- stdlib/source/library/lux/control/state.lux | 13 - stdlib/source/library/lux/control/thread.lux | 9 +- stdlib/source/library/lux/control/try.lux | 15 +- stdlib/source/library/lux/control/writer.lux | 6 +- stdlib/source/library/lux/data/binary.lux | 20 +- .../source/library/lux/data/collection/array.lux | 30 +- stdlib/source/library/lux/data/collection/bits.lux | 24 +- .../library/lux/data/collection/dictionary.lux | 28 +- .../lux/data/collection/dictionary/ordered.lux | 418 ++++++++++----------- stdlib/source/library/lux/data/collection/list.lux | 66 ++-- .../source/library/lux/data/collection/queue.lux | 22 +- stdlib/source/library/lux/data/collection/row.lux | 138 +++---- .../library/lux/data/collection/sequence.lux | 6 +- .../library/lux/data/collection/set/ordered.lux | 4 +- stdlib/source/library/lux/data/collection/tree.lux | 16 +- .../library/lux/data/collection/tree/finger.lux | 14 +- .../library/lux/data/collection/tree/zipper.lux | 108 +++--- stdlib/source/library/lux/data/color.lux | 6 +- stdlib/source/library/lux/data/format/binary.lux | 12 +- stdlib/source/library/lux/data/format/css.lux | 20 +- .../source/library/lux/data/format/css/value.lux | 4 +- stdlib/source/library/lux/data/format/tar.lux | 62 +-- stdlib/source/library/lux/data/format/xml.lux | 2 +- stdlib/source/library/lux/data/product.lux | 4 +- stdlib/source/library/lux/data/store.lux | 4 +- stdlib/source/library/lux/data/sum.lux | 2 +- stdlib/source/library/lux/data/text.lux | 10 +- stdlib/source/library/lux/data/text/buffer.lux | 42 +-- stdlib/source/library/lux/data/text/escape.lux | 12 +- stdlib/source/library/lux/data/text/format.lux | 2 +- stdlib/source/library/lux/data/text/regex.lux | 4 +- .../source/library/lux/data/text/unicode/block.lux | 8 +- stdlib/source/library/lux/data/trace.lux | 10 +- stdlib/source/library/lux/debug.lux | 6 +- stdlib/source/library/lux/documentation.lux | 79 ++-- stdlib/source/library/lux/ffi.jvm.lux | 60 +-- stdlib/source/library/lux/ffi.old.lux | 56 +-- stdlib/source/library/lux/locale/language.lux | 2 +- stdlib/source/library/lux/locale/territory.lux | 4 +- stdlib/source/library/lux/macro/local.lux | 14 +- .../library/lux/macro/syntax/annotations.lux | 2 +- .../library/lux/macro/syntax/declaration.lux | 4 +- .../source/library/lux/macro/syntax/definition.lux | 8 +- stdlib/source/library/lux/macro/syntax/input.lux | 4 +- stdlib/source/library/lux/macro/template.lux | 6 +- stdlib/source/library/lux/math.lux | 2 +- stdlib/source/library/lux/math/number/complex.lux | 66 ++-- stdlib/source/library/lux/math/number/frac.lux | 8 +- stdlib/source/library/lux/math/number/i64.lux | 12 +- stdlib/source/library/lux/math/number/int.lux | 14 +- stdlib/source/library/lux/math/number/nat.lux | 12 +- stdlib/source/library/lux/math/number/ratio.lux | 38 +- stdlib/source/library/lux/math/number/rev.lux | 48 +-- stdlib/source/library/lux/math/random.lux | 12 +- stdlib/source/library/lux/meta.lux | 74 ++-- stdlib/source/library/lux/meta/location.lux | 14 +- stdlib/source/library/lux/target/js.lux | 2 +- .../library/lux/target/jvm/attribute/code.lux | 14 +- stdlib/source/library/lux/target/jvm/bytecode.lux | 60 +-- .../lux/target/jvm/bytecode/environment.lux | 18 +- .../lux/target/jvm/bytecode/environment/limit.lux | 4 +- .../lux/target/jvm/bytecode/instruction.lux | 8 +- stdlib/source/library/lux/target/jvm/class.lux | 10 +- .../library/lux/target/jvm/constant/pool.lux | 4 +- .../library/lux/target/jvm/encoding/signed.lux | 2 +- stdlib/source/library/lux/target/jvm/field.lux | 2 +- stdlib/source/library/lux/target/jvm/loader.lux | 14 +- stdlib/source/library/lux/target/jvm/method.lux | 8 +- .../source/library/lux/target/jvm/reflection.lux | 6 +- .../library/lux/target/jvm/type/descriptor.lux | 2 +- stdlib/source/library/lux/target/jvm/type/lux.lux | 2 +- .../library/lux/target/jvm/type/signature.lux | 17 +- stdlib/source/library/lux/target/lua.lux | 2 +- stdlib/source/library/lux/target/php.lux | 8 +- stdlib/source/library/lux/target/python.lux | 8 +- stdlib/source/library/lux/target/r.lux | 2 +- stdlib/source/library/lux/target/ruby.lux | 2 +- stdlib/source/library/lux/target/scheme.lux | 2 +- stdlib/source/library/lux/test.lux | 42 +-- stdlib/source/library/lux/time.lux | 16 +- stdlib/source/library/lux/time/date.lux | 50 +-- stdlib/source/library/lux/time/instant.lux | 4 +- stdlib/source/library/lux/time/month.lux | 2 +- stdlib/source/library/lux/time/year.lux | 8 +- .../library/lux/tool/compiler/default/init.lux | 22 +- .../library/lux/tool/compiler/default/platform.lux | 108 +++--- .../lux/tool/compiler/language/lux/analysis.lux | 38 +- .../lux/tool/compiler/language/lux/directive.lux | 10 +- .../lux/tool/compiler/language/lux/generation.lux | 60 +-- .../tool/compiler/language/lux/phase/analysis.lux | 4 +- .../compiler/language/lux/phase/analysis/case.lux | 46 ++- .../language/lux/phase/analysis/case/coverage.lux | 4 +- .../language/lux/phase/analysis/inference.lux | 33 +- .../language/lux/phase/analysis/module.lux | 92 ++--- .../compiler/language/lux/phase/analysis/scope.lux | 72 ++-- .../language/lux/phase/analysis/structure.lux | 12 +- .../compiler/language/lux/phase/analysis/type.lux | 8 +- .../tool/compiler/language/lux/phase/directive.lux | 2 +- .../language/lux/phase/extension/analysis/jvm.lux | 28 +- .../language/lux/phase/extension/directive/jvm.lux | 6 +- .../language/lux/phase/extension/directive/lux.lux | 46 +-- .../lux/phase/extension/generation/jvm/common.lux | 2 +- .../lux/phase/extension/generation/jvm/host.lux | 4 +- .../lux/phase/extension/generation/php/common.lux | 2 +- .../phase/extension/generation/python/common.lux | 20 +- .../lux/phase/generation/common_lisp/case.lux | 4 +- .../lux/phase/generation/common_lisp/function.lux | 2 +- .../lux/phase/generation/common_lisp/runtime.lux | 6 +- .../lux/phase/generation/common_lisp/structure.lux | 2 +- .../language/lux/phase/generation/extension.lux | 4 +- .../language/lux/phase/generation/js/case.lux | 2 +- .../language/lux/phase/generation/js/function.lux | 2 +- .../language/lux/phase/generation/js/runtime.lux | 6 +- .../language/lux/phase/generation/js/structure.lux | 2 +- .../language/lux/phase/generation/jvm/case.lux | 2 +- .../language/lux/phase/generation/jvm/function.lux | 4 +- .../jvm/function/field/variable/count.lux | 34 ++ .../jvm/function/field/variable/partial.lux | 2 +- .../jvm/function/field/variable/partial/count.lux | 34 -- .../phase/generation/jvm/function/method/apply.lux | 14 +- .../phase/generation/jvm/function/method/init.lux | 8 +- .../phase/generation/jvm/function/method/new.lux | 2 +- .../language/lux/phase/generation/jvm/loop.lux | 6 +- .../language/lux/phase/generation/jvm/runtime.lux | 16 +- .../lux/phase/generation/jvm/structure.lux | 4 +- .../language/lux/phase/generation/lua/case.lux | 4 +- .../language/lux/phase/generation/lua/function.lux | 4 +- .../language/lux/phase/generation/lua/runtime.lux | 6 +- .../lux/phase/generation/lua/structure.lux | 2 +- .../language/lux/phase/generation/php/case.lux | 4 +- .../language/lux/phase/generation/php/function.lux | 2 +- .../language/lux/phase/generation/php/runtime.lux | 8 +- .../lux/phase/generation/php/structure.lux | 2 +- .../language/lux/phase/generation/python/case.lux | 4 +- .../lux/phase/generation/python/function.lux | 4 +- .../lux/phase/generation/python/runtime.lux | 10 +- .../lux/phase/generation/python/structure.lux | 4 +- .../language/lux/phase/generation/r/case.lux | 2 +- .../language/lux/phase/generation/r/function.lux | 4 +- .../lux/phase/generation/r/procedure/common.lux | 6 +- .../language/lux/phase/generation/r/runtime.lux | 16 +- .../language/lux/phase/generation/r/structure.lux | 2 +- .../language/lux/phase/generation/reference.lux | 2 +- .../language/lux/phase/generation/ruby/case.lux | 2 +- .../lux/phase/generation/ruby/function.lux | 4 +- .../language/lux/phase/generation/ruby/runtime.lux | 6 +- .../lux/phase/generation/ruby/structure.lux | 2 +- .../language/lux/phase/generation/scheme/case.lux | 2 +- .../phase/generation/scheme/extension/common.lux | 4 +- .../lux/phase/generation/scheme/function.lux | 2 +- .../lux/phase/generation/scheme/runtime.lux | 6 +- .../lux/phase/generation/scheme/structure.lux | 2 +- .../tool/compiler/language/lux/phase/synthesis.lux | 4 +- .../compiler/language/lux/phase/synthesis/case.lux | 56 +-- .../language/lux/phase/synthesis/function.lux | 14 +- .../compiler/language/lux/phase/synthesis/loop.lux | 16 +- .../language/lux/phase/synthesis/variable.lux | 8 +- .../lux/tool/compiler/language/lux/program.lux | 2 +- .../lux/tool/compiler/language/lux/syntax.lux | 70 ++-- .../lux/tool/compiler/language/lux/synthesis.lux | 12 +- .../library/lux/tool/compiler/meta/archive.lux | 38 +- .../lux/tool/compiler/meta/archive/artifact.lux | 22 +- .../lux/tool/compiler/meta/archive/document.lux | 2 +- .../lux/tool/compiler/meta/archive/signature.lux | 2 +- .../lux/tool/compiler/meta/cache/dependency.lux | 2 +- .../library/lux/tool/compiler/meta/io/archive.lux | 52 +-- .../library/lux/tool/compiler/meta/io/context.lux | 41 +- .../library/lux/tool/compiler/meta/packager.lux | 4 +- .../lux/tool/compiler/meta/packager/jvm.lux | 2 +- .../lux/tool/compiler/meta/packager/scheme.lux | 2 +- stdlib/source/library/lux/tool/interpreter.lux | 46 +-- stdlib/source/library/lux/type.lux | 20 +- stdlib/source/library/lux/type/abstract.lux | 20 +- stdlib/source/library/lux/type/check.lux | 110 +++--- stdlib/source/library/lux/type/implicit.lux | 12 +- stdlib/source/library/lux/type/poly.lux | 2 +- stdlib/source/library/lux/type/quotient.lux | 2 +- stdlib/source/library/lux/type/refinement.lux | 2 +- stdlib/source/library/lux/type/resource.lux | 8 +- stdlib/source/library/lux/type/unit.lux | 4 +- stdlib/source/library/lux/world/db/jdbc.lux | 36 +- stdlib/source/library/lux/world/db/jdbc/input.lux | 4 +- stdlib/source/library/lux/world/db/jdbc/output.lux | 4 +- stdlib/source/library/lux/world/file.lux | 18 +- stdlib/source/library/lux/world/file/watch.lux | 6 +- .../source/library/lux/world/net/http/client.lux | 10 +- .../source/library/lux/world/net/http/request.lux | 12 +- .../source/library/lux/world/net/http/response.lux | 2 +- stdlib/source/library/lux/world/net/http/route.lux | 12 +- .../source/library/lux/world/service/journal.lux | 12 +- stdlib/source/library/lux/world/shell.lux | 13 +- 226 files changed, 1975 insertions(+), 2243 deletions(-) create mode 100644 stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/count.lux delete mode 100644 stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial/count.lux (limited to 'stdlib/source/library') diff --git a/stdlib/source/library/lux.lux b/stdlib/source/library/lux.lux index f9be2bf36..6554978c9 100644 --- a/stdlib/source/library/lux.lux +++ b/stdlib/source/library/lux.lux @@ -2109,8 +2109,8 @@ "... By specifying a pattern (with holes), and the input data to fill those holes, repeats the pattern as many times as necessary." __paragraph "(template [ ]" ..\n " " "[(def: .public (-> Int Int) (+ ))]" __paragraph - " " "[inc +1]" ..\n - " " "[dec -1]"))]) + " " "[++ +1]" ..\n + " " "[-- -1]"))]) ({(#Item [[_ (#Tuple bindings)] (#Item [[_ (#Tuple templates)] data])]) ({[(#Some bindings') (#Some data')] (let' [apply ("lux type check" (-> Replacement_Environment ($' List Code)) @@ -4460,16 +4460,16 @@ (All [a] (-> (List a) (List [Nat a]))) (enumeration' 0 xs)) -(macro: .public (get@ tokens) +(macro: .public (value@ tokens) {#.doc (text$ ($_ "lux text concat" "... Accesses the value of a record at a given tag." ..\n - "(get@ #field my_record)" + "(value@ #field my_record)" __paragraph "... Can also work with multiple levels of nesting:" ..\n - "(get@ [#foo #bar #baz] my_record)" + "(value@ [#foo #bar #baz] my_record)" __paragraph "... And, if only the slot/path is given, generates an accessor function:" ..\n - "(let [getter (get@ [#foo #bar #baz])]" ..\n + "(let [getter (value@ [#foo #bar #baz])]" ..\n " (getter my_record))"))} (case tokens (^ (list [_ (#Tag slot')] record)) @@ -4491,12 +4491,12 @@ (in_meta (list (` ({(~ pattern) (~ g!output)} (~ record)))))) _ - (failure "get@ can only use records."))) + (failure "value@ can only use records."))) (^ (list [_ (#Tuple slots)] record)) (in_meta (list (list\fold (: (-> Code Code Code) (function (_ slot inner) - (` (..get@ (~ slot) (~ inner))))) + (` (..value@ (~ slot) (~ inner))))) record slots))) @@ -4504,10 +4504,10 @@ (do meta_monad [g!_ (..identifier "_") g!record (..identifier "record")] - (in (list (` (function ((~ g!_) (~ g!record)) (..get@ (~ selector) (~ g!record))))))) + (in (list (` (function ((~ g!_) (~ g!record)) (..value@ (~ selector) (~ g!record))))))) _ - (failure "Wrong syntax for get@"))) + (failure "Wrong syntax for value@"))) (def: (open_declaration alias tags my_tag_index [module short] source type) (-> Text (List Name) Nat Name Code Type (Meta (List Code))) @@ -4774,17 +4774,17 @@ _ (failure "Wrong syntax for \"))) -(macro: .public (set@ tokens) +(macro: .public (with@ tokens) {#.doc (text$ ($_ "lux text concat" "... Sets the value of a record at a given tag." ..\n - "(set@ #name ''Lux'' lang)" + "(with@ #name ''Lux'' lang)" __paragraph "... Can also work with multiple levels of nesting:" ..\n - "(set@ [#foo #bar #baz] value my_record)" + "(with@ [#foo #bar #baz] value my_record)" __paragraph "... And, if only the slot/path and (optionally) the value are given, generates a mutator function:" ..\n - "(let [setter (set@ [#foo #bar #baz] value)] (setter my_record))" ..\n - "(let [setter (set@ [#foo #bar #baz])] (setter value my_record))"))} + "(let [setter (with@ [#foo #bar #baz] value)] (setter my_record))" ..\n + "(let [setter (with@ [#foo #bar #baz])] (setter value my_record))"))} (case tokens (^ (list [_ (#Tag slot')] value record)) (do meta_monad @@ -4816,12 +4816,12 @@ (in_meta (list (` ({(~ pattern) (~ output)} (~ record))))))) _ - (failure "set@ can only use records."))) + (failure "with@ can only use records."))) (^ (list [_ (#Tuple slots)] value record)) (case slots #End - (failure "Wrong syntax for set@") + (failure "Wrong syntax for with@") _ (do meta_monad @@ -4832,12 +4832,12 @@ .let [pairs (zipped/2 slots bindings) update_expr (list\fold (: (-> [Code Code] Code Code) (function (_ [s b] v) - (` (..set@ (~ s) (~ v) (~ b))))) + (` (..with@ (~ s) (~ v) (~ b))))) value (list\reverse pairs)) [_ accesses'] (list\fold (: (-> [Code Code] [Code (List (List Code))] [Code (List (List Code))]) (function (_ [new_slot new_binding] [old_record accesses']) - [(` (get@ (~ new_slot) (~ new_binding))) + [(` (value@ (~ new_slot) (~ new_binding))) (#Item (list new_binding old_record) accesses')])) [record (: (List (List Code)) #End)] pairs) @@ -4850,7 +4850,7 @@ [g!_ (..identifier "_") g!record (..identifier "record")] (in (list (` (function ((~ g!_) (~ g!record)) - (..set@ (~ selector) (~ value) (~ g!record))))))) + (..with@ (~ selector) (~ value) (~ g!record))))))) (^ (list selector)) (do meta_monad @@ -4858,22 +4858,22 @@ g!value (..identifier "value") g!record (..identifier "record")] (in (list (` (function ((~ g!_) (~ g!value) (~ g!record)) - (..set@ (~ selector) (~ g!value) (~ g!record))))))) + (..with@ (~ selector) (~ g!value) (~ g!record))))))) _ - (failure "Wrong syntax for set@"))) + (failure "Wrong syntax for with@"))) -(macro: .public (update@ tokens) +(macro: .public (revised@ tokens) {#.doc (text$ ($_ "lux text concat" "... Modifies the value of a record at a given tag, based on some function." ..\n - "(update@ #age inc person)" + "(revised@ #age ++ person)" __paragraph "... Can also work with multiple levels of nesting:" ..\n - "(update@ [#foo #bar #baz] func my_record)" + "(revised@ [#foo #bar #baz] func my_record)" __paragraph "... And, if only the slot/path and (optionally) the value are given, generates a mutator function:" ..\n - "(let [updater (update@ [#foo #bar #baz] func)] (updater my_record))" ..\n - "(let [updater (update@ [#foo #bar #baz])] (updater func my_record))"))} + "(let [updater (revised@ [#foo #bar #baz] func)] (updater my_record))" ..\n + "(let [updater (revised@ [#foo #bar #baz])] (updater func my_record))"))} (case tokens (^ (list [_ (#Tag slot')] fun record)) (do meta_monad @@ -4905,27 +4905,27 @@ (in_meta (list (` ({(~ pattern) (~ output)} (~ record))))))) _ - (failure "update@ can only use records."))) + (failure "revised@ can only use records."))) (^ (list [_ (#Tuple slots)] fun record)) (case slots #End - (failure "Wrong syntax for update@") + (failure "Wrong syntax for revised@") _ (do meta_monad [g!record (..identifier "record") g!temp (..identifier "temp")] (in (list (` (let [(~ g!record) (~ record) - (~ g!temp) (get@ [(~+ slots)] (~ g!record))] - (set@ [(~+ slots)] ((~ fun) (~ g!temp)) (~ g!record)))))))) + (~ g!temp) (value@ [(~+ slots)] (~ g!record))] + (with@ [(~+ slots)] ((~ fun) (~ g!temp)) (~ g!record)))))))) (^ (list selector fun)) (do meta_monad [g!_ (..identifier "_") g!record (..identifier "record")] (in (list (` (function ((~ g!_) (~ g!record)) - (..update@ (~ selector) (~ fun) (~ g!record))))))) + (..revised@ (~ selector) (~ fun) (~ g!record))))))) (^ (list selector)) (do meta_monad @@ -4933,10 +4933,10 @@ g!fun (..identifier "fun") g!record (..identifier "record")] (in (list (` (function ((~ g!_) (~ g!fun) (~ g!record)) - (..update@ (~ selector) (~ g!fun) (~ g!record))))))) + (..revised@ (~ selector) (~ g!fun) (~ g!record))))))) _ - (failure "Wrong syntax for update@"))) + (failure "Wrong syntax for revised@"))) (macro: .public (^template tokens) {#.doc (text$ ($_ "lux text concat" @@ -5047,8 +5047,8 @@ (All [s] (-> (I64 s) (I64 s))) (|>> ( 1)))] - [inc "lux i64 +" "Increment function."] - [dec "lux i64 -" "Decrement function."] + [++ "lux i64 +" "Increment function."] + [-- "lux i64 -" "Decrement function."] ) (def: tag\encode @@ -5107,9 +5107,9 @@ (let [[group_location' parts_text] (list\fold (function (_ part [last_location text_accum]) (let [[part_location part_text] (example_documentation last_location baseline part)] [part_location (text\compose text_accum part_text)])) - [(update@ #column inc group_location) ""] + [(revised@ #column ++ group_location) ""] ( parts))] - [(update@ #column inc group_location') + [(revised@ #column ++ group_location') ($_ text\compose (location_padding baseline prev_location group_location) parts_text @@ -5134,7 +5134,7 @@ (#Documentation_Example example) (let [baseline (baseline_column example) [location _] example - [_ text] (..example_documentation (set@ #.column baseline location) baseline example)] + [_ text] (..example_documentation (with@ #.column baseline location) baseline example)] (text\compose text __paragraph)))) (macro: .public (example tokens) @@ -5147,7 +5147,7 @@ " (loop [count +0" ..\n " x init]" ..\n " (if (< +10 count)" ..\n - " (recur (inc count) (f x))" ..\n + " (recur (++ count) (f x))" ..\n " x)))"))} (in_meta (list (` [(~ location_code) (#.Text (~ (|> tokens @@ -5206,7 +5206,7 @@ (loop [count +0 x init] (if (< +10 count) - (recur (inc count) (f x)) + (recur (++ count) (f x)) x)) "Loops can also be given custom names." @@ -5214,7 +5214,7 @@ [count +0 x init] (if (< +10 count) - (my_loop (inc count) (f x)) + (my_loop (++ count) (f x)) x)))} (let [?params (case tokens (^ (list name [_ (#Tuple bindings)] body)) @@ -5665,7 +5665,7 @@ (macro: .public (^|> tokens) {#.doc (example "Pipes the value being pattern-matched against prior to binding it to a variable." (case input - (^|> value [inc (% 10) (max 1)]) + (^|> value [++ (% 10) (max 1)]) (foo value)))} (case tokens (^ (list& [_meta (#Form (list [_ (#Identifier ["" name])] [_ (#Tuple steps)]))] body branches)) @@ -5696,7 +5696,7 @@ {#.doc "The location of the current expression being analyzed."} (Meta Location) (function (_ compiler) - (#Right [compiler (get@ #location compiler)]))) + (#Right [compiler (value@ #location compiler)]))) (macro: .public (undefined tokens) {#.doc (example "Meant to be used as a stand-in for functions with undefined implementations." @@ -5845,7 +5845,7 @@ (def: target (Meta Text) (function (_ compiler) - (#Right [compiler (get@ [#info #target] compiler)]))) + (#Right [compiler (value@ [#info #target] compiler)]))) (def: (platform_name choice) (-> Code (Meta Text)) diff --git a/stdlib/source/library/lux/abstract/apply.lux b/stdlib/source/library/lux/abstract/apply.lux index 7b57f5671..0b80263e8 100644 --- a/stdlib/source/library/lux/abstract/apply.lux +++ b/stdlib/source/library/lux/abstract/apply.lux @@ -19,7 +19,8 @@ (Apply (All [a] (F (G a)))))) (def: &functor - (functor.composite (get@ #&functor f_apply) (get@ #&functor g_apply))) + (functor.composite (value@ #&functor f_apply) + (value@ #&functor g_apply))) (def: (apply fgf fgx) ... TODO: Switch from this version to the one below (in comments) ASAP. diff --git a/stdlib/source/library/lux/abstract/interval.lux b/stdlib/source/library/lux/abstract/interval.lux index cea44c57b..4c6060d4d 100644 --- a/stdlib/source/library/lux/abstract/interval.lux +++ b/stdlib/source/library/lux/abstract/interval.lux @@ -25,7 +25,6 @@ (def: top top))) (def: .public (singleton enum elem) - {#.doc (example "An interval where both top and bottom are the same value.")} (All [a] (-> (Enum a) a (Interval a))) (implementation (def: &enum enum) @@ -76,21 +75,21 @@ (implementation: .public (union left right) (All [a] (-> (Interval a) (Interval a) (Interval a))) - (def: &enum (get@ #&enum right)) + (def: &enum (value@ #&enum right)) (def: bottom (order.min (\ right &order) (\ left bottom) (\ right bottom))) (def: top (order.max (\ right &order) (\ left top) (\ right top)))) (implementation: .public (intersection left right) (All [a] (-> (Interval a) (Interval a) (Interval a))) - (def: &enum (get@ #&enum right)) + (def: &enum (value@ #&enum right)) (def: bottom (order.max (\ right &order) (\ left bottom) (\ right bottom))) (def: top (order.min (\ right &order) (\ left top) (\ right top)))) (implementation: .public (complement interval) (All [a] (-> (Interval a) (Interval a))) - (def: &enum (get@ #&enum interval)) + (def: &enum (value@ #&enum interval)) (def: bottom (\ interval succ (\ interval top))) (def: top (\ interval pred (\ interval bottom)))) diff --git a/stdlib/source/library/lux/abstract/monad.lux b/stdlib/source/library/lux/abstract/monad.lux index 6ba4f74aa..2d81c09e7 100644 --- a/stdlib/source/library/lux/abstract/monad.lux +++ b/stdlib/source/library/lux/abstract/monad.lux @@ -25,7 +25,7 @@ counter (#.Item _ xs') - (recur (inc counter) xs')))) + (recur (++ counter) xs')))) (def: (reversed xs) (All [a] @@ -105,17 +105,17 @@ #.None (#.Left "Wrong syntax for 'do'"))) -(def: .public (bind monad f) +(def: .public (then monad f) (All [! a b] (-> (Monad !) (-> a (! b)) (-> (! a) (! b)))) (|>> (\ monad map f) (\ monad join))) -(def: .public (seq monad) - (All [M a] - (-> (Monad M) (List (M a)) - (M (List a)))) +(def: .public (all monad) + (All [! a] + (-> (Monad !) (List (! a)) + (! (List a)))) (let [(^open "!\.") monad] (function (recur xs) (case xs diff --git a/stdlib/source/library/lux/abstract/monad/indexed.lux b/stdlib/source/library/lux/abstract/monad/indexed.lux index 9f64ec76d..b43ac87e8 100644 --- a/stdlib/source/library/lux/abstract/monad/indexed.lux +++ b/stdlib/source/library/lux/abstract/monad/indexed.lux @@ -21,7 +21,7 @@ (-> (-> vi (m it io vo)) (m ii it vi) (m ii io vo))) - bind)) + then)) (type: Binding [Code Code]) @@ -32,7 +32,7 @@ (type: Context (#Macro Name Code) - (#Bind Binding)) + (#Binding Binding)) (def: global_identifier (Parser Name) @@ -62,7 +62,7 @@ (syntax: .public (do [[?name monad] ..named_monad context (.tuple (<>.some context)) expression .any]) - (macro.with_identifiers [g!_ g!bind] + (macro.with_identifiers [g!_ g!then] (let [body (list\fold (function (_ context next) (case context (#Macro macro parameter) @@ -70,8 +70,8 @@ (~ parameter) (~ next))) - (#Bind [binding value]) - (` ((~ g!bind) + (#Binding [binding value]) + (` ((~ g!then) (.function ((~ g!_) (~ binding)) (~ next)) (~ value))))) @@ -82,10 +82,10 @@ (let [name (code.local_identifier name)] (` (let [(~ name) (~ monad) {#..in (~' in) - #..bind (~ g!bind)} (~ name)] + #..then (~ g!then)} (~ name)] (~ body)))) #.None (` (let [{#..in (~' in) - #..bind (~ g!bind)} (~ monad)] + #..then (~ g!then)} (~ monad)] (~ body))))))))) diff --git a/stdlib/source/library/lux/abstract/monoid.lux b/stdlib/source/library/lux/abstract/monoid.lux index 53c3288c6..fac4862ae 100644 --- a/stdlib/source/library/lux/abstract/monoid.lux +++ b/stdlib/source/library/lux/abstract/monoid.lux @@ -3,8 +3,6 @@ [lux #*]]) (interface: .public (Monoid a) - {#.doc (example "A way to compose values." - "Includes an identity value which does not alter any other value when combined with.")} (: a identity) (: (-> a a a) diff --git a/stdlib/source/library/lux/control/concatenative.lux b/stdlib/source/library/lux/control/concatenative.lux index 03ae8afe6..93a99ceb2 100644 --- a/stdlib/source/library/lux/control/concatenative.lux +++ b/stdlib/source/library/lux/control/concatenative.lux @@ -78,20 +78,20 @@ (code.replaced (code.local_identifier from) to pre)) aliased aliases))] - (case [(|> inputs (get@ #bottom) (maybe\map (|>> code.nat (~) #.Parameter (`)))) - (|> outputs (get@ #bottom) (maybe\map (|>> code.nat (~) #.Parameter (`))))] + (case [(|> inputs (value@ #bottom) (maybe\map (|>> code.nat (~) #.Parameter (`)))) + (|> outputs (value@ #bottom) (maybe\map (|>> code.nat (~) #.Parameter (`))))] [(#.Some bottomI) (#.Some bottomO)] (monad.do meta.monad - [inputC (singleton (macro.full_expansion (stack_fold (get@ #top inputs) bottomI))) - outputC (singleton (macro.full_expansion (stack_fold (get@ #top outputs) bottomO)))] + [inputC (singleton (macro.full_expansion (stack_fold (value@ #top inputs) bottomI))) + outputC (singleton (macro.full_expansion (stack_fold (value@ #top outputs) bottomO)))] (in (list (` (-> (~ (de_alias inputC)) (~ (de_alias outputC))))))) [?bottomI ?bottomO] (with_identifiers [g!stack] (monad.do meta.monad - [inputC (singleton (macro.full_expansion (stack_fold (get@ #top inputs) (maybe.else g!stack ?bottomI)))) - outputC (singleton (macro.full_expansion (stack_fold (get@ #top outputs) (maybe.else g!stack ?bottomO))))] + [inputC (singleton (macro.full_expansion (stack_fold (value@ #top inputs) (maybe.else g!stack ?bottomI)))) + outputC (singleton (macro.full_expansion (stack_fold (value@ #top outputs) (maybe.else g!stack ?bottomO))))] (in (list (` (All [(~ g!stack)] (-> (~ (de_alias inputC)) (~ (de_alias outputC)))))))))))) @@ -130,7 +130,7 @@ (syntax: .public (apply [arity (<>.only (n.> 0) .nat)]) (with_identifiers [g! g!func g!stack g!output] (monad.do {! meta.monad} - [g!inputs (|> (macro.identifier "input") (list.repeated arity) (monad.seq !))] + [g!inputs (|> (macro.identifier "input") (list.repeated arity) (monad.all !))] (in (list (` (: (All [(~+ g!inputs) (~ g!output)] (-> (-> (~+ g!inputs) (~ g!output)) (=> [(~+ g!inputs)] [(~ g!output)]))) diff --git a/stdlib/source/library/lux/control/concurrency/actor.lux b/stdlib/source/library/lux/control/concurrency/actor.lux index e51be0b98..20ab00c06 100644 --- a/stdlib/source/library/lux/control/concurrency/actor.lux +++ b/stdlib/source/library/lux/control/concurrency/actor.lux @@ -90,13 +90,13 @@ (:abstraction {#obituary (async.async []) #mailbox (atom (async.async []))})) process (loop [state (on_init init) - [|mailbox| _] (io.run! (atom.read! (get@ #mailbox (:representation self))))] + [|mailbox| _] (io.run! (atom.read! (value@ #mailbox (:representation self))))] (do {! async.monad} [[head tail] |mailbox| ?state' (on_mail head state self)] (case ?state' (#try.Failure error) - (let [[_ resolve] (get@ #obituary (:representation self))] + (let [[_ resolve] (value@ #obituary (:representation self))] (exec (io.run! (do io.monad [pending (..pending tail)] @@ -109,7 +109,7 @@ (def: .public (alive? actor) (All [s] (-> (Actor s) (IO Bit))) - (let [[obituary _] (get@ #obituary (:representation actor))] + (let [[obituary _] (value@ #obituary (:representation actor))] (|> obituary async.value (\ io.functor map @@ -121,13 +121,13 @@ (def: .public (obituary' actor) (All [s] (-> (Actor s) (IO (Maybe (Obituary s))))) - (let [[obituary _] (get@ #obituary (:representation actor))] + (let [[obituary _] (value@ #obituary (:representation actor))] (async.value obituary))) (def: .public obituary (All [s] (-> (Actor s) (Async (Obituary s)))) (|>> :representation - (get@ #obituary) + (value@ #obituary) product.left)) (def: .public (mail! mail actor) @@ -137,7 +137,7 @@ (if alive? (let [entry [mail (async.async [])]] (do ! - [|mailbox|&resolve (atom.read! (get@ #mailbox (:representation actor)))] + [|mailbox|&resolve (atom.read! (value@ #mailbox (:representation actor)))] (loop [[|mailbox| resolve] |mailbox|&resolve] (do ! [|mailbox| (async.value |mailbox|)] @@ -147,7 +147,7 @@ [resolved? (resolve entry)] (if resolved? (do ! - [_ (atom.write! (product.right entry) (get@ #mailbox (:representation actor)))] + [_ (atom.write! (product.right entry) (value@ #mailbox (:representation actor)))] (in (#try.Success []))) (recur |mailbox|&resolve))) @@ -323,27 +323,27 @@ (with_identifiers [g!_ g!return] (do meta.monad [actor_scope abstract.current - .let [g!type (code.local_identifier (get@ #abstract.name actor_scope)) - g!message (code.local_identifier (get@ #name signature)) - g!actor_vars (get@ #abstract.type_vars actor_scope) - g!all_vars (|> signature (get@ #vars) (list\map code.local_identifier) (list\compose g!actor_vars)) - g!inputsC (|> signature (get@ #inputs) (list\map product.left)) - g!inputsT (|> signature (get@ #inputs) (list\map product.right)) - g!state (|> signature (get@ #state) code.local_identifier) - g!self (|> signature (get@ #self) code.local_identifier)]] + .let [g!type (code.local_identifier (value@ #abstract.name actor_scope)) + g!message (code.local_identifier (value@ #name signature)) + g!actor_vars (value@ #abstract.type_vars actor_scope) + g!all_vars (|> signature (value@ #vars) (list\map code.local_identifier) (list\compose g!actor_vars)) + g!inputsC (|> signature (value@ #inputs) (list\map product.left)) + g!inputsT (|> signature (value@ #inputs) (list\map product.right)) + g!state (|> signature (value@ #state) code.local_identifier) + g!self (|> signature (value@ #self) code.local_identifier)]] (in (list (` (def: (~ export_policy) ((~ g!message) (~+ g!inputsC)) (~ (|annotations|.format annotations)) (All [(~+ g!all_vars)] (-> (~+ g!inputsT) - (..Message (~ (get@ #abstract.abstraction actor_scope)) + (..Message (~ (value@ #abstract.abstraction actor_scope)) (~ output_type)))) (function ((~ g!_) (~ g!state) (~ g!self)) - (let [(~ g!state) (:as (~ (get@ #abstract.representation actor_scope)) + (let [(~ g!state) (:as (~ (value@ #abstract.representation actor_scope)) (~ g!state))] (|> (~ body) - (: ((~! async.Async) ((~! try.Try) [(~ (get@ #abstract.representation actor_scope)) + (: ((~! async.Async) ((~! try.Try) [(~ (value@ #abstract.representation actor_scope)) (~ output_type)]))) - (:as ((~! async.Async) ((~! try.Try) [(~ (get@ #abstract.abstraction actor_scope)) + (:as ((~! async.Async) ((~! try.Try) [(~ (value@ #abstract.abstraction actor_scope)) (~ output_type)])))))))) ))))) diff --git a/stdlib/source/library/lux/control/concurrency/async.lux b/stdlib/source/library/lux/control/concurrency/async.lux index 3dcb864b6..58fbb4ea6 100644 --- a/stdlib/source/library/lux/control/concurrency/async.lux +++ b/stdlib/source/library/lux/control/concurrency/async.lux @@ -25,8 +25,8 @@ (type: .public (Resolver a) (-> a (IO Bit))) + ... Sets an async's value if it has not been done yet. (def: (resolver async) - {#.doc "Sets an async's value if it has not been done yet."} (All [a] (-> (Async a) (Resolver a))) (function (resolve value) (let [async (:representation async)] @@ -181,14 +181,15 @@ (All [a] (-> (IO a) (Async a))) (..schedule! 0)) -(def: .public (delayed milli_seconds value) +(def: .public (after milli_seconds value) (All [a] (-> Nat a (Async a))) (..schedule! milli_seconds (io value))) (def: .public (delay milli_seconds) (-> Nat (Async Any)) - (..delayed milli_seconds [])) + (..after milli_seconds [])) -(def: .public (time_out milli_seconds async) +(def: .public (within milli_seconds async) (All [a] (-> Nat (Async a) (Async (Maybe a)))) - (..or (..delay milli_seconds) async)) + (..or (..delay milli_seconds) + async)) diff --git a/stdlib/source/library/lux/control/concurrency/frp.lux b/stdlib/source/library/lux/control/concurrency/frp.lux index e14fb6505..cb3645138 100644 --- a/stdlib/source/library/lux/control/concurrency/frp.lux +++ b/stdlib/source/library/lux/control/concurrency/frp.lux @@ -189,7 +189,7 @@ (#.Some [value ..empty])) async)) -(def: .public (fold f init channel) +(def: .public (aggregate f init channel) (All [a b] (-> (-> b a (Async a)) a (Channel b) (Async a))) @@ -202,9 +202,9 @@ (#.Some [head tail]) (do ! [init' (f head init)] - (fold f init' tail))))) + (aggregate f init' tail))))) -(def: .public (folds f init channel) +(def: .public (aggregates f init channel) (All [a b] (-> (-> b a (Async a)) a (Channel b) (Channel a))) @@ -217,7 +217,7 @@ (#.Some [head tail]) (do ! [init' (f head init)] - (in (#.Some [init (folds f init' tail)])))))) + (in (#.Some [init (aggregates f init' tail)])))))) (def: .public (poll milli_seconds action) (All [a] diff --git a/stdlib/source/library/lux/control/concurrency/semaphore.lux b/stdlib/source/library/lux/control/concurrency/semaphore.lux index c266617a5..e2cdb2aca 100644 --- a/stdlib/source/library/lux/control/concurrency/semaphore.lux +++ b/stdlib/source/library/lux/control/concurrency/semaphore.lux @@ -52,12 +52,12 @@ (async.async []))] (exec (io.run! - (with_expansions [ (as_is (get@ #open_positions) (i.> -1))] + (with_expansions [ (as_is (value@ #open_positions) (i.> -1))] (do io.monad - [[_ state'] (atom.update! (|>> (update@ #open_positions dec) + [[_ state'] (atom.update! (|>> (revised@ #open_positions --) (if> [] [] - [(update@ #waiting_list (queue.end sink))])) + [(revised@ #waiting_list (queue.end sink))])) semaphore)] (with_expansions [ (sink []) (in false)] @@ -76,23 +76,23 @@ (async.future (do {! io.monad} [[pre post] (atom.update! (function (_ state) - (if (i.= (.int (get@ #max_positions state)) - (get@ #open_positions state)) + (if (i.= (.int (value@ #max_positions state)) + (value@ #open_positions state)) state (|> state - (update@ #open_positions inc) - (update@ #waiting_list queue.next)))) + (revised@ #open_positions ++) + (revised@ #waiting_list queue.next)))) semaphore)] (if (same? pre post) - (in (exception.except ..semaphore_is_maxed_out [(get@ #max_positions pre)])) + (in (exception.except ..semaphore_is_maxed_out [(value@ #max_positions pre)])) (do ! - [_ (case (queue.front (get@ #waiting_list pre)) + [_ (case (queue.front (value@ #waiting_list pre)) #.None (in true) (#.Some sink) (sink []))] - (in (#try.Success (get@ #open_positions post))))))))) + (in (#try.Success (value@ #open_positions post))))))))) ) (abstract: .public Mutex @@ -148,23 +148,23 @@ (if (n.< times step) (do async.monad [outcome (..signal! turnstile)] - (recur (inc step))) + (recur (++ step))) (\ async.monad in [])))) (template [ ] [(def: ( (^:representation barrier)) (-> Barrier (Async Any)) (do async.monad - [.let [limit (refinement.value (get@ #limit barrier)) + [.let [limit (refinement.value (value@ #limit barrier)) goal - [_ count] (io.run! (atom.update! (get@ #count barrier))) + [_ count] (io.run! (atom.update! (value@ #count barrier))) reached? (n.= goal count)]] (if reached? - (..un_block! (dec limit) (get@ barrier)) - (..wait! (get@ barrier)))))] + (..un_block! (-- limit) (value@ barrier)) + (..wait! (value@ barrier)))))] - [start! inc limit #start_turnstile] - [end! dec 0 #end_turnstile] + [start! ++ limit #start_turnstile] + [end! -- 0 #end_turnstile] ) (def: .public (block! barrier) diff --git a/stdlib/source/library/lux/control/concurrency/thread.lux b/stdlib/source/library/lux/control/concurrency/thread.lux index e067d1ac5..1011da5bb 100644 --- a/stdlib/source/library/lux/control/concurrency/thread.lux +++ b/stdlib/source/library/lux/control/concurrency/thread.lux @@ -143,8 +143,8 @@ (as_is (exception: .public cannot_continue_running_threads) ... https://en.wikipedia.org/wiki/Event_loop + ... Starts the event-loop. (def: .public run! - {#.doc (example "Starts the event-loop.")} (IO Any) (loop [_ []] (do {! io.monad} @@ -158,14 +158,14 @@ (do ! [now (\ ! map (|>> instant.millis .nat) instant.now) .let [[ready pending] (list.partition (function (_ thread) - (|> (get@ #creation thread) - (n.+ (get@ #delay thread)) + (|> (value@ #creation thread) + (n.+ (value@ #delay thread)) (n.<= now))) threads)] swapped? (atom.compare_and_swap! threads pending ..runner)] (if swapped? (do ! - [_ (monad.map ! (|>> (get@ #action) ..execute! io.io) ready)] + [_ (monad.map ! (|>> (value@ #action) ..execute! io.io) ready)] (recur [])) (panic! (exception.error ..cannot_continue_running_threads [])))) )))) diff --git a/stdlib/source/library/lux/control/exception.lux b/stdlib/source/library/lux/control/exception.lux index f89611e19..d957188ea 100644 --- a/stdlib/source/library/lux/control/exception.lux +++ b/stdlib/source/library/lux/control/exception.lux @@ -1,5 +1,4 @@ (.module: - {#.doc "Pure-Lux exception-handling functionality."} [library [lux #* ["." macro] @@ -33,7 +32,7 @@ (def: .public (match? exception error) (All [e] (-> (Exception e) Text Bit)) - (text.starts_with? (get@ #label exception) error)) + (text.starts_with? (value@ #label exception) error)) (def: .public (when exception then try) (All [e a] @@ -44,7 +43,7 @@ (#//.Success output) (#//.Failure error) - (let [reference (get@ #label exception)] + (let [reference (value@ #label exception)] (if (text.starts_with? reference error) (#//.Success (|> error (text.clip' (text.size reference)) @@ -64,7 +63,7 @@ (def: .public (error exception message) (All [e] (-> (Exception e) e Text)) - ((get@ #..constructor exception) message)) + ((value@ #..constructor exception) message)) (def: .public (except exception message) (All [e a] (-> (Exception e) e (Try a))) @@ -91,9 +90,6 @@ ))) (syntax: .public (exception: [[export_policy t_vars [name inputs] body] ..exception]) - {#.doc (example - "" - )} (macro.with_identifiers [g!descriptor] (do meta.monad [current_module meta.current_module_name @@ -102,10 +98,10 @@ (in (list (` (def: (~ export_policy) (~ g!self) (All [(~+ (list\map |type_variable|.format t_vars))] - (..Exception [(~+ (list\map (get@ #|input|.type) inputs))])) + (..Exception [(~+ (list\map (value@ #|input|.type) inputs))])) (let [(~ g!descriptor) (~ (code.text descriptor))] {#..label (~ g!descriptor) - #..constructor (function ((~ g!self) [(~+ (list\map (get@ #|input|.binding) inputs))]) + #..constructor (function ((~ g!self) [(~+ (list\map (value@ #|input|.binding) inputs))]) ((~! text\compose) (~ g!descriptor) (~ (maybe.else (' "") body))))})))))))) @@ -119,14 +115,14 @@ on_new_line (|> " " (list.repeated (n.+ (text.size header_separator) largest_header_size)) - text.joined + text.together (text\compose text.new_line)) on_entry (: (-> [Text Text] Text) (function (_ [header message]) (let [padding (|> " " (list.repeated (n.- (text.size header) largest_header_size)) - text.joined)] + text.together)] (|> message (text.replaced text.new_line on_new_line) ($_ text\compose padding header header_separator)))))] @@ -150,7 +146,7 @@ (-> (-> a Text) (List a) Text)) (|> entries (list\fold (function (_ entry [index next]) - [(inc index) + [(++ index) (#.Item [(n\encode index) (format entry)] next)]) [0 #.End]) @@ -160,7 +156,7 @@ (def: separator (let [gap ($_ "lux text concat" text.new_line text.new_line) - horizontal_line (|> "-" (list.repeated 64) text.joined)] + horizontal_line (|> "-" (list.repeated 64) text.together)] ($_ "lux text concat" gap horizontal_line diff --git a/stdlib/source/library/lux/control/function.lux b/stdlib/source/library/lux/control/function.lux index 865ea6930..11cc82e62 100644 --- a/stdlib/source/library/lux/control/function.lux +++ b/stdlib/source/library/lux/control/function.lux @@ -22,7 +22,7 @@ (-> (-> a b c) (-> b a c))) (function (_ x y) (f y x))) -(def: .public (apply input function) +(def: .public (on input function) (All [i o] (-> i (-> i o) o)) (function input)) diff --git a/stdlib/source/library/lux/control/function/contract.lux b/stdlib/source/library/lux/control/function/contract.lux index 0fb706a14..b568a7068 100644 --- a/stdlib/source/library/lux/control/function/contract.lux +++ b/stdlib/source/library/lux/control/function/contract.lux @@ -16,7 +16,7 @@ ["i" int]]]]]) (template [] - [(exception: ( {condition Code}) + [(exception: .public ( {condition Code}) (exception.report ["Condition" (%.code condition)]))] @@ -32,11 +32,6 @@ (syntax: .public (pre [test .any expr .any]) - {#.doc (example "Pre-conditions." - "Given a test and an expression to run, only runs the expression if the test passes." - "Otherwise, an error is raised." - (pre (i.= +4 (i.+ +2 +2)) - (foo +123 +456 +789)))} (in (list (` (exec ((~! ..assert!) (~ (code.text (exception.error ..pre_condition_failed test))) (~ test)) @@ -44,12 +39,6 @@ (syntax: .public (post [test .any expr .any]) - {#.doc (example "Post-conditions." - "Given a predicate and an expression to run, evaluates the expression and then tests the output with the predicate." - "If the predicate returns #1, returns the value of the expression." - "Otherwise, an error is raised." - (post i.even? - (i.+ +2 +2)))} (with_identifiers [g!output] (in (list (` (let [(~ g!output) (~ expr)] (exec diff --git a/stdlib/source/library/lux/control/function/memo.lux b/stdlib/source/library/lux/control/function/memo.lux index ee20672b1..4d89e9778 100644 --- a/stdlib/source/library/lux/control/function/memo.lux +++ b/stdlib/source/library/lux/control/function/memo.lux @@ -36,7 +36,6 @@ (Recursive i (State (Dictionary i o) o))) (def: .public (open memo) - {#.doc (example "Memoization where the memoized results can be re-used accross invocations.")} (All [i o] (:let [Memory (Dictionary i o)] (-> (Memo i o) (-> [Memory i] [Memory o])))) @@ -45,8 +44,6 @@ (|> input memo (state.result memory))))) (def: .public (closed hash memo) - {#.doc (example "Memoization confined to a single invocation to the function (not counting any subsequent recursive invocations)." - "Memoized results will be re-used during recursive invocations, but cannot be accessed after the main invocation has ended.")} (All [i o] (-> (Hash i) (Memo i o) (-> i o))) (let [memo (//.mixin (//.with ..memoization (//.of_recursive memo))) @@ -54,8 +51,6 @@ (|>> memo (state.result empty) product.right))) (def: .public (none hash memo) - {#.doc (example "No memoization at all." - "This is useful as a test control when measuring the effect of using memoization.")} (All [i o] (-> (Hash i) (Memo i o) (-> i o))) (let [memo (//.mixin (//.of_recursive memo)) diff --git a/stdlib/source/library/lux/control/function/mixin.lux b/stdlib/source/library/lux/control/function/mixin.lux index cdaa35a6c..98009b21d 100644 --- a/stdlib/source/library/lux/control/function/mixin.lux +++ b/stdlib/source/library/lux/control/function/mixin.lux @@ -10,23 +10,19 @@ [monad (#+ Monad do)]]]]) (type: .public (Mixin i o) - {#.doc (example "A function which can be mixed with others to inherit their behavior.")} (-> (-> i o) (-> i o) (-> i o))) (def: .public (mixin f) - {#.doc (example "Given a mixin, produces a normal function.")} (All [i o] (-> (Mixin i o) (-> i o))) (function (mix input) ((f mix mix) input))) (def: .public nothing - {#.doc (example "A mixin that does nothing and just delegates work to the next mixin.")} Mixin (function (_ delegate recur) delegate)) (def: .public (with parent child) - {#.doc (example "Produces a new mixin, where the behavior of the child can make use of the behavior of the parent.")} (All [i o] (-> (Mixin i o) (Mixin i o) (Mixin i o))) (function (_ delegate recur) (parent (child delegate recur) recur))) @@ -38,7 +34,6 @@ (def: compose ..with)) (def: .public (advice when then) - {#.doc (example "Only apply then mixin when the input meets some criterion.")} (All [i o] (-> (Predicate i) (Mixin i o) (Mixin i o))) (function (_ delegate recur input) (if (when input) @@ -46,7 +41,6 @@ (delegate input)))) (def: .public (before monad action) - {#.doc (example "Executes an action before doing the main work.")} (All [! i o] (-> (Monad !) (-> i (! Any)) (Mixin i (! o)))) (function (_ delegate recur input) (do monad @@ -54,7 +48,6 @@ (delegate input)))) (def: .public (after monad action) - {#.doc (example "Executes an action after doing the main work.")} (All [! i o] (-> (Monad !) (-> i o (! Any)) (Mixin i (! o)))) (function (_ delegate recur input) (do monad @@ -63,11 +56,9 @@ (in output)))) (type: .public (Recursive i o) - {#.doc (example "An indirectly recursive function.")} (-> (-> i o) (-> i o))) (def: .public (of_recursive recursive) - {#.doc (example "Transform an indirectly recursive function into a mixin.")} (All [i o] (-> (Recursive i o) (Mixin i o))) (function (_ delegate recur) (recursive recur))) diff --git a/stdlib/source/library/lux/control/function/mutual.lux b/stdlib/source/library/lux/control/function/mutual.lux index fd36ac10b..dd647ce41 100644 --- a/stdlib/source/library/lux/control/function/mutual.lux +++ b/stdlib/source/library/lux/control/function/mutual.lux @@ -1,5 +1,4 @@ (.module: - {#.doc (.example "Macros for implementing mutually-recursive functions.")} [library [lux (#- Definition let def:) ["." meta] @@ -42,8 +41,8 @@ (-> (List Code) Code [Code Mutual] Code) (` (function ((~ g!name) (~ g!context)) (.let [[(~+ context)] (~ g!context)] - (function (~ (declaration.format (get@ #declaration mutual))) - (~ (get@ #body mutual))))))) + (function (~ (declaration.format (value@ #declaration mutual))) + (~ (value@ #body mutual))))))) (.def: (macro g!context g!self) (-> Code Code Macro) @@ -54,29 +53,15 @@ (syntax: .public (let [functions (.tuple (<>.some ..mutual)) body .any]) - {#.doc (example "Locally-defined mutually-recursive functions." - (let [(even? number) - (-> Nat Bit) - (case number - 0 true - _ (odd? (dec number))) - - (odd? number) - (-> Nat Bit) - (case number - 0 false - _ (even? (dec number)))] - (and (even? 4) - (odd? 5))))} (case functions #.End (in (list body)) (#.Item mutual #.End) - (.let [g!name (|> mutual (get@ [#declaration #declaration.name]) code.local_identifier)] - (in (list (` (.let [(~ g!name) (: (~ (get@ #type mutual)) - (function (~ (declaration.format (get@ #declaration mutual))) - (~ (get@ #body mutual))))] + (.let [g!name (|> mutual (value@ [#declaration #declaration.name]) code.local_identifier)] + (in (list (` (.let [(~ g!name) (: (~ (value@ #type mutual)) + (function (~ (declaration.format (value@ #declaration mutual))) + (~ (value@ #body mutual))))] (~ body)))))) _ @@ -89,12 +74,12 @@ (list.zipped/2 hidden_names functions)) context_types (list\map (function (_ mutual) - (` (-> (~ g!context) (~ (get@ #type mutual))))) + (` (-> (~ g!context) (~ (value@ #type mutual))))) functions) - user_names (list\map (|>> (get@ [#declaration #declaration.name]) code.local_identifier) + user_names (list\map (|>> (value@ [#declaration #declaration.name]) code.local_identifier) functions)] g!pop (local.push (list\map (function (_ [g!name mutual]) - [[here_name (get@ [#declaration #declaration.name] mutual)] + [[here_name (value@ [#declaration #declaration.name] mutual)] (..macro g!context g!name)]) (list.zipped/2 hidden_names functions)))] @@ -119,19 +104,6 @@ (<>.and (<>\in (` .private)) ..mutual)))) (syntax: .public (def: [functions (<>.many ..definition)]) - {#.doc (example "Globally-defined mutually-recursive functions." - (def: - [.public (even? number) - (-> Nat Bit) - (case number - 0 true - _ (odd? (dec number)))] - - [.public (odd? number) - (-> Nat Bit) - (case number - 0 false - _ (even? (dec number)))]))} (case functions #.End (in (list)) @@ -151,19 +123,19 @@ functions) .let [definitions (list\map (..mutual_definition hidden_names g!context) (list.zipped/2 hidden_names - (list\map (get@ #mutual) functions))) + (list\map (value@ #mutual) functions))) context_types (list\map (function (_ mutual) - (` (-> (~ g!context) (~ (get@ [#mutual #type] mutual))))) + (` (-> (~ g!context) (~ (value@ [#mutual #type] mutual))))) functions) - user_names (list\map (|>> (get@ [#mutual #declaration #declaration.name]) code.local_identifier) + user_names (list\map (|>> (value@ [#mutual #declaration #declaration.name]) code.local_identifier) functions)] g!pop (local.push (list\map (function (_ [g!name mutual]) - [[here_name (get@ [#mutual #declaration #declaration.name] mutual)] + [[here_name (value@ [#mutual #declaration #declaration.name] mutual)] (..macro g!context g!name)]) (list.zipped/2 hidden_names functions)))] (in (list& (` (.def: (~ g!context) - [(~+ (list\map (get@ [#mutual #type]) functions))] + [(~+ (list\map (value@ [#mutual #type]) functions))] (.let [(~ g!context) (: (Rec (~ g!context) [(~+ context_types)]) [(~+ definitions)]) @@ -173,11 +145,11 @@ user_names))]))) g!pop (list\map (function (_ mutual) - (.let [g!name (|> mutual (get@ [#mutual #declaration #declaration.name]) code.local_identifier)] + (.let [g!name (|> mutual (value@ [#mutual #declaration #declaration.name]) code.local_identifier)] (` (.def: - (~ (get@ #export_policy mutual)) + (~ (value@ #export_policy mutual)) (~ g!name) - (~ (get@ [#mutual #type] mutual)) + (~ (value@ [#mutual #type] mutual)) (.let [[(~+ user_names)] (~ g!context)] (~ g!name)))))) functions))))))) diff --git a/stdlib/source/library/lux/control/io.lux b/stdlib/source/library/lux/control/io.lux index 1b3b58f7b..125ebfb67 100644 --- a/stdlib/source/library/lux/control/io.lux +++ b/stdlib/source/library/lux/control/io.lux @@ -1,5 +1,4 @@ (.module: - {#.doc "A method for abstracting I/O and effectful computations to make it safe while writing pure functional code."} [library [lux #* [abstract diff --git a/stdlib/source/library/lux/control/maybe.lux b/stdlib/source/library/lux/control/maybe.lux index 74b5f06d2..7dcf84574 100644 --- a/stdlib/source/library/lux/control/maybe.lux +++ b/stdlib/source/library/lux/control/maybe.lux @@ -97,7 +97,8 @@ (All [M] (-> (Monad M) (Monad (All [a] (M (Maybe a)))))) (def: &functor - (functor.composite (get@ #monad.&functor monad) ..functor)) + (functor.composite (value@ #monad.&functor monad) + ..functor)) (def: in (|>> (\ ..monad in) (\ monad in))) diff --git a/stdlib/source/library/lux/control/parser.lux b/stdlib/source/library/lux/control/parser.lux index f4e304045..6d3246295 100644 --- a/stdlib/source/library/lux/control/parser.lux +++ b/stdlib/source/library/lux/control/parser.lux @@ -17,7 +17,6 @@ ["n" nat]]]]]) (type: .public (Parser s a) - {#.doc "A generic parser."} (-> s (Try [s a]))) (implementation: .public functor @@ -70,7 +69,6 @@ (ma input'))))) (def: .public (assertion message test) - {#.doc "Fails with the given message if the test is #0."} (All [s] (-> Text Bit (Parser s Any))) (function (_ input) (if test @@ -78,7 +76,6 @@ (#try.Failure message)))) (def: .public (maybe parser) - {#.doc "Optionality combinator."} (All [s a] (-> (Parser s a) (Parser s (Maybe a)))) (function (_ input) @@ -90,15 +87,11 @@ (#try.Success [input' (#.Some x)])))) (def: .public (result parser input) - {#.doc (example "Executes the parser on the input." - "Does not verify that all of the input has been consumed by the parser." - "Returns both the parser's output, and a value that represents the remaining input.")} (All [s a] (-> (Parser s a) s (Try [s a]))) (parser input)) (def: .public (and first second) - {#.doc "Sequencing combinator."} (All [s a b] (-> (Parser s a) (Parser s b) (Parser s [a b]))) (do {! ..monad} @@ -106,7 +99,6 @@ (\ ! map (|>> [head]) second))) (def: .public (or left right) - {#.doc "Heterogeneous alternative combinator."} (All [s a b] (-> (Parser s a) (Parser s b) (Parser s (Or a b)))) (function (_ tokens) @@ -123,7 +115,6 @@ (#try.Failure error))))) (def: .public (either this that) - {#.doc "Homogeneous alternative combinator."} (All [s a] (-> (Parser s a) (Parser s a) (Parser s a))) (function (_ tokens) @@ -135,7 +126,6 @@ output))) (def: .public (some parser) - {#.doc "0-or-more combinator."} (All [s a] (-> (Parser s a) (Parser s (List a)))) (function (_ input) @@ -149,7 +139,6 @@ input')))) (def: .public (many parser) - {#.doc "1-or-more combinator."} (All [s a] (-> (Parser s a) (Parser s (List a)))) (|> (..some parser) @@ -157,25 +146,22 @@ (\ ..monad map (|>> #.Item)))) (def: .public (exactly amount parser) - {#.doc "Parse exactly N times."} (All [s a] (-> Nat (Parser s a) (Parser s (List a)))) (case amount 0 (\ ..monad in (list)) _ (do {! ..monad} [x parser] (|> parser - (exactly (dec amount)) + (exactly (-- amount)) (\ ! map (|>> (#.Item x))))))) (def: .public (at_least amount parser) - {#.doc "Parse at least N times."} (All [s a] (-> Nat (Parser s a) (Parser s (List a)))) (do {! ..monad} [minimum (..exactly amount parser)] (\ ! map (list\compose minimum) (..some parser)))) (def: .public (at_most amount parser) - {#.doc "Parse at most N times."} (All [s a] (-> Nat (Parser s a) (Parser s (List a)))) (case amount 0 (\ ..monad in (list)) @@ -186,7 +172,7 @@ (#try.Success [input' x]) (..result (\ ..monad map (|>> (#.Item x)) - (at_most (dec amount) parser)) + (at_most (-- amount) parser)) input'))))) (def: .public (between minimum additional parser) @@ -199,7 +185,6 @@ (..at_most additional parser))))) (def: .public (separated_by separator parser) - {#.doc "Parses instances of 'parser' that are separated by instances of 'separator'."} (All [s a b] (-> (Parser s b) (Parser s a) (Parser s (List a)))) (do {! ..monad} [?x (..maybe parser)] @@ -214,7 +199,6 @@ (\ ! map (|>> (list\map product.right) (#.Item x))))))) (def: .public (not parser) - {#.doc (example "Only succeeds when the underlying parser fails.")} (All [s a] (-> (Parser s a) (Parser s Any))) (function (_ input) (case (parser input) @@ -225,13 +209,11 @@ (#try.Failure "Expected to fail; yet succeeded.")))) (def: .public (failure message) - {#.doc (example "Always fail with this 'message'.")} (All [s a] (-> Text (Parser s a))) (function (_ input) (#try.Failure message))) (def: .public (lifted operation) - {#.doc (example "Lift a potentially failed computation into a parser.")} (All [s a] (-> (Try a) (Parser s a))) (function (_ input) (case operation @@ -242,7 +224,6 @@ (#try.Failure error)))) (def: .public (else value parser) - {#.doc "If the given parser fails, returns the default value."} (All [s a] (-> a (Parser s a) (Parser s a))) (function (_ input) (case (parser input) @@ -253,26 +234,22 @@ (#try.Success [input' output])))) (def: .public remaining - {#.doc (example "Yield the remaining input (without consuming it).")} (All [s] (Parser s s)) (function (_ inputs) (#try.Success [inputs inputs]))) (def: .public (rec parser) - {#.doc "Combinator for recursive parsers."} (All [s a] (-> (-> (Parser s a) (Parser s a)) (Parser s a))) (function (_ inputs) (..result (parser (rec parser)) inputs))) (def: .public (after param subject) - {#.doc (example "Run the parser after another one (whose output is ignored).")} (All [s _ a] (-> (Parser s _) (Parser s a) (Parser s a))) (do ..monad [_ param] subject)) (def: .public (before param subject) - {#.doc (example "Run the parser before another one (whose output is ignored).")} (All [s _ a] (-> (Parser s _) (Parser s a) (Parser s a))) (do ..monad [output subject @@ -280,7 +257,6 @@ (in output))) (def: .public (only test parser) - {#.doc (example "Only succeed when the parser's output passes a test.")} (All [s a] (-> (-> a Bit) (Parser s a) (Parser s a))) (do ..monad [output parser @@ -288,7 +264,6 @@ (in output))) (def: .public (parses? parser) - {#.doc (example "Ignore a parser's output and just verify that it succeeds.")} (All [s a] (-> (Parser s a) (Parser s Bit))) (function (_ input) (case (parser input) @@ -299,7 +274,6 @@ (#try.Success [input' true])))) (def: .public (parses parser) - {#.doc (example "Ignore a parser's output and just execute it.")} (All [s a] (-> (Parser s a) (Parser s Any))) (function (_ input) (case (parser input) @@ -310,8 +284,6 @@ (#try.Success [input' []])))) (def: .public (speculative parser) - {#.doc (example "Executes a parser, without actually consuming the input." - "That way, the same input can be consumed again by another parser.")} (All [s a] (-> (Parser s a) (Parser s a))) (function (_ input) (case (parser input) @@ -322,7 +294,6 @@ output))) (def: .public (codec codec parser) - {#.doc (example "Decode the output of a parser using a codec.")} (All [s a z] (-> (Codec a z) (Parser s a) (Parser s z))) (function (_ input) (case (parser input) diff --git a/stdlib/source/library/lux/control/parser/analysis.lux b/stdlib/source/library/lux/control/parser/analysis.lux index fb32f4608..42bffc310 100644 --- a/stdlib/source/library/lux/control/parser/analysis.lux +++ b/stdlib/source/library/lux/control/parser/analysis.lux @@ -48,11 +48,9 @@ ["Input" (exception.listing /.%analysis input)])) (type: .public Parser - {#.doc (example "A parser for Lux code analysis nodes.")} (//.Parser (List Analysis))) (def: .public (result parser input) - {#.doc (example "Executes a parser and makes sure no inputs go unconsumed.")} (All [a] (-> (Parser a) (List Analysis) (Try a))) (case (parser input) (#try.Failure error) @@ -65,7 +63,6 @@ (exception.except ..unconsumed_input unconsumed))) (def: .public any - {#.doc (example "Matches any value, without discrimination.")} (Parser Analysis) (function (_ input) (case input @@ -76,7 +73,6 @@ (#try.Success [tail head])))) (def: .public end! - {#.doc "Ensures there are no more inputs."} (Parser Any) (function (_ tokens) (case tokens @@ -85,7 +81,6 @@ (remaining_inputs tokens)))))) (def: .public end? - {#.doc "Checks whether there are no more inputs."} (Parser Bit) (function (_ tokens) (#try.Success [tokens (case tokens @@ -94,7 +89,6 @@ (template [ ] [(`` (as_is (def: .public - {#.doc (example (~~ (template.text ["Queries for a " " value."])))} (Parser ) (function (_ input) (case input @@ -105,7 +99,6 @@ (exception.except ..cannot_parse input)))) (def: .public ( expected) - {#.doc (example (~~ (template.text ["Assert a specific " " value."])))} (-> (Parser Any)) (function (_ input) (case input @@ -129,7 +122,6 @@ ) (def: .public (tuple parser) - {#.doc (example "Parses only within the context of a tuple's contents.")} (All [a] (-> (Parser a) (Parser a))) (function (_ input) (case input diff --git a/stdlib/source/library/lux/control/parser/binary.lux b/stdlib/source/library/lux/control/parser/binary.lux index d2d195888..ec251b304 100644 --- a/stdlib/source/library/lux/control/parser/binary.lux +++ b/stdlib/source/library/lux/control/parser/binary.lux @@ -27,11 +27,9 @@ ["." // ("#\." monad)]) (type: .public Offset - {#.doc (example "An offset for reading within binary data.")} Nat) (type: .public Parser - {#.doc (example "A parser for raw binary data.")} (//.Parser [Offset Binary])) (exception: .public (binary_was_not_fully_read {binary_length Nat} {bytes_read Nat}) @@ -40,7 +38,6 @@ ["Bytes read" (%.nat bytes_read)])) (def: .public (result parser input) - {#.doc (example "Runs a parser and checks that all the binary data was read by it.")} (All [a] (-> (Parser a) Binary (Try a))) (case (parser [0 input]) (#try.Failure msg) @@ -53,25 +50,21 @@ (exception.except ..binary_was_not_fully_read [length end]))))) (def: .public end? - {#.doc (example "Checks whether there is no more data to read.")} (Parser Bit) (function (_ (^@ input [offset data])) (#try.Success [input (n.= offset (/.size data))]))) (def: .public offset - {#.doc (example "The current offset (i.e. how much data has been read).")} (Parser Offset) (function (_ (^@ input [offset data])) (#try.Success [input offset]))) (def: .public remaining - {#.doc (example "How much of the data remains to be read.")} (Parser Nat) (function (_ (^@ input [offset data])) (#try.Success [input (n.- offset (/.size data))]))) (type: .public Size - {#.doc (example "The size of a chunk of data within a binary array.")} Nat) (def: .public size/8 Size 1) @@ -129,14 +122,12 @@ [1 #.Right right]])) (def: .public (rec body) - {#.doc (example "Tie the knot for a recursive parser.")} (All [a] (-> (-> (Parser a) (Parser a)) (Parser a))) (function (_ input) (let [parser (body (rec body))] (parser input)))) (def: .public any - {#.doc (example "Does no parsing, and just returns a dummy value.")} (Parser Any) (//\in [])) @@ -156,7 +147,6 @@ _ (//.lifted (exception.except ..not_a_bit [value]))))) (def: .public (segment size) - {#.doc (example "Parses a chunk of data of a given size.")} (-> Nat (Parser Binary)) (function (_ [offset binary]) (case size @@ -167,7 +157,6 @@ (template [ ] [(`` (def: .public - {#.doc (example (~~ (template.text ["Parses a block of data prefixed with a size that is " " bytes long."])))} (Parser Binary) (do //.monad [size (//\map .nat )] @@ -181,7 +170,6 @@ (template [ ] [(`` (def: .public - {#.doc (example (~~ (template.text ["Parses a block of (UTF-8 encoded) text prefixed with a size that is " " bytes long."])))} (Parser Text) (do //.monad [utf8 ] @@ -197,7 +185,6 @@ (template [ ] [(def: .public ( valueP) - {#.doc (example (~~ (template.text ["Parses a row of values prefixed with a size that is " " bytes long."])))} (All [v] (-> (Parser v) (Parser (Row v)))) (do //.monad [amount (: (Parser Nat) @@ -212,8 +199,8 @@ (if (n.< amount index) (do //.monad [value valueP] - (recur (.inc index) - (row.add value output))) + (recur (.++ index) + (row.suffix value output))) (//\in output)))))] [08 row/8 ..bits/8] @@ -227,7 +214,6 @@ (..or ..any)) (def: .public (list value) - {#.doc (example "Parses an arbitrarily long list of values.")} (All [a] (-> (Parser a) (Parser (List a)))) (..rec (|>> (//.and value) diff --git a/stdlib/source/library/lux/control/parser/cli.lux b/stdlib/source/library/lux/control/parser/cli.lux index 3dd50a349..d9b4928ab 100644 --- a/stdlib/source/library/lux/control/parser/cli.lux +++ b/stdlib/source/library/lux/control/parser/cli.lux @@ -11,11 +11,9 @@ ["." //]) (type: .public (Parser a) - {#.doc "A command-line interface parser."} (//.Parser (List Text) a)) (def: .public (result parser inputs) - {#.doc (example "Executes the parser and verifies that all inputs are processed.")} (All [a] (-> (Parser a) (List Text) (Try a))) (case (//.result parser inputs) (#try.Success [remaining output]) @@ -30,7 +28,6 @@ (#try.Failure try))) (def: .public any - {#.doc "Just returns the next input without applying any logic."} (Parser Text) (function (_ inputs) (case inputs @@ -41,7 +38,6 @@ (#try.Failure "Cannot parse empty arguments.")))) (def: .public (parse parser) - {#.doc "Parses the next input with a parsing function."} (All [a] (-> (-> Text (Try a)) (Parser a))) (function (_ inputs) (do try.monad @@ -50,7 +46,6 @@ (in [remaining output])))) (def: .public (this reference) - {#.doc "Checks that a token is in the inputs."} (-> Text (Parser Any)) (function (_ inputs) (do try.monad @@ -60,7 +55,6 @@ (#try.Failure (format "Missing token: '" reference "'")))))) (def: .public (somewhere cli) - {#.doc "Given a parser, tries to parse it somewhere in the inputs (i.e. not necessarily parsing the immediate inputs)."} (All [a] (-> (Parser a) (Parser a))) (function (_ inputs) (loop [immediate inputs] @@ -80,7 +74,6 @@ output]))))))) (def: .public end - {#.doc "Ensures there are no more inputs."} (Parser Any) (function (_ inputs) (case inputs @@ -88,14 +81,12 @@ _ (#try.Failure (format "Unknown parameters: " (text.interposed " " inputs)))))) (def: .public (named name value) - {#.doc (example "Parses a named parameter and yields its value.")} (All [a] (-> Text (Parser a) (Parser a))) (|> value (//.after (..this name)) ..somewhere)) (def: .public (parameter [short long] value) - {#.doc (example "Parses a parameter that can have either a short or a long name.")} (All [a] (-> [Text Text] (Parser a) (Parser a))) (|> value (//.after (//.either (..this short) (..this long))) diff --git a/stdlib/source/library/lux/control/parser/code.lux b/stdlib/source/library/lux/control/parser/code.lux index 93a2f65d9..1a3bbc5a7 100644 --- a/stdlib/source/library/lux/control/parser/code.lux +++ b/stdlib/source/library/lux/control/parser/code.lux @@ -28,7 +28,6 @@ (#.Item [[x y] pairs']) (list& x y (un_paired pairs')))) (type: .public Parser - {#.doc "A Lux code parser."} (//.Parser (List Code))) (def: remaining_inputs @@ -38,7 +37,6 @@ ($_ text\compose text.new_line "Remaining input: "))) (def: .public any - {#.doc "Yields the next input without applying any logic."} (Parser Code) (function (_ tokens) (case tokens @@ -51,7 +49,6 @@ (template [ ] [(with_expansions [ (as_is (#try.Failure ($_ text\compose "Cannot parse " (remaining_inputs tokens))))] (def: .public - {#.doc (code.text ($_ text\compose "Parses the next " " input."))} (Parser ) (function (_ tokens) (case tokens @@ -62,7 +59,6 @@ ))) (def: .public ( expected) - {#.doc (code.text ($_ text\compose "Checks for a specific " " input."))} (-> (Parser Any)) (function (_ tokens) (case tokens @@ -85,7 +81,6 @@ ) (def: .public (this! code) - {#.doc "Ensures the given Code is the next input."} (-> Code (Parser Any)) (function (_ tokens) (case tokens @@ -101,7 +96,6 @@ (template [ ] [(with_expansions [ (as_is (#try.Failure ($_ text\compose "Cannot parse " (remaining_inputs tokens))))] (def: .public - {#.doc (code.text ($_ text\compose "Parse a local " " (a " " that has no module prefix)."))} (Parser Text) (function (_ tokens) (case tokens @@ -112,7 +106,6 @@ ))) (def: .public ( expected) - {#.doc (code.text ($_ text\compose "Checks for a specific local " " (a " " that has no module prefix)."))} (-> Text (Parser Any)) (function (_ tokens) (case tokens @@ -130,7 +123,6 @@ (template [ ] [(def: .public ( p) - {#.doc (code.text ($_ text\compose "Parses the contents of a " "."))} (All [a] (-> (Parser a) (Parser a))) (function (_ tokens) @@ -148,7 +140,6 @@ ) (def: .public (record p) - {#.doc "Parses the contents of a record."} (All [a] (-> (Parser a) (Parser a))) (function (_ tokens) @@ -162,7 +153,6 @@ (#try.Failure ($_ text\compose "Cannot parse record" (remaining_inputs tokens)))))) (def: .public end! - {#.doc "Verifies there are no more inputs."} (Parser Any) (function (_ tokens) (case tokens @@ -170,7 +160,6 @@ _ (#try.Failure ($_ text\compose "Expected list of tokens to be empty!" (remaining_inputs tokens)))))) (def: .public end? - {#.doc "Checks whether there are no more inputs."} (Parser Bit) (function (_ tokens) (#try.Success [tokens (case tokens @@ -178,7 +167,6 @@ _ false)]))) (def: .public (result parser inputs) - {#.doc (example "Executes a parser against a stream of code, and verifies all the inputs are consumed.")} (All [a] (-> (Parser a) (List Code) (Try a))) (case (parser inputs) (#try.Failure error) @@ -196,7 +184,6 @@ (text\compose "Unconsumed inputs: ")))))) (def: .public (local inputs parser) - {#.doc "Runs parser against the given list of inputs."} (All [a] (-> (List Code) (Parser a) (Parser a))) (function (_ real) (do try.monad diff --git a/stdlib/source/library/lux/control/parser/environment.lux b/stdlib/source/library/lux/control/parser/environment.lux index e12febdf3..f084a838d 100644 --- a/stdlib/source/library/lux/control/parser/environment.lux +++ b/stdlib/source/library/lux/control/parser/environment.lux @@ -13,11 +13,9 @@ ["." //]) (type: .public Property - {#.doc (example "A property in the environment.")} Text) (type: .public Environment - {#.doc (example "An abstraction for environment variables of a program.")} (Dictionary Property Text)) (exception: .public (unknown_property {property Property}) @@ -25,11 +23,9 @@ ["Property" (%.text property)])) (type: .public (Parser a) - {#.doc (example "A parser of environment variables of a program.")} (//.Parser Environment a)) (def: .public empty - {#.doc (example "An empty environment.")} Environment (dictionary.empty text.hash)) @@ -44,7 +40,5 @@ (exception.except ..unknown_property [name])))) (def: .public (result parser environment) - {#.doc (example "Executes a parser against the given environment variables." - "Does not check whether all environment variables were parsed, since they're usually an open set.")} (All [a] (-> (Parser a) Environment (Try a))) (\ try.monad map product.right (parser environment))) diff --git a/stdlib/source/library/lux/control/parser/json.lux b/stdlib/source/library/lux/control/parser/json.lux index 51c3cc2bf..65569ff9e 100644 --- a/stdlib/source/library/lux/control/parser/json.lux +++ b/stdlib/source/library/lux/control/parser/json.lux @@ -159,7 +159,7 @@ dictionary.entries (list\map (function (_ [key value]) (list (#/.String key) value))) - list.joined + list.together (//.result parser)) (#try.Failure error) (//.failure error) diff --git a/stdlib/source/library/lux/control/parser/text.lux b/stdlib/source/library/lux/control/parser/text.lux index fb2c59128..46ed6e987 100644 --- a/stdlib/source/library/lux/control/parser/text.lux +++ b/stdlib/source/library/lux/control/parser/text.lux @@ -302,7 +302,7 @@ [(def: .public ( parser) {#.doc (code.text ($_ /\compose "Yields " " characters as a single continuous text (as a slice)."))} (-> (Parser Text) (Parser Text)) - (|> parser (\ //.monad map /.joined)))] + (|> parser (\ //.monad map /.together)))] [some //.some "some"] [many //.many "many"] @@ -324,7 +324,7 @@ (-> Nat (Parser Text) (Parser Text)) (|> parser ( amount) - (\ //.monad map /.joined)))] + (\ //.monad map /.together)))] [exactly //.exactly "exactly"] [at_most //.at_most "at most"] @@ -347,7 +347,7 @@ (-> Nat Nat (Parser Text) (Parser Text)) (|> parser (//.between minimum additional) - (\ //.monad map /.joined))) + (\ //.monad map /.together))) (def: .public (between! minimum additional parser) (-> Nat Nat (Parser Slice) (Parser Slice)) diff --git a/stdlib/source/library/lux/control/parser/type.lux b/stdlib/source/library/lux/control/parser/type.lux index 8016080b5..e6ea2b3dd 100644 --- a/stdlib/source/library/lux/control/parser/type.lux +++ b/stdlib/source/library/lux/control/parser/type.lux @@ -197,19 +197,19 @@ all_varsL (: (List Code) (list))] (if (n.< num_args current_arg) (if (n.= 0 current_arg) - (let [varL (label (inc funcI))] - (recur (inc current_arg) + (let [varL (label (++ funcI))] + (recur (++ current_arg) (|> env' (dictionary.has funcI [headT funcL]) - (dictionary.has (inc funcI) [(#.Parameter (inc funcI)) varL])) + (dictionary.has (++ funcI) [(#.Parameter (++ funcI)) varL])) (#.Item varL all_varsL))) (let [partialI (|> current_arg (n.* 2) (n.+ funcI)) - partial_varI (inc partialI) + partial_varI (++ partialI) partial_varL (label partial_varI) partialC (` ((~ funcL) (~+ (|> (list.indices num_args) - (list\map (|>> (n.* 2) inc (n.+ funcI) label)) + (list\map (|>> (n.* 2) ++ (n.+ funcI) label)) list.reversed))))] - (recur (inc current_arg) + (recur (++ current_arg) (|> env' (dictionary.has partialI [.Nothing partialC]) (dictionary.has partial_varI [(#.Parameter partial_varI) partial_varL])) @@ -265,7 +265,7 @@ (let [env_level (n./ 2 (dictionary.size env)) parameter_level (n./ 2 idx) parameter_idx (n.% 2 idx)] - (|> env_level dec (n.- parameter_level) (n.* 2) (n.+ parameter_idx)))) + (|> env_level -- (n.- parameter_level) (n.* 2) (n.+ parameter_idx)))) (def: .public parameter (Parser Code) diff --git a/stdlib/source/library/lux/control/pipe.lux b/stdlib/source/library/lux/control/pipe.lux index 66d3f2a06..b194d6749 100644 --- a/stdlib/source/library/lux/control/pipe.lux +++ b/stdlib/source/library/lux/control/pipe.lux @@ -27,21 +27,11 @@ (syntax: .public (new> [start .any body body^ prev .any]) - {#.doc (example "Ignores the piped argument, and begins a new pipe." - (n.= 1 - (|> 20 - (n.* 3) - (n.+ 4) - (new> 0 [inc]))))} (in (list (` (|> (~ start) (~+ body)))))) (syntax: .public (let> [binding .any body .any prev .any]) - {#.doc (example "Gives a name to the piped-argument, within the given expression." - (n.= 10 - (|> 5 - (let> x (n.+ x x)))))} (in (list (` (let [(~ binding) (~ prev)] (~ body)))))) @@ -55,12 +45,6 @@ else body^ _ _reversed_ branches (<>.some (<>.and body^ body^))]) - {#.doc (example "Branching for pipes." - "Both the tests and the bodies are piped-code, and must be given inside a tuple." - (|> +5 - (cond> [i.even?] [(i.* +2)] - [i.odd?] [(i.* +3)] - [(new> -1 [])])))} (with_identifiers [g!temp] (in (list (` (let [(~ g!temp) (~ prev)] (cond (~+ (do list.monad @@ -73,14 +57,6 @@ then body^ else body^ prev .any]) - {#.doc (example "If-branching." - (same? (if (n.even? sample) - "even" - "odd") - (|> sample - (if> [n.even?] - [(new> "even" [])] - [(new> "odd" [])]))))} (in (list (` (cond> [(~+ test)] [(~+ then)] [(~+ else)] (~ prev)))))) @@ -88,13 +64,6 @@ (syntax: .public (when> [test body^ then body^ prev .any]) - {#.doc (example "Only execute the body when the test passes." - (same? (if (n.even? sample) - (n.* 2 sample) - sample) - (|> sample - (when> [n.even?] - [(n.* 2)]))))} (in (list (` (cond> [(~+ test)] [(~+ then)] [] (~ prev)))))) @@ -102,11 +71,6 @@ (syntax: .public (loop> [test body^ then body^ prev .any]) - {#.doc (example "Loops for pipes." - "Both the testing and calculating steps are pipes and must be given inside tuples." - (|> +1 - (loop> [(i.< +10)] - [inc])))} (with_identifiers [g!temp] (in (list (` (loop [(~ g!temp) (~ prev)] (if (|> (~ g!temp) (~+ test)) @@ -116,13 +80,6 @@ (syntax: .public (do> [monad .any steps (<>.some body^) prev .any]) - {#.doc (example "Monadic pipes." - "Each steps in the monadic computation is a pipe and must be given inside a tuple." - (|> +5 - (do> identity.monad - [(i.* +3)] - [(i.+ +4)] - [inc])))} (with_identifiers [g!temp] (case (list.reversed steps) (^ (list& last_step prev_steps)) @@ -139,11 +96,6 @@ (syntax: .public (exec> [body body^ prev .any]) - {#.doc (example "Non-updating pipes." - "Will generate piped computations, but their results will not be used in the larger scope." - (|> +5 - (exec> [.nat %n log!]) - (i.* +10)))} (with_identifiers [g!temp] (in (list (` (let [(~ g!temp) (~ prev)] (exec (|> (~ g!temp) (~+ body)) @@ -151,13 +103,6 @@ (syntax: .public (tuple> [paths (<>.many body^) prev .any]) - {#.doc (example "Parallel branching for pipes." - "Allows to run multiple pipelines for a value and gives you a tuple of the outputs." - (|> +5 - (tuple> [(i.* +10)] - [dec (i./ +2)] - [Int/encode])) - "Will become: [+50 +2 '+5']")} (with_identifiers [g!temp] (in (list (` (let [(~ g!temp) (~ prev)] [(~+ (list\map (function (_ body) (` (|> (~ g!temp) (~+ body)))) @@ -165,20 +110,6 @@ (syntax: .public (case> [branches (<>.many (<>.and .any .any)) prev .any]) - {#.doc (example "Pattern-matching for pipes." - "The bodies of each branch are NOT pipes; just regular values." - (|> +5 - (case> +0 "zero" - +1 "one" - +2 "two" - +3 "three" - +4 "four" - +5 "five" - +6 "six" - +7 "seven" - +8 "eight" - +9 "nine" - _ "???")))} (in (list (` (case (~ prev) (~+ (list\join (list\map (function (_ [pattern body]) (list pattern body)) branches)))))))) diff --git a/stdlib/source/library/lux/control/reader.lux b/stdlib/source/library/lux/control/reader.lux index 09fcd2058..e1ffffd7b 100644 --- a/stdlib/source/library/lux/control/reader.lux +++ b/stdlib/source/library/lux/control/reader.lux @@ -7,21 +7,17 @@ ["." monad (#+ Monad do)]]]]) (type: .public (Reader r a) - {#.doc "Computations that have access to some environmental value."} (-> r a)) (def: .public read - {#.doc "Get the environment."} (All [r] (Reader r r)) (function (_ env) env)) (def: .public (local change proc) - {#.doc "Run computation with a locally-modified environment."} (All [r a] (-> (-> r r) (Reader r a) (Reader r a))) (|>> change proc)) (def: .public (result env proc) - {#.doc "Executes the reader against the given environment."} (All [r a] (-> r (Reader r a) a)) (proc env)) @@ -54,11 +50,10 @@ (mma env env)))) (implementation: .public (with monad) - {#.doc "Monad transformer for Reader."} (All [M] (-> (Monad M) (All [e] (Monad (All [a] (Reader e (M a))))))) (def: &functor - (functor.composite ..functor (get@ #monad.&functor monad))) + (functor.composite ..functor (value@ #monad.&functor monad))) (def: in (|>> (\ monad in) (\ ..monad in))) @@ -70,6 +65,5 @@ (result env eMa))))) (def: .public lifted - {#.doc "Lift monadic values to the Reader wrapper."} (All [M e a] (-> (M a) (Reader e (M a)))) (\ ..monad in)) diff --git a/stdlib/source/library/lux/control/region.lux b/stdlib/source/library/lux/control/region.lux index 191c6a328..9d9f579c0 100644 --- a/stdlib/source/library/lux/control/region.lux +++ b/stdlib/source/library/lux/control/region.lux @@ -19,8 +19,6 @@ (-> r (! (Try Any)))) (type: .public (Region r ! a) - {#.doc (example "A region where resources may be be claimed and where a side-effecting computation may be performed." - "Every resource is paired with a function that knows how to clean/reclaim it, to make sure there are no leaks.")} (-> [r (List (Cleaner r !))] (! [(List (Cleaner r !)) (Try a)]))) @@ -54,7 +52,6 @@ (exception.except ..clean_up_error [error output]))) (def: .public (run! monad computation) - {#.doc (example "Executes a region-based computation, with a side-effect determined by the monad.")} (All [! a] (-> (Monad !) (All [r] (Region r ! a)) (! (Try a)))) @@ -65,7 +62,6 @@ (\ ! map (list\fold clean output))))) (def: .public (acquire! monad cleaner value) - {#.doc (example "Acquire a resource while pairing it a function that knows how to reclaim it.")} (All [! a] (-> (Monad !) (-> a (! (Try Any))) a (All [r] (Region r ! a)))) (function (_ [region cleaners]) @@ -97,7 +93,7 @@ (All [r] (Apply (Region r !))))) (def: &functor - (..functor (get@ #monad.&functor super))) + (..functor (value@ #monad.&functor super))) (def: (apply ff fa) (function (_ [region cleaners]) @@ -122,7 +118,7 @@ (All [r] (Monad (Region r !))))) (def: &functor - (..functor (get@ #monad.&functor super))) + (..functor (value@ #monad.&functor super))) (def: (in value) (function (_ [region cleaners]) @@ -140,7 +136,6 @@ (in [cleaners (#try.Failure error)])))))) (def: .public (failure monad error) - {#.doc (example "Immediately fail with this 'message'.")} (All [! a] (-> (Monad !) Text (All [r] (Region r ! a)))) @@ -148,14 +143,12 @@ (\ monad in [cleaners (#try.Failure error)]))) (def: .public (except monad exception message) - {#.doc (example "Fail by throwing/raising an exception.")} (All [! e a] (-> (Monad !) (Exception e) e (All [r] (Region r ! a)))) (failure monad (exception.error exception message))) (def: .public (lifted monad operation) - {#.doc (example "Lift an effectful computation into a region-based computation.")} (All [! a] (-> (Monad !) (! a) (All [r] (Region r ! a)))) diff --git a/stdlib/source/library/lux/control/remember.lux b/stdlib/source/library/lux/control/remember.lux index 25b595b63..9c6e7a97e 100644 --- a/stdlib/source/library/lux/control/remember.lux +++ b/stdlib/source/library/lux/control/remember.lux @@ -50,13 +50,6 @@ (syntax: .public (remember [deadline ..deadline message .text focus (<>.maybe .any)]) - {#.doc (example "A message with an expiration date." - "Can have an optional piece of code to focus on." - (remember "2022-04-01" - "Do this, that and the other.") - (remember "2022-04-01" - "Improve the performace." - (some (complicated (computation 123)))))} (let [now (io.run! instant.now) today (instant.date now)] (if (date\< deadline today) diff --git a/stdlib/source/library/lux/control/security/capability.lux b/stdlib/source/library/lux/control/security/capability.lux index 3762c6e8f..45b2bd083 100644 --- a/stdlib/source/library/lux/control/security/capability.lux +++ b/stdlib/source/library/lux/control/security/capability.lux @@ -25,8 +25,7 @@ ["|.|" annotations]]]]]) (abstract: .public (Capability brand input output) - {#.doc (example "Represents the capability to perform an operation." - "This operation is assumed to have security implications.")} + {} (-> input output) @@ -37,7 +36,6 @@ (|>> :abstraction)) (def: .public (use capability input) - {#.doc (example "Applies a capability against its required input.")} (All [brand input output] (-> (Capability brand input output) input @@ -50,16 +48,6 @@ |declaration|.parser (<>.maybe |annotations|.parser) (.form ($_ <>.and .local_identifier .any .any))))]) - {#.doc (example "Defines a capability as a unique type, and a constructor for instances." - - (capability: (Can_Duplicate a) - (can_duplicate a [a a])) - - (let [capability (can_duplicate - (function (_ value) - [value value])) - [left right] (..use capability 123)] - (same? left right)))} (do {! meta.monad} [this_module meta.current_module_name .let [[name vars] declaration] @@ -77,7 +65,6 @@ )))) (def: .public (async capability) - {#.doc (example "Converts a synchronous I/O-based capability into an asynchronous capability.")} (All [brand input output] (-> (Capability brand input (IO output)) (Capability brand input (Async output)))) diff --git a/stdlib/source/library/lux/control/security/policy.lux b/stdlib/source/library/lux/control/security/policy.lux index ea47056bd..9e33fa86b 100644 --- a/stdlib/source/library/lux/control/security/policy.lux +++ b/stdlib/source/library/lux/control/security/policy.lux @@ -9,38 +9,32 @@ abstract]]]) (abstract: .public (Policy brand value label) - {#.doc (example "A security policy encoded as the means to 'upgrade' or 'downgrade' in a secure context.")} + {} value (type: .public (Can_Upgrade brand label value) - {#.doc (example "Represents the capacity to 'upgrade' a value.")} (-> value (Policy brand value label))) (type: .public (Can_Downgrade brand label value) - {#.doc (example "Represents the capacity to 'downgrade' a value.")} (-> (Policy brand value label) value)) (type: .public (Privilege brand label) - {#.doc (example "Represents the privilege to both 'upgrade' and 'downgrade' a value.")} {#can_upgrade (Can_Upgrade brand label) #can_downgrade (Can_Downgrade brand label)}) (type: .public (Delegation brand from to) - {#.doc (example "Represents the act of delegating policy capacities.")} (All [value] (-> (Policy brand value from) (Policy brand value to)))) (def: .public (delegation downgrade upgrade) - {#.doc (example "Delegating policy capacities.")} (All [brand from to] (-> (Can_Downgrade brand from) (Can_Upgrade brand to) (Delegation brand from to))) (|>> downgrade upgrade)) (type: .public (Context brand scope label) - {#.doc (example "A computational context with an associated policy privilege.")} (-> (Privilege brand label) (scope label))) @@ -50,27 +44,6 @@ #can_downgrade (|>> :representation)}) (def: .public (with_policy context) - {#.doc (example "Activates a security context with the priviledge to enforce it's policy." - - (type: Password - (Private Text)) - - (interface: (Policy %) - (: (-> Text (Password %)) - password) - (: (-> (Password %) Text) - unsafe)) - - (def: (policy _) - (Ex [%] (-> Any (Policy %))) - (with_policy - (: (Context Privacy Policy) - (function (_ (^open "%::.")) - (implementation - (def: (password value) - (%::can_upgrade value)) - (def: (unsafe password) - (%::can_downgrade password))))))))} (All [brand scope] (Ex [label] (-> (Context brand scope label) @@ -104,9 +77,9 @@ (def: join (|>> :representation))) ) -(template [ ] +(template [ ] [(abstract: .public - {#.doc } + {} Any @@ -120,10 +93,6 @@ (Can_Downgrade )) )] - [Privacy Private Can_Conceal Can_Reveal - (example "A security context for privacy." - "Private data is data which cannot be allowed to leak outside of the programmed.")] - [Safety Safe Can_Trust Can_Distrust - (example "A security context for safety." - "Safe data is data coming from outside the program which can be trusted to be properly formatted and lacking injections.")] + [Privacy Private Can_Conceal Can_Reveal] + [Safety Safe Can_Trust Can_Distrust] ) diff --git a/stdlib/source/library/lux/control/state.lux b/stdlib/source/library/lux/control/state.lux index 470751832..109491fee 100644 --- a/stdlib/source/library/lux/control/state.lux +++ b/stdlib/source/library/lux/control/state.lux @@ -7,42 +7,35 @@ [monad (#+ Monad do)]]]]) (type: .public (State s a) - {#.doc "Stateful computations."} (-> s [s a])) (def: .public get - {#.doc "Read the current state."} (All [s] (State s s)) (function (_ state) [state state])) (def: .public (put new_state) - {#.doc "Set the new state."} (All [s] (-> s (State s Any))) (function (_ state) [new_state []])) (def: .public (update change) - {#.doc "Compute the new state."} (All [s] (-> (-> s s) (State s Any))) (function (_ state) [(change state) []])) (def: .public (use user) - {#.doc "Run a function on the current state."} (All [s a] (-> (-> s a) (State s a))) (function (_ state) [state (user state)])) (def: .public (local change action) - {#.doc "Run the computation with a locally-modified state."} (All [s a] (-> (-> s s) (State s a) (State s a))) (function (_ state) (let [[state' output] (action (change state))] [state output]))) (def: .public (result state action) - {#.doc "Run a stateful computation."} (All [s a] (-> s (State s a) [s a])) (action state)) @@ -80,7 +73,6 @@ (ma state'))))) (def: .public (while condition body) - {#.doc (example "A stateful while loop.")} (All [s] (-> (State s Bit) (State s Any) (State s Any))) (do {! ..monad} [execute? condition] @@ -91,7 +83,6 @@ (in [])))) (def: .public (do_while condition body) - {#.doc (example "A stateful do-while loop.")} (All [s] (-> (State s Bit) (State s Any) (State s Any))) (do ..monad [_ body] @@ -118,16 +109,13 @@ (in [state (f a)]))))) (type: .public (+State M s a) - {#.doc "Stateful computations decorated by a monad."} (-> s (M [s a]))) (def: .public (result' state action) - {#.doc "Execute a stateful computation decorated by a monad."} (All [M s a] (-> s (+State M s a) (M [s a]))) (action state)) (implementation: .public (with monad) - {#.doc "A monad transformer to create composite stateful computations."} (All [M s] (-> (Monad M) (Monad (+State M s)))) (def: &functor (with//functor (\ monad &functor))) @@ -143,7 +131,6 @@ (sMa state'))))) (def: .public (lifted monad ma) - {#.doc "Lift monadic values to the +State wrapper."} (All [M s a] (-> (Monad M) (M a) (+State M s a))) (function (_ state) (do monad diff --git a/stdlib/source/library/lux/control/thread.lux b/stdlib/source/library/lux/control/thread.lux index 266c12afc..b70813ec9 100644 --- a/stdlib/source/library/lux/control/thread.lux +++ b/stdlib/source/library/lux/control/thread.lux @@ -15,16 +15,14 @@ abstract]]]) (type: .public (Thread ! a) - {#.doc (example "An imperative process with access to mutable values.")} (-> ! a)) (abstract: .public (Box t v) - {#.doc "A mutable box holding a value."} + {} (Array v) (def: .public (box init) - {#.doc (example "A brand-new box initialized to the given value.")} (All [a] (-> a (All [!] (Thread ! (Box ! a))))) (function (_ !) (|> (array.empty 1) @@ -32,7 +30,6 @@ :abstraction))) (def: .public (read! box) - {#.doc (example "Reads the current value in the box.")} (All [! a] (-> (Box ! a) (Thread ! a))) (function (_ !) (for {@.old @@ -54,21 +51,18 @@ @.scheme ("scheme array read" 0 (:representation box))}))) (def: .public (write! value box) - {#.doc (example "Mutates the value in the box.")} (All [a] (-> a (All [!] (-> (Box ! a) (Thread ! Any))))) (function (_ !) (|> box :representation (array.write! 0 value) :abstraction))) ) (def: .public (result thread) - {#.doc (example "Executes the imperative thread in a self-contained way.")} (All [a] (-> (All [!] (Thread ! a)) a)) (thread [])) (def: .public io - {#.doc (example "Transforms the imperative thread into an I/O computation.")} (All [a] (-> (All [!] (Thread ! a)) (IO a))) @@ -105,7 +99,6 @@ ((ffa !) !)))) (def: .public (update! f box) - {#.doc (example "Update a box's value by applying a function to it.")} (All [a !] (-> (-> a a) (Box ! a) (Thread ! a))) (do ..monad [old (read! box) diff --git a/stdlib/source/library/lux/control/try.lux b/stdlib/source/library/lux/control/try.lux index c7dc9f1d9..05d7d69ea 100644 --- a/stdlib/source/library/lux/control/try.lux +++ b/stdlib/source/library/lux/control/try.lux @@ -10,7 +10,6 @@ ["." location]]]]) (type: .public (Try a) - {#.doc (example "A computation that can fail with an error message.")} (#Failure Text) (#Success a)) @@ -60,12 +59,11 @@ ma))) (implementation: .public (with monad) - {#.doc (example "Enhances a monad with error-handling functionality.")} ... TODO: Replace (All [a] (! (Try a))) with (functor.Then ! Try) (All [!] (-> (Monad !) (Monad (All [a] (! (Try a)))))) (def: &functor - (functor.composite (get@ #monad.&functor monad) ..functor)) + (functor.composite (value@ #monad.&functor monad) ..functor)) (def: in (|>> (\ ..monad in) @@ -82,7 +80,6 @@ Mea)))) (def: .public (lifted monad) - {#.doc (example "Wraps a monadic value with error-handling machinery.")} (All [! a] (-> (Monad !) (-> (! a) (! (Try a))))) (\ monad map (\ ..monad in))) @@ -102,9 +99,6 @@ ))) (def: .public (trusted try) - {#.doc (example "Assumes a Try value succeeded, and yields its value." - "If it didn't, raises the error as a runtime error." - "WARNING: Use with caution.")} (All [a] (-> (Try a) a)) (case try (#Success value) @@ -133,13 +127,6 @@ (name_of ..of_maybe)))))) (macro: .public (else tokens compiler) - {#.doc (example "Allows you to provide a default value that will be used" - "if a (Try x) value turns out to be #Failure." - "Note: the expression for the default value will not be computed if the base computation succeeds." - (= "bar" - (else "foo" (#..Success "bar"))) - (= "foo" - (else "foo" (#..Failure "KABOOM!"))))} (case tokens (^ (list else try)) (#Success [compiler (list (` (case (~ try) diff --git a/stdlib/source/library/lux/control/writer.lux b/stdlib/source/library/lux/control/writer.lux index 18a0fc7e1..194822f60 100644 --- a/stdlib/source/library/lux/control/writer.lux +++ b/stdlib/source/library/lux/control/writer.lux @@ -9,12 +9,10 @@ ["." monad (#+ Monad do)]]]]) (type: .public (Writer log value) - {#.doc "Represents a value with an associated 'log' to record arbitrary information."} {#log log #value value}) (def: .public (write message) - {#.doc "Write a value to the log."} (All [log] (-> log (Writer log Any))) [message []]) @@ -51,11 +49,10 @@ [(\ monoid compose log1 log2) a]))) (implementation: .public (with monoid monad) - {#.doc (example "Enhances a monad with Writer functionality.")} (All [l M] (-> (Monoid l) (Monad M) (Monad (All [a] (M (Writer l a)))))) (def: &functor - (functor.composite (get@ #monad.&functor monad) + (functor.composite (value@ #monad.&functor monad) ..functor)) (def: in @@ -73,7 +70,6 @@ (in [(\ monoid compose l1 l2) a])))) (def: .public (lifted monoid monad) - {#.doc (example "Wraps a monadic value with Writer machinery.")} (All [l M a] (-> (Monoid l) (Monad M) (-> (M a) (M (Writer l a))))) diff --git a/stdlib/source/library/lux/data/binary.lux b/stdlib/source/library/lux/data/binary.lux index cff9714e2..13b9b5a9d 100644 --- a/stdlib/source/library/lux/data/binary.lux +++ b/stdlib/source/library/lux/data/binary.lux @@ -102,8 +102,8 @@ (array.Array (I64 Any))))) (template: (!size binary) - [(for {@.old (ffi.array_length binary) - @.jvm (ffi.array_length binary) + [(for {@.old (ffi.length binary) + @.jvm (ffi.length binary) @.js (|> binary @@ -122,8 +122,8 @@ (array.size binary))]) (template: (!read index binary) - [(for {@.old (..i64 (ffi.array_read index binary)) - @.jvm (..i64 (ffi.array_read index binary)) + [(for {@.old (..i64 (ffi.read! index binary)) + @.jvm (..i64 (ffi.read! index binary)) @.js (|> binary @@ -155,8 +155,8 @@ (:as ..Binary))]) (template: (!write index value binary) - [(for {@.old (ffi.array_write index (..byte value) binary) - @.jvm (ffi.array_write index (..byte value) binary) + [(for {@.old (ffi.write! index (..byte value) binary) + @.jvm (ffi.write! index (..byte value) binary) @.js (!!write .Frac n.frac "js array write" index value binary) @.python (!!write (I64 Any) (:as (I64 Any)) "python array write" index value binary) @@ -190,13 +190,13 @@ ... Default (array.empty size))) -(def: .public (fold f init binary) +(def: .public (aggregate f init binary) (All [a] (-> (-> I64 a a) a Binary a)) (let [size (..!size binary)] (loop [index 0 output init] (if (n.< size index) - (recur (inc index) (f (!read index binary) output)) + (recur (++ index) (f (!read index binary) output)) output)))) (def: .public (read/8! index binary) @@ -307,7 +307,7 @@ (if (n.< limit index) (and (n.= (!read index reference) (!read index sample)) - (recur (inc index))) + (recur (++ index))) true)))))))) (for {@.old (as_is) @@ -341,7 +341,7 @@ (exec (!write (n.+ target_offset index) (!read (n.+ source_offset index) source) target) - (recur (inc index))) + (recur (++ index))) (#try.Success target)))))))) (def: .public (slice offset length binary) diff --git a/stdlib/source/library/lux/data/collection/array.lux b/stdlib/source/library/lux/data/collection/array.lux index 5d306f773..ae6aa7b96 100644 --- a/stdlib/source/library/lux/data/collection/array.lux +++ b/stdlib/source/library/lux/data/collection/array.lux @@ -205,7 +205,7 @@ count (#.Some _) - (inc count))) + (++ count))) 0 (list.indices (size array)))) @@ -239,12 +239,12 @@ (if (n.< arr_size idx) (case (read! idx xs) #.None - (recur (inc idx)) + (recur (++ idx)) (#.Some x) (if (p x) (#.Some x) - (recur (inc idx)))) + (recur (++ idx)))) #.None)))) (def: .public (example+ p xs) @@ -256,12 +256,12 @@ (if (n.< arr_size idx) (case (read! idx xs) #.None - (recur (inc idx)) + (recur (++ idx)) (#.Some x) (if (p idx x) (#.Some [idx x]) - (recur (inc idx)))) + (recur (++ idx)))) #.None)))) (def: .public (clone xs) @@ -281,25 +281,25 @@ (def: .public (of_list xs) (All [a] (-> (List a) (Array a))) (product.right (list\fold (function (_ x [idx arr]) - [(inc idx) (write! idx x arr)]) + [(++ idx) (write! idx x arr)]) [0 (empty (list.size xs))] xs))) (def: underflow Nat - (dec 0)) + (-- 0)) (def: .public (list array) {#.doc (.example "Yields a list with every non-empty item in the array.")} (All [a] (-> (Array a) (List a))) - (loop [idx (dec (size array)) + (loop [idx (-- (size array)) output #.End] (case idx (^ (static ..underflow)) output _ - (recur (dec idx) + (recur (-- idx) (case (read! idx array) (#.Some head) (#.Item head output) @@ -310,14 +310,14 @@ (def: .public (list' default array) {#.doc (.example "Like 'list', but uses the 'default' value when encountering an empty cell in the array.")} (All [a] (-> a (Array a) (List a))) - (loop [idx (dec (size array)) + (loop [idx (-- (size array)) output #.End] (case idx (^ (static ..underflow)) output _ - (recur (dec idx) + (recur (-- idx) (#.Item (maybe.else default (read! idx array)) output))))) @@ -382,10 +382,10 @@ (if (n.< arr_size idx) (case (read! idx xs) #.None - (recur so_far (inc idx)) + (recur so_far (++ idx)) (#.Some value) - (recur (f value so_far) (inc idx))) + (recur (f value so_far) (++ idx))) so_far))))) (template [ ] @@ -399,10 +399,10 @@ (case (..read! idx array) (#.Some value) ( (predicate value) - (recur (inc idx))) + (recur (++ idx))) #.None - (recur (inc idx))) + (recur (++ idx))) )))))] [every? true and] diff --git a/stdlib/source/library/lux/data/collection/bits.lux b/stdlib/source/library/lux/data/collection/bits.lux index e5e85e361..b5059ea8a 100644 --- a/stdlib/source/library/lux/data/collection/bits.lux +++ b/stdlib/source/library/lux/data/collection/bits.lux @@ -66,10 +66,10 @@ [(def: .public ( index input) (-> Nat Bits Bits) (let [[chunk_index bit_index] (n./% chunk_size index)] - (loop [size|output (n.max (inc chunk_index) + (loop [size|output (n.max (++ chunk_index) (array.size input)) output ..empty] - (let [idx|output (dec size|output)] + (let [idx|output (-- size|output)] (if (n.> 0 size|output) (case (|> (..chunk idx|output input) (cond> [(new> (n.= chunk_index idx|output) [])] @@ -80,7 +80,7 @@ .nat) 0 ... TODO: Remove 'no_op' once new-luxc is the official compiler. - (let [no_op (recur (dec size|output) output)] + (let [no_op (recur (-- size|output) output)] no_op) chunk @@ -88,7 +88,7 @@ (: Bits (array.empty size|output)) output) (array.write! idx|output (.i64 chunk)) - (recur (dec size|output)))) + (recur (-- size|output)))) output)))))] [one i64.one] @@ -106,7 +106,7 @@ (i64.and (..chunk idx reference)) ("lux i64 =" empty_chunk) .not) - (recur (inc idx))) + (recur (++ idx))) #0)))) (def: .public (not input) @@ -118,10 +118,10 @@ size|output (loop [size|output size|output output ..empty] - (let [idx (dec size|output)] + (let [idx (-- size|output)] (case (|> input (..chunk idx) i64.not .nat) 0 - (recur (dec size|output) output) + (recur (-- size|output) output) chunk (if (n.> 0 size|output) @@ -129,7 +129,7 @@ (: Bits (array.empty size|output)) output) (array.write! idx (.i64 chunk)) - (recur (dec size|output))) + (recur (-- size|output))) output)))))) (template [ ] @@ -143,20 +143,20 @@ size|output (loop [size|output size|output output ..empty] - (let [idx (dec size|output)] + (let [idx (-- size|output)] (if (n.> 0 size|output) (case (|> (..chunk idx subject) ( (..chunk idx param)) .nat) 0 - (recur (dec size|output) output) + (recur (-- size|output) output) chunk (|> (if (same? ..empty output) (: Bits (array.empty size|output)) output) (array.write! idx (.i64 chunk)) - (recur (dec size|output)))) + (recur (-- size|output)))) output)))))] [and i64.and] @@ -175,5 +175,5 @@ (.and ("lux i64 =" (..chunk idx reference) (..chunk idx sample)) - (recur (inc idx))) + (recur (++ idx))) #1))))) diff --git a/stdlib/source/library/lux/data/collection/dictionary.lux b/stdlib/source/library/lux/data/collection/dictionary.lux index fb7aaaa83..6773a3b95 100644 --- a/stdlib/source/library/lux/data/collection/dictionary.lux +++ b/stdlib/source/library/lux/data/collection/dictionary.lux @@ -133,10 +133,10 @@ (def: (array\has idx value old_array) (All [a] (-> Index a (Array a) (Array a))) (let [old_size (array.size old_array)] - (|> (array.empty (inc old_size)) + (|> (array.empty (++ old_size)) (array.copy! idx 0 old_array 0) (array.write! idx value) - (array.copy! (n.- idx old_size) idx old_array (inc idx))))) + (array.copy! (n.- idx old_size) idx old_array (++ idx))))) ... Creates a copy of an array with an index set to a particular value. (def: (array\revised idx value array) @@ -151,10 +151,10 @@ ... Shrinks a copy of the array by removing the space at index. (def: (array\lacks idx array) (All [a] (-> Index (Array a) (Array a))) - (let [new_size (dec (array.size array))] + (let [new_size (-- (array.size array))] (|> (array.empty new_size) (array.copy! idx 0 array 0) - (array.copy! (n.- idx new_size) (inc idx) array idx)))) + (array.copy! (n.- idx new_size) (++ idx) array idx)))) ... Increases the level-shift by the branching-exponent, to explore ... levels further down the tree. @@ -164,7 +164,7 @@ (def: hierarchy_mask Bit_Map - (dec hierarchy_nodes_size)) + (-- hierarchy_nodes_size)) ... Gets the branching-factor sized section of the hash corresponding ... to a particular level, and uses that as an index into the array. @@ -214,7 +214,7 @@ ... associated with it. (def: bit_position_mask (-> Bit_Position Bit_Map) - dec) + --) ... The index on the base array, based on its bit-position. (def: (base_index bit_position bitmap) @@ -240,12 +240,12 @@ #.None [insertion_idx node] (#.Some sub_node) (if (n.= except_idx idx) [insertion_idx node] - [(inc insertion_idx) + [(++ insertion_idx) [(with_bit_position (to_bit_position idx) bitmap) (array.write! insertion_idx (#.Left sub_node) base)]]) ))) [0 [clean_bitmap - (array.empty (dec h_size))]] + (array.empty (-- h_size))]] (list.indices (array.size h_array))))) ... When #Base nodes grow too large, they're promoted to #Hierarchy to @@ -263,7 +263,7 @@ (product.right (list\fold (function (_ hierarchy_idx (^@ default [base_idx h_array])) (if (with_bit_position? (to_bit_position hierarchy_idx) bitmap) - [(inc base_idx) + [(++ base_idx) (case (array.read! base_idx base) (#.Some (#.Left sub_node)) (array.write! hierarchy_idx sub_node h_array) @@ -304,7 +304,7 @@ [_size sub_node] _ - [(inc _size) empty_node])] + [(++ _size) empty_node])] (#Hierarchy _size' (array\revised idx (node\has (level_up level) hash key val key_hash sub_node) hierarchy))) @@ -357,7 +357,7 @@ (if (n.>= ..promotion_threshold base_count) ... If so, promote it to a #Hierarchy node, and add the new ... KV-pair as a singleton node to it. - (#Hierarchy (inc base_count) + (#Hierarchy (++ base_count) (|> base (promotion node\has key_hash level bitmap) (array.write! (level_index level hash) @@ -415,7 +415,7 @@ ... If so, perform it. (#Base (demotion idx [h_size h_array])) ... Otherwise, just clear the space. - (#Hierarchy (dec h_size) (array\lacks' idx h_array))) + (#Hierarchy (-- h_size) (array\lacks' idx h_array))) ... But if the sub_removal yielded a non_empty node, then ... just update the hiearchy branch. (#Hierarchy h_size (array\revised idx sub_node' h_array))))))) @@ -562,7 +562,7 @@ (def: .public key_hash (All [k v] (-> (Dictionary k v) (Hash k))) - (get@ #..hash)) + (value@ #..hash)) (def: .public (empty key_hash) {#.doc (example "An empty dictionary.")} @@ -737,4 +737,4 @@ (All [k] (Functor (Dictionary k))) (def: (map f fa) - (update@ #root (\ ..functor' map f) fa))) + (revised@ #root (\ ..functor' map f) fa))) diff --git a/stdlib/source/library/lux/data/collection/dictionary/ordered.lux b/stdlib/source/library/lux/data/collection/dictionary/ordered.lux index 84e883b1d..567c1f457 100644 --- a/stdlib/source/library/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/library/lux/data/collection/dictionary/ordered.lux @@ -60,60 +60,60 @@ ... TODO: Must improve it as soon as bug is fixed. (def: .public (value key dict) (All [k v] (-> k (Dictionary k v) (Maybe v))) - (let [... (^open "_\.") (get@ #&order dict) + (let [... (^open "_\.") (value@ #&order dict) ] - (loop [node (get@ #root dict)] + (loop [node (value@ #root dict)] (case node #.None #.None (#.Some node) - (let [node_key (get@ #key node)] + (let [node_key (value@ #key node)] (cond (\ dict = node_key key) ... (_\= node_key key) - (#.Some (get@ #value node)) + (#.Some (value@ #value node)) (\ dict < node_key key) ... (_\< node_key key) - (recur (get@ #left node)) + (recur (value@ #left node)) - ... (_\> (get@ #key node) key) - (recur (get@ #right node)))) + ... (_\> (value@ #key node) key) + (recur (value@ #right node)))) )))) ... TODO: Doing inneficient access of Order functions due to compiler bug. ... TODO: Must improve it as soon as bug is fixed. (def: .public (key? dict key) (All [k v] (-> (Dictionary k v) k Bit)) - (let [... (^open "_\.") (get@ #&order dict) + (let [... (^open "_\.") (value@ #&order dict) ] - (loop [node (get@ #root dict)] + (loop [node (value@ #root dict)] (case node #.None #0 (#.Some node) - (let [node_key (get@ #key node)] + (let [node_key (value@ #key node)] (or (\ dict = node_key key) ... (_\= node_key key) (if (\ dict < node_key key) ... (_\< node_key key) - (recur (get@ #left node)) - (recur (get@ #right node))))))))) + (recur (value@ #left node)) + (recur (value@ #right node))))))))) (template [ ] [(def: .public ( dict) {#.doc (example (~~ (template.text ["Yields value under the " "imum key."])))} (All [k v] (-> (Dictionary k v) (Maybe v))) - (case (get@ #root dict) + (case (value@ #root dict) #.None #.None (#.Some node) (loop [node node] - (case (get@ node) + (case (value@ node) #.None - (#.Some (get@ #value node)) + (#.Some (value@ #value node)) (#.Some side) (recur side)))))] @@ -124,14 +124,14 @@ (def: .public (size dict) (All [k v] (-> (Dictionary k v) Nat)) - (loop [node (get@ #root dict)] + (loop [node (value@ #root dict)] (case node #.None 0 (#.Some node) - (inc (n.+ (recur (get@ #left node)) - (recur (get@ #right node))))))) + (++ (n.+ (recur (value@ #left node)) + (recur (value@ #right node))))))) (def: .public empty? (All [k v] (-> (Dictionary k v) Bit)) @@ -140,9 +140,9 @@ (template [ ] [(def: ( self) (All [k v] (-> (Node k v) (Node k v))) - (case (get@ #color self) + (case (value@ #color self) - (set@ #color self) + (with@ #color self) @@ -154,46 +154,46 @@ (def: (with_left addition center) (All [k v] (-> (Node k v) (Node k v) (Node k v))) - (case (get@ #color center) + (case (value@ #color center) #Red - (red (get@ #key center) - (get@ #value center) + (red (value@ #key center) + (value@ #value center) (#.Some addition) - (get@ #right center)) + (value@ #right center)) #Black (with_expansions - [ (as_is (black (get@ #key center) - (get@ #value center) + [ (as_is (black (value@ #key center) + (value@ #value center) (#.Some addition) - (get@ #right center)))] - (case (get@ #color addition) + (value@ #right center)))] + (case (value@ #color addition) #Red - (case (get@ #left addition) + (case (value@ #left addition) (^multi (#.Some left) - {(get@ #color left) #Red}) - (red (get@ #key addition) - (get@ #value addition) + {(value@ #color left) #Red}) + (red (value@ #key addition) + (value@ #value addition) (#.Some (blackened left)) - (#.Some (black (get@ #key center) - (get@ #value center) - (get@ #right addition) - (get@ #right center)))) + (#.Some (black (value@ #key center) + (value@ #value center) + (value@ #right addition) + (value@ #right center)))) _ - (case (get@ #right addition) + (case (value@ #right addition) (^multi (#.Some right) - {(get@ #color right) #Red}) - (red (get@ #key right) - (get@ #value right) - (#.Some (black (get@ #key addition) - (get@ #value addition) - (get@ #left addition) - (get@ #left right))) - (#.Some (black (get@ #key center) - (get@ #value center) - (get@ #right right) - (get@ #right center)))) + {(value@ #color right) #Red}) + (red (value@ #key right) + (value@ #value right) + (#.Some (black (value@ #key addition) + (value@ #value addition) + (value@ #left addition) + (value@ #left right))) + (#.Some (black (value@ #key center) + (value@ #value center) + (value@ #right right) + (value@ #right center)))) _ )) @@ -203,46 +203,46 @@ (def: (with_right addition center) (All [k v] (-> (Node k v) (Node k v) (Node k v))) - (case (get@ #color center) + (case (value@ #color center) #Red - (red (get@ #key center) - (get@ #value center) - (get@ #left center) + (red (value@ #key center) + (value@ #value center) + (value@ #left center) (#.Some addition)) #Black (with_expansions - [ (as_is (black (get@ #key center) - (get@ #value center) - (get@ #left center) + [ (as_is (black (value@ #key center) + (value@ #value center) + (value@ #left center) (#.Some addition)))] - (case (get@ #color addition) + (case (value@ #color addition) #Red - (case (get@ #right addition) + (case (value@ #right addition) (^multi (#.Some right) - {(get@ #color right) #Red}) - (red (get@ #key addition) - (get@ #value addition) - (#.Some (black (get@ #key center) - (get@ #value center) - (get@ #left center) - (get@ #left addition))) + {(value@ #color right) #Red}) + (red (value@ #key addition) + (value@ #value addition) + (#.Some (black (value@ #key center) + (value@ #value center) + (value@ #left center) + (value@ #left addition))) (#.Some (blackened right))) _ - (case (get@ #left addition) + (case (value@ #left addition) (^multi (#.Some left) - {(get@ #color left) #Red}) - (red (get@ #key left) - (get@ #value left) - (#.Some (black (get@ #key center) - (get@ #value center) - (get@ #left center) - (get@ #left left))) - (#.Some (black (get@ #key addition) - (get@ #value addition) - (get@ #right left) - (get@ #right addition)))) + {(value@ #color left) #Red}) + (red (value@ #key left) + (value@ #value left) + (#.Some (black (value@ #key center) + (value@ #value center) + (value@ #left center) + (value@ #left left))) + (#.Some (black (value@ #key addition) + (value@ #value addition) + (value@ #right left) + (value@ #right addition)))) _ )) @@ -252,17 +252,17 @@ (def: .public (has key value dict) (All [k v] (-> k v (Dictionary k v) (Dictionary k v))) - (let [(^open "_\.") (get@ #&order dict) - root' (loop [?root (get@ #root dict)] + (let [(^open "_\.") (value@ #&order dict) + root' (loop [?root (value@ #root dict)] (case ?root #.None (#.Some (red key value #.None #.None)) (#.Some root) - (let [reference (get@ #key root)] + (let [reference (value@ #key root)] (`` (cond (~~ (template [ ] [( reference key) - (let [side_root (get@ root) + (let [side_root (value@ root) outcome (recur side_root)] (if (same? side_root outcome) ?root @@ -270,39 +270,39 @@ root))))] [_\< #left ..with_left] - [(order.> (get@ #&order dict)) #right ..with_right] + [(order.> (value@ #&order dict)) #right ..with_right] )) ... (_\= reference key) - (#.Some (set@ #value value root)) + (#.Some (with@ #value value root)) ))) ))] - (set@ #root root' dict))) + (with@ #root root' dict))) (def: (left_balanced key value ?left ?right) (All [k v] (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?left (^multi (#.Some left) - {(get@ #color left) #Red} - {(get@ #left left) (#.Some left>>left)} - {(get@ #color left>>left) #Red}) - (red (get@ #key left) - (get@ #value left) + {(value@ #color left) #Red} + {(value@ #left left) (#.Some left>>left)} + {(value@ #color left>>left) #Red}) + (red (value@ #key left) + (value@ #value left) (#.Some (blackened left>>left)) - (#.Some (black key value (get@ #right left) ?right))) + (#.Some (black key value (value@ #right left) ?right))) (^multi (#.Some left) - {(get@ #color left) #Red} - {(get@ #right left) (#.Some left>>right)} - {(get@ #color left>>right) #Red}) - (red (get@ #key left>>right) - (get@ #value left>>right) - (#.Some (black (get@ #key left) - (get@ #value left) - (get@ #left left) - (get@ #left left>>right))) + {(value@ #color left) #Red} + {(value@ #right left) (#.Some left>>right)} + {(value@ #color left>>right) #Red}) + (red (value@ #key left>>right) + (value@ #value left>>right) + (#.Some (black (value@ #key left) + (value@ #value left) + (value@ #left left) + (value@ #left left>>right))) (#.Some (black key value - (get@ #right left>>right) + (value@ #right left>>right) ?right))) _ @@ -312,25 +312,25 @@ (All [k v] (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?right (^multi (#.Some right) - {(get@ #color right) #Red} - {(get@ #right right) (#.Some right>>right)} - {(get@ #color right>>right) #Red}) - (red (get@ #key right) - (get@ #value right) - (#.Some (black key value ?left (get@ #left right))) + {(value@ #color right) #Red} + {(value@ #right right) (#.Some right>>right)} + {(value@ #color right>>right) #Red}) + (red (value@ #key right) + (value@ #value right) + (#.Some (black key value ?left (value@ #left right))) (#.Some (blackened right>>right))) (^multi (#.Some right) - {(get@ #color right) #Red} - {(get@ #left right) (#.Some right>>left)} - {(get@ #color right>>left) #Red}) - (red (get@ #key right>>left) - (get@ #value right>>left) - (#.Some (black key value ?left (get@ #left right>>left))) - (#.Some (black (get@ #key right) - (get@ #value right) - (get@ #right right>>left) - (get@ #right right)))) + {(value@ #color right) #Red} + {(value@ #left right) (#.Some right>>left)} + {(value@ #color right>>left) #Red}) + (red (value@ #key right>>left) + (value@ #value right>>left) + (#.Some (black key value ?left (value@ #left right>>left))) + (#.Some (black (value@ #key right) + (value@ #value right) + (value@ #right right>>left) + (value@ #right right)))) _ (black key value ?left ?right))) @@ -339,26 +339,26 @@ (All [k v] (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?left (^multi (#.Some left) - {(get@ #color left) #Red}) + {(value@ #color left) #Red}) (red key value (#.Some (blackened left)) ?right) _ (case ?right (^multi (#.Some right) - {(get@ #color right) #Black}) + {(value@ #color right) #Black}) (right_balanced key value ?left (#.Some (reddened right))) (^multi (#.Some right) - {(get@ #color right) #Red} - {(get@ #left right) (#.Some right>>left)} - {(get@ #color right>>left) #Black}) - (red (get@ #key right>>left) - (get@ #value right>>left) - (#.Some (black key value ?left (get@ #left right>>left))) - (#.Some (right_balanced (get@ #key right) - (get@ #value right) - (get@ #right right>>left) - (\ maybe.functor map reddened (get@ #right right))))) + {(value@ #color right) #Red} + {(value@ #left right) (#.Some right>>left)} + {(value@ #color right>>left) #Black}) + (red (value@ #key right>>left) + (value@ #value right>>left) + (#.Some (black key value ?left (value@ #left right>>left))) + (#.Some (right_balanced (value@ #key right) + (value@ #value right) + (value@ #right right>>left) + (\ maybe.functor map reddened (value@ #right right))))) _ (panic! error_message)) @@ -368,26 +368,26 @@ (All [k v] (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?right (^multi (#.Some right) - {(get@ #color right) #Red}) + {(value@ #color right) #Red}) (red key value ?left (#.Some (blackened right))) _ (case ?left (^multi (#.Some left) - {(get@ #color left) #Black}) + {(value@ #color left) #Black}) (left_balanced key value (#.Some (reddened left)) ?right) (^multi (#.Some left) - {(get@ #color left) #Red} - {(get@ #right left) (#.Some left>>right)} - {(get@ #color left>>right) #Black}) - (red (get@ #key left>>right) - (get@ #value left>>right) - (#.Some (left_balanced (get@ #key left) - (get@ #value left) - (\ maybe.functor map reddened (get@ #left left)) - (get@ #left left>>right))) - (#.Some (black key value (get@ #right left>>right) ?right))) + {(value@ #color left) #Red} + {(value@ #right left) (#.Some left>>right)} + {(value@ #color left>>right) #Black}) + (red (value@ #key left>>right) + (value@ #value left>>right) + (#.Some (left_balanced (value@ #key left) + (value@ #value left) + (\ maybe.functor map reddened (value@ #left left)) + (value@ #left left>>right))) + (#.Some (black key value (value@ #right left>>right) ?right))) _ (panic! error_message) @@ -403,70 +403,70 @@ ?left [(#.Some left) (#.Some right)] - (case [(get@ #color left) (get@ #color right)] + (case [(value@ #color left) (value@ #color right)] [#Red #Red] (do maybe.monad - [fused (prepended (get@ #right left) (get@ #right right))] - (case (get@ #color fused) + [fused (prepended (value@ #right left) (value@ #right right))] + (case (value@ #color fused) #Red - (in (red (get@ #key fused) - (get@ #value fused) - (#.Some (red (get@ #key left) - (get@ #value left) - (get@ #left left) - (get@ #left fused))) - (#.Some (red (get@ #key right) - (get@ #value right) - (get@ #right fused) - (get@ #right right))))) + (in (red (value@ #key fused) + (value@ #value fused) + (#.Some (red (value@ #key left) + (value@ #value left) + (value@ #left left) + (value@ #left fused))) + (#.Some (red (value@ #key right) + (value@ #value right) + (value@ #right fused) + (value@ #right right))))) #Black - (in (red (get@ #key left) - (get@ #value left) - (get@ #left left) - (#.Some (red (get@ #key right) - (get@ #value right) + (in (red (value@ #key left) + (value@ #value left) + (value@ #left left) + (#.Some (red (value@ #key right) + (value@ #value right) (#.Some fused) - (get@ #right right))))))) + (value@ #right right))))))) [#Red #Black] - (#.Some (red (get@ #key left) - (get@ #value left) - (get@ #left left) - (prepended (get@ #right left) + (#.Some (red (value@ #key left) + (value@ #value left) + (value@ #left left) + (prepended (value@ #right left) ?right))) [#Black #Red] - (#.Some (red (get@ #key right) - (get@ #value right) + (#.Some (red (value@ #key right) + (value@ #value right) (prepended ?left - (get@ #left right)) - (get@ #right right))) + (value@ #left right)) + (value@ #right right))) [#Black #Black] (do maybe.monad - [fused (prepended (get@ #right left) (get@ #left right))] - (case (get@ #color fused) + [fused (prepended (value@ #right left) (value@ #left right))] + (case (value@ #color fused) #Red - (in (red (get@ #key fused) - (get@ #value fused) - (#.Some (black (get@ #key left) - (get@ #value left) - (get@ #left left) - (get@ #left fused))) - (#.Some (black (get@ #key right) - (get@ #value right) - (get@ #right fused) - (get@ #right right))))) + (in (red (value@ #key fused) + (value@ #value fused) + (#.Some (black (value@ #key left) + (value@ #value left) + (value@ #left left) + (value@ #left fused))) + (#.Some (black (value@ #key right) + (value@ #value right) + (value@ #right fused) + (value@ #right right))))) #Black - (in (without_left (get@ #key left) - (get@ #value left) - (get@ #left left) - (#.Some (black (get@ #key right) - (get@ #value right) + (in (without_left (value@ #key left) + (value@ #value left) + (value@ #left left) + (#.Some (black (value@ #key right) + (value@ #value right) (#.Some fused) - (get@ #right right))))) + (value@ #right right))))) )) ) @@ -475,45 +475,45 @@ (def: .public (lacks key dict) (All [k v] (-> k (Dictionary k v) (Dictionary k v))) - (let [(^open "_\.") (get@ #&order dict) - [?root found?] (loop [?root (get@ #root dict)] + (let [(^open "_\.") (value@ #&order dict) + [?root found?] (loop [?root (value@ #root dict)] (case ?root #.None [#.None #0] (#.Some root) - (let [root_key (get@ #key root) - root_val (get@ #value root)] + (let [root_key (value@ #key root) + root_val (value@ #value root)] (if (_\= root_key key) - [(prepended (get@ #left root) - (get@ #right root)) + [(prepended (value@ #left root) + (value@ #right root)) #1] (let [go_left? (_\< root_key key)] (case (recur (if go_left? - (get@ #left root) - (get@ #right root))) + (value@ #left root) + (value@ #right root))) [#.None #0] [#.None #0] [side_outcome _] (if go_left? - (case (get@ #left root) + (case (value@ #left root) (^multi (#.Some left) - {(get@ #color left) #Black}) - [(#.Some (without_left root_key root_val side_outcome (get@ #right root))) + {(value@ #color left) #Black}) + [(#.Some (without_left root_key root_val side_outcome (value@ #right root))) #0] _ - [(#.Some (red root_key root_val side_outcome (get@ #right root))) + [(#.Some (red root_key root_val side_outcome (value@ #right root))) #0]) - (case (get@ #right root) + (case (value@ #right root) (^multi (#.Some right) - {(get@ #color right) #Black}) - [(#.Some (without_right root_key root_val (get@ #left root) side_outcome)) + {(value@ #color right) #Black}) + [(#.Some (without_right root_key root_val (value@ #left root) side_outcome)) #0] _ - [(#.Some (red root_key root_val (get@ #left root) side_outcome)) + [(#.Some (red root_key root_val (value@ #left root) side_outcome)) #0]) ))) )) @@ -521,11 +521,11 @@ (case ?root #.None (if found? - (set@ #root ?root dict) + (with@ #root ?root dict) dict) (#.Some root) - (set@ #root (#.Some (blackened root)) dict) + (with@ #root (#.Some (blackened root)) dict) ))) (def: .public (revised key transform dict) @@ -547,27 +547,27 @@ (template [ ] [(def: .public ( dict) (All [k v] (-> (Dictionary k v) (List ))) - (loop [node (get@ #root dict)] + (loop [node (value@ #root dict)] (case node #.None (list) (#.Some node') ($_ list\compose - (recur (get@ #left node')) + (recur (value@ #left node')) (list ) - (recur (get@ #right node'))))))] + (recur (value@ #right node'))))))] - [entries [k v] [(get@ #key node') (get@ #value node')]] - [keys k (get@ #key node')] - [values v (get@ #value node')] + [entries [k v] [(value@ #key node') (value@ #value node')]] + [keys k (value@ #key node')] + [values v (value@ #value node')] ) (implementation: .public (equivalence (^open ",\.")) (All [k v] (-> (Equivalence v) (Equivalence (Dictionary k v)))) (def: (= reference sample) - (let [(^open "/\.") (get@ #&order reference)] + (let [(^open "/\.") (value@ #&order reference)] (loop [entriesR (entries reference) entriesS (entries sample)] (case [entriesR entriesS] diff --git a/stdlib/source/library/lux/data/collection/list.lux b/stdlib/source/library/lux/data/collection/list.lux index 8cba7efb2..cb52d478d 100644 --- a/stdlib/source/library/lux/data/collection/list.lux +++ b/stdlib/source/library/lux/data/collection/list.lux @@ -34,14 +34,14 @@ (#.Item x xs') (fold f (f x init) xs')))) -(def: .public (folds f init inputs) +(def: .public (aggregates f init inputs) (All [a b] (-> (-> a b b) b (List a) (List b))) (case inputs #.End (list init) (#.Item [head tail]) - (#.Item [init (folds f (f head init) tail)]))) + (#.Item [init (aggregates f (f head init) tail)]))) (def: .public (reversed xs) (All [a] @@ -100,8 +100,8 @@ ) ))] - [first (#.Item x (first (dec n) xs')) #.End] - [after (after (dec n) xs') xs] + [first (#.Item x (first (-- n) xs')) #.End] + [after (after (-- n) xs') xs] ) (template [ ] @@ -130,7 +130,7 @@ [#.End #.End] (#.Item x xs') - (let [[tail rest] (split_at (dec n) xs')] + (let [[tail rest] (split_at (-- n) xs')] [(#.Item x tail) rest])) [#.End xs])) @@ -170,7 +170,7 @@ (-> Nat a (List a))) (case n 0 #.End - _ (#.Item x (repeated (dec n) x)))) + _ (#.Item x (repeated (-- n) x)))) (def: (iterations' f x) (All [a] @@ -263,21 +263,16 @@ (fold (function (_ _ acc) (n.+ 1 acc)) 0 list)) (template [ ] - [(def: .public ( predicate xs) + [(def: .public ( predicate items) (All [a] (-> (Predicate a) (List a) Bit)) - (loop [xs xs] - (case xs - #.End - - - (#.Item x xs') - (case (predicate x) - - (recur xs') + (case items + #.End + - output - output))))] + (#.Item head tail) + ( (predicate head) + ( predicate tail))))] [every? #1 and] [any? #0 or] @@ -292,9 +287,9 @@ #.None (#.Item x xs') - (if (n.= 0 i) - (#.Some x) - (item (dec i) xs')))) + (case i + 0 (#.Some x) + _ (item (-- i) xs')))) (implementation: .public (equivalence Equivalence) (All [a] (-> (Equivalence a) (Equivalence (List a)))) @@ -428,9 +423,9 @@ (def: .public (indices size) {#.doc "Produces all the valid indices for a given size."} (All [a] (-> Nat (List Nat))) - (if (n.= 0 size) - (list) - (|> size dec (enum.range n.enum 0)))) + (case size + 0 (list) + _ (|> size -- (enum.range n.enum 0)))) (def: (identifier$ name) (-> Text Code) @@ -454,9 +449,9 @@ _ (undefined)) output' ("lux text concat" digit output) input' (n./ 10 input)] - (if (n.= 0 input') - output' - (recur input' output'))))) + (case input' + 0 output' + _ (recur input' output'))))) (macro: .public (zipped tokens state) {#.doc (.example "Create list zippers with the specified number of input lists." @@ -475,7 +470,7 @@ type_vars)) (List [(~+ type_vars)])))) vars+lists (|> indices - (map inc) + (map ++) (map (function (_ idx) (let [base (nat\encode idx)] [(identifier$ base) @@ -523,7 +518,7 @@ type_vars)) (List (~ g!return_type))))) vars+lists (|> indices - (map inc) + (map ++) (map (function (_ idx) (let [base (nat\encode idx)] [(identifier$ base) @@ -583,7 +578,7 @@ (#.Some (#.Item x tail))) )) -(def: .public joined +(def: .public together {#.doc (.example "The sequential combination of all the lists.")} (All [a] (-> (List (List a)) (List a))) (\ ..monad join)) @@ -593,7 +588,8 @@ (All [M] (-> (Monad M) (Monad (All [a] (M (List a)))))) (def: &functor - (functor.composite (get@ #monad.&functor monad) ..functor)) + (functor.composite (value@ #monad.&functor monad) + ..functor)) (def: in (|>> (\ ..monad in) (\ monad in))) @@ -604,9 +600,9 @@ ... TODO: Remove this version ASAP and use one below. lla (for {@.old (: ((:parameter 0) (List (List (:parameter 1)))) - (monad.seq ! lMla))} - (monad.seq ! lMla))] - (in (..joined lla))))) + (monad.all ! lMla))} + (monad.all ! lMla))] + (in (..together lla))))) (def: .public (lifted monad) {#.doc (.example "Wraps a monadic value with List machinery.")} @@ -623,7 +619,7 @@ #.End (#.Item x xs') - (#.Item [idx x] (recur (inc idx) xs'))))) + (#.Item [idx x] (recur (++ idx) xs'))))) (macro: .public (when tokens state) {#.doc (.example "Can be used as a guard in (co)monadic be/do expressions." diff --git a/stdlib/source/library/lux/data/collection/queue.lux b/stdlib/source/library/lux/data/collection/queue.lux index 3e017d382..a54543eae 100644 --- a/stdlib/source/library/lux/data/collection/queue.lux +++ b/stdlib/source/library/lux/data/collection/queue.lux @@ -34,7 +34,7 @@ (def: .public front {#.doc (example "Yields the first value in the queue, if any.")} (All [a] (-> (Queue a) (Maybe a))) - (|>> (get@ #front) list.head)) + (|>> (value@ #front) list.head)) (def: .public (size queue) (All [a] (-> (Queue a) Nat)) @@ -44,7 +44,7 @@ (def: .public empty? (All [a] (-> (Queue a) Bit)) - (|>> (get@ #front) list.empty?)) + (|>> (value@ #front) list.empty?)) (def: .public (member? equivalence queue member) (All [a] (-> (Equivalence a) (Queue a) a Bit)) @@ -54,7 +54,7 @@ (def: .public (next queue) (All [a] (-> (Queue a) (Queue a))) - (case (get@ #front queue) + (case (value@ #front queue) ... Empty... (^ (.list)) queue @@ -62,22 +62,22 @@ ... Front has dried up... (^ (.list _)) (|> queue - (set@ #front (list.reversed (get@ #rear queue))) - (set@ #rear (.list))) + (with@ #front (list.reversed (value@ #rear queue))) + (with@ #rear (.list))) ... Consume front! (^ (.list& _ front')) (|> queue - (set@ #front front')))) + (with@ #front front')))) (def: .public (end val queue) (All [a] (-> a (Queue a) (Queue a))) - (case (get@ #front queue) + (case (value@ #front queue) #.End - (set@ #front (.list val) queue) + (with@ #front (.list val) queue) _ - (update@ #rear (|>> (#.Item val)) queue))) + (revised@ #rear (|>> (#.Item val)) queue))) (implementation: .public (equivalence super) (All [a] (-> (Equivalence a) (Equivalence (Queue a)))) @@ -91,5 +91,5 @@ (Functor Queue) (def: (map f fa) - {#front (|> fa (get@ #front) (list\map f)) - #rear (|> fa (get@ #rear) (list\map f))})) + {#front (|> fa (value@ #front) (list\map f)) + #rear (|> fa (value@ #rear) (list\map f))})) diff --git a/stdlib/source/library/lux/data/collection/row.lux b/stdlib/source/library/lux/data/collection/row.lux index 6a4b88587..e77ef1bdf 100644 --- a/stdlib/source/library/lux/data/collection/row.lux +++ b/stdlib/source/library/lux/data/collection/row.lux @@ -17,8 +17,8 @@ ["." maybe] ["." try (#+ Try)] ["." exception (#+ exception:)] - ["p" parser - ["s" code (#+ Parser)]]] + ["<>" parser + ["<.>" code (#+ Parser)]]] [data ["." product] [collection @@ -29,8 +29,8 @@ ["." code]] [math [number - ["." i64] - ["n" nat]]]]]) + ["n" nat] + ["." i64]]]]]) (type: (Node a) (#Base (Array a)) @@ -66,7 +66,7 @@ (def: branch_idx_mask Nat - (dec full_node_size)) + (-- full_node_size)) (def: branch_idx (-> Index Index) @@ -80,7 +80,7 @@ (-> Nat Nat) (if (n.< full_node_size row_size) 0 - (|> (dec row_size) + (|> (-- row_size) (i64.right_shifted branching_exponent) (i64.left_shifted branching_exponent)))) @@ -99,7 +99,7 @@ (def: (with_tail size level tail parent) (All [a] (-> Nat Level (Base a) (Hierarchy a) (Hierarchy a))) - (let [sub_idx (branch_idx (i64.right_shifted level (dec size))) + (let [sub_idx (branch_idx (i64.right_shifted level (-- size))) ... If we're currently on a bottom node sub_node (if (n.= branching_exponent level) ... Just add the tail to it @@ -122,7 +122,7 @@ (def: (expanded_tail val tail) (All [a] (-> a (Base a) (Base a))) (let [tail_size (array.size tail)] - (|> (array.empty (inc tail_size)) + (|> (array.empty (++ tail_size)) (array.copy! tail_size 0 tail 0) (array.write! tail_size val)))) @@ -198,45 +198,45 @@ (def: .public (size row) (All [a] (-> (Row a) Nat)) - (get@ #size row)) + (value@ #size row)) -(def: .public (add val row) +(def: .public (suffix val row) (All [a] (-> a (Row a) (Row a))) ... Check if there is room in the tail. - (let [row_size (get@ #size row)] + (let [row_size (value@ #size row)] (if (|> row_size (n.- (tail_off row_size)) (n.< full_node_size)) ... If so, append to it. (|> row - (update@ #size inc) - (update@ #tail (..expanded_tail val))) + (revised@ #size ++) + (revised@ #tail (..expanded_tail val))) ... Otherwise, push tail into the tree ... -------------------------------------------------------- ... Will the root experience an overflow with this addition? - (|> (if (n.> (i64.left_shifted (get@ #level row) 1) + (|> (if (n.> (i64.left_shifted (value@ #level row) 1) (i64.right_shifted branching_exponent row_size)) ... If so, a brand-new root must be established, that is ... 1-level taller. (|> row - (set@ #root (|> (for {@.old - (: (Hierarchy (:parameter 0)) - (empty_hierarchy []))} - (empty_hierarchy [])) - (array.write! 0 (#Hierarchy (get@ #root row))) - (array.write! 1 (..path (get@ #level row) (get@ #tail row))))) - (update@ #level level_up)) + (with@ #root (|> (for {@.old + (: (Hierarchy (:parameter 0)) + (empty_hierarchy []))} + (empty_hierarchy [])) + (array.write! 0 (#Hierarchy (value@ #root row))) + (array.write! 1 (..path (value@ #level row) (value@ #tail row))))) + (revised@ #level level_up)) ... Otherwise, just push the current tail onto the root. (|> row - (update@ #root (..with_tail row_size (get@ #level row) (get@ #tail row))))) + (revised@ #root (..with_tail row_size (value@ #level row) (value@ #tail row))))) ... Finally, update the size of the row and grow a new ... tail with the new element as it's sole member. - (update@ #size inc) - (set@ #tail (..tail val))) + (revised@ #size ++) + (with@ #tail (..tail val))) ))) (exception: incorrect_row_structure) (exception: .public [a] (index_out_of_bounds {row (Row a)} {index Nat}) - (exception.report ["Size" (\ n.decimal encode (get@ #size row))] + (exception.report ["Size" (\ n.decimal encode (value@ #size row))] ["Index" (\ n.decimal encode index)])) (exception: base_was_not_found) @@ -244,15 +244,15 @@ (def: .public (within_bounds? row idx) {#.doc (example "Determines whether the index is within the bounds of the row.")} (All [a] (-> (Row a) Nat Bit)) - (n.< (get@ #size row) idx)) + (n.< (value@ #size row) idx)) (def: (base_for idx row) (All [a] (-> Index (Row a) (Try (Base a)))) (if (within_bounds? row idx) - (if (n.>= (tail_off (get@ #size row)) idx) - (#try.Success (get@ #tail row)) - (loop [level (get@ #level row) - hierarchy (get@ #root row)] + (if (n.>= (tail_off (value@ #size row)) idx) + (#try.Success (value@ #tail row)) + (loop [level (value@ #level row) + hierarchy (value@ #root row)] (case [(n.> branching_exponent level) (array.read! (branch_idx (i64.right_shifted level idx)) hierarchy)] [#1 (#.Some (#Hierarchy sub))] @@ -281,16 +281,16 @@ (def: .public (has idx val row) (All [a] (-> Nat a (Row a) (Try (Row a)))) - (let [row_size (get@ #size row)] + (let [row_size (value@ #size row)] (if (within_bounds? row idx) (#try.Success (if (n.>= (tail_off row_size) idx) - (update@ #tail (for {@.old - (: (-> (Base (:parameter 0)) (Base (:parameter 0))) - (|>> array.clone (array.write! (branch_idx idx) val)))} - (|>> array.clone (array.write! (branch_idx idx) val))) - row) - (update@ #root (has' (get@ #level row) idx val) - row))) + (revised@ #tail (for {@.old + (: (-> (Base (:parameter 0)) (Base (:parameter 0))) + (|>> array.clone (array.write! (branch_idx idx) val)))} + (|>> array.clone (array.write! (branch_idx idx) val))) + row) + (revised@ #root (has' (value@ #level row) idx val) + row))) (exception.except ..index_out_of_bounds [row idx])))) (def: .public (revised idx f row) @@ -299,9 +299,9 @@ [val (..item idx row)] (..has idx (f val) row))) -(def: .public (pop row) +(def: .public (prefix row) (All [a] (-> (Row a) (Row a))) - (case (get@ #size row) + (case (value@ #size row) 0 empty @@ -310,19 +310,19 @@ row_size (if (|> row_size (n.- (tail_off row_size)) (n.> 1)) - (let [old_tail (get@ #tail row) - new_tail_size (dec (array.size old_tail))] + (let [old_tail (value@ #tail row) + new_tail_size (-- (array.size old_tail))] (|> row - (update@ #size dec) - (set@ #tail (|> (array.empty new_tail_size) - (array.copy! new_tail_size 0 old_tail 0))))) + (revised@ #size --) + (with@ #tail (|> (array.empty new_tail_size) + (array.copy! new_tail_size 0 old_tail 0))))) (maybe.trusted (do maybe.monad [new_tail (base_for (n.- 2 row_size) row) - .let [[level' root'] (let [init_level (get@ #level row)] + .let [[level' root'] (let [init_level (value@ #level row)] (loop [level init_level root (maybe.else (empty_hierarchy []) - (without_tail row_size init_level (get@ #root row)))] + (without_tail row_size init_level (value@ #root row)))] (if (n.> branching_exponent level) (case [(array.read! 1 root) (array.read! 0 root)] [#.None (#.Some (#Hierarchy sub_node))] @@ -335,20 +335,20 @@ [level root]) [level root])))]] (in (|> row - (update@ #size dec) - (set@ #level level') - (set@ #root root') - (set@ #tail new_tail)))))) + (revised@ #size --) + (with@ #level level') + (with@ #root root') + (with@ #tail new_tail)))))) )) (def: .public (list row) (All [a] (-> (Row a) (List a))) - (list\compose (list' (#Hierarchy (get@ #root row))) - (list' (#Base (get@ #tail row))))) + (list\compose (list' (#Hierarchy (value@ #root row))) + (list' (#Base (value@ #tail row))))) (def: .public of_list (All [a] (-> (List a) (Row a))) - (list\fold ..add ..empty)) + (list\fold ..suffix ..empty)) (def: .public (member? a/Equivalence row val) (All [a] (-> (Equivalence a) (Row a) a Bit)) @@ -356,9 +356,9 @@ (def: .public empty? (All [a] (-> (Row a) Bit)) - (|>> (get@ #size) (n.= 0))) + (|>> (value@ #size) (n.= 0))) -(syntax: .public (row [elems (p.some s.any)]) +(syntax: .public (row [elems (<>.some .any)]) {#.doc (example "Row literals." (row 12 34 56 78 90))} (in (.list (` (..of_list (.list (~+ elems))))))) @@ -381,12 +381,12 @@ (All [a] (-> (Equivalence a) (Equivalence (Row a)))) (def: (= v1 v2) - (and (n.= (get@ #size v1) (get@ #size v2)) + (and (n.= (value@ #size v1) (value@ #size v2)) (let [(^open "node\.") (node_equivalence Equivalence)] - (and (node\= (#Base (get@ #tail v1)) - (#Base (get@ #tail v2))) - (node\= (#Hierarchy (get@ #root v1)) - (#Hierarchy (get@ #root v2)))))))) + (and (node\= (#Base (value@ #tail v1)) + (#Base (value@ #tail v2))) + (node\= (#Hierarchy (value@ #root v1)) + (#Hierarchy (value@ #root v2)))))))) (implementation: node_fold (Fold Node) @@ -409,8 +409,8 @@ (fold f (fold f init - (#Hierarchy (get@ #root xs))) - (#Base (get@ #tail xs)))))) + (#Hierarchy (value@ #root xs))) + (#Base (value@ #tail xs)))))) (implementation: .public monoid (All [a] (Monoid (Row a))) @@ -418,7 +418,7 @@ (def: identity ..empty) (def: (compose xs ys) - (list\fold add xs (..list ys)))) + (list\fold suffix xs (..list ys)))) (implementation: node_functor (Functor Node) @@ -435,10 +435,10 @@ (Functor Row) (def: (map f xs) - {#level (get@ #level xs) - #size (get@ #size xs) - #root (|> xs (get@ #root) (array\map (\ node_functor map f))) - #tail (|> xs (get@ #tail) (array\map f))})) + {#level (value@ #level xs) + #size (value@ #size xs) + #root (|> xs (value@ #root) (array\map (\ node_functor map f))) + #tail (|> xs (value@ #tail) (array\map f))})) (implementation: .public apply (Apply Row) @@ -469,7 +469,7 @@ (All [a] (-> (Row a) (Row a))) (|>> ..list list.reversed - (list\fold add ..empty))) + (list\fold suffix ..empty))) (template [ ] [(def: .public diff --git a/stdlib/source/library/lux/data/collection/sequence.lux b/stdlib/source/library/lux/data/collection/sequence.lux index a7d2cc0b4..42cd682df 100644 --- a/stdlib/source/library/lux/data/collection/sequence.lux +++ b/stdlib/source/library/lux/data/collection/sequence.lux @@ -65,7 +65,7 @@ (let [[head tail] (//.result sequence)] (case idx 0 head - _ (item (dec idx) tail)))) + _ (item (-- idx) tail)))) (template [ ] [(def: .public ( pred xs) @@ -85,7 +85,7 @@ xs)))] [while until (-> a Bit) (pred x) pred |>] - [first after Nat (n.= 0 pred) (dec pred) not] + [first after Nat (n.= 0 pred) (-- pred) not] ) (template [ ] @@ -99,7 +99,7 @@ [(#.Item [x tail]) next]))))] [split_when (-> a Bit) (pred x) pred] - [split_at Nat (n.= 0 pred) (dec pred)] + [split_at Nat (n.= 0 pred) (-- pred)] ) (def: .public (only predicate sequence) diff --git a/stdlib/source/library/lux/data/collection/set/ordered.lux b/stdlib/source/library/lux/data/collection/set/ordered.lux index 6ef570c31..28bbf1876 100644 --- a/stdlib/source/library/lux/data/collection/set/ordered.lux +++ b/stdlib/source/library/lux/data/collection/set/ordered.lux @@ -60,13 +60,13 @@ (All [a] (-> (Set a) (Set a) (Set a))) (|> (..list right) (list.only (..member? left)) - (..of_list (get@ #/.&order (:representation right))))) + (..of_list (value@ #/.&order (:representation right))))) (def: .public (difference param subject) (All [a] (-> (Set a) (Set a) (Set a))) (|> (..list subject) (list.only (|>> (..member? param) not)) - (..of_list (get@ #/.&order (:representation subject))))) + (..of_list (value@ #/.&order (:representation subject))))) (implementation: .public equivalence (All [a] (Equivalence (Set a))) diff --git a/stdlib/source/library/lux/data/collection/tree.lux b/stdlib/source/library/lux/data/collection/tree.lux index 451fc6143..112932a50 100644 --- a/stdlib/source/library/lux/data/collection/tree.lux +++ b/stdlib/source/library/lux/data/collection/tree.lux @@ -25,10 +25,10 @@ {#.doc (example "All the leaf values of the tree, in order.")} (All [a] (-> (Tree a) (List a))) (|> tree - (get@ #children) + (value@ #children) (list\map flat) list\join - (#.Item (get@ #value tree)))) + (#.Item (value@ #value tree)))) (def: .public (leaf value) (All [a] (-> a (Tree a))) @@ -69,22 +69,22 @@ (All [a] (-> (Equivalence a) (Equivalence (Tree a)))) (def: (= tx ty) - (and (\ super = (get@ #value tx) (get@ #value ty)) - (\ (list.equivalence (equivalence super)) = (get@ #children tx) (get@ #children ty))))) + (and (\ super = (value@ #value tx) (value@ #value ty)) + (\ (list.equivalence (equivalence super)) = (value@ #children tx) (value@ #children ty))))) (implementation: .public functor (Functor Tree) (def: (map f fa) - {#value (f (get@ #value fa)) + {#value (f (value@ #value fa)) #children (list\map (map f) - (get@ #children fa))})) + (value@ #children fa))})) (implementation: .public fold (Fold Tree) (def: (fold f init tree) (list\fold (function (_ tree' init') (fold f init' tree')) - (f (get@ #value tree) + (f (value@ #value tree) init) - (get@ #children tree)))) + (value@ #children tree)))) diff --git a/stdlib/source/library/lux/data/collection/tree/finger.lux b/stdlib/source/library/lux/data/collection/tree/finger.lux index 9c2844be7..588cb4e5a 100644 --- a/stdlib/source/library/lux/data/collection/tree/finger.lux +++ b/stdlib/source/library/lux/data/collection/tree/finger.lux @@ -33,7 +33,7 @@ (template [ ] [(def: .public (All [@ t v] (-> (Tree @ t v) )) - (|>> :representation (get@ )))] + (|>> :representation (value@ )))] [tag #tag t] [root #root (Either v [(Tree @ t v) (Tree @ t v)])] @@ -57,7 +57,7 @@ (def: .public (value tree) (All [@ t v] (-> (Tree @ t v) v)) - (case (get@ #root (:representation tree)) + (case (value@ #root (:representation tree)) (0 #0 value) value @@ -66,9 +66,9 @@ (def: .public (tags tree) (All [@ t v] (-> (Tree @ t v) (List t))) - (case (get@ #root (:representation tree)) + (case (value@ #root (:representation tree)) (0 #0 value) - (list (get@ #tag (:representation tree))) + (list (value@ #tag (:representation tree))) (0 #1 [left right]) (list\compose (tags left) @@ -76,7 +76,7 @@ (def: .public (values tree) (All [@ t v] (-> (Tree @ t v) (List v))) - (case (get@ #root (:representation tree)) + (case (value@ #root (:representation tree)) (0 #0 value) (list value) @@ -99,8 +99,8 @@ (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)))))))) + (recur _tag (value@ #root (:representation left))) + (recur shifted_tag (value@ #root (:representation right)))))))) #.None))) ) diff --git a/stdlib/source/library/lux/data/collection/tree/zipper.lux b/stdlib/source/library/lux/data/collection/tree/zipper.lux index b6fb27355..6d1709c55 100644 --- a/stdlib/source/library/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/library/lux/data/collection/tree/zipper.lux @@ -50,23 +50,23 @@ (def: .public tree (All [a] (-> (Zipper a) (Tree a))) - (get@ #node)) + (value@ #node)) (def: .public value (All [a] (-> (Zipper a) a)) - (get@ [#node #//.value])) + (value@ [#node #//.value])) (def: .public (set value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (set@ [#node #//.value] value zipper)) + (with@ [#node #//.value] value zipper)) (def: .public (update transform zipper) (All [a] (-> (-> a a) (Zipper a) (Zipper a))) - (update@ [#node #//.value] transform zipper)) + (revised@ [#node #//.value] transform zipper)) (def: children (All [a] (-> (Zipper a) (List (Tree a)))) - (get@ [#node #//.children])) + (value@ [#node #//.children])) (def: .public leaf? (All [a] (-> (Zipper a) Bit)) @@ -78,7 +78,7 @@ (def: .public (start? zipper) (All [a] (-> (Zipper a) Bit)) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None true @@ -92,7 +92,7 @@ #.None (#.Item head tail) - (#.Some {#family (#.Some {#parent (set@ [#node #//.children] (list) zipper) + (#.Some {#family (#.Some {#parent (with@ [#node #//.children] (list) zipper) #lefts #.End #rights tail}) #node head}))) @@ -100,37 +100,37 @@ (def: .public (up zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) (do maybe.monad - [family (get@ #family zipper)] + [family (value@ #family zipper)] (in (let [(^slots [#parent #lefts #rights]) family] (for {@.old - (update@ #node (: (-> (Tree (:parameter 0)) - (Tree (:parameter 0))) - (set@ #//.children (list\compose (list.reversed lefts) - (#.Item (get@ #node zipper) - rights)))) - parent)} - (set@ [#node #//.children] - (list\compose (list.reversed lefts) - (#.Item (get@ #node zipper) - rights)) - parent)))))) + (revised@ #node (: (-> (Tree (:parameter 0)) + (Tree (:parameter 0))) + (with@ #//.children (list\compose (list.reversed lefts) + (#.Item (value@ #node zipper) + rights)))) + parent)} + (with@ [#node #//.children] + (list\compose (list.reversed lefts) + (#.Item (value@ #node zipper) + rights)) + parent)))))) (template [ ] [(def: .public ( zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) (#.Some family) - (case (get@ family) + (case (value@ family) (#.Item next side') (#.Some (for {@.old {#family (#.Some (|> family - (set@ side') - (update@ (|>> (#.Item (get@ #node zipper)))))) + (with@ side') + (revised@ (|>> (#.Item (value@ #node zipper)))))) #node next}} (let [move (: (All [a] (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ side' zipper) - (|>> (set@ side') - (update@ (|>> (#.Item (get@ #node zipper)))))))] + (|>> (with@ side') + (revised@ (|>> (#.Item (value@ #node zipper)))))))] {#family (#.Some (move side' zipper family)) #node next}))) @@ -142,26 +142,26 @@ (def: .public ( zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None #.None (#.Some family) - (case (list.reversed (get@ family)) + (case (list.reversed (value@ family)) #.End #.None (#.Item last prevs) (#.Some (for {@.old {#family (#.Some (|> family - (set@ #.End) - (update@ (|>> (#.Item (get@ #node zipper)) - (list\compose prevs))))) + (with@ #.End) + (revised@ (|>> (#.Item (value@ #node zipper)) + (list\compose prevs))))) #node last}} (let [move (: (All [a] (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ prevs zipper) - (|>> (set@ #.End) - (update@ (|>> (#.Item (get@ #node zipper)) - (list\compose prevs))))))] + (|>> (with@ #.End) + (revised@ (|>> (#.Item (value@ #node zipper)) + (list\compose prevs))))))] {#family (#.Some (move prevs zipper family)) #node last}))))))] @@ -245,44 +245,44 @@ (def: .public (interpose value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (update@ [#node #//.children] - (|>> (//.branch value) list) - zipper)) + (revised@ [#node #//.children] + (|>> (//.branch value) list) + zipper)) (def: .public (adopt value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (update@ [#node #//.children] - (|>> (#.Item (//.leaf value))) - zipper)) + (revised@ [#node #//.children] + (|>> (#.Item (//.leaf value))) + zipper)) (def: .public (remove zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) (do maybe.monad - [family (get@ #family zipper)] - (case (get@ #lefts family) + [family (value@ #family zipper)] + (case (value@ #lefts family) #.End - (in (set@ [#node #//.children] - (get@ #rights family) - (get@ #parent family))) + (in (with@ [#node #//.children] + (value@ #rights family) + (value@ #parent family))) (#.Item next side) (in (|> zipper - (set@ #family (|> family - (set@ #lefts side) - #.Some)) - (set@ #node next)))))) + (with@ #family (|> family + (with@ #lefts side) + #.Some)) + (with@ #node next)))))) (template [ ] [(def: .public ( value zipper) (All [a] (-> a (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None #.None (#.Some family) - (#.Some (set@ #family - (#.Some (update@ (|>> (#.Item (//.leaf value))) family)) - zipper))))] + (#.Some (with@ #family + (#.Some (revised@ (|>> (#.Item (//.leaf value))) family)) + zipper))))] [insert_left #lefts] [insert_right #rights] @@ -304,14 +304,14 @@ (def: &functor ..functor) - (def: out (get@ [#node #//.value])) + (def: out (value@ [#node #//.value])) (def: (split (^slots [#family #node])) (let [tree_splitter (: (All [a] (-> (Tree a) (Tree (Zipper a)))) (function (tree_splitter tree) {#//.value (..zipper tree) #//.children (|> tree - (get@ #//.children) + (value@ #//.children) (list\map tree_splitter))}))] {#family (maybe\map (function (_ (^slots [#parent #lefts #rights])) {#parent (split parent) diff --git a/stdlib/source/library/lux/data/color.lux b/stdlib/source/library/lux/data/color.lux index 19cdb0b66..1cebc0408 100644 --- a/stdlib/source/library/lux/data/color.lux +++ b/stdlib/source/library/lux/data/color.lux @@ -28,7 +28,7 @@ abstract]]]) (def: rgb_limit 256) -(def: top (dec rgb_limit)) +(def: top (-- rgb_limit)) (def: rgb_factor (|> top .int int.frac)) @@ -420,7 +420,7 @@ (let [[hue saturation brightness] (hsb color) spread (..normal spread)] (list\map (function (_ idx) - (of_hsb [(|> idx inc .int int.frac (f.* spread) (f.+ hue) ..normal) + (of_hsb [(|> idx ++ .int int.frac (f.* spread) (f.+ hue) ..normal) saturation brightness])) (list.indices variations))))) @@ -431,7 +431,7 @@ (let [[hue saturation brightness] (hsb color) spread (..normal spread)] (|> (list.indices variations) - (list\map (|>> inc .int int.frac + (list\map (|>> ++ .int int.frac (f.* spread) (f.+ brightness) ..normal diff --git a/stdlib/source/library/lux/data/format/binary.lux b/stdlib/source/library/lux/data/format/binary.lux index e23ade3fb..7a6ccadba 100644 --- a/stdlib/source/library/lux/data/format/binary.lux +++ b/stdlib/source/library/lux/data/format/binary.lux @@ -93,12 +93,12 @@ (^template [ ] [( caseV) (let [[caseS caseT] ( caseV)] - [(.inc caseS) + [(.++ caseS) (function (_ [offset binary]) (|> binary (binary.write/8! offset ) try.trusted - [(.inc offset)] + [(.++ offset)] caseT))])]) ([0 #.Left left] [1 #.Right right]) @@ -243,12 +243,12 @@ (^template [ ] [( caseV) (let [[caseS caseT] ( caseV)] - [(.inc caseS) + [(.++ caseS) (function (_ [offset binary]) (|> binary (binary.write/8! offset ) try.trusted - [(.inc offset)] + [(.++ offset)] caseT))])]) ([0 #.Primitive (..and ..text (..list recur))] [1 #.Sum pair] @@ -278,12 +278,12 @@ (^template [ ] [( caseV) (let [[caseS caseT] ( caseV)] - [(.inc caseS) + [(.++ caseS) (function (_ [offset binary]) (|> binary (binary.write/8! offset ) try.trusted - [(.inc offset)] + [(.++ offset)] caseT))])]) ([0 #.Bit ..bit] [1 #.Nat ..nat] diff --git a/stdlib/source/library/lux/data/format/css.lux b/stdlib/source/library/lux/data/format/css.lux index 7ec9a0d35..8b3a9270c 100644 --- a/stdlib/source/library/lux/data/format/css.lux +++ b/stdlib/source/library/lux/data/format/css.lux @@ -51,19 +51,19 @@ (def: .public (font font) (-> Font (CSS Special)) - (let [with_unicode (case (get@ #/font.unicode_range font) + (let [with_unicode (case (value@ #/font.unicode_range font) (#.Some unicode_range) - (let [unicode_range' (format "U+" (\ nat.hex encode (get@ #/font.start unicode_range)) - "-" (\ nat.hex encode (get@ #/font.end unicode_range)))] + (let [unicode_range' (format "U+" (\ nat.hex encode (value@ #/font.start unicode_range)) + "-" (\ nat.hex encode (value@ #/font.end unicode_range)))] (list ["unicode-range" unicode_range'])) #.None (list))] - (|> (list& ["font-family" (get@ #/font.family font)] - ["src" (format "url(" (get@ #/font.source font) ")")] - ["font-stretch" (|> font (get@ #/font.stretch) (maybe.else /value.normal_stretch) /value.value)] - ["font-style" (|> font (get@ #/font.style) (maybe.else /value.normal_style) /value.value)] - ["font-weight" (|> font (get@ #/font.weight) (maybe.else /value.normal_weight) /value.value)] + (|> (list& ["font-family" (value@ #/font.family font)] + ["src" (format "url(" (value@ #/font.source font) ")")] + ["font-stretch" (|> font (value@ #/font.stretch) (maybe.else /value.normal_stretch) /value.value)] + ["font-style" (|> font (value@ #/font.style) (maybe.else /value.normal_style) /value.value)] + ["font-weight" (|> font (value@ #/font.weight) (maybe.else /value.normal_weight) /value.value)] with_unicode) (list\map (function (_ [property value]) (format property ": " value ";"))) @@ -95,8 +95,8 @@ (:abstraction (format "@keyframes " (/value.value animation) " {" (|> frames (list\map (function (_ frame) - (format (/value.percentage (get@ #when frame)) " {" - (/style.inline (get@ #what frame)) + (format (/value.percentage (value@ #when frame)) " {" + (/style.inline (value@ #what frame)) "}"))) (text.interposed ..css_separator)) "}"))) diff --git a/stdlib/source/library/lux/data/format/css/value.lux b/stdlib/source/library/lux/data/format/css/value.lux index 0c8e8f70f..54de6d97a 100644 --- a/stdlib/source/library/lux/data/format/css/value.lux +++ b/stdlib/source/library/lux/data/format/css/value.lux @@ -988,7 +988,7 @@ (-> Percentage Text) (|>> :representation)) - (def: percentage_limit Nat (.inc 100)) + (def: percentage_limit Nat (.++ 100)) (def: .public (%% value) (-> Nat Percentage) @@ -1131,7 +1131,7 @@ (def: .public (clip rectangle) (-> Rectangle (Value Clip)) (`` (..apply "rect" (list (~~ (template [] - [(:representation (get@ rectangle))] + [(:representation (value@ rectangle))] [#top] [#right] [#bottom] [#left])))))) diff --git a/stdlib/source/library/lux/data/format/tar.lux b/stdlib/source/library/lux/data/format/tar.lux index 7f1346df1..c26a7a751 100644 --- a/stdlib/source/library/lux/data/format/tar.lux +++ b/stdlib/source/library/lux/data/format/tar.lux @@ -44,7 +44,7 @@ max_size) padding (|> "0" (list.repeated padding_size) - text.joined)] + text.together)] (format padding number))) (def: blank " ") @@ -61,12 +61,12 @@ (|> ..octal_size (list.repeated ) (list\fold n.* 1) - inc)) + ++)) (exception: .public ( {value Nat}) (exception.report ["Value" (%.nat value)] - ["Maximum" (%.nat (dec ))])) + ["Maximum" (%.nat (-- ))])) (abstract: .public {} @@ -171,7 +171,7 @@ (def: checksum (-> Binary Nat) - (binary.fold n.+ 0)) + (binary.aggregate n.+ 0)) (def: checksum_checksum (|> ..dummy_checksum @@ -216,10 +216,10 @@ (def: ascii? (-> Text Bit) (|>> (\ utf8.codec encode) - (binary.fold (function (_ char verdict) - (.and verdict - (n.<= ..last_ascii char))) - true))) + (binary.aggregate (function (_ char verdict) + (.and verdict + (n.<= ..last_ascii char))) + true))) (exception: .public (not_ascii {text Text}) (exception.report @@ -232,17 +232,17 @@ (-> Binary (Try Binary)) (case (binary.size string) 0 (#try.Success string) - size (loop [end (dec size)] + size (loop [end (-- size)] (case end 0 (#try.Success (\ utf8.codec encode "")) _ (do try.monad [last_char (binary.read/8! end string)] (`` (case (.nat last_char) (^ (char (~~ (static ..null)))) - (recur (dec end)) + (recur (-- end)) _ - (binary.slice 0 (inc end) string)))))))) + (binary.slice 0 (++ end) string)))))))) (template [ ] [(abstract: .public @@ -640,11 +640,11 @@ (def: (header_writer header) (Writer Header) (let [checksum (|> header - (set@ #checksum ..dummy_checksum) + (with@ #checksum ..dummy_checksum) (format.result ..header_writer') ..checksum_code)] (|> header - (set@ #checksum checksum) + (with@ #checksum checksum) (format.result ..header_writer') (format.segment ..block_size)))) @@ -664,16 +664,16 @@ (format.segment (..rounded_content_size size)))] (writer [{#path path #mode mode - #user_id (get@ [#user #id] ownership) - #group_id (get@ [#group #id] ownership) + #user_id (value@ [#user #id] ownership) + #group_id (value@ [#group #id] ownership) #size size #modification_time (..modification_time modification_time) #checksum ..dummy_checksum #link_flag link_flag #link_name ..no_path #magic ..ustar - #user_name (get@ [#user #name] ownership) - #group_name (get@ [#group #name] ownership) + #user_name (value@ [#user #name] ownership) + #group_name (value@ [#group #name] ownership) #major_device ..no_device #minor_device ..no_device} content])))) @@ -812,26 +812,26 @@ (-> Link_Flag (Parser File)) (do <>.monad [header ..header_parser - _ (<>.assertion (exception.error ..wrong_link_flag [expected (get@ #link_flag header)]) - (same? expected (get@ #link_flag header))) - .let [size (get@ #size header) + _ (<>.assertion (exception.error ..wrong_link_flag [expected (value@ #link_flag header)]) + (same? expected (value@ #link_flag header))) + .let [size (value@ #size header) rounded_size (..rounded_content_size size)] content (.segment (..from_big size)) content (<>.lifted (..content content)) _ (.segment (n.- (..from_big size) rounded_size))] - (in [(get@ #path header) + (in [(value@ #path header) (|> header - (get@ #modification_time) + (value@ #modification_time) ..from_big .int duration.of_millis (duration.up (|> duration.second duration.millis .nat)) instant.absolute) - (get@ #mode header) - {#user {#name (get@ #user_name header) - #id (get@ #user_id header)} - #group {#name (get@ #group_name header) - #id (get@ #group_id header)}} + (value@ #mode header) + {#user {#name (value@ #user_name header) + #id (value@ #user_id header)} + #group {#name (value@ #group_name header) + #id (value@ #group_id header)}} content]))) (def: (file_name_parser expected extractor) @@ -839,9 +839,9 @@ (do <>.monad [header ..header_parser _ (<>.lifted - (exception.assertion ..wrong_link_flag [expected (get@ #link_flag header)] + (exception.assertion ..wrong_link_flag [expected (value@ #link_flag header)] (n.= (..link_flag expected) - (..link_flag (get@ #link_flag header)))))] + (..link_flag (value@ #link_flag header)))))] (in (extractor header)))) (def: entry_parser @@ -851,9 +851,9 @@ (<>.either (..file_parser ..normal) (..file_parser ..old_normal))) (\ <>.monad map (|>> #..Symbolic_Link) - (..file_name_parser ..symbolic_link (get@ #link_name))) + (..file_name_parser ..symbolic_link (value@ #link_name))) (\ <>.monad map (|>> #..Directory) - (..file_name_parser ..directory (get@ #path))) + (..file_name_parser ..directory (value@ #path))) (\ <>.monad map (|>> #..Contiguous) (..file_parser ..contiguous)))) diff --git a/stdlib/source/library/lux/data/format/xml.lux b/stdlib/source/library/lux/data/format/xml.lux index 67722607c..b596734ea 100644 --- a/stdlib/source/library/lux/data/format/xml.lux +++ b/stdlib/source/library/lux/data/format/xml.lux @@ -269,7 +269,7 @@ ($_ text\compose prefix "<" tag attrs ">" (|> xml_children (list\map (|>> (recur (text\compose prefix text.tab)) (text\compose text.new_line))) - text.joined) + text.together) text.new_line prefix ""))))) )))) (def: decode diff --git a/stdlib/source/library/lux/data/product.lux b/stdlib/source/library/lux/data/product.lux index 4173f8133..aba9488bc 100644 --- a/stdlib/source/library/lux/data/product.lux +++ b/stdlib/source/library/lux/data/product.lux @@ -41,7 +41,7 @@ (let [[x y] xy] [y x])) -(def: .public (apply f g) +(def: .public (then f g) {#.doc (example "Apply functions to both sides of a pair.")} (All [a b c d] (-> (-> a c) (-> b d) @@ -49,7 +49,7 @@ (function (_ [x y]) [(f x) (g y)])) -(def: .public (fork f g) +(def: .public (forked f g) {#.doc (example "Yields a pair by applying both functions to a single value.")} (All [a l r] (-> (-> a l) (-> a r) diff --git a/stdlib/source/library/lux/data/store.lux b/stdlib/source/library/lux/data/store.lux index ba795f4d1..a25331cd4 100644 --- a/stdlib/source/library/lux/data/store.lux +++ b/stdlib/source/library/lux/data/store.lux @@ -13,8 +13,8 @@ (def: (extend f wa) (All [s a b] (-> (-> (Store s a) b) (Store s a) (Store s b))) - {#cursor (get@ #cursor wa) - #peek (function (_ s) (f (set@ #cursor s wa)))}) + {#cursor (value@ #cursor wa) + #peek (function (_ s) (f (with@ #cursor s wa)))}) (implementation: .public functor (All [s] (Functor (Store s))) diff --git a/stdlib/source/library/lux/data/sum.lux b/stdlib/source/library/lux/data/sum.lux index 84b19ffc3..f14efa463 100644 --- a/stdlib/source/library/lux/data/sum.lux +++ b/stdlib/source/library/lux/data/sum.lux @@ -28,7 +28,7 @@ (0 #0 l) (fl l) (0 #1 r) (fr r)))) -(def: .public (apply fl fr) +(def: .public (then fl fr) {#.doc (example "Applies functions to both sides of a 2-variant.")} (All [l l' r r'] (-> (-> l l') (-> r r') diff --git a/stdlib/source/library/lux/data/text.lux b/stdlib/source/library/lux/data/text.lux index 2670bdae3..baeade224 100644 --- a/stdlib/source/library/lux/data/text.lux +++ b/stdlib/source/library/lux/data/text.lux @@ -78,7 +78,7 @@ output (#.Some from') - (recur (inc from') output'))))) + (recur (++ from') output'))))) (def: .public (last_index_of part text) (-> Text Text (Maybe Nat)) @@ -284,14 +284,14 @@ (loop [index 0 hash 0] (if (n.< length index) - (recur (inc index) + (recur (++ index) (|> hash (i64.left_shifted 5) (n.- hash) (n.+ ("lux text char" index input)))) hash)))))) -(def: .public joined +(def: .public together (-> (List Text) Text) (let [(^open ".") ..monoid] (|>> list.reversed @@ -300,8 +300,8 @@ (def: .public (interposed separator texts) (-> Text (List Text) Text) (case separator - "" (..joined texts) - _ (|> texts (list.interposed separator) ..joined))) + "" (..together texts) + _ (|> texts (list.interposed separator) ..together))) (def: .public (empty? text) (-> Text Bit) diff --git a/stdlib/source/library/lux/data/text/buffer.lux b/stdlib/source/library/lux/data/text/buffer.lux index 2d8708c58..196227220 100644 --- a/stdlib/source/library/lux/data/text/buffer.lux +++ b/stdlib/source/library/lux/data/text/buffer.lux @@ -67,37 +67,37 @@ ... default row.empty)))) - (def: .public (append chunk buffer) + (def: .public (then chunk buffer) (-> Text Buffer Buffer) (with_expansions [ (let [[capacity transform] (:representation buffer) - append! (: (-> Text java/lang/StringBuilder java/lang/StringBuilder) - (function (_ chunk builder) - (exec - (java/lang/Appendable::append (:as java/lang/CharSequence chunk) - builder) - builder)))] + then! (: (-> Text java/lang/StringBuilder java/lang/StringBuilder) + (function (_ chunk builder) + (exec + (java/lang/Appendable::append (:as java/lang/CharSequence chunk) + builder) + builder)))] (:abstraction [(n.+ (//.size chunk) capacity) - (|>> transform (append! chunk))]))] + (|>> transform (then! chunk))]))] (for {@.old @.jvm @.js (let [[capacity transform] (:representation buffer) - append! (: (-> (JS_Array Text) (JS_Array Text)) - (function (_ array) - (exec - (JS_Array::push [chunk] array) - array)))] + then! (: (-> (JS_Array Text) (JS_Array Text)) + (function (_ array) + (exec + (JS_Array::push [chunk] array) + array)))] (:abstraction [(n.+ (//.size chunk) capacity) - (|>> transform append!)])) + (|>> transform then!)])) @.lua (let [[capacity transform] (:representation buffer) - append! (: (-> (array.Array Text) (array.Array Text)) - (function (_ array) - (exec - (table/insert [array chunk]) - array)))] + then! (: (-> (array.Array Text) (array.Array Text)) + (function (_ array) + (exec + (table/insert [array chunk]) + array)))] (:abstraction [(n.+ (//.size chunk) capacity) - (|>> transform append!)]))} + (|>> transform then!)]))} ... default - (|> buffer :representation (row.add chunk) :abstraction)))) + (|> buffer :representation (row.suffix chunk) :abstraction)))) (def: .public size (-> Buffer Nat) diff --git a/stdlib/source/library/lux/data/text/escape.lux b/stdlib/source/library/lux/data/text/escape.lux index f46331176..89205cbff 100644 --- a/stdlib/source/library/lux/data/text/escape.lux +++ b/stdlib/source/library/lux/data/text/escape.lux @@ -84,7 +84,7 @@ (def: (ascii_escaped replacement pre_offset pre_limit previous current) (-> Text Nat Nat Text Text [Text Text Nat]) - (let [post_offset (inc pre_offset) + (let [post_offset (++ pre_offset) post_limit (n.- post_offset pre_limit)] [(format previous ("lux text clip" 0 pre_offset current) @@ -101,7 +101,7 @@ 2 (format "00" code) 3 (format "0" code) _ code)) - post_offset (inc pre_offset) + post_offset (++ pre_offset) post_limit (n.- post_offset pre_limit)] [(format previous ("lux text clip" 0 pre_offset current) @@ -138,13 +138,13 @@ (n.> ..ascii_top char)) (let [[previous' current' limit'] (unicode_escaped char offset limit previous current)] (recur 0 previous' current' limit')) - (recur (inc offset) previous current limit))) + (recur (++ offset) previous current limit))) (format previous current)))) (exception: .public (dangling_escape {text Text}) (exception.report ["In" (%.text text)] - ["At" (%.nat (dec (//.size text)))])) + ["At" (%.nat (-- (//.size text)))])) (exception: .public (invalid_escape {text Text} {offset Nat} {sigil Char}) (exception.report @@ -202,7 +202,7 @@ (if (n.< limit offset) (case ("lux text char" offset current) (^ (static ..sigil_char)) - (let [@sigil (inc offset)] + (let [@sigil (++ offset)] (if (n.< limit @sigil) (case ("lux text char" @sigil current) (^template [ ] @@ -233,7 +233,7 @@ (exception.except ..dangling_escape [text]))) _ - (recur (inc offset) previous current limit)) + (recur (++ offset) previous current limit)) (#try.Success (case previous "" current _ (format previous current)))))) diff --git a/stdlib/source/library/lux/data/text/format.lux b/stdlib/source/library/lux/data/text/format.lux index 1a274b692..894dd8321 100644 --- a/stdlib/source/library/lux/data/text/format.lux +++ b/stdlib/source/library/lux/data/text/format.lux @@ -121,7 +121,7 @@ (def: .public (list formatter) (All [a] (-> (Format a) (Format (List a)))) (|>> (list\map (|>> formatter (format " "))) - text.joined + text.together (text.enclosed ["(list" ")"]))) (def: .public (maybe format) diff --git a/stdlib/source/library/lux/data/text/regex.lux b/stdlib/source/library/lux/data/text/regex.lux index 4998e9ce9..3b26dac8e 100644 --- a/stdlib/source/library/lux/data/text/regex.lux +++ b/stdlib/source/library/lux/data/text/regex.lux @@ -54,7 +54,7 @@ (def: join_text^ (-> (Parser (List Text)) (Parser Text)) - (\ <>.monad map //.joined)) + (\ <>.monad map //.together)) (def: name_char^ (Parser Text) @@ -300,7 +300,7 @@ [idx (code.identifier ["" _name])] #.None - [(inc idx) (code.identifier ["" (n\encode idx)])]) + [(++ idx) (code.identifier ["" (n\encode idx)])]) access (if (n.> 0 num_captures) (` ((~! product.left) (~ name!))) name!)] diff --git a/stdlib/source/library/lux/data/text/unicode/block.lux b/stdlib/source/library/lux/data/text/unicode/block.lux index deb289a22..95931ff4a 100644 --- a/stdlib/source/library/lux/data/text/unicode/block.lux +++ b/stdlib/source/library/lux/data/text/unicode/block.lux @@ -48,7 +48,7 @@ (template [ ] [(def: .public (-> Block Char) - (|>> :representation (get@ )))] + (|>> :representation (value@ )))] [start #interval.bottom] [end #interval.top] @@ -56,9 +56,9 @@ (def: .public (size block) (-> Block Nat) - (let [start (get@ #interval.bottom (:representation block)) - end (get@ #interval.top (:representation block))] - (|> end (n.- start) inc))) + (let [start (value@ #interval.bottom (:representation block)) + end (value@ #interval.top (:representation block))] + (|> end (n.- start) ++))) (def: .public (within? block char) (All [a] (-> Block Char Bit)) diff --git a/stdlib/source/library/lux/data/trace.lux b/stdlib/source/library/lux/data/trace.lux index 8917fc89a..4b5da0b54 100644 --- a/stdlib/source/library/lux/data/trace.lux +++ b/stdlib/source/library/lux/data/trace.lux @@ -13,22 +13,22 @@ (implementation: .public functor (All [t] (Functor (Trace t))) (def: (map f fa) - (update@ #trace (compose f) fa))) + (revised@ #trace (compose f) fa))) (implementation: .public comonad (All [t] (CoMonad (Trace t))) (def: &functor ..functor) (def: (out wa) - ((get@ #trace wa) - (get@ [#monoid #monoid.identity] wa))) + ((value@ #trace wa) + (value@ [#monoid #monoid.identity] wa))) (def: (split wa) - (let [monoid (get@ #monoid wa)] + (let [monoid (value@ #monoid wa)] {#monoid monoid #trace (function (_ t1) {#monoid monoid #trace (function (_ t2) - ((get@ #trace wa) + ((value@ #trace wa) (\ monoid compose t1 t2)))})}))) (def: .public (result context tracer) diff --git a/stdlib/source/library/lux/debug.lux b/stdlib/source/library/lux/debug.lux index 8183fb6ff..7a5a9a153 100644 --- a/stdlib/source/library/lux/debug.lux +++ b/stdlib/source/library/lux/debug.lux @@ -126,7 +126,7 @@ (let [member ("lua array read" idx tuple)] (if ("lua object nil?" member) #.End - (#.Item member (recur (inc idx))))))))} + (#.Item member (recur (++ idx))))))))} (as_is)) (def: (tuple_inspection inspection) @@ -461,7 +461,7 @@ [lefts #1 (rightR right)] _ - (recur (inc lefts) (#.Item rightR extraR+) right))) + (recur (++ lefts) (#.Item rightR extraR+) right))) _ (undefined)))] @@ -601,7 +601,7 @@ [location meta.location locals meta.locals .let [environment (|> locals - list.joined + list.together ... The list is reversed to make sure that, when building the dictionary, ... later bindings overshadow earlier ones if they have the same name. list.reversed diff --git a/stdlib/source/library/lux/documentation.lux b/stdlib/source/library/lux/documentation.lux index 8651dbdcc..37147b2f0 100644 --- a/stdlib/source/library/lux/documentation.lux +++ b/stdlib/source/library/lux/documentation.lux @@ -2,6 +2,7 @@ [library [lux (#- Definition Module example type) ["." meta] + ["." type ("#\." equivalence)] [abstract [monad (#+ do)]] [control @@ -18,7 +19,7 @@ ["." set (#+ Set)]] [format ["md" markdown (#+ Markdown Block)]]] - [macro + ["." macro [syntax (#+ syntax:)] ["." code] ["." template]] @@ -74,13 +75,13 @@ (if (n.= old_line new_line) (if (n.< old_column new_column) "" - (text.joined (list.repeated (n.- old_column new_column) " "))) + (text.together (list.repeated (n.- old_column new_column) " "))) (format (if (n.< old_line new_line) "" - (text.joined (list.repeated (n.- old_line new_line) \n))) + (text.together (list.repeated (n.- old_line new_line) \n))) (if (n.< reference_column new_column) "" - (text.joined (list.repeated (n.- reference_column new_column) " ")))))) + (text.together (list.repeated (n.- reference_column new_column) " ")))))) (def: un_paired (All [a] (-> (List [a a]) (List a))) @@ -96,7 +97,7 @@ (^template [ ] [[new_location ( value)] (let [documentation (`` (|> value (~~ (template.spliced ))))] - [(update@ #.column (n.+ (text.size documentation)) new_location) + [(revised@ #.column (n.+ (text.size documentation)) new_location) (format (padding reference_column old_location new_location) documentation)])]) ([#.Bit [%.bit]] @@ -113,9 +114,9 @@ (let [[group_location' members_documentation] (list\fold (function (_ part [last_location text_accum]) (let [[member_location member_documentation] (code_documentation last_location reference_column part)] [member_location (format text_accum member_documentation)])) - [(update@ #.column inc group_location) ""] + [(revised@ #.column ++ group_location) ""] ( members))] - [(update@ #.column inc group_location') + [(revised@ #.column ++ group_location') (format (padding reference_column old_location group_location) |<| members_documentation |>|)])]) ([syntax.open_form syntax.close_form #.Form |>] @@ -141,7 +142,7 @@ (let [reference_column (..reference_column example) [location _] example] (|> example - (..code_documentation (set@ #.column reference_column location) reference_column) + (..code_documentation (with@ #.column reference_column location) reference_column) product.right)))) (def: type @@ -194,16 +195,26 @@ (syntax: (minimal_definition_documentation [name ..qualified_identifier]) (with_expansions [<\n> (~! text.\n)] - (in (list (` ($_ ((~! md.then)) - ... Name - (<| ((~! md.heading/3)) - (~ (code.text (|> name product.right [""] %.name)))) - ... Type - (<| ((~! md.code)) - ((~! ..type) ("lux in-module" - (~ (code.text (product.left name))) - (.:of (~ (code.identifier name))))))) - ))))) + (macro.with_identifiers [g!type] + (in (list (` ($_ ((~! md.then)) + ... Name + (<| ((~! md.heading/3)) + (~ (code.text (|> name product.right [""] %.name)))) + ... Type + (let [(~ g!type) ("lux in-module" + (~ (code.text (product.left name))) + (.:of (~ (code.identifier name))))] + ((~! md.code) + (if ((~! type\=) .Type (~ g!type)) + (|> (~ (code.identifier name)) + (:as .Type) + ((~! type.anonymous)) + ((~! ..type)) + ((~! %.format) + ((~! ..single_line_comment) ((~! ..type) (~ g!type))) + <\n>)) + ((~! ..type) (~ g!type)))))) + )))))) (syntax: (definition_documentation [name ..qualified_identifier @@ -265,9 +276,9 @@ (def: definitions_documentation (-> (List Definition) (Markdown Block)) (|>> (list.sorted (function (_ left right) - (text\< (get@ #definition right) - (get@ #definition left)))) - (list\map (get@ #documentation)) + (text\< (value@ #definition right) + (value@ #definition left)))) + (list\map (value@ #documentation)) (list\fold md.then md.empty))) (def: expected_separator @@ -326,23 +337,25 @@ (let [(^slots [#expected]) module] ($_ md.then ... Name - (md.heading/1 (get@ #module module)) + (md.heading/1 (value@ #module module)) ... Description - (<| md.paragraph - md.text - (get@ #description module)) + (case (value@ #description module) + "" md.empty + description (<| md.paragraph + md.text + description)) ... Definitions (md.heading/2 "Definitions") (|> module - (get@ #definitions) - (list.only (|>> (get@ #definition) + (value@ #definitions) + (list.only (|>> (value@ #definition) (set.member? expected))) ..definitions_documentation) ... Missing documentation (case (|> module - (get@ #definitions) + (value@ #definitions) (list\fold (function (_ definition missing) - (set.lacks (get@ #definition definition) missing)) + (set.lacks (value@ #definition definition) missing)) expected) set.list) #.End @@ -354,9 +367,9 @@ (..listing missing))) ... Un-expected documentation (case (|> module - (get@ #definitions) - (list.only (|>> (get@ #definition) (set.member? expected) not)) - (list\map (get@ #definition))) + (value@ #definitions) + (list.only (|>> (value@ #definition) (set.member? expected) not)) + (list\map (value@ #definition))) #.End md.empty @@ -369,7 +382,7 @@ (def: .public documentation (-> (List Module) Text) (|>> (list.sorted (function (_ left right) - (text\< (get@ #module right) (get@ #module left)))) + (text\< (value@ #module right) (value@ #module left)))) (list\map ..module_documentation) (list.interposed md.horizontal_rule) (list\fold md.then (: (Markdown Block) md.empty)) diff --git a/stdlib/source/library/lux/ffi.jvm.lux b/stdlib/source/library/lux/ffi.jvm.lux index 52fdef075..d7f3c9544 100644 --- a/stdlib/source/library/lux/ffi.jvm.lux +++ b/stdlib/source/library/lux/ffi.jvm.lux @@ -1403,15 +1403,15 @@ (-> (List (Type Var)) Import_Member_Declaration (List (Type Var))) (case member (#ConstructorDecl [commons _]) - (list\compose class_tvars (get@ #import_member_tvars commons)) + (list\compose class_tvars (value@ #import_member_tvars commons)) (#MethodDecl [commons _]) - (case (get@ #import_member_kind commons) + (case (value@ #import_member_kind commons) #StaticIMK - (get@ #import_member_tvars commons) + (value@ #import_member_tvars commons) _ - (list\compose class_tvars (get@ #import_member_tvars commons))) + (list\compose class_tvars (value@ #import_member_tvars commons))) _ class_tvars)) @@ -1431,7 +1431,7 @@ .let [input_jvm_types (list\map product.right import_member_args) arg_types (list\map (: (-> [Bit (Type Value)] Code) (function (_ [maybe? arg]) - (let [arg_type (value_type (get@ #import_member_mode commons) arg)] + (let [arg_type (value_type (value@ #import_member_mode commons) arg)] (if maybe? (` (Maybe (~ arg_type))) arg_type)))) @@ -1449,7 +1449,7 @@ (dictionary.key? ..boxes unboxed)) return_term - (get@ #import_member_maybe? commons) + (value@ #import_member_maybe? commons) (` (??? (~ return_term))) ... else @@ -1468,7 +1468,7 @@ (-> Import_Member_Declaration Code Code) (case member (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _])) - (if (get@ commons) + (if (value@ commons) return_term) @@ -1599,16 +1599,16 @@ (#ConstructorDecl [commons _]) (do meta.monad [.let [classT (type.class full_name (list)) - def_name (code.identifier ["" (..import_name import_format method_prefix (get@ #import_member_alias commons))]) + def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))]) jvm_interop (|> [classT (` ("jvm member invoke constructor" [(~+ (list\map ..var$ class_tvars))] (~ (code.text full_name)) - [(~+ (list\map ..var$ (get@ #import_member_tvars commons)))] - (~+ (|> (jvm_invoke_inputs (get@ #import_member_mode commons) input_jvm_types arg_function_inputs) + [(~+ (list\map ..var$ (value@ #import_member_tvars commons)))] + (~+ (|> (jvm_invoke_inputs (value@ #import_member_mode commons) input_jvm_types arg_function_inputs) (list.zipped/2 input_jvm_types) (list\map ..decorate_input)))))] - (with_automatic_output_conversion (get@ #import_member_mode commons)) + (with_automatic_output_conversion (value@ #import_member_mode commons)) (with_return_maybe member true classT) (with_return_try member) (with_return_io member))]] @@ -1618,7 +1618,7 @@ (#MethodDecl [commons method]) (with_identifiers [g!obj] (do meta.monad - [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (get@ #import_member_alias commons))]) + [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))]) (^slots [#import_member_kind]) commons (^slots [#import_method_name]) method [jvm_op object_ast] (: [Text (List Code)] @@ -1637,18 +1637,18 @@ ["jvm member invoke interface" (list g!obj)] ))) - method_return (get@ #import_method_return method) + method_return (value@ #import_method_return method) callC (: Code (` ((~ (code.text jvm_op)) [(~+ (list\map ..var$ class_tvars))] (~ (code.text full_name)) (~ (code.text import_method_name)) - [(~+ (list\map ..var$ (get@ #import_member_tvars commons)))] + [(~+ (list\map ..var$ (value@ #import_member_tvars commons)))] (~+ (|> object_ast (list\map ..un_quoted) (list.zipped/2 (list (type.class full_name (list)))) - (list\map (with_automatic_input_conversion (get@ #import_member_mode commons))))) - (~+ (|> (jvm_invoke_inputs (get@ #import_member_mode commons) input_jvm_types arg_function_inputs) + (list\map (with_automatic_input_conversion (value@ #import_member_mode commons))))) + (~+ (|> (jvm_invoke_inputs (value@ #import_member_mode commons) input_jvm_types arg_function_inputs) (list.zipped/2 input_jvm_types) (list\map ..decorate_input)))))) jvm_interop (: Code @@ -1656,7 +1656,7 @@ (#.Left method_return) (|> [method_return callC] - (with_automatic_output_conversion (get@ #import_member_mode commons)) + (with_automatic_output_conversion (value@ #import_member_mode commons)) (with_return_maybe member false method_return) (with_return_try member) (with_return_io member)) @@ -1809,7 +1809,7 @@ =members (|> bundles (list\map (function (_ [import_format members]) (list\map (|>> [import_format]) members))) - list.joined + list.together (monad.map ! (member_import$ class_type_vars kind declaration)))] (in (list& (class_import$ declaration) (list\join =members))))) @@ -1933,9 +1933,9 @@ _ )))) -(syntax: .public (array_length [array .any]) +(syntax: .public (length [array .any]) {#.doc (example "Gives the length of an array." - (array_length my_array))} + (length my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -1967,12 +1967,12 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_length (~ g!array))))))))) + (..length (~ g!array))))))))) -(syntax: .public (array_read [idx .any - array .any]) +(syntax: .public (read! [idx .any + array .any]) {#.doc (example "Loads an element from an array." - (array_read 10 my_array))} + (read! 10 my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -2006,13 +2006,13 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_read (~ idx) (~ g!array))))))))) + (..read! (~ idx) (~ g!array))))))))) -(syntax: .public (array_write [idx .any - value .any - array .any]) +(syntax: .public (write! [idx .any + value .any + array .any]) {#.doc (example "Stores an element into an array." - (array_write 10 my_object my_array))} + (write! 10 my_object my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -2047,7 +2047,7 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_write (~ idx) (~ value) (~ g!array))))))))) + (..write! (~ idx) (~ value) (~ g!array))))))))) (syntax: .public (class_for [type (..type^ (list))]) {#.doc (example "Loads the class as a java.lang.Class object." diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux index 29c286b23..9acf8e055 100644 --- a/stdlib/source/library/lux/ffi.old.lux +++ b/stdlib/source/library/lux/ffi.old.lux @@ -1098,7 +1098,7 @@ .let [arg_decls' (: (List Text) (list\map (|>> product.right (simple_class$ (list))) arg_decls))]] (in (`' ((~ (code.text (format "jvm invokespecial" - ":" (get@ #super_class_name super_class) + ":" (value@ #super_class_name super_class) ":" name ":" (text.interposed "," arg_decls')))) (~' _jvm_this) (~+ args)))))))] @@ -1368,15 +1368,15 @@ (-> (List Type_Parameter) Import_Member_Declaration (List Type_Parameter)) (case member (#ConstructorDecl [commons _]) - (list\compose class_tvars (get@ #import_member_tvars commons)) + (list\compose class_tvars (value@ #import_member_tvars commons)) (#MethodDecl [commons _]) - (case (get@ #import_member_kind commons) + (case (value@ #import_member_kind commons) #StaticIMK - (get@ #import_member_tvars commons) + (value@ #import_member_tvars commons) _ - (list\compose class_tvars (get@ #import_member_tvars commons))) + (list\compose class_tvars (value@ #import_member_tvars commons))) _ class_tvars)) @@ -1398,7 +1398,7 @@ import_member_args)) arg_types (list\map (: (-> [Bit GenericType] Code) (function (_ [maybe? arg]) - (let [arg_type (class_type (get@ #import_member_mode commons) type_params arg)] + (let [arg_type (class_type (value@ #import_member_mode commons) type_params arg)] (if maybe? (` (Maybe (~ arg_type))) arg_type)))) @@ -1412,7 +1412,7 @@ (-> Class_Declaration Import_Member_Declaration Code Code) (case member (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _])) - (if (get@ #import_member_maybe? commons) + (if (value@ #import_member_maybe? commons) (` (??? (~ return_term))) (let [g!temp (` ((~' ~') (~ (code.identifier ["" " Ω "]))))] (` (let [(~ g!temp) (~ return_term)] @@ -1420,8 +1420,8 @@ (~ g!temp)))) (~ g!temp) (panic! (~ (code.text (format "Cannot produce null references from method calls @ " - (get@ #class_name class) - "." (get@ #import_member_alias commons)))))))))) + (value@ #class_name class) + "." (value@ #import_member_alias commons)))))))))) _ return_term)) @@ -1431,7 +1431,7 @@ (-> Import_Member_Declaration Code Code) (case member (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _])) - (if (get@ commons) + (if (value@ commons) return_term) @@ -1527,10 +1527,10 @@ (#ConstructorDecl [commons _]) (do meta.monad - [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (get@ #import_member_alias commons))]) + [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))]) jvm_extension (code.text (format "jvm new" ":" full_name ":" (text.interposed "," arg_classes))) jvm_interop (|> (` ((~ jvm_extension) - (~+ (jvm_extension_inputs (get@ #import_member_mode commons) arg_classes arg_function_inputs)))) + (~+ (jvm_extension_inputs (value@ #import_member_mode commons) arg_classes arg_function_inputs)))) (decorate_return_maybe class member) (decorate_return_try member) (decorate_return_io member))]] @@ -1540,7 +1540,7 @@ (#MethodDecl [commons method]) (with_identifiers [g!obj] (do meta.monad - [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (get@ #import_member_alias commons))]) + [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))]) (^slots [#import_member_kind]) commons (^slots [#import_method_name]) method [jvm_op object_ast] (: [Text (List Code)] @@ -1560,10 +1560,10 @@ (list g!obj)] ))) jvm_extension (code.text (format "jvm " jvm_op ":" full_name ":" import_method_name ":" (text.interposed "," arg_classes))) - jvm_interop (|> [(simple_class$ (list) (get@ #import_method_return method)) + jvm_interop (|> [(simple_class$ (list) (value@ #import_method_return method)) (` ((~ jvm_extension) (~+ (list\map un_quote object_ast)) - (~+ (jvm_extension_inputs (get@ #import_member_mode commons) arg_classes arg_function_inputs))))] - (auto_convert_output (get@ #import_member_mode commons)) + (~+ (jvm_extension_inputs (value@ #import_member_mode commons) arg_classes arg_function_inputs))))] + (auto_convert_output (value@ #import_member_mode commons)) (decorate_return_maybe class member) (decorate_return_try member) (decorate_return_io member))]] @@ -1717,7 +1717,7 @@ =members (|> bundles (list\map (function (_ [import_format members]) (list\map (|>> [import_format]) members))) - list.joined + list.together (monad.map ! (member_import$ (product.right class_decl) kind class_decl)))] (in (list& (class_import$ class_decl) (list\join =members))))) @@ -1741,9 +1741,9 @@ _ (in (list (` ("jvm anewarray" (~ (code.text (generic_type$ type))) (~ size))))))) -(syntax: .public (array_length [array .any]) +(syntax: .public (length [array .any]) {#.doc (example "Gives the length of an array." - (array_length my_array))} + (length my_array))} (in (list (` ("jvm arraylength" (~ array)))))) (def: (type_class_name type) @@ -1768,10 +1768,10 @@ _ (meta.failure (format "Cannot convert to JvmType: " (type.format type)))))) -(syntax: .public (array_read [idx .any - array .any]) +(syntax: .public (read! [idx .any + array .any]) {#.doc (example "Loads an element from an array." - (array_read 10 my_array))} + (read! 10 my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -1796,13 +1796,13 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_read (~ idx) (~ g!array))))))))) + (..read! (~ idx) (~ g!array))))))))) -(syntax: .public (array_write [idx .any - value .any - array .any]) +(syntax: .public (write! [idx .any + value .any + array .any]) {#.doc (example "Stores an element into an array." - (array_write 10 my_object my_array))} + (write! 10 my_object my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -1827,7 +1827,7 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_write (~ idx) (~ value) (~ g!array))))))))) + (..write! (~ idx) (~ value) (~ g!array))))))))) (syntax: .public (class_for [type (..generic_type^ (list))]) {#.doc (example "Loads the class as a java.lang.Class object." diff --git a/stdlib/source/library/lux/locale/language.lux b/stdlib/source/library/lux/locale/language.lux index 1a7b52201..29ec7c190 100644 --- a/stdlib/source/library/lux/locale/language.lux +++ b/stdlib/source/library/lux/locale/language.lux @@ -21,7 +21,7 @@ (template [ ] [(def: .public (-> Language Text) - (|>> :representation (get@ )))] + (|>> :representation (value@ )))] [name #name] [code #code] diff --git a/stdlib/source/library/lux/locale/territory.lux b/stdlib/source/library/lux/locale/territory.lux index e0f569100..6309e1a86 100644 --- a/stdlib/source/library/lux/locale/territory.lux +++ b/stdlib/source/library/lux/locale/territory.lux @@ -24,7 +24,7 @@ [(def: .public (-> Territory ) (|>> :representation - (get@ )))] + (value@ )))] [name #name Text] [short_code #short Text] @@ -309,6 +309,6 @@ (def: hash (|>> :representation - (get@ #long) + (value@ #long) (\ text.hash hash)))) ) diff --git a/stdlib/source/library/lux/macro/local.lux b/stdlib/source/library/lux/macro/local.lux index 8a10f5f26..8c518b855 100644 --- a/stdlib/source/library/lux/macro/local.lux +++ b/stdlib/source/library/lux/macro/local.lux @@ -34,11 +34,11 @@ (def: (with_module name body) (All [a] (-> Text (-> Module (Try [Module a])) (Meta a))) (function (_ compiler) - (case (|> compiler (get@ #.modules) (plist.value name)) + (case (|> compiler (value@ #.modules) (plist.value name)) (#.Some module) (case (body module) (#try.Success [module' output]) - (#try.Success [(update@ #.modules (plist.has name module') compiler) + (#try.Success [(revised@ #.modules (plist.has name module') compiler) output]) (#try.Failure error) @@ -56,9 +56,9 @@ (plist.has definition_name definition))]] (..with_module module_name (function (_ module) - (case (|> module (get@ #.definitions) (plist.value definition_name)) + (case (|> module (value@ #.definitions) (plist.value definition_name)) #.None - (#try.Success [(update@ #.definitions add_macro! module) + (#try.Success [(revised@ #.definitions add_macro! module) []]) (#.Some _) @@ -72,9 +72,9 @@ (plist.lacks definition_name))]] (..with_module module_name (function (_ module) - (case (|> module (get@ #.definitions) (plist.value definition_name)) + (case (|> module (value@ #.definitions) (plist.value definition_name)) (#.Some _) - (#try.Success [(update@ #.definitions lacks_macro! module) + (#try.Success [(revised@ #.definitions lacks_macro! module) []]) #.None @@ -88,7 +88,7 @@ [_ (monad.map ! ..pop_one macros) _ (..pop_one self) compiler meta.compiler_state] - (in (case (get@ #.expected compiler) + (in (case (value@ #.expected compiler) (#.Some _) (list (' [])) diff --git a/stdlib/source/library/lux/macro/syntax/annotations.lux b/stdlib/source/library/lux/macro/syntax/annotations.lux index 1db17d9b5..5e23ea9d8 100644 --- a/stdlib/source/library/lux/macro/syntax/annotations.lux +++ b/stdlib/source/library/lux/macro/syntax/annotations.lux @@ -31,7 +31,7 @@ (def: .public format (-> Annotations Code) - (let [entry (product.apply code.tag function.identity)] + (let [entry (product.then code.tag function.identity)] (|>> (list\map entry) code.record))) diff --git a/stdlib/source/library/lux/macro/syntax/declaration.lux b/stdlib/source/library/lux/macro/syntax/declaration.lux index c85e74822..1a529d3db 100644 --- a/stdlib/source/library/lux/macro/syntax/declaration.lux +++ b/stdlib/source/library/lux/macro/syntax/declaration.lux @@ -39,8 +39,8 @@ (def: .public (format value) (-> Declaration Code) - (let [g!name (code.local_identifier (get@ #name value))] - (case (get@ #arguments value) + (let [g!name (code.local_identifier (value@ #name value))] + (case (value@ #arguments value) #.End g!name diff --git a/stdlib/source/library/lux/macro/syntax/definition.lux b/stdlib/source/library/lux/macro/syntax/definition.lux index 7ebf281d4..14e907870 100644 --- a/stdlib/source/library/lux/macro/syntax/definition.lux +++ b/stdlib/source/library/lux/macro/syntax/definition.lux @@ -66,9 +66,9 @@ (def: dummy Code - (` {#.module (~ (code.text (get@ #.module location.dummy))) - #.line (~ (code.nat (get@ #.line location.dummy))) - #.column (~ (code.nat (get@ #.column location.dummy)))})) + (` {#.module (~ (code.text (value@ #.module location.dummy))) + #.line (~ (code.nat (value@ #.line location.dummy))) + #.column (~ (code.nat (value@ #.column location.dummy)))})) (def: .public (format (^slots [#name #value #anns #export?])) (-> Definition Code) @@ -133,7 +133,7 @@ (-> Lux (Parser Definition)) (do <>.monad [definition (..parser compiler) - _ (case (get@ #value definition) + _ (case (value@ #value definition) (#.Left _) (in []) diff --git a/stdlib/source/library/lux/macro/syntax/input.lux b/stdlib/source/library/lux/macro/syntax/input.lux index 6754185af..77623fbd7 100644 --- a/stdlib/source/library/lux/macro/syntax/input.lux +++ b/stdlib/source/library/lux/macro/syntax/input.lux @@ -26,8 +26,8 @@ (def: .public (format value) (-> Input Code) (code.record - (list [(get@ #binding value) - (get@ #type value)]))) + (list [(value@ #binding value) + (value@ #type value)]))) (def: .public parser {#.doc "Parser for the common typed-argument syntax used by many macros."} diff --git a/stdlib/source/library/lux/macro/template.lux b/stdlib/source/library/lux/macro/template.lux index 8de4f2501..d378f9409 100644 --- a/stdlib/source/library/lux/macro/template.lux +++ b/stdlib/source/library/lux/macro/template.lux @@ -44,7 +44,7 @@ (do {! meta.monad} [g!locals (|> locals (list\map //.identifier) - (monad.seq !))] + (monad.all !))] (in (list (` (.with_expansions [(~+ (|> (list.zipped/2 locals g!locals) (list\map (function (_ [name identifier]) (list (code.local_identifier name) (as_is identifier)))) @@ -196,14 +196,14 @@ [here_name meta.current_module_name expression? (: (Meta Bit) (function (_ lux) - (#try.Success [lux (case (get@ #.expected lux) + (#try.Success [lux (case (value@ #.expected lux) #.None false (#.Some _) true)]))) g!pop (local.push (list\map (function (_ local) - [[here_name (get@ #name local)] + [[here_name (value@ #name local)] (..macro local)]) locals))] (if expression? diff --git a/stdlib/source/library/lux/math.lux b/stdlib/source/library/lux/math.lux index 7f19f1a85..e088df673 100644 --- a/stdlib/source/library/lux/math.lux +++ b/stdlib/source/library/lux/math.lux @@ -331,7 +331,7 @@ n n] (if (n.<= 1 n) acc - (recur (n.* n acc) (dec n))))) + (recur (n.* n acc) (-- n))))) (def: .public (hypotenuse catA catB) (-> Frac Frac Frac) diff --git a/stdlib/source/library/lux/math/number/complex.lux b/stdlib/source/library/lux/math/number/complex.lux index 1615bf633..d26544c0b 100644 --- a/stdlib/source/library/lux/math/number/complex.lux +++ b/stdlib/source/library/lux/math/number/complex.lux @@ -50,23 +50,23 @@ (..complex +0.0 +0.0)) (def: .public (not_a_number? complex) - (or (f.not_a_number? (get@ #real complex)) - (f.not_a_number? (get@ #imaginary complex)))) + (or (f.not_a_number? (value@ #real complex)) + (f.not_a_number? (value@ #imaginary complex)))) (def: .public (= param input) (-> Complex Complex Bit) - (and (f.= (get@ #real param) - (get@ #real input)) - (f.= (get@ #imaginary param) - (get@ #imaginary input)))) + (and (f.= (value@ #real param) + (value@ #real input)) + (f.= (value@ #imaginary param) + (value@ #imaginary input)))) (template [ ] [(def: .public ( param input) (-> Complex Complex Complex) - {#real ( (get@ #real param) - (get@ #real input)) - #imaginary ( (get@ #imaginary param) - (get@ #imaginary input))})] + {#real ( (value@ #real param) + (value@ #real input)) + #imaginary ( (value@ #imaginary param) + (value@ #imaginary input))})] [+ f.+] [- f.-] @@ -80,8 +80,8 @@ (template [ ] [(def: .public (-> Complex Complex) - (|>> (update@ #real ) - (update@ #imaginary )))] + (|>> (revised@ #real ) + (revised@ #imaginary )))] [opposite f.opposite] [signum f.signum] @@ -89,25 +89,25 @@ (def: .public conjugate (-> Complex Complex) - (update@ #imaginary f.opposite)) + (revised@ #imaginary f.opposite)) (def: .public (*' param input) (-> Frac Complex Complex) {#real (f.* param - (get@ #real input)) + (value@ #real input)) #imaginary (f.* param - (get@ #imaginary input))}) + (value@ #imaginary input))}) (def: .public (* param input) (-> Complex Complex Complex) - {#real (f.- (f.* (get@ #imaginary param) - (get@ #imaginary input)) - (f.* (get@ #real param) - (get@ #real input))) - #imaginary (f.+ (f.* (get@ #real param) - (get@ #imaginary input)) - (f.* (get@ #imaginary param) - (get@ #real input)))}) + {#real (f.- (f.* (value@ #imaginary param) + (value@ #imaginary input)) + (f.* (value@ #real param) + (value@ #real input))) + #imaginary (f.+ (f.* (value@ #real param) + (value@ #imaginary input)) + (f.* (value@ #imaginary param) + (value@ #real input)))}) (def: .public (/ param input) (-> Complex Complex Complex) @@ -116,12 +116,12 @@ (f.abs real)) (let [quot (f./ imaginary real) denom (|> real (f.* quot) (f.+ imaginary))] - {#real (|> (get@ #real input) (f.* quot) (f.+ (get@ #imaginary input)) (f./ denom)) - #imaginary (|> (get@ #imaginary input) (f.* quot) (f.- (get@ #real input)) (f./ denom))}) + {#real (|> (value@ #real input) (f.* quot) (f.+ (value@ #imaginary input)) (f./ denom)) + #imaginary (|> (value@ #imaginary input) (f.* quot) (f.- (value@ #real input)) (f./ denom))}) (let [quot (f./ real imaginary) denom (|> imaginary (f.* quot) (f.+ real))] - {#real (|> (get@ #imaginary input) (f.* quot) (f.+ (get@ #real input)) (f./ denom)) - #imaginary (|> (get@ #imaginary input) (f.- (f.* quot (get@ #real input))) (f./ denom))})))) + {#real (|> (value@ #imaginary input) (f.* quot) (f.+ (value@ #real input)) (f./ denom)) + #imaginary (|> (value@ #imaginary input) (f.- (f.* quot (value@ #real input))) (f./ denom))})))) (def: .public (/' param subject) (-> Frac Complex Complex) @@ -133,8 +133,8 @@ (-> Complex Complex Complex) (let [scaled (/ param input) quotient (|> scaled - (update@ #real math.floor) - (update@ #imaginary math.floor))] + (revised@ #real math.floor) + (revised@ #imaginary math.floor))] (- (* quotient param) input))) @@ -311,8 +311,8 @@ (def: .public (approximately? margin_of_error standard value) (-> Frac Complex Complex Bit) (and (f.approximately? margin_of_error - (get@ #..real standard) - (get@ #..real value)) + (value@ #..real standard) + (value@ #..real value)) (f.approximately? margin_of_error - (get@ #..imaginary standard) - (get@ #..imaginary value)))) + (value@ #..imaginary standard) + (value@ #..imaginary value)))) diff --git a/stdlib/source/library/lux/math/number/frac.lux b/stdlib/source/library/lux/math/number/frac.lux index 9e49975f8..1d92184b8 100644 --- a/stdlib/source/library/lux/math/number/frac.lux +++ b/stdlib/source/library/lux/math/number/frac.lux @@ -288,7 +288,7 @@ exponent_bits (|> (if (..< +0.0 min_gap) (|> (..int exponent) (//int.- (..int min_gap)) - dec) + --) (..int exponent)) (//int.+ (.int ..double_bias)) (//i64.and ..exponent_mask)) @@ -302,7 +302,7 @@ (template [ ] [(def: (-> (I64 Any) I64) - (let [mask (|> 1 (//i64.left_shifted ) dec (//i64.left_shifted ))] + (let [mask (|> 1 (//i64.left_shifted ) -- (//i64.left_shifted ))] (|>> (//i64.and mask) (//i64.right_shifted ) .i64)))] [mantissa ..mantissa_size 0] @@ -400,7 +400,7 @@ [whole decimal] (case ("lux text index" 0 "." mantissa) (#.Some split_index) (do ! - [.let [after_offset (inc split_index) + [.let [after_offset (++ split_index) after_length (//nat.- after_offset ("lux text size" mantissa))] decimal (|> mantissa ("lux text clip" after_offset after_length) @@ -410,7 +410,7 @@ #.None (#try.Failure ("lux text concat" representation))) - .let [whole ("lux text clip" 1 (dec ("lux text size" whole)) whole)] + .let [whole ("lux text clip" 1 (-- ("lux text size" whole)) whole)] mantissa (\ decode (case decimal 0 whole _ ("lux text concat" whole (\ encode decimal)))) diff --git a/stdlib/source/library/lux/math/number/i64.lux b/stdlib/source/library/lux/math/number/i64.lux index fd0c5545b..42c08e00a 100644 --- a/stdlib/source/library/lux/math/number/i64.lux +++ b/stdlib/source/library/lux/math/number/i64.lux @@ -48,12 +48,12 @@ (def: .public sign {#.doc (example "A mask for the sign bit of ints.")} Mask - (..bit (dec ..width))) + (..bit (-- ..width))) (def: .public not {#.doc "Bitwise negation."} (All [s] (-> (I64 s) (I64 s))) - (..xor (.i64 (dec 0)))) + (..xor (.i64 (-- 0)))) (def: .public false Mask @@ -70,7 +70,7 @@ 0 ..false bits (case (n.% ..width bits) 0 ..true - bits (|> 1 .i64 (..left_shifted (n.% ..width bits)) .dec)))) + bits (|> 1 .i64 (..left_shifted (n.% ..width bits)) .--)))) (def: (with_shift shift value) (-> Nat Nat Nat) @@ -161,7 +161,7 @@ (loop [iterations 1 output char] (if (n.< times iterations) - (recur (inc iterations) + (recur (++ iterations) ("lux text concat" char output)) output)))) pattern (repetitions (n./ (n.+ size size) ..width) @@ -206,8 +206,8 @@ (if (.and (n.> 0 width) (n.< ..width width)) (let [sign_shift (n.- width ..width) - sign (..bit (dec width)) - mantissa (..mask (dec width)) + sign (..bit (-- width)) + mantissa (..mask (-- width)) co_mantissa (..xor (.i64 -1) mantissa)] (#.Some (: Sub (implementation diff --git a/stdlib/source/library/lux/math/number/int.lux b/stdlib/source/library/lux/math/number/int.lux index 88ba6bba1..d5546a4a5 100644 --- a/stdlib/source/library/lux/math/number/int.lux +++ b/stdlib/source/library/lux/math/number/int.lux @@ -186,8 +186,8 @@ (Enum Int) (def: &order ..order) - (def: succ inc) - (def: pred dec)) + (def: succ ++) + (def: pred --)) ... TODO: Find out why the numeric literals fail during JS compilation. (implementation: .public interval @@ -198,7 +198,7 @@ ... +9,223,372,036,854,775,807 (let [half (//i64.left_shifted 62 +1)] (+ half - (dec half)))) + (-- half)))) (def: bottom ... -9,223,372,036,854,775,808 (//i64.left_shifted 63 +1))) @@ -225,7 +225,7 @@ (def: (encode value) (if (..< +0 value) - (|> value inc ..opposite .nat inc (\ encode) ("lux text concat" ..-sign)) + (|> value ++ ..opposite .nat ++ (\ encode) ("lux text concat" ..-sign)) (|> value .nat (\ encode) ("lux text concat" ..+sign)))) (def: (decode repr) @@ -234,15 +234,15 @@ (case ("lux text clip" 0 1 repr) (^ (static ..+sign)) (|> repr - ("lux text clip" 1 (dec input_size)) + ("lux text clip" 1 (-- input_size)) (\ decode) (\ try.functor map .int)) (^ (static ..-sign)) (|> repr - ("lux text clip" 1 (dec input_size)) + ("lux text clip" 1 (-- input_size)) (\ decode) - (\ try.functor map (|>> dec .int ..opposite dec))) + (\ try.functor map (|>> -- .int ..opposite --))) _ (#try.Failure )) diff --git a/stdlib/source/library/lux/math/number/nat.lux b/stdlib/source/library/lux/math/number/nat.lux index bd6ff389c..c72289e0d 100644 --- a/stdlib/source/library/lux/math/number/nat.lux +++ b/stdlib/source/library/lux/math/number/nat.lux @@ -170,14 +170,14 @@ (Enum Nat) (def: &order ..order) - (def: succ inc) - (def: pred dec)) + (def: succ ++) + (def: pred --)) (implementation: .public interval (Interval Nat) (def: &enum ..enum) - (def: top (dec 0)) + (def: top (-- 0)) (def: bottom 0)) (template [ ] @@ -303,7 +303,7 @@ (Codec Text Nat) (def: encode - (let [mask (|> 1 ("lux i64 left-shift" ) dec)] + (let [mask (|> 1 ("lux i64 left-shift" ) --)] (function (_ value) (loop [input value output ""] @@ -325,7 +325,7 @@ (if (..< input_size idx) (case ( ("lux text char" idx repr)) (#.Some digit_value) - (recur (inc idx) + (recur (++ idx) (|> output ("lux i64 left-shift" ) ("lux i64 or" digit_value))) @@ -367,7 +367,7 @@ (#.Some digit_value) - (recur (inc idx) + (recur (++ idx) (|> output (..* 10) (..+ digit_value)))) (#try.Success output))) ))))) diff --git a/stdlib/source/library/lux/math/number/ratio.lux b/stdlib/source/library/lux/math/number/ratio.lux index cfb3eca00..5d5962b47 100644 --- a/stdlib/source/library/lux/math/number/ratio.lux +++ b/stdlib/source/library/lux/math/number/ratio.lux @@ -30,8 +30,8 @@ (def: .public (nat value) (-> Ratio (Maybe Nat)) - (case (get@ #denominator value) - 1 (#.Some (get@ #numerator value)) + (case (value@ #denominator value) + 1 (#.Some (value@ #numerator value)) _ #.None)) (def: (normal (^slots [#numerator #denominator])) @@ -51,10 +51,10 @@ (def: .public (= parameter subject) (-> Ratio Ratio Bit) - (and (n.= (get@ #numerator parameter) - (get@ #numerator subject)) - (n.= (get@ #denominator parameter) - (get@ #denominator subject)))) + (and (n.= (value@ #numerator parameter) + (value@ #numerator subject)) + (n.= (value@ #denominator parameter) + (value@ #denominator subject)))) (implementation: .public equivalence (Equivalence Ratio) @@ -63,10 +63,10 @@ (def: (equalized parameter subject) (-> Ratio Ratio [Nat Nat]) - [(n.* (get@ #denominator subject) - (get@ #numerator parameter)) - (n.* (get@ #denominator parameter) - (get@ #numerator subject))]) + [(n.* (value@ #denominator subject) + (value@ #numerator parameter)) + (n.* (value@ #denominator parameter) + (value@ #numerator subject))]) (def: .public (< parameter subject) (-> Ratio Ratio Bit) @@ -97,22 +97,22 @@ (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject)] (normal [(n.+ parameter' subject') - (n.* (get@ #denominator parameter) - (get@ #denominator subject))]))) + (n.* (value@ #denominator parameter) + (value@ #denominator subject))]))) (def: .public (- parameter subject) (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject)] (normal [(n.- parameter' subject') - (n.* (get@ #denominator parameter) - (get@ #denominator subject))]))) + (n.* (value@ #denominator parameter) + (value@ #denominator subject))]))) (def: .public (* parameter subject) (-> Ratio Ratio Ratio) - (normal [(n.* (get@ #numerator parameter) - (get@ #numerator subject)) - (n.* (get@ #denominator parameter) - (get@ #denominator subject))])) + (normal [(n.* (value@ #numerator parameter) + (value@ #numerator subject)) + (n.* (value@ #denominator parameter) + (value@ #denominator subject))])) (def: .public (/ parameter subject) (-> Ratio Ratio Ratio) @@ -123,7 +123,7 @@ (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject) quot (n./ parameter' subject')] - (..- (update@ #numerator (n.* quot) parameter) + (..- (revised@ #numerator (n.* quot) parameter) subject))) (def: .public (reciprocal (^slots [#numerator #denominator])) diff --git a/stdlib/source/library/lux/math/number/rev.lux b/stdlib/source/library/lux/math/number/rev.lux index 4eea3ecf7..3fc60202c 100644 --- a/stdlib/source/library/lux/math/number/rev.lux +++ b/stdlib/source/library/lux/math/number/rev.lux @@ -119,7 +119,7 @@ ("lux i64 +" top)))) (def: even_one (//i64.right_rotated 1 1)) -(def: odd_one (dec 0)) +(def: odd_one (-- 0)) (def: (even_reciprocal numerator) (-> Nat Nat) @@ -205,8 +205,8 @@ (Enum Rev) (def: &order ..order) - (def: succ inc) - (def: pred dec)) + (def: succ ++) + (def: pred --)) (implementation: .public interval (Interval Rev) @@ -229,7 +229,7 @@ (def: (decimals input) (-> Text Text) - ("lux text clip" 1 (dec ("lux text size" input)) input)) + ("lux text clip" 1 (-- ("lux text size" input)) input)) (template [ ] [(with_expansions [ (as_is (#try.Failure ("lux text concat" repr)))] @@ -248,7 +248,7 @@ output (: Text "")] (if (//nat.= 0 zeroes_left) output - (recur (dec zeroes_left) + (recur (-- zeroes_left) ("lux text concat" "0" output)))))] (|> raw_output ("lux text concat" zero_padding) @@ -311,7 +311,7 @@ (let [raw (|> (..digit idx output) (//nat.* 5) (//nat.+ carry))] - (recur (dec idx) + (recur (-- idx) (//nat./ 10 raw) (digits\put! idx (//nat.% 10 raw) output))) output))) @@ -322,21 +322,21 @@ output (|> (..digits []) (digits\put! power 1))] (if (//int.>= +0 (.int times)) - (recur (dec times) + (recur (-- times) (digits\times_5! power output)) output))) (def: (format digits) (-> Digits Text) - (loop [idx (dec //i64.width) + (loop [idx (-- //i64.width) all_zeroes? true output ""] (if (//int.>= +0 (.int idx)) (let [digit (..digit idx digits)] (if (and (//nat.= 0 digit) all_zeroes?) - (recur (dec idx) true output) - (recur (dec idx) + (recur (-- idx) true output) + (recur (-- idx) false ("lux text concat" (\ //nat.decimal encode digit) @@ -347,7 +347,7 @@ (def: (digits\+! param subject) (-> Digits Digits Digits) - (loop [idx (dec //i64.width) + (loop [idx (-- //i64.width) carry 0 output (..digits [])] (if (//int.>= +0 (.int idx)) @@ -355,7 +355,7 @@ carry (..digit idx param) (..digit idx subject))] - (recur (dec idx) + (recur (-- idx) (//nat./ 10 raw) (digits\put! idx (//nat.% 10 raw) output))) output))) @@ -372,7 +372,7 @@ #.None (#.Some digit) - (recur (inc idx) + (recur (++ idx) (digits\put! idx digit output))) (#.Some output))) #.None))) @@ -384,7 +384,7 @@ (let [pd (..digit idx param) sd (..digit idx subject)] (if (//nat.= pd sd) - (recur (inc idx)) + (recur (++ idx)) (//nat.< pd sd)))))) (def: (digits\-!' idx param subject) @@ -397,14 +397,14 @@ (//nat.- param))] (|> subject (digits\put! idx diff) - (digits\-!' (dec idx) 1)))))) + (digits\-!' (-- idx) 1)))))) (def: (digits\-! param subject) (-> Digits Digits Digits) - (loop [idx (dec //i64.width) + (loop [idx (-- //i64.width) output subject] (if (//int.>= +0 (.int idx)) - (recur (dec idx) + (recur (-- idx) (digits\-!' idx (..digit idx param) output)) output))) @@ -417,16 +417,16 @@ ".0" input - (let [last_idx (dec //i64.width)] + (let [last_idx (-- //i64.width)] (loop [idx last_idx digits (..digits [])] (if (//int.>= +0 (.int idx)) (if (//i64.one? idx input) (let [digits' (digits\+! (power_digits (//nat.- idx last_idx)) digits)] - (recur (dec idx) + (recur (-- idx) digits')) - (recur (dec idx) + (recur (-- idx) digits)) ("lux text concat" "." (..format digits)) ))))) @@ -438,7 +438,7 @@ _ false) - within_limits? (//nat.<= (inc //i64.width) + within_limits? (//nat.<= (++ //i64.width) ("lux text size" input))] (if (and dotted? within_limits?) (case (|> input ..decimals ..text_digits) @@ -450,10 +450,10 @@ (let [power (power_digits idx)] (if (digits\< power digits) ... Skip power - (recur digits (inc idx) output) + (recur digits (++ idx) output) (recur (digits\-! power digits) - (inc idx) - (//i64.one (//nat.- idx (dec //i64.width)) output)))) + (++ idx) + (//i64.one (//nat.- idx (-- //i64.width)) output)))) (#try.Success (.rev output)))) #.None diff --git a/stdlib/source/library/lux/math/random.lux b/stdlib/source/library/lux/math/random.lux index bb66000be..6b61b5159 100644 --- a/stdlib/source/library/lux/math/random.lux +++ b/stdlib/source/library/lux/math/random.lux @@ -145,7 +145,7 @@ {#.doc (example "A number in the interval [0.0,1.0].")} (Random Frac) (let [mantissa_range (.int (i64.left_shifted 53 1)) - mantissa_max (i.frac (dec mantissa_range))] + mantissa_max (i.frac (-- mantissa_range))] (\ ..monad map (|>> (i.% mantissa_range) i.frac @@ -169,7 +169,7 @@ (\ ..monad in "") (do ..monad [x char_gen - xs (text char_gen (dec size))] + xs (text char_gen (-- size))] (in (text\compose (text.of_char x) xs))))) (template [ ] @@ -251,12 +251,12 @@ (if (n.> 0 size) (do ..monad [x value_gen - xs ( (dec size) value_gen)] + xs ( (-- size) value_gen)] (in ( x xs))) (\ ..monad in )))] [list List (.list) #.Item] - [row Row row.empty row.add] + [row Row row.empty row.suffix] ) (template [ ] @@ -275,7 +275,7 @@ (All [a] (-> (Hash a) Nat (Random a) (Random (Set a)))) (if (n.> 0 size) (do {! ..monad} - [xs (set hash (dec size) value_gen)] + [xs (set hash (-- size) value_gen)] (loop [_ []] (do ! [x value_gen @@ -289,7 +289,7 @@ (All [k v] (-> (Hash k) Nat (Random k) (Random v) (Random (Dictionary k v)))) (if (n.> 0 size) (do {! ..monad} - [kv (dictionary hash (dec size) key_gen value_gen)] + [kv (dictionary hash (-- size) key_gen value_gen)] (loop [_ []] (do ! [k key_gen diff --git a/stdlib/source/library/lux/meta.lux b/stdlib/source/library/lux/meta.lux index b415adb91..7b6e893d3 100644 --- a/stdlib/source/library/lux/meta.lux +++ b/stdlib/source/library/lux/meta.lux @@ -118,13 +118,13 @@ (All [a] (-> Text (Meta a))) (function (_ state) - (#try.Failure (location.with (get@ #.location state) error)))) + (#try.Failure (location.with (value@ #.location state) error)))) (def: .public (module name) {#.doc (example "Looks-up a module with the given name.")} (-> Text (Meta Module)) (function (_ lux) - (case (plist.value name (get@ #.modules lux)) + (case (plist.value name (value@ #.modules lux)) (#.Some module) (#try.Success [lux module]) @@ -135,7 +135,7 @@ {#.doc (example "The name of the module currently being compiled, if any.")} (Meta Text) (function (_ lux) - (case (get@ #.current_module lux) + (case (value@ #.current_module lux) (#.Some current_module) (#try.Success [lux current_module]) @@ -179,7 +179,7 @@ [$module (plist.value module modules) definition (: (Maybe Global) (|> (: Module $module) - (get@ #.definitions) + (value@ #.definitions) (plist.value name)))] (case definition (#.Alias [r_module r_name]) @@ -202,7 +202,7 @@ #.None (#try.Success [_ this_module]) - (macro' (get@ #.modules lux) this_module module name))] + (macro' (value@ #.modules lux) this_module module name))] (#try.Success [lux macro])))))) (def: .public seed @@ -211,13 +211,13 @@ "This number can be used for generating data 'randomly' during compilation.")} (Meta Nat) (function (_ lux) - (#try.Success [(update@ #.seed inc lux) - (get@ #.seed lux)]))) + (#try.Success [(revised@ #.seed ++ lux) + (value@ #.seed lux)]))) (def: .public (module_exists? module) (-> Text (Meta Bit)) (function (_ lux) - (#try.Success [lux (case (plist.value module (get@ #.modules lux)) + (#try.Success [lux (case (plist.value module (value@ #.modules lux)) (#.Some _) #1 @@ -248,7 +248,7 @@ (#.Var var) (function (_ lux) (case (|> lux - (get@ [#.type_context #.var_bindings]) + (value@ [#.type_context #.var_bindings]) (type_variable var)) (^or #.None (#.Some (#.Var _))) (#try.Success [lux type]) @@ -268,15 +268,15 @@ (case (do maybe.monad [scope (list.example (function (_ env) (or (list.any? test (: (List [Text [Type Any]]) - (get@ [#.locals #.mappings] env))) + (value@ [#.locals #.mappings] env))) (list.any? test (: (List [Text [Type Any]]) - (get@ [#.captured #.mappings] env))))) - (get@ #.scopes lux)) + (value@ [#.captured #.mappings] env))))) + (value@ #.scopes lux)) [_ [type _]] (on_either (list.example test) (: (List [Text [Type Any]]) - (get@ [#.locals #.mappings] scope)) + (value@ [#.locals #.mappings] scope)) (: (List [Text [Type Any]]) - (get@ [#.captured #.mappings] scope)))] + (value@ [#.captured #.mappings] scope)))] (in type)) (#.Some var_type) ((clean_type var_type) lux) @@ -310,28 +310,28 @@ (case (: (Maybe Global) (do maybe.monad [(^slots [#.definitions]) (|> lux - (get@ #.modules) + (value@ #.modules) (plist.value normal_module))] (plist.value normal_short definitions))) (#.Some definition) (#try.Success [lux definition]) _ - (let [current_module (|> lux (get@ #.current_module) (maybe.else "???")) + (let [current_module (|> lux (value@ #.current_module) (maybe.else "???")) all_known_modules (|> lux - (get@ #.modules) + (value@ #.modules) (list\map product.left) ..module_listing)] (#try.Failure ($_ text\compose "Unknown definition: " (name\encode name) text.new_line " Current module: " current_module text.new_line - (case (plist.value current_module (get@ #.modules lux)) + (case (plist.value current_module (value@ #.modules lux)) (#.Some this_module) (let [candidates (|> lux - (get@ #.modules) + (value@ #.modules) (list\map (function (_ [module_name module]) (|> module - (get@ #.definitions) + (value@ #.definitions) (list.all (function (_ [def_name global]) (case global (#.Definition [exported? _ _ _]) @@ -342,14 +342,14 @@ (#.Alias _) #.None)))))) - list.joined + list.together (list.sorted text\<) (text.interposed ..listing_separator)) imports (|> this_module - (get@ #.imports) + (value@ #.imports) ..module_listing) aliases (|> this_module - (get@ #.module_aliases) + (value@ #.module_aliases) (list\map (function (_ [alias real]) ($_ text\compose alias " => " real))) (list.sorted text\<) (text.interposed ..listing_separator))] @@ -425,12 +425,12 @@ {#.doc "The entire list of globals in a module (including the non-exported/private ones)."} (-> Text (Meta (List [Text Global]))) (function (_ lux) - (case (plist.value module (get@ #.modules lux)) + (case (plist.value module (value@ #.modules lux)) #.None (#try.Failure ($_ text\compose "Unknown module: " module)) (#.Some module) - (#try.Success [lux (get@ #.definitions module)])))) + (#try.Success [lux (value@ #.definitions module)])))) (def: .public (definitions module) {#.doc "The entire list of definitions in a module (including the non-exported/private ones)."} @@ -461,7 +461,7 @@ (Meta (List [Text Module])) (function (_ lux) (|> lux - (get@ #.modules) + (value@ #.modules) [lux] #try.Success))) @@ -471,7 +471,7 @@ (do ..monad [.let [[module name] type_name] module (..module module)] - (case (plist.value name (get@ #.types module)) + (case (plist.value name (value@ #.types module)) (#.Some [tags _]) (in (#.Some tags)) @@ -482,13 +482,13 @@ {#.doc "The location of the current expression being analyzed."} (Meta Location) (function (_ lux) - (#try.Success [lux (get@ #.location lux)]))) + (#try.Success [lux (value@ #.location lux)]))) (def: .public expected_type {#.doc "The expected type of the current expression being analyzed."} (Meta Type) (function (_ lux) - (case (get@ #.expected lux) + (case (value@ #.expected lux) (#.Some type) (#try.Success [lux type]) @@ -512,7 +512,7 @@ {#.doc (example "Checks if the given module has been imported by the current module.")} (-> Text (Meta Bit)) (\ ..functor map - (|>> (get@ #.imports) (list.any? (text\= import))) + (|>> (value@ #.imports) (list.any? (text\= import))) ..current_module)) (def: .public (tag tag_name) @@ -523,7 +523,7 @@ =module (..module module) this_module_name ..current_module_name imported! (..imported? module)] - (case (plist.value name (get@ #.tags =module)) + (case (plist.value name (value@ #.tags =module)) (#.Some [idx tag_list exported? type]) (if (or (text\= this_module_name module) (and imported! exported?)) @@ -534,9 +534,9 @@ (..failure ($_ text\compose "Unknown tag: " (name\encode tag_name) text.new_line " Known tags: " (|> =module - (get@ #.tags) + (value@ #.tags) (list\map (|>> product.left [module] name\encode (text.prefix text.new_line))) - text.joined) + text.together) ))))) (def: .public (tag_lists module) @@ -545,7 +545,7 @@ (do ..monad [=module (..module module) this_module_name ..current_module_name] - (in (|> (get@ #.types =module) + (in (|> (value@ #.types =module) (list.only (function (_ [type_name [tag_list exported? type]]) (or exported? (text\= this_module_name module)))) @@ -556,13 +556,13 @@ {#.doc "All the local variables currently in scope, separated in different scopes."} (Meta (List (List [Text Type]))) (function (_ lux) - (case (list.inits (get@ #.scopes lux)) + (case (list.inits (value@ #.scopes lux)) #.None (#try.Failure "No local environment") (#.Some scopes) (#try.Success [lux - (list\map (|>> (get@ [#.locals #.mappings]) + (list\map (|>> (value@ [#.locals #.mappings]) (list\map (function (_ [name [type _]]) [name type]))) scopes)])))) @@ -589,7 +589,7 @@ {#.doc (example "The current type-checking context.")} (Meta Type_Context) (function (_ lux) - (#try.Success [lux (get@ #.type_context lux)]))) + (#try.Success [lux (value@ #.type_context lux)]))) (def: .public (lifted result) (All [a] (-> (Try a) (Meta a))) diff --git a/stdlib/source/library/lux/meta/location.lux b/stdlib/source/library/lux/meta/location.lux index 0c089da36..24511eb26 100644 --- a/stdlib/source/library/lux/meta/location.lux +++ b/stdlib/source/library/lux/meta/location.lux @@ -8,9 +8,9 @@ (Equivalence Location) (def: (= reference subject) - (and ("lux text =" (get@ #.module reference) (get@ #.module subject)) - ("lux i64 =" (get@ #.line reference) (get@ #.line subject)) - ("lux i64 =" (get@ #.column reference) (get@ #.column subject))))) + (and ("lux text =" (value@ #.module reference) (value@ #.module subject)) + ("lux i64 =" (value@ #.line reference) (value@ #.line subject)) + ("lux i64 =" (value@ #.column reference) (value@ #.column subject))))) (def: .public dummy Location @@ -23,12 +23,12 @@ (here))} (case tokens #.End - (let [location (get@ #.location compiler)] + (let [location (value@ #.location compiler)] (#.Right [compiler (list (` (.: .Location - [(~ [..dummy (#.Text (get@ #.module location))]) - (~ [..dummy (#.Nat (get@ #.line location))]) - (~ [..dummy (#.Nat (get@ #.column location))])])))])) + [(~ [..dummy (#.Text (value@ #.module location))]) + (~ [..dummy (#.Nat (value@ #.line location))]) + (~ [..dummy (#.Nat (value@ #.column location))])])))])) _ (#.Left (`` (("lux in-module" (~~ (static .prelude_module)) wrong_syntax_error) (name_of ..here)))))) diff --git a/stdlib/source/library/lux/target/js.lux b/stdlib/source/library/lux/target/js.lux index 95c49a200..191b5520a 100644 --- a/stdlib/source/library/lux/target/js.lux +++ b/stdlib/source/library/lux/target/js.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- Location Code or and function if cond undefined for comment not int try) + [lux (#- Location Code or and function if cond undefined for comment not int try ++ --) [control [pipe (#+ case>)]] [data diff --git a/stdlib/source/library/lux/target/jvm/attribute/code.lux b/stdlib/source/library/lux/target/jvm/attribute/code.lux index 1c1cb95a9..81f487d2d 100644 --- a/stdlib/source/library/lux/target/jvm/attribute/code.lux +++ b/stdlib/source/library/lux/target/jvm/attribute/code.lux @@ -37,19 +37,19 @@ ... u4 code_length; ///unsigned.bytes/4 ... u1 code[code_length]; - (binary.size (get@ #code code)) + (binary.size (value@ #code code)) ... u2 exception_table_length; ///unsigned.bytes/2 ... exception_table[exception_table_length]; (|> code - (get@ #exception_table) + (value@ #exception_table) row.size (n.* /exception.length)) ... u2 attributes_count; ///unsigned.bytes/2 ... attribute_info attributes[attributes_count]; (|> code - (get@ #attributes) + (value@ #attributes) (row\map length) (row\fold n.+ 0)))) @@ -69,14 +69,14 @@ ($_ binaryF\compose ... u2 max_stack; ... u2 max_locals; - (///limit.writer (get@ #limit code)) + (///limit.writer (value@ #limit code)) ... u4 code_length; ... u1 code[code_length]; - (binaryF.binary/32 (get@ #code code)) + (binaryF.binary/32 (value@ #code code)) ... u2 exception_table_length; ... exception_table[exception_table_length]; - ((binaryF.row/16 /exception.writer) (get@ #exception_table code)) + ((binaryF.row/16 /exception.writer) (value@ #exception_table code)) ... u2 attributes_count; ... attribute_info attributes[attributes_count]; - ((binaryF.row/16 writer) (get@ #attributes code)) + ((binaryF.row/16 writer) (value@ #attributes code)) )) diff --git a/stdlib/source/library/lux/target/jvm/bytecode.lux b/stdlib/source/library/lux/target/jvm/bytecode.lux index 87b0a75c5..a97f4a1c2 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode.lux @@ -105,9 +105,9 @@ (function (_ [pool environment tracker]) (#try.Success [[pool environment - (update@ #next inc tracker)] + (revised@ #next ++ tracker)] [..relative_identity - (get@ #next tracker)]]))) + (value@ #next tracker)]]))) (exception: .public (label_has_already_been_set {label Label}) (exception.report @@ -127,16 +127,16 @@ (with_expansions [ (as_is (in [[pool environment - (update@ #known - (dictionary.has label [actual (#.Some @here)]) - tracker)] + (revised@ #known + (dictionary.has label [actual (#.Some @here)]) + tracker)] [..relative_identity []]]))] (def: .public (set_label label) (-> Label (Bytecode Any)) (function (_ [pool environment tracker]) - (let [@here (get@ #program_counter tracker)] - (case (dictionary.value label (get@ #known tracker)) + (let [@here (value@ #program_counter tracker)] + (case (dictionary.value label (value@ #known tracker)) (#.Some [expected (#.Some address)]) (exception.except ..label_has_already_been_set [label]) @@ -148,7 +148,7 @@ #.None (do try.monad [[actual environment] (/environment.continue (|> environment - (get@ #/environment.stack) + (value@ #/environment.stack) (maybe.else /stack.empty)) environment)] )))))) @@ -175,7 +175,7 @@ (function (_ pool) (do try.monad [[[pool environment tracker] [relative output]] (bytecode [pool environment ..fresh]) - [exceptions instruction] (relative (get@ #known tracker))] + [exceptions instruction] (relative (value@ #known tracker))] (in [pool [environment exceptions instruction output]])))) (def: (step estimator counter) @@ -188,12 +188,12 @@ (do {! try.monad} [environment' (|> environment (/environment.consumes consumption) - (monad.bind ! (/environment.produces production)) - (monad.bind ! (/environment.has registry))) - program_counter' (step estimator (get@ #program_counter tracker))] + (monad.then ! (/environment.produces production)) + (monad.then ! (/environment.has registry))) + program_counter' (step estimator (value@ #program_counter tracker))] (in [[pool environment' - (set@ #program_counter program_counter' tracker)] + (with@ #program_counter program_counter' tracker)] [(function.constant (in [..no_exceptions (bytecode input)])) []]])))) @@ -721,19 +721,19 @@ (def: (acknowledge_label stack label tracker) (-> Stack Label Tracker Tracker) - (case (dictionary.value label (get@ #known tracker)) + (case (dictionary.value label (value@ #known tracker)) (#.Some _) tracker #.None - (update@ #known (dictionary.has label [stack #.None]) tracker))) + (revised@ #known (dictionary.has label [stack #.None]) tracker))) (template [ ] [(def: .public ( label) (-> Label (Bytecode Any)) (let [[estimator bytecode] ] (function (_ [pool environment tracker]) - (let [@here (get@ #program_counter tracker)] + (let [@here (value@ #program_counter tracker)] (do try.monad [environment' (|> environment (/environment.consumes )) @@ -744,7 +744,7 @@ environment' (|> tracker (..acknowledge_label actual label) - (set@ #program_counter program_counter'))] + (with@ #program_counter program_counter'))] [(function (_ resolver) (do try.monad [[expected @to] (..resolve_label label resolver) @@ -787,14 +787,14 @@ (function (_ [pool environment tracker]) (do try.monad [actual (/environment.stack environment) - .let [@here (get@ #program_counter tracker)] + .let [@here (value@ #program_counter tracker)] program_counter' (step estimator @here)] (in (let [@from @here] [[pool (/environment.discontinue environment) (|> tracker (..acknowledge_label actual label) - (set@ #program_counter program_counter'))] + (with@ #program_counter program_counter'))] [(function (_ resolver) (case (dictionary.value label resolver) (#.Some [expected (#.Some @to)]) @@ -843,22 +843,22 @@ [environment' (|> environment (/environment.consumes $1)) actual (/environment.stack environment') - program_counter' (step (estimator (list.size afterwards)) (get@ #program_counter tracker))] - (in (let [@from (get@ #program_counter tracker)] + program_counter' (step (estimator (list.size afterwards)) (value@ #program_counter tracker))] + (in (let [@from (value@ #program_counter tracker)] [[pool environment' (|> (list\fold (..acknowledge_label actual) tracker (list& default at_minimum afterwards)) - (set@ #program_counter program_counter'))] + (with@ #program_counter program_counter'))] [(function (_ resolver) (let [get (: (-> Label (Maybe [Stack (Maybe Address)])) (function (_ label) (dictionary.value label resolver)))] (case (do {! maybe.monad} - [@default (|> default get (monad.bind ! product.right)) - @at_minimum (|> at_minimum get (monad.bind ! product.right)) + [@default (|> default get (monad.then ! product.right)) + @at_minimum (|> at_minimum get (monad.then ! product.right)) @afterwards (|> afterwards (monad.map ! get) - (monad.bind ! (monad.map ! product.right)))] + (monad.then ! (monad.map ! product.right)))] (in [@default @at_minimum @afterwards])) (#.Some [@default @at_minimum @afterwards]) (do {! try.monad} @@ -886,21 +886,21 @@ [environment' (|> environment (/environment.consumes $1)) actual (/environment.stack environment') - program_counter' (step (estimator (list.size cases)) (get@ #program_counter tracker))] - (in (let [@from (get@ #program_counter tracker)] + program_counter' (step (estimator (list.size cases)) (value@ #program_counter tracker))] + (in (let [@from (value@ #program_counter tracker)] [[pool environment' (|> (list\fold (..acknowledge_label actual) tracker (list& default (list\map product.right cases))) - (set@ #program_counter program_counter'))] + (with@ #program_counter program_counter'))] [(function (_ resolver) (let [get (: (-> Label (Maybe [Stack (Maybe Address)])) (function (_ label) (dictionary.value label resolver)))] (case (do {! maybe.monad} - [@default (|> default get (monad.bind ! product.right)) + [@default (|> default get (monad.then ! product.right)) @cases (|> cases (monad.map ! (|>> product.right get)) - (monad.bind ! (monad.map ! product.right)))] + (monad.then ! (monad.map ! product.right)))] (in [@default @cases])) (#.Some [@default @cases]) (do {! try.monad} diff --git a/stdlib/source/library/lux/target/jvm/bytecode/environment.lux b/stdlib/source/library/lux/target/jvm/bytecode/environment.lux index 6a09af8fd..54c754dc5 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/environment.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/environment.lux @@ -51,7 +51,7 @@ (def: .public (stack environment) (-> Environment (Try Stack)) - (case (get@ #..stack environment) + (case (value@ #..stack environment) (#.Some stack) (#try.Success stack) @@ -60,7 +60,7 @@ (def: .public discontinue (-> Environment Environment) - (set@ #..stack #.None)) + (with@ #..stack #.None)) (exception: .public (mismatched_stacks {expected Stack} {actual Stack}) @@ -70,14 +70,14 @@ (def: .public (continue expected environment) (-> Stack Environment (Try [Stack Environment])) - (case (get@ #..stack environment) + (case (value@ #..stack environment) (#.Some actual) (if (\ /stack.equivalence = expected actual) (#try.Success [actual environment]) (exception.except ..mismatched_stacks [expected actual])) #.None - (#try.Success [expected (set@ #..stack (#.Some expected) environment)]))) + (#try.Success [expected (with@ #..stack (#.Some expected) environment)]))) (def: .public (consumes amount) (-> U2 Condition) @@ -87,7 +87,7 @@ (do try.monad [previous (..stack environment) current (/stack.pop amount previous)] - (in (set@ #..stack (#.Some current) environment))))) + (in (with@ #..stack (#.Some current) environment))))) (def: .public (produces amount) (-> U2 Condition) @@ -96,13 +96,13 @@ [previous (..stack environment) current (/stack.push amount previous) .let [limit (|> environment - (get@ [#..limit #/limit.stack]) + (value@ [#..limit #/limit.stack]) (/stack.max current))]] (in (|> environment - (set@ #..stack (#.Some current)) - (set@ [#..limit #/limit.stack] limit)))))) + (with@ #..stack (#.Some current)) + (with@ [#..limit #/limit.stack] limit)))))) (def: .public (has registry) (-> Registry Condition) - (|>> (update@ [#..limit #/limit.registry] (/registry.has registry)) + (|>> (revised@ [#..limit #/limit.registry] (/registry.has registry)) #try.Success)) diff --git a/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux b/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux index 48bdffd82..d57c07354 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux @@ -53,6 +53,6 @@ (def: .public (writer limit) (Writer Limit) ($_ format\compose - (/stack.writer (get@ #stack limit)) - (/registry.writer (get@ #registry limit)) + (/stack.writer (value@ #stack limit)) + (/registry.writer (value@ #registry limit)) )) diff --git a/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux b/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux index 7f8638dca..2e21d2a8e 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux @@ -54,7 +54,7 @@ (def: .public result (-> Instruction Specification) - (function.apply format.no_op)) + (function.on format.no_op)) (type: Opcode Nat) @@ -596,7 +596,7 @@ (///unsigned.value ..integer_size) (///unsigned.value ..integer_size) (n.* (///unsigned.value ..big_jump_size) - (inc amount_of_afterwards))) + (++ amount_of_afterwards))) ///unsigned.u2 try.trusted)))] [estimator @@ -622,7 +622,7 @@ _ (case padding 3 (do ! [_ (binary.write/8! offset 0 binary)] - (binary.write/16! (inc offset) 0 binary)) + (binary.write/16! (++ offset) 0 binary)) 2 (binary.write/16! offset 0 binary) 1 (binary.write/8! offset 0 binary) _ (in binary)) @@ -684,7 +684,7 @@ _ (case padding 3 (do ! [_ (binary.write/8! offset 0 binary)] - (binary.write/16! (inc offset) 0 binary)) + (binary.write/16! (++ offset) 0 binary)) 2 (binary.write/16! offset 0 binary) 1 (binary.write/8! offset 0 binary) _ (in binary)) diff --git a/stdlib/source/library/lux/target/jvm/class.lux b/stdlib/source/library/lux/target/jvm/class.lux index b4cb88ec4..586cc2394 100644 --- a/stdlib/source/library/lux/target/jvm/class.lux +++ b/stdlib/source/library/lux/target/jvm/class.lux @@ -76,7 +76,7 @@ (monad.fold ! (function (_ interface @interfaces) (do ! [@interface (//constant/pool.class interface)] - (in (row.add @interface @interfaces)))) + (in (row.suffix @interface @interfaces)))) row.empty interfaces))] (in [@this @super @interfaces]))) @@ -95,8 +95,8 @@ (<| (state.result' //constant/pool.empty) (do //constant/pool.monad [classes (install_classes this super interfaces) - =fields (monad.seq //constant/pool.monad fields) - =methods (monad.seq //constant/pool.monad methods)] + =fields (monad.all //constant/pool.monad fields) + =methods (monad.all //constant/pool.monad methods)] (in [classes =fields =methods])))] (in {#magic //magic.code #minor_version //version.default_minor @@ -114,7 +114,7 @@ (Writer Class) (`` ($_ binaryF\compose (~~ (template [ ] - [( (get@ class))] + [( (value@ class))] [//magic.writer #magic] [//version.writer #minor_version] @@ -124,7 +124,7 @@ [//index.writer #this] [//index.writer #super])) (~~ (template [ ] - [((binaryF.row/16 ) (get@ class))] + [((binaryF.row/16 ) (value@ class))] [//index.writer #interfaces] [//field.writer #fields] diff --git a/stdlib/source/library/lux/target/jvm/constant/pool.lux b/stdlib/source/library/lux/target/jvm/constant/pool.lux index 2278889b8..346dd0f9e 100644 --- a/stdlib/source/library/lux/target/jvm/constant/pool.lux +++ b/stdlib/source/library/lux/target/jvm/constant/pool.lux @@ -53,7 +53,7 @@ (template: (!add ) [(function (_ [current pool]) (let [' ] - (with_expansions [ (as_is (recur (.inc idx)))] + (with_expansions [ (as_is (recur (.++ idx)))] (loop [idx 0] (case (row.item idx pool) (#try.Success entry) @@ -77,7 +77,7 @@ (//unsigned.+/2 @new) (\ ! map //index.index)))] (in [[next - (row.add [current new] pool)] + (row.suffix [current new] pool)] current]))))))))]) (template: (!index ) diff --git a/stdlib/source/library/lux/target/jvm/encoding/signed.lux b/stdlib/source/library/lux/target/jvm/encoding/signed.lux index 8fed13354..1c03a5c47 100644 --- a/stdlib/source/library/lux/target/jvm/encoding/signed.lux +++ b/stdlib/source/library/lux/target/jvm/encoding/signed.lux @@ -58,7 +58,7 @@ (def: .public - (|> (n.* i64.bits_per_byte) dec i64.mask :abstraction)) + (|> (n.* i64.bits_per_byte) -- i64.mask :abstraction)) (def: .public (-> Int (Try )) diff --git a/stdlib/source/library/lux/target/jvm/field.lux b/stdlib/source/library/lux/target/jvm/field.lux index a9d783621..b8d84170d 100644 --- a/stdlib/source/library/lux/target/jvm/field.lux +++ b/stdlib/source/library/lux/target/jvm/field.lux @@ -50,7 +50,7 @@ (Writer Field) (`` ($_ binaryF\compose (~~ (template [ ] - [( (get@ field))] + [( (value@ field))] [modifier.writer #modifier] [//index.writer #name] diff --git a/stdlib/source/library/lux/target/jvm/loader.lux b/stdlib/source/library/lux/target/jvm/loader.lux index 549fb8b01..3d644cf5d 100644 --- a/stdlib/source/library/lux/target/jvm/loader.lux +++ b/stdlib/source/library/lux/target/jvm/loader.lux @@ -66,13 +66,13 @@ (def: java/lang/ClassLoader::defineClass java/lang/reflect/Method (let [signature (|> (ffi.array 4) - (ffi.array_write 0 (:as - (ffi.class_for java/lang/String))) - (ffi.array_write 1 (java/lang/Object::getClass (ffi.array byte 0))) - (ffi.array_write 2 (:as - (java/lang/Integer::TYPE))) - (ffi.array_write 3 (:as - (java/lang/Integer::TYPE))))] + (ffi.write! 0 (:as + (ffi.class_for java/lang/String))) + (ffi.write! 1 (java/lang/Object::getClass (ffi.array byte 0))) + (ffi.write! 2 (:as + (java/lang/Integer::TYPE))) + (ffi.write! 3 (:as + (java/lang/Integer::TYPE))))] (do_to (java/lang/Class::getDeclaredMethod "defineClass" signature (ffi.class_for java/lang/ClassLoader)) diff --git a/stdlib/source/library/lux/target/jvm/method.lux b/stdlib/source/library/lux/target/jvm/method.lux index 8c42130d1..e604eb3c2 100644 --- a/stdlib/source/library/lux/target/jvm/method.lux +++ b/stdlib/source/library/lux/target/jvm/method.lux @@ -54,7 +54,7 @@ [@name (//constant/pool.utf8 name) @descriptor (//constant/pool.descriptor (//type.descriptor type)) attributes (|> attributes - (monad.seq !) + (monad.all !) (\ ! map row.of_list)) attributes (case code (#.Some code) @@ -69,11 +69,11 @@ (function (_ _) (#try.Failure error))) [environment exceptions instruction output] (//bytecode.resolve environment code) .let [bytecode (|> instruction //bytecode/instruction.result format.instance)] - @code (//attribute.code {#//attribute/code.limit (get@ #//bytecode/environment.limit environment) + @code (//attribute.code {#//attribute/code.limit (value@ #//bytecode/environment.limit environment) #//attribute/code.code bytecode #//attribute/code.exception_table exceptions #//attribute/code.attributes (row.row)})] - (in (row.add @code attributes))) + (in (row.suffix @code attributes))) #.None (in attributes))] @@ -95,7 +95,7 @@ (Writer Method) (`` ($_ format\compose (~~ (template [ ] - [( (get@ field))] + [( (value@ field))] [//modifier.writer #modifier] [//index.writer #name] diff --git a/stdlib/source/library/lux/target/jvm/reflection.lux b/stdlib/source/library/lux/target/jvm/reflection.lux index f68b6b59d..db554e4fb 100644 --- a/stdlib/source/library/lux/target/jvm/reflection.lux +++ b/stdlib/source/library/lux/target/jvm/reflection.lux @@ -132,7 +132,7 @@ (#try.Success class) (#try.Failure _) - (exception.except ..unknown_class name))) + (exception.except ..unknown_class [name]))) (def: .public (sub? class_loader super sub) (-> java/lang/ClassLoader External External (Try Bit)) @@ -182,10 +182,10 @@ paramsT))) _ - (exception.except ..not_a_class raw))) + (exception.except ..not_a_class [raw]))) _) ... else - (exception.except ..cannot_convert_to_a_lux_type reflection))) + (exception.except ..cannot_convert_to_a_lux_type [reflection]))) (def: .public (parameter reflection) (-> java/lang/reflect/Type (Try (/.Type Parameter))) diff --git a/stdlib/source/library/lux/target/jvm/type/descriptor.lux b/stdlib/source/library/lux/target/jvm/type/descriptor.lux index 9c0f56021..099a68287 100644 --- a/stdlib/source/library/lux/target/jvm/type/descriptor.lux +++ b/stdlib/source/library/lux/target/jvm/type/descriptor.lux @@ -98,7 +98,7 @@ (:abstraction (format (|> inputs (list\map ..descriptor) - text.joined + text.together (text.enclosed ["(" ")"])) (:representation output)))) diff --git a/stdlib/source/library/lux/target/jvm/type/lux.lux b/stdlib/source/library/lux/target/jvm/type/lux.lux index a9021109b..99845fa7e 100644 --- a/stdlib/source/library/lux/target/jvm/type/lux.lux +++ b/stdlib/source/library/lux/target/jvm/type/lux.lux @@ -135,7 +135,7 @@ (<>.before (.this //signature.parameters_end)) (<>.else (list)))] (in (do {! check.monad} - [parameters (monad.seq ! parameters)] + [parameters (monad.all ! parameters)] (in (#.Primitive name parameters))))) (<>.after (.this //descriptor.class_prefix)) (<>.before (.this //descriptor.class_suffix)))) diff --git a/stdlib/source/library/lux/target/jvm/type/signature.lux b/stdlib/source/library/lux/target/jvm/type/signature.lux index 683ba1432..7195c4918 100644 --- a/stdlib/source/library/lux/target/jvm/type/signature.lux +++ b/stdlib/source/library/lux/target/jvm/type/signature.lux @@ -78,8 +78,13 @@ [upper ..upper_prefix] ) - (def: .public parameters_start "<") - (def: .public parameters_end ">") + (template [ ] + [(def: .public + )] + + ["<" parameters_start] + [">" parameters_end] + ) (def: .public (class name parameters) (-> External (List (Signature Parameter)) (Signature Class)) @@ -94,7 +99,7 @@ (format ..parameters_start (|> parameters (list\map ..signature) - text.joined) + text.together) ..parameters_end)) //descriptor.class_suffix))) @@ -130,18 +135,18 @@ (|> type_variables (list\map (|>> ..var_name (text.suffix ..class_bound))) - text.joined + text.together (text.enclosed [..parameters_start ..parameters_end]))) (|> inputs (list\map ..signature) - text.joined + text.together (text.enclosed [..arguments_start ..arguments_end])) (:representation output) (|> exceptions (list\map (|>> :representation (format ..exception_prefix))) - text.joined)))) + text.together)))) (implementation: .public equivalence (All [category] (Equivalence (Signature category))) diff --git a/stdlib/source/library/lux/target/lua.lux b/stdlib/source/library/lux/target/lua.lux index b79db8fc4..b70cf80f0 100644 --- a/stdlib/source/library/lux/target/lua.lux +++ b/stdlib/source/library/lux/target/lua.lux @@ -374,7 +374,7 @@ (syntax: (arity_inputs [arity .nat]) (in (case arity 0 (.list) - _ (|> (dec arity) + _ (|> (-- arity) (enum.range n.enum 0) (list\map (|>> %.nat code.local_identifier)))))) diff --git a/stdlib/source/library/lux/target/php.lux b/stdlib/source/library/lux/target/php.lux index 11aea7808..860c33713 100644 --- a/stdlib/source/library/lux/target/php.lux +++ b/stdlib/source/library/lux/target/php.lux @@ -230,7 +230,7 @@ (syntax: (arity_inputs [arity .nat]) (in (case arity 0 (.list) - _ (|> (dec arity) + _ (|> (-- arity) (enum.range n.enum 0) (list\map (|>> %.nat code.local_identifier)))))) @@ -481,10 +481,10 @@ (def: (catch except) (-> Except Text) - (let [declaration (format (:representation (get@ #class except)) - " " (:representation (get@ #exception except)))] + (let [declaration (format (:representation (value@ #class except)) + " " (:representation (value@ #exception except)))] (format "catch" (..group declaration) " " - (..block (:representation (get@ #handler except)))))) + (..block (:representation (value@ #handler except)))))) (def: .public (try body! excepts) (-> Statement (List Except) Statement) diff --git a/stdlib/source/library/lux/target/python.lux b/stdlib/source/library/lux/target/python.lux index c8a62c58b..06ad85593 100644 --- a/stdlib/source/library/lux/target/python.lux +++ b/stdlib/source/library/lux/target/python.lux @@ -243,7 +243,7 @@ (format (:representation func) (format "(" (|> args (list\map (function (_ arg) (format (:representation arg) ", "))) - text.joined) + text.together) ( extra) ")"))))] [apply_poly splat_poly] @@ -268,7 +268,7 @@ [do_keyword apply_keyword] ) - (def: .public (nth idx array) + (def: .public (item idx array) (-> (Expression Any) (Expression Any) Location) (:abstraction (format (:representation array) "[" (:representation idx) "]"))) @@ -409,7 +409,7 @@ (format text.new_line "except (" (text.interposed ", " (list\map ..code classes)) ") as " (:representation exception) ":" (..nested (:representation catch!))))) - text.joined)))) + text.together)))) (template [
]
     [(def: .public ( value)
@@ -460,7 +460,7 @@
 (syntax: (arity_inputs [arity .nat])
   (in (case arity
         0 (.list)
-        _ (|> (dec arity)
+        _ (|> (-- arity)
               (enum.range n.enum 0)
               (list\map (|>> %.nat code.local_identifier))))))
 
diff --git a/stdlib/source/library/lux/target/r.lux b/stdlib/source/library/lux/target/r.lux
index 15804b77b..d5344a1c9 100644
--- a/stdlib/source/library/lux/target/r.lux
+++ b/stdlib/source/library/lux/target/r.lux
@@ -170,7 +170,7 @@
     (let [func (:representation func)
           spacing (|> " "
                       (list.repeated (text.size func))
-                      text.joined)]
+                      text.together)]
       (:abstraction
        (format func "("
                (|> args
diff --git a/stdlib/source/library/lux/target/ruby.lux b/stdlib/source/library/lux/target/ruby.lux
index 032ebb265..954a91d97 100644
--- a/stdlib/source/library/lux/target/ruby.lux
+++ b/stdlib/source/library/lux/target/ruby.lux
@@ -436,7 +436,7 @@
 (syntax: (arity_inputs [arity .nat])
   (in (case arity
         0 (.list)
-        _ (|> (dec arity)
+        _ (|> (-- arity)
               (enum.range n.enum 0)
               (list\map (|>> %.nat code.local_identifier))))))
 
diff --git a/stdlib/source/library/lux/target/scheme.lux b/stdlib/source/library/lux/target/scheme.lux
index 7e910a91f..4390d9981 100644
--- a/stdlib/source/library/lux/target/scheme.lux
+++ b/stdlib/source/library/lux/target/scheme.lux
@@ -341,7 +341,7 @@
     (-> Var Arguments Expression Computation)
     (..form (list (..var "define")
                   (|> arguments
-                      (update@ #mandatory (|>> (#.Item name)))
+                      (revised@ #mandatory (|>> (#.Item name)))
                       ..arguments)
                   body)))
 
diff --git a/stdlib/source/library/lux/test.lux b/stdlib/source/library/lux/test.lux
index dbd87627e..29af87345 100644
--- a/stdlib/source/library/lux/test.lux
+++ b/stdlib/source/library/lux/test.lux
@@ -50,12 +50,12 @@
 
 (def: (total parameter subject)
   (-> Tally Tally Tally)
-  {#successes (n.+ (get@ #successes parameter) (get@ #successes subject))
-   #failures (n.+ (get@ #failures parameter) (get@ #failures subject))
-   #expected_coverage (set.union (get@ #expected_coverage parameter)
-                                 (get@ #expected_coverage subject))
-   #actual_coverage (set.union (get@ #actual_coverage parameter)
-                               (get@ #actual_coverage subject))})
+  {#successes (n.+ (value@ #successes parameter) (value@ #successes subject))
+   #failures (n.+ (value@ #failures parameter) (value@ #failures subject))
+   #expected_coverage (set.union (value@ #expected_coverage parameter)
+                                 (value@ #expected_coverage subject))
+   #actual_coverage (set.union (value@ #actual_coverage parameter)
+                               (value@ #actual_coverage subject))})
 
 (def: start
   Tally
@@ -67,7 +67,7 @@
 (template [ ]
   [(def: 
      Tally
-     (update@  .inc ..start))]
+     (revised@  .++ ..start))]
 
   [success_tally #successes]
   [failure_tally #failures]
@@ -166,7 +166,7 @@
 
 (def: failed?
   (-> Tally Bit)
-  (|>> (get@ #failures) (n.> 0)))
+  (|>> (value@ #failures) (n.> 0)))
 
 (def: (times_failure seed documentation)
   (-> Seed Text Text)
@@ -193,26 +193,26 @@
                        (case amount
                          1 instance
                          _ (|> test
-                               (times (dec amount))
+                               (times (-- amount))
                                (random.result prng')
                                product.right))))])))))
 
 (def: (description duration tally)
   (-> Duration Tally Text)
-  (let [successes (get@ #successes tally)
-        failures (get@ #failures tally)
-        missing (set.difference (get@ #actual_coverage tally)
-                                (get@ #expected_coverage tally))
-        unexpected (set.difference (get@ #expected_coverage tally)
-                                   (get@ #actual_coverage tally))
+  (let [successes (value@ #successes tally)
+        failures (value@ #failures tally)
+        missing (set.difference (value@ #actual_coverage tally)
+                                (value@ #expected_coverage tally))
+        unexpected (set.difference (value@ #expected_coverage tally)
+                                   (value@ #actual_coverage tally))
         report (: (-> (Set Name) Text)
                   (|>> set.list
                        (list.sorted (\ name.order <))
                        (exception.listing %.name)))
-        expected_definitions_to_cover (set.size (get@ #expected_coverage tally))
+        expected_definitions_to_cover (set.size (value@ #expected_coverage tally))
         unexpected_definitions_covered (set.size unexpected)
         actual_definitions_covered (n.- unexpected_definitions_covered
-                                        (set.size (get@ #actual_coverage tally)))
+                                        (set.size (value@ #actual_coverage tally)))
         coverage (case expected_definitions_to_cover
                    0 "N/A"
                    expected (let [missing_ratio (f./ (n.frac expected)
@@ -265,7 +265,7 @@
                                  (..description duration tally)
                                  text.new_line))]]
     (async.future (\ program.default exit
-                     (case (get@ #failures tally)
+                     (case (value@ #failures tally)
                        0 ..success_exit_code
                        _ ..failure_exit_code)))))
 
@@ -277,7 +277,7 @@
         coverage (set.of_list name.hash coverage)]
     (|> (..assertion message condition)
         (async\map (function (_ [tally documentation])
-                     [(update@ #actual_coverage (set.union coverage) tally)
+                     [(revised@ #actual_coverage (set.union coverage) tally)
                       documentation])))))
 
 (def: (|cover| coverage condition)
@@ -292,7 +292,7 @@
                     (text.interposed " & "))
         coverage (set.of_list name.hash coverage)]
     (random\map (async\map (function (_ [tally documentation])
-                             [(update@ #actual_coverage (set.union coverage) tally)
+                             [(revised@ #actual_coverage (set.union coverage) tally)
                               documentation]))
                 (..context context test))))
 
@@ -369,7 +369,7 @@
   (let [coverage (..decode_coverage module coverage)]
     (|> (..context module test)
         (random\map (async\map (function (_ [tally documentation])
-                                 [(update@ #expected_coverage (set.union coverage) tally)
+                                 [(revised@ #expected_coverage (set.union coverage) tally)
                                   documentation]))))))
 
 (syntax: .public (covering [module .identifier
diff --git a/stdlib/source/library/lux/time.lux b/stdlib/source/library/lux/time.lux
index eb0928f5c..c6206e167 100644
--- a/stdlib/source/library/lux/time.lux
+++ b/stdlib/source/library/lux/time.lux
@@ -46,7 +46,7 @@
 (exception: .public (time_exceeds_a_day {time Nat})
   (exception.report
    ["Time (in milli-seconds)" (n\encode time)]
-   ["Maximum (in milli-seconds)" (n\encode (dec limit))]))
+   ["Maximum (in milli-seconds)" (n\encode (-- limit))]))
 
 (def: separator ":")
 
@@ -66,7 +66,7 @@
      (exception.report
       ["Value" (n\encode value)]
       ["Minimum" (n\encode 0)]
-      ["Maximum" (n\encode (dec ))]))
+      ["Maximum" (n\encode (-- ))]))
 
    (def: 
      (Parser Nat)
@@ -121,13 +121,13 @@
         (def: &order ..order)
 
         (def: succ
-          (|>> :representation inc (n.% ..limit) :abstraction))
+          (|>> :representation ++ (n.% ..limit) :abstraction))
 
         (def: pred
           (|>> :representation
                (case> 0 ..limit
                       millis millis)
-               dec
+               --
                :abstraction))))
 
   (def: .public parser
@@ -197,10 +197,10 @@
 (def: .public (time clock)
   (-> Clock (Try Time))
   (|> ($_ duration.merged
-          (duration.up (get@ #hour clock) duration.hour)
-          (duration.up (get@ #minute clock) duration.minute)
-          (duration.up (get@ #second clock) duration.second)
-          (duration.of_millis (.int (get@ #milli_second clock))))
+          (duration.up (value@ #hour clock) duration.hour)
+          (duration.up (value@ #minute clock) duration.minute)
+          (duration.up (value@ #second clock) duration.second)
+          (duration.of_millis (.int (value@ #milli_second clock))))
       duration.millis
       .nat
       ..of_millis))
diff --git a/stdlib/source/library/lux/time/date.lux b/stdlib/source/library/lux/time/date.lux
index 75e5609ea..d06910711 100644
--- a/stdlib/source/library/lux/time/date.lux
+++ b/stdlib/source/library/lux/time/date.lux
@@ -95,7 +95,7 @@
   (template [  ]
     [(def: .public 
        (-> Date )
-       (|>> :representation (get@ )))]
+       (|>> :representation (value@ )))]
 
     [year Year #year]
     [month Month #month]
@@ -109,13 +109,13 @@
       (let [reference (:representation reference)
             sample (:representation sample)]
         (and (\ //year.equivalence =
-                (get@ #year reference)
-                (get@ #year sample))
+                (value@ #year reference)
+                (value@ #year sample))
              (\ //month.equivalence =
-                (get@ #month reference)
-                (get@ #month sample))
-             (n.= (get@ #day reference)
-                  (get@ #day sample))))))
+                (value@ #month reference)
+                (value@ #month sample))
+             (n.= (value@ #day reference)
+                  (value@ #day sample))))))
 
   (implementation: .public order
     (Order Date)
@@ -126,19 +126,19 @@
       (let [reference (:representation reference)
             sample (:representation sample)]
         (or (\ //year.order <
-               (get@ #year reference)
-               (get@ #year sample))
+               (value@ #year reference)
+               (value@ #year sample))
             (and (\ //year.equivalence =
-                    (get@ #year reference)
-                    (get@ #year sample))
+                    (value@ #year reference)
+                    (value@ #year sample))
                  (or (\ //month.order <
-                        (get@ #month reference)
-                        (get@ #month sample))
+                        (value@ #month reference)
+                        (value@ #month sample))
                      (and (\ //month.order =
-                             (get@ #month reference)
-                             (get@ #month sample))
-                          (n.< (get@ #day reference)
-                               (get@ #day sample)))))))))
+                             (value@ #month reference)
+                             (value@ #month sample))
+                          (n.< (value@ #day reference)
+                               (value@ #day sample)))))))))
   )
 
 (def: section_parser
@@ -271,17 +271,17 @@
          ..civil_month)))
 
 (def: last_era_leap_day
-  (.int (dec ..days_per_leap)))
+  (.int (-- ..days_per_leap)))
 
 (def: last_era_day
-  (.int (dec ..days_per_era)))
+  (.int (-- ..days_per_era)))
 
 (def: (civil_year utc_month utc_year)
   (-> Nat Year Int)
   (let [... Coercing, because the year is already in external form.
         utc_year (:as Int utc_year)]
     (if (n.< ..first_month_of_civil_year utc_month)
-      (dec utc_year)
+      (-- utc_year)
       utc_year)))
 
 ... http://howardhinnant.github.io/date_algorithms.html
@@ -290,7 +290,7 @@
   (let [utc_month (|> date ..month //month.number)
         civil_year (..civil_year utc_month (..year date))
         era (|> (if (i.< +0 civil_year)
-                  (i.- (.int (dec //year.era))
+                  (i.- (.int (-- //year.era))
                        civil_year)
                   civil_year)
                 (i./ (.int //year.era)))
@@ -299,7 +299,7 @@
                          civil_year)
         day_of_year (|> utc_month
                         ..day_of_year_from_month
-                        (i.+ (.int (dec (..day_of_month date)))))
+                        (i.+ (.int (-- (..day_of_month date)))))
         day_of_era (|> day_of_year
                        (i.+ (i.* (.int //year.days) year_of_era))
                        (i.+ (i./ (.int //year.leap) year_of_era))
@@ -334,7 +334,7 @@
                 (i.+ +1)
                 .nat)
         year (if (n.< ..first_month_of_civil_year month)
-               (inc year)
+               (++ year)
                year)]
     ... Coercing, because the year is already in internal form.
     (try.trusted
@@ -348,7 +348,7 @@
   (def: &order ..order)
 
   (def: succ
-    (|>> ..days inc ..of_days))
+    (|>> ..days ++ ..of_days))
 
   (def: pred
-    (|>> ..days dec ..of_days)))
+    (|>> ..days -- ..of_days)))
diff --git a/stdlib/source/library/lux/time/instant.lux b/stdlib/source/library/lux/time/instant.lux
index 36e0b2504..f454c1425 100644
--- a/stdlib/source/library/lux/time/instant.lux
+++ b/stdlib/source/library/lux/time/instant.lux
@@ -102,7 +102,7 @@
                           (let [[days millis] (i./% ..millis_per_day offset)]
                             (case millis
                               +0 [days millis]
-                              _ [(dec days) (i.+ ..millis_per_day millis)]))
+                              _ [(-- days) (i.+ ..millis_per_day millis)]))
                           (i./% ..millis_per_day offset))]
     [(date.of_days days)
      (duration.of_millis day_time)]))
@@ -214,7 +214,7 @@
         day_time (duration.framed duration.day offset)
         days (if (and (duration.negative? offset)
                       (not (duration.neutral? day_time)))
-               (dec days)
+               (-- days)
                days)
         ... 1970/01/01 was a Thursday
         y1970m0d0 +4]
diff --git a/stdlib/source/library/lux/time/month.lux b/stdlib/source/library/lux/time/month.lux
index d8203e175..07fcc6269 100644
--- a/stdlib/source/library/lux/time/month.lux
+++ b/stdlib/source/library/lux/time/month.lux
@@ -184,7 +184,7 @@
   {#.doc (example "The amount of days of a month (in a leap year).")}
   (-> Month Nat)
   (case month
-    #February (inc (..days month))
+    #February (++ (..days month))
     _ (..days month)))
 
 (def: .public year
diff --git a/stdlib/source/library/lux/time/year.lux b/stdlib/source/library/lux/time/year.lux
index dd303ed85..3eb12ad90 100644
--- a/stdlib/source/library/lux/time/year.lux
+++ b/stdlib/source/library/lux/time/year.lux
@@ -23,14 +23,14 @@
 (def: (internal year)
   (-> Int Int)
   (if (i.< +0 year)
-    (inc year)
+    (++ year)
     year))
 
 (def: (external year)
   (-> Int Int)
   (if (i.> +0 year)
     year
-    (dec year)))
+    (-- year)))
 
 (exception: .public there_is_no_year_0)
 
@@ -100,8 +100,8 @@
   (-> Year Int)
   (let [year (|> year ..value ..internal)
         limit (if (i.> +0 year)
-                (dec year)
-                (inc year))]
+                (-- year)
+                (++ year))]
     (`` (|> +0
             (~~ (template [ ]
                   [( (i./ (.int ) limit))]
diff --git a/stdlib/source/library/lux/tool/compiler/default/init.lux b/stdlib/source/library/lux/tool/compiler/default/init.lux
index e8b91db8c..04971dadd 100644
--- a/stdlib/source/library/lux/tool/compiler/default/init.lux
+++ b/stdlib/source/library/lux/tool/compiler/default/init.lux
@@ -107,8 +107,8 @@
       (#.Right [source' output])
       (let [[location _] output]
         (#try.Success [[bundle (|> compiler
-                                   (set@ #.source source')
-                                   (set@ #.location location))]
+                                   (with@ #.source source')
+                                   (with@ #.location location))]
                        [source' output]])))))
 
 (type: (Operation a)
@@ -125,13 +125,13 @@
         (///directive.Operation anchor expression directive
                                 [Source (Payload directive)])))
   (do ///phase.monad
-    [.let [module (get@ #///.module input)]
+    [.let [module (value@ #///.module input)]
      _ (///directive.set_current_module module)]
     (///directive.lifted_analysis
      (do {! ///phase.monad}
        [_ (module.create hash module)
         _ (monad.map ! module.import dependencies)
-        .let [source (///analysis.source (get@ #///.module input) (get@ #///.code input))]
+        .let [source (///analysis.source (value@ #///.module input) (value@ #///.code input))]
         _ (///analysis.set_source_code source)]
        (in [source [///generation.empty_buffer
                     artifact.empty]])))))
@@ -220,13 +220,13 @@
 (def: (default_dependencies prelude input)
   (-> Module ///.Input (List Module))
   (list& archive.runtime_module
-         (if (text\= prelude (get@ #///.module input))
+         (if (text\= prelude (value@ #///.module input))
            (list)
            (list prelude))))
 
 (def: module_aliases
   (-> .Module Aliases)
-  (|>> (get@ #.module_aliases) (dictionary.of_list text.hash)))
+  (|>> (value@ #.module_aliases) (dictionary.of_list text.hash)))
 
 (def: .public (compiler expander prelude write_directive)
   (All [anchor expression directive]
@@ -238,10 +238,10 @@
         {#///.dependencies dependencies
          #///.process (function (_ state archive)
                         (do {! try.monad}
-                          [.let [hash (text\hash (get@ #///.code input))]
+                          [.let [hash (text\hash (value@ #///.code input))]
                            [state [source buffer]] (<| (///phase.result' state)
                                                        (..begin dependencies hash input))
-                           .let [module (get@ #///.module input)]]
+                           .let [module (value@ #///.module input)]]
                           (loop [iteration (<| (///phase.result' state)
                                                (..iteration archive expander module source buffer ///syntax.no_aliases))]
                             (do !
@@ -252,7 +252,7 @@
                                   [[state [analysis_module [final_buffer final_registry]]] (///phase.result' state (..end module))
                                    .let [descriptor {#descriptor.hash hash
                                                      #descriptor.name module
-                                                     #descriptor.file (get@ #///.file input)
+                                                     #descriptor.file (value@ #///.file input)
                                                      #descriptor.references (set.of_list text.hash dependencies)
                                                      #descriptor.state #.Compiled
                                                      #descriptor.registry final_registry}]]
@@ -267,7 +267,7 @@
                                 (let [[temporary_buffer temporary_registry] temporary_payload]
                                   (in [state
                                        (#.Left {#///.dependencies (|> requirements
-                                                                      (get@ #///directive.imports)
+                                                                      (value@ #///directive.imports)
                                                                       (list\map product.left))
                                                 #///.process (function (_ state archive)
                                                                (recur (<| (///phase.result' state)
@@ -281,7 +281,7 @@
                                                                              _ (///directive.lifted_generation
                                                                                 (///generation.set_registry temporary_registry))
                                                                              _ (|> requirements
-                                                                                   (get@ #///directive.referrals)
+                                                                                   (value@ #///directive.referrals)
                                                                                    (monad.map ! (execute! archive)))
                                                                              temporary_payload (..get_current_payload temporary_payload)]
                                                                             (..iteration archive expander module source temporary_payload (..module_aliases analysis_module))))))})]))
diff --git a/stdlib/source/library/lux/tool/compiler/default/platform.lux b/stdlib/source/library/lux/tool/compiler/default/platform.lux
index 53cb07e22..1ac28821f 100644
--- a/stdlib/source/library/lux/tool/compiler/default/platform.lux
+++ b/stdlib/source/library/lux/tool/compiler/default/platform.lux
@@ -97,7 +97,7 @@
       (All []
         (-> Static  archive.ID [Descriptor (Document Any) Output]
             (Async (Try Any))))
-      (let [system (get@ #&file_system platform)
+      (let [system (value@ #&file_system platform)
             write_artifact! (: (-> [artifact.ID (Maybe Text) Binary] (Action Any))
                                (function (_ [artifact_id custom content])
                                  (ioW.write system static module_id artifact_id content)))]
@@ -129,7 +129,7 @@
         (->  (///generation.Operation  [Registry Output])))
       (do ///phase.monad
         [_ ..initialize_buffer!]
-        (get@ #runtime platform)))
+        (value@ #runtime platform)))
 
     (def: (runtime_descriptor registry)
       (-> Registry Descriptor)
@@ -198,7 +198,7 @@
     (def: (phase_wrapper archive platform state)
       (All []
         (-> Archive   (Try [ Phase_Wrapper])))
-      (let [phase_wrapper (get@ #phase_wrapper platform)]
+      (let [phase_wrapper (value@ #phase_wrapper platform)]
         (|> archive
             phase_wrapper
             ///directive.lifted_generation
@@ -236,15 +236,15 @@
             Import (List Context)
             (Async (Try [ Archive]))))
       (do {! (try.with async.monad)}
-        [.let [state (//init.state (get@ #static.host static)
+        [.let [state (//init.state (value@ #static.host static)
                                    module
                                    expander
                                    host_analysis
-                                   (get@ #host platform)
-                                   (get@ #phase platform)
+                                   (value@ #host platform)
+                                   (value@ #phase platform)
                                    generation_bundle)]
-         _ (ioW.enable (get@ #&file_system platform) static)
-         [archive analysis_state bundles] (ioW.thaw (get@ #host platform) (get@ #&file_system platform) static import compilation_sources)
+         _ (ioW.enable (value@ #&file_system platform) static)
+         [archive analysis_state bundles] (ioW.thaw (value@ #host platform) (value@ #&file_system platform) static import compilation_sources)
          .let [with_missing_extensions
                (: (All []
                     (->  (Program expression directive)  (Async (Try ))))
@@ -276,11 +276,11 @@
     (def: (module_compilation_log module)
       (All []
         (-> Module  Text))
-      (|>> (get@ [#extension.state
-                  #///directive.generation
-                  #///directive.state
-                  #extension.state
-                  #///generation.log])
+      (|>> (value@ [#extension.state
+                    #///directive.generation
+                    #///directive.state
+                    #extension.state
+                    #///generation.log])
            (row\fold (function (_ right left)
                        (format left ..compilation_log_separator right))
                      module)))
@@ -288,12 +288,12 @@
     (def: with_reset_log
       (All []
         (->  ))
-      (set@ [#extension.state
-             #///directive.generation
-             #///directive.state
-             #extension.state
-             #///generation.log]
-            row.empty))
+      (with@ [#extension.state
+              #///directive.generation
+              #///directive.state
+              #extension.state
+              #///generation.log]
+             row.empty))
 
     (def: empty
       (Set Module)
@@ -320,8 +320,8 @@
                                            lens
                                            (dictionary.value module)
                                            (maybe.else ..empty))))
-            transitive_depends_on (transitive_dependency (get@ #depends_on) import)
-            transitive_depended_by (transitive_dependency (get@ #depended_by) module)
+            transitive_depends_on (transitive_dependency (value@ #depends_on) import)
+            transitive_depended_by (transitive_dependency (value@ #depended_by) module)
             update_dependence (: (-> [Module (Set Module)] [Module (Set Module)]
                                      (-> Mapping Mapping))
                                  (function (_ [source forward] [target backward])
@@ -335,14 +335,14 @@
                                                   with_dependence+transitives
                                                   (set.list backward))))))]
         (|> dependence
-            (update@ #depends_on
-                     (update_dependence
-                      [module transitive_depends_on]
-                      [import transitive_depended_by]))
-            (update@ #depended_by
-                     ((function.flipped update_dependence)
-                      [module transitive_depends_on]
-                      [import transitive_depended_by])))))
+            (revised@ #depends_on
+                      (update_dependence
+                       [module transitive_depends_on]
+                       [import transitive_depended_by]))
+            (revised@ #depended_by
+                      ((function.flipped update_dependence)
+                       [module transitive_depends_on]
+                       [import transitive_depended_by])))))
 
     (def: (circular_dependency? module import dependence)
       (-> Module Module Dependence Bit)
@@ -353,8 +353,8 @@
                                                (dictionary.value from)
                                                (maybe.else ..empty))]
                                (set.member? targets to))))]
-        (or (dependence? import (get@ #depends_on) module)
-            (dependence? module (get@ #depended_by) import))))
+        (or (dependence? import (value@ #depends_on) module)
+            (dependence? module (value@ #depended_by) import))))
 
     (exception: .public (module_cannot_import_itself {module Module})
       (exception.report
@@ -499,21 +499,21 @@
            .let [additions (|> modules
                                (list\map product.left)
                                (set.of_list text.hash))]]
-          (in (update@ [#extension.state
-                        #///directive.analysis
-                        #///directive.state
-                        #extension.state]
-                       (function (_ analysis_state)
-                         (|> analysis_state
-                             (:as .Lux)
-                             (update@ #.modules (function (_ current)
-                                                  (list\compose (list.only (|>> product.left
-                                                                                (set.member? additions)
-                                                                                not)
-                                                                           current)
-                                                                modules)))
-                             :expected))
-                       state))))
+          (in (revised@ [#extension.state
+                         #///directive.analysis
+                         #///directive.state
+                         #extension.state]
+                        (function (_ analysis_state)
+                          (|> analysis_state
+                              (:as .Lux)
+                              (revised@ #.modules (function (_ current)
+                                                    (list\compose (list.only (|>> product.left
+                                                                                  (set.member? additions)
+                                                                                  not)
+                                                                             current)
+                                                                  modules)))
+                              :expected))
+                        state))))
 
       (def: (set_current_module module state)
         (All []
@@ -533,24 +533,24 @@
                                       
                                       (///.Compiler  .Module Any)
                                       (:expected
-                                       ((//init.compiler expander syntax.prelude (get@ #write platform)) $.key (list))))
+                                       ((//init.compiler expander syntax.prelude (value@ #write platform)) $.key (list))))
               compiler (..parallel
                         context
                         (function (_ importer import! module_id [archive state] module)
                           (do {! (try.with async.monad)}
                             [.let [state (..set_current_module module state)]
-                             input (context.read (get@ #&file_system platform)
+                             input (context.read (value@ #&file_system platform)
                                                  importer
                                                  import
                                                  compilation_sources
-                                                 (get@ #static.host_module_extension static)
+                                                 (value@ #static.host_module_extension static)
                                                  module)]
                             (loop [[archive state] [archive state]
                                    compilation (base_compiler (:as ///.Input input))
                                    all_dependencies (: (Set Module)
                                                        (set.of_list text.hash (list)))]
                               (do !
-                                [.let [new_dependencies (get@ #///.dependencies compilation)
+                                [.let [new_dependencies (value@ #///.dependencies compilation)
                                        continue! (:sharing []
                                                            
                                                            platform
@@ -582,14 +582,14 @@
                                                      (do !
                                                        [archive,document+ (|> new_dependencies
                                                                               (list\map (import! module))
-                                                                              (monad.seq ..monad))
+                                                                              (monad.all ..monad))
                                                         .let [archive (|> archive,document+
                                                                           (list\map product.left)
                                                                           (list\fold archive.merged archive))]]
                                                        (in [archive (try.trusted
                                                                      (..updated_state archive state))])))
                                                    (async\in (exception.except ..cannot_import_twice [module duplicates])))]
-                                (case ((get@ #///.process compilation)
+                                (case ((value@ #///.process compilation)
                                        ... TODO: The "///directive.set_current_module" below shouldn't be necessary. Remove it ASAP.
                                        ... TODO: The context shouldn't need to be re-set either.
                                        (|> (///directive.set_current_module module)
@@ -605,7 +605,7 @@
                                     (#.Right [descriptor document output])
                                     (do !
                                       [.let [_ (debug.log! (..module_compilation_log module state))
-                                             descriptor (set@ #descriptor.references all_dependencies descriptor)]
+                                             descriptor (with@ #descriptor.references all_dependencies descriptor)]
                                        _ (..cache_module static platform module_id [descriptor document output])]
                                       (case (archive.has module [descriptor document output] archive)
                                         (#try.Success archive)
@@ -617,7 +617,7 @@
 
                                   (#try.Failure error)
                                   (do !
-                                    [_ (ioW.freeze (get@ #&file_system platform) static archive)]
+                                    [_ (ioW.freeze (value@ #&file_system platform) static archive)]
                                     (async\in (#try.Failure error)))))))))]
           (compiler archive.runtime_module compilation_module)))
       )))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux
index 571185dee..aefd908c4 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux
@@ -55,18 +55,18 @@
 (def: .public (tag lefts right?)
   (-> Nat Bit Nat)
   (if right?
-    (inc lefts)
+    (++ lefts)
     lefts))
 
 (def: (lefts tag right?)
   (-> Nat Bit Nat)
   (if right?
-    (dec tag)
+    (-- tag)
     tag))
 
 (def: .public (choice options pick)
   (-> Nat Nat [Nat Bit])
-  (let [right? (n.= (dec options) pick)]
+  (let [right? (n.= (-- options) pick)]
     [(..lefts pick right?)
      right?]))
 
@@ -253,7 +253,7 @@
 
 (def: (last? size tag)
   (-> Nat Tag Bit)
-  (n.= (dec size) tag))
+  (n.= (-- size) tag))
 
 (template: .public (no_op value)
   [(|> 1 #variable.Local #reference.Variable #..Reference
@@ -402,10 +402,10 @@
 (def: .public (with_source_code source action)
   (All [a] (-> Source (Operation a) (Operation a)))
   (function (_ [bundle state])
-    (let [old_source (get@ #.source state)]
-      (case (action [bundle (set@ #.source source state)])
+    (let [old_source (value@ #.source state)]
+      (case (action [bundle (with@ #.source source state)])
         (#try.Success [[bundle' state'] output])
-        (#try.Success [[bundle' (set@ #.source old_source state')]
+        (#try.Success [[bundle' (with@ #.source old_source state')]
                        output])
 
         (#try.Failure error)
@@ -426,11 +426,11 @@
 (def: .public (with_scope action)
   (All [a] (-> (Operation a) (Operation [Scope a])))
   (function (_ [bundle state])
-    (case (action [bundle (update@ #.scopes (|>> (#.Item fresh_scope)) state)])
+    (case (action [bundle (revised@ #.scopes (|>> (#.Item fresh_scope)) state)])
       (#try.Success [[bundle' state'] output])
-      (case (get@ #.scopes state')
+      (case (value@ #.scopes state')
         (#.Item head tail)
-        (#try.Success [[bundle' (set@ #.scopes tail state')]
+        (#try.Success [[bundle' (with@ #.scopes tail state')]
                        [head output]])
 
         #.End
@@ -441,8 +441,8 @@
 
 (def: .public (with_current_module name)
   (All [a] (-> Text (Operation a) (Operation a)))
-  (extension.localized (get@ #.current_module)
-                       (set@ #.current_module)
+  (extension.localized (value@ #.current_module)
+                       (with@ #.current_module)
                        (function.constant (#.Some name))))
 
 (def: .public (with_location location action)
@@ -450,10 +450,10 @@
   (if (text\= "" (product.left location))
     action
     (function (_ [bundle state])
-      (let [old_location (get@ #.location state)]
-        (case (action [bundle (set@ #.location location state)])
+      (let [old_location (value@ #.location state)]
+        (case (action [bundle (with@ #.location location state)])
           (#try.Success [[bundle' state'] output])
-          (#try.Success [[bundle' (set@ #.location old_location state')]
+          (#try.Success [[bundle' (with@ #.location old_location state')]
                          output])
 
           (#try.Failure error)
@@ -467,7 +467,7 @@
 (def: .public (failure error)
   (-> Text Operation)
   (function (_ [bundle state])
-    (#try.Failure (locate_error (get@ #.location state) error))))
+    (#try.Failure (locate_error (value@ #.location state) error))))
 
 (def: .public (except exception parameters)
   (All [e] (-> (Exception e) e Operation))
@@ -482,7 +482,7 @@
 (def: .public (failure' error)
   (-> Text (phase.Operation Lux))
   (function (_ state)
-    (#try.Failure (locate_error (get@ #.location state) error))))
+    (#try.Failure (locate_error (value@ #.location state) error))))
 
 (def: .public (except' exception parameters)
   (All [e] (-> (Exception e) e (phase.Operation Lux)))
@@ -498,7 +498,7 @@
       
       (#try.Failure error)
       (let [[bundle state] bundle,state]
-        (#try.Failure (locate_error (get@ #.location state) error))))))
+        (#try.Failure (locate_error (value@ #.location state) error))))))
 
 (def: .public (install state)
   (-> .Lux (Operation Any))
@@ -509,7 +509,7 @@
 (template [   ]
   [(def: .public ( value)
      (->  (Operation Any))
-     (extension.update (set@  )))]
+     (extension.update (with@  )))]
 
   [set_source_code    Source   #.source         value]
   [set_current_module Text     #.current_module (#.Some value)]
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux b/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux
index 478697fd4..5f2770068 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux
@@ -47,8 +47,8 @@
 
 (def: .public (merge_requirements left right)
   (-> Requirements Requirements Requirements)
-  {#imports (list\compose (get@ #imports left) (get@ #imports right))
-   #referrals (list\compose (get@ #referrals left) (get@ #referrals right))})
+  {#imports (list\compose (value@ #imports left) (value@ #imports right))
+   #referrals (list\compose (value@ #referrals left) (value@ #referrals right))})
 
 (template [ ]
   [(type: .public ( anchor expression directive)
@@ -66,7 +66,7 @@
      (All [anchor expression directive]
        (Operation anchor expression directive ))
      (function (_ [bundle state])
-       (#try.Success [[bundle state] (get@ [ #..phase] state)])))]
+       (#try.Success [[bundle state] (value@ [ #..phase] state)])))]
 
   [analysis   #..analysis   analysis.Phase]
   [synthesis  #..synthesis  synthesis.Phase]
@@ -78,8 +78,8 @@
      (All [anchor expression directive output]
        (-> ( output)
            (Operation anchor expression directive output)))
-     (|>> (phase.sub [(get@ [ #..state])
-                      (set@ [ #..state])])
+     (|>> (phase.sub [(value@ [ #..state])
+                      (with@ [ #..state])])
           extension.lifted))]
 
   [lifted_analysis   #..analysis   analysis.Operation]
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux b/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux
index 0a1841ad1..aee61ebc7 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux
@@ -111,9 +111,9 @@
      (All [anchor expression directive output] )
      (function (_ body)
        (function (_ [bundle state])
-         (case (body [bundle (set@  (#.Some ) state)])
+         (case (body [bundle (with@  (#.Some ) state)])
            (#try.Success [[bundle' state'] output])
-           (#try.Success [[bundle' (set@  (get@  state) state')]
+           (#try.Success [[bundle' (with@  (value@  state) state')]
                           output])
 
            (#try.Failure error)
@@ -123,7 +123,7 @@
      (All [anchor expression directive]
        (Operation anchor expression directive ))
      (function (_ (^@ stateE [bundle state]))
-       (case (get@  state)
+       (case (value@  state)
          (#.Some output)
          (#try.Success [stateE output])
 
@@ -134,7 +134,7 @@
      (All [anchor expression directive]
        (->  (Operation anchor expression directive Any)))
      (function (_ [bundle state])
-       (#try.Success [[bundle (set@  (#.Some value) state)]
+       (#try.Success [[bundle (with@  (#.Some value) state)]
                       []])))]
 
   [#anchor
@@ -156,21 +156,21 @@
   (All [anchor expression directive]
     (Operation anchor expression directive artifact.Registry))
   (function (_ (^@ stateE [bundle state]))
-    (#try.Success [stateE (get@ #registry state)])))
+    (#try.Success [stateE (value@ #registry state)])))
 
 (def: .public (set_registry value)
   (All [anchor expression directive]
     (-> artifact.Registry (Operation anchor expression directive Any)))
   (function (_ [bundle state])
-    (#try.Success [[bundle (set@ #registry value state)]
+    (#try.Success [[bundle (with@ #registry value state)]
                    []])))
 
 (def: .public next
   (All [anchor expression directive]
     (Operation anchor expression directive Nat))
   (do phase.monad
-    [count (extension.read (get@ #counter))
-     _ (extension.update (update@ #counter inc))]
+    [count (extension.read (value@ #counter))
+     _ (extension.update (revised@ #counter ++))]
     (in count)))
 
 (def: .public (identifier prefix)
@@ -181,18 +181,18 @@
 (def: .public (enter_module module)
   (All [anchor expression directive]
     (-> Module (Operation anchor expression directive Any)))
-  (extension.update (set@ #module module)))
+  (extension.update (with@ #module module)))
 
 (def: .public module
   (All [anchor expression directive]
     (Operation anchor expression directive Module))
-  (extension.read (get@ #module)))
+  (extension.read (value@ #module)))
 
 (def: .public (evaluate! label code)
   (All [anchor expression directive]
     (-> Context expression (Operation anchor expression directive Any)))
   (function (_ (^@ state+ [bundle state]))
-    (case (\ (get@ #host state) evaluate! label code)
+    (case (\ (value@ #host state) evaluate! label code)
       (#try.Success output)
       (#try.Success [state+ output])
 
@@ -203,7 +203,7 @@
   (All [anchor expression directive]
     (-> directive (Operation anchor expression directive Any)))
   (function (_ (^@ state+ [bundle state]))
-    (case (\ (get@ #host state) execute! code)
+    (case (\ (value@ #host state) execute! code)
       (#try.Success output)
       (#try.Success [state+ output])
 
@@ -214,7 +214,7 @@
   (All [anchor expression directive]
     (-> Context (Maybe Text) expression (Operation anchor expression directive [Text Any directive])))
   (function (_ (^@ stateE [bundle state]))
-    (case (\ (get@ #host state) define! context custom code)
+    (case (\ (value@ #host state) define! context custom code)
       (#try.Success output)
       (#try.Success [stateE output])
 
@@ -225,13 +225,13 @@
   (All [anchor expression directive]
     (-> artifact.ID (Maybe Text) directive (Operation anchor expression directive Any)))
   (do {! phase.monad}
-    [?buffer (extension.read (get@ #buffer))]
+    [?buffer (extension.read (value@ #buffer))]
     (case ?buffer
       (#.Some buffer)
       ... TODO: Optimize by no longer checking for overwrites...
       (if (row.any? (|>> product.left (n.= artifact_id)) buffer)
         (phase.except ..cannot_overwrite_output [artifact_id])
-        (extension.update (set@ #buffer (#.Some (row.add [artifact_id custom code] buffer)))))
+        (extension.update (with@ #buffer (#.Some (row.suffix [artifact_id custom code] buffer)))))
       
       #.None
       (phase.except ..no_buffer_for_saving_code [artifact_id]))))
@@ -241,8 +241,8 @@
      (All [anchor expression directive]
        (-> Text (Operation anchor expression directive artifact.ID)))
      (function (_ (^@ stateE [bundle state]))
-       (let [[id registry'] ( name (get@ #registry state))]
-         (#try.Success [[bundle (set@ #registry registry' state)]
+       (let [[id registry'] ( name (value@ #registry state))]
+         (#try.Success [[bundle (with@ #registry registry' state)]
                         id]))))]
 
   [learn artifact.definition]
@@ -267,11 +267,11 @@
     (let [[_module _name] name]
       (do try.monad
         [module_id (archive.id _module archive)
-         registry (if (text\= (get@ #module state) _module)
-                    (#try.Success (get@ #registry state))
+         registry (if (text\= (value@ #module state) _module)
+                    (#try.Success (value@ #registry state))
                     (do try.monad
                       [[descriptor document] (archive.find _module archive)]
-                      (#try.Success (get@ #descriptor.registry descriptor))))]
+                      (#try.Success (value@ #descriptor.registry descriptor))))]
         (case (artifact.remember _name registry)
           #.None
           (exception.except ..unknown_definition [name (artifact.definitions registry)])
@@ -293,13 +293,13 @@
   (All [anchor expression directive]
     (-> Archive (Operation anchor expression directive Context)))
   (function (_ (^@ stateE [bundle state]))
-    (case (get@ #context state)
+    (case (value@ #context state)
       #.None
       (exception.except ..no_context [])
       
       (#.Some id)
       (do try.monad
-        [module_id (archive.id (get@ #module state) archive)]
+        [module_id (archive.id (value@ #module state) archive)]
         (in [stateE [module_id id]])))))
 
 (def: .public (with_context id body)
@@ -309,8 +309,8 @@
         (Operation anchor expression directive a)))
   (function (_ [bundle state])
     (do try.monad
-      [[[bundle' state'] output] (body [bundle (set@ #context (#.Some id) state)])]
-      (in [[bundle' (set@ #context (get@ #context state) state')]
+      [[[bundle' state'] output] (body [bundle (with@ #context (#.Some id) state)])]
+      (in [[bundle' (with@ #context (value@ #context state) state')]
            output]))))
 
 (def: .public (with_new_context archive body)
@@ -318,13 +318,13 @@
     (-> Archive (Operation anchor expression directive a)
         (Operation anchor expression directive [Context a])))
   (function (_ (^@ stateE [bundle state]))
-    (let [[id registry'] (artifact.resource (get@ #registry state))]
+    (let [[id registry'] (artifact.resource (value@ #registry state))]
       (do try.monad
         [[[bundle' state'] output] (body [bundle (|> state
-                                                     (set@ #registry registry')
-                                                     (set@ #context (#.Some id)))])
-         module_id (archive.id (get@ #module state) archive)]
-        (in [[bundle' (set@ #context (get@ #context state) state')]
+                                                     (with@ #registry registry')
+                                                     (with@ #context (#.Some id)))])
+         module_id (archive.id (value@ #module state) archive)]
+        (in [[bundle' (with@ #context (value@ #context state) state')]
              [[module_id id]
               output]])))))
 
@@ -333,5 +333,5 @@
     (-> Text (Operation anchor expression directive Any)))
   (function (_ [bundle state])
     (#try.Success [[bundle
-                    (update@ #log (row.add message) state)]
+                    (revised@ #log (row.suffix message) state)]
                    []])))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux
index c8cfe9c0e..ee12a8bf0 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux
@@ -124,10 +124,10 @@
               (compile archive expansion))
 
             _
-            (/function.apply compile argsC+ functionT functionA archive functionC)))
+            (/function.on compile argsC+ functionT functionA archive functionC)))
 
         _
-        (/function.apply compile argsC+ functionT functionA archive functionC)))
+        (/function.on compile argsC+ functionT functionA archive functionC)))
 
     _
     (//.except ..unrecognized_syntax [location.dummy code'])))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux
index 9463eeb8f..b3642f5f3 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux
@@ -193,20 +193,28 @@
         [inputT' (simplify_case inputT)]
         (.case inputT'
           (#.Product _)
-          (let [subs (type.flat_tuple inputT')
-                num_subs (maybe.else (list.size subs)
-                                     num_tags)
-                num_sub_patterns (list.size sub_patterns)
-                matches (cond (n.< num_subs num_sub_patterns)
-                              (let [[prefix suffix] (list.split_at (dec num_sub_patterns) subs)]
-                                (list.zipped/2 (list\compose prefix (list (type.tuple suffix))) sub_patterns))
-
-                              (n.> num_subs num_sub_patterns)
-                              (let [[prefix suffix] (list.split_at (dec num_subs) sub_patterns)]
-                                (list.zipped/2 subs (list\compose prefix (list (code.tuple suffix)))))
-                              
-                              ... (n.= num_subs num_sub_patterns)
-                              (list.zipped/2 subs sub_patterns))]
+          (let [matches (loop [types (type.flat_tuple inputT')
+                               patterns sub_patterns
+                               output (: (List [Type Code])
+                                         #.End)]
+                          (.case [types patterns]
+                            [#.End #.End]
+                            output
+
+                            [(#.Item headT #.End) (#.Item headP #.End)]
+                            (#.Item [headT headP] output)
+
+                            [remainingT (#.Item headP #.End)]
+                            (#.Item [(type.tuple remainingT) headP] output)
+
+                            [(#.Item headT #.End) remainingP]
+                            (#.Item [headT (code.tuple remainingP)] output)
+                            
+                            [(#.Item headT tailT) (#.Item headP tailP)]
+                            (recur tailT tailP (#.Item [headT headP] output))
+
+                            _
+                            (undefined)))]
             (do !
               [[memberP+ thenA] (list\fold (: (All [a]
                                                 (-> [Type Code] (Operation [(List Pattern) a])
@@ -220,7 +228,7 @@
                                            (do !
                                              [nextA next]
                                              (in [(list) nextA]))
-                                           (list.reversed matches))]
+                                           matches)]
               (in [(/.pattern/tuple memberP+)
                    thenA])))
 
@@ -231,7 +239,7 @@
     [location (#.Record record)]
     (do ///.monad
       [record (//structure.normal record)
-       [members recordT] (//structure.order record)
+       [record_size members recordT] (//structure.order record)
        _ (.case inputT
            (#.Var _id)
            (//type.with_env
@@ -239,7 +247,7 @@
 
            _
            (in []))]
-      (analyse_pattern (#.Some (list.size members)) inputT [location (#.Tuple members)] next))
+      (analyse_pattern (#.Some record_size) inputT [location (#.Tuple members)] next))
 
     [location (#.Tag tag)]
     (/.with_location location
@@ -260,9 +268,9 @@
                       (n.< num_cases idx))
               (do ///.monad
                 [[testP nextA] (if (and (n.> num_cases size_sum)
-                                        (n.= (dec num_cases) idx))
+                                        (n.= (-- num_cases) idx))
                                  (analyse_pattern #.None
-                                                  (type.variant (list.after (dec num_cases) flat_sum))
+                                                  (type.variant (list.after (-- num_cases) flat_sum))
                                                   (` [(~+ values)])
                                                   next)
                                  (analyse_pattern #.None caseT (` [(~+ values)]) next))]
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case/coverage.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case/coverage.lux
index 25c85514e..e7efacf3c 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case/coverage.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case/coverage.lux
@@ -146,7 +146,7 @@
     (do ////.monad
       [value_coverage (determine value)
        .let [idx (if right?
-                   (inc lefts)
+                   (++ lefts)
                    lefts)]]
       (in (#Variant (if right?
                       (#.Some idx)
@@ -256,7 +256,7 @@
                                   casesSF (dictionary.entries casesA))]
               (in (if (and (or (known_cases? addition_cases)
                                (known_cases? so_far_cases))
-                           (n.= (inc (n.max addition_cases so_far_cases))
+                           (n.= (++ (n.max addition_cases so_far_cases))
                                 (dictionary.size casesM))
                            (list.every? exhaustive? (dictionary.values casesM)))
                     #Exhaustive
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/inference.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/inference.lux
index 6282980be..0420b7811 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/inference.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/inference.lux
@@ -10,7 +10,7 @@
      ["." text
       ["%" format (#+ format)]]
      [collection
-      ["." list ("#\." functor)]]]
+      ["." list ("#\." functor monoid)]]]
     [math
      [number
       ["n" nat]]]
@@ -204,16 +204,16 @@
       base)))
 
 ... Turns a record type into the kind of function type suitable for inference.
-(def: (record' target originalT inferT)
-  (-> Nat Type Type (Operation Type))
+(def: (record' record_size target originalT inferT)
+  (-> Nat Nat Type Type (Operation Type))
   (case inferT
     (#.Named name unnamedT)
-    (record' target originalT unnamedT)
+    (record' record_size target originalT unnamedT)
 
     (^template []
       [( env bodyT)
        (do ///.monad
-         [bodyT+ (record' (n.+ 2 target) originalT bodyT)]
+         [bodyT+ (record' record_size (n.+ 2 target) originalT bodyT)]
          (in ( env bodyT+)))])
     ([#.UnivQ]
      [#.ExQ])
@@ -221,22 +221,23 @@
     (#.Apply inputT funcT)
     (case (type.applied (list inputT) funcT)
       (#.Some outputT)
-      (record' target originalT outputT)
+      (record' record_size target originalT outputT)
 
       #.None
       (/.except ..invalid_type_application inferT))
 
     (#.Product _)
-    (///\in (|> inferT
-                (type.function (type.flat_tuple inferT))
-                (substitute_bound target originalT)))
+    (let [[lefts right] (list.split_at (-- record_size) (type.flat_tuple inferT))]
+      (///\in (|> inferT
+                  (type.function (list\compose lefts (list (type.tuple right))))
+                  (substitute_bound target originalT))))
 
     _
     (/.except ..not_a_record_type inferT)))
 
-(def: .public (record inferT)
-  (-> Type (Operation Type))
-  (record' (n.- 2 0) inferT inferT))
+(def: .public (record record_size inferT)
+  (-> Nat Type (Operation Type))
+  (record' record_size (n.- 2 0) inferT inferT))
 
 ... Turns a variant type into the kind of function type suitable for inference.
 (def: .public (variant tag expected_size inferT)
@@ -252,7 +253,7 @@
       (^template []
         [( env bodyT)
          (do ///.monad
-           [bodyT+ (recur (inc depth) bodyT)]
+           [bodyT+ (recur (++ depth) bodyT)]
            (in ( env bodyT+)))])
       ([#.UnivQ]
        [#.ExQ])
@@ -260,7 +261,7 @@
       (#.Sum _)
       (let [cases (type.flat_variant currentT)
             actual_size (list.size cases)
-            boundary (dec expected_size)]
+            boundary (-- expected_size)]
         (cond (or (n.= expected_size actual_size)
                   (and (n.> expected_size actual_size)
                        (n.< boundary tag)))
@@ -268,7 +269,7 @@
                 (#.Some caseT)
                 (///\in (if (n.= 0 depth)
                           (type.function (list caseT) currentT)
-                          (let [replace' (replace (|> depth dec (n.* 2)) inferT)]
+                          (let [replace' (replace (|> depth -- (n.* 2)) inferT)]
                             (type.function (list (replace' caseT))
                               (replace' currentT)))))
 
@@ -282,7 +283,7 @@
               (let [caseT (type.variant (list.after boundary cases))]
                 (///\in (if (n.= 0 depth)
                           (type.function (list caseT) currentT)
-                          (let [replace' (replace (|> depth dec (n.* 2)) inferT)]
+                          (let [replace' (replace (|> depth -- (n.* 2)) inferT)]
                             (type.function (list (replace' caseT))
                               (replace' currentT))))))
               
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/module.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/module.lux
index d5e2fd691..14e08a4c0 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/module.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/module.lux
@@ -84,12 +84,12 @@
    (do ///.monad
      [self_name meta.current_module_name
       self meta.current_module]
-     (case (get@ #.module_annotations self)
+     (case (value@ #.module_annotations self)
        #.None
        (function (_ state)
-         (#try.Success [(update@ #.modules
-                                 (plist.has self_name (set@ #.module_annotations (#.Some annotations) self))
-                                 state)
+         (#try.Success [(revised@ #.modules
+                                  (plist.has self_name (with@ #.module_annotations (#.Some annotations) self))
+                                  state)
                         []]))
        
        (#.Some old)
@@ -101,13 +101,13 @@
    (do ///.monad
      [self_name meta.current_module_name]
      (function (_ state)
-       (#try.Success [(update@ #.modules
-                               (plist.revised self_name (update@ #.imports (function (_ current)
-                                                                             (if (list.any? (text\= module)
-                                                                                            current)
-                                                                               current
-                                                                               (#.Item module current)))))
-                               state)
+       (#try.Success [(revised@ #.modules
+                                (plist.revised self_name (revised@ #.imports (function (_ current)
+                                                                               (if (list.any? (text\= module)
+                                                                                              current)
+                                                                                 current
+                                                                                 (#.Item module current)))))
+                                state)
                       []])))))
 
 (def: .public (alias alias module)
@@ -116,10 +116,10 @@
    (do ///.monad
      [self_name meta.current_module_name]
      (function (_ state)
-       (#try.Success [(update@ #.modules
-                               (plist.revised self_name (update@ #.module_aliases (: (-> (List [Text Text]) (List [Text Text]))
-                                                                                     (|>> (#.Item [alias module])))))
-                               state)
+       (#try.Success [(revised@ #.modules
+                                (plist.revised self_name (revised@ #.module_aliases (: (-> (List [Text Text]) (List [Text Text]))
+                                                                                       (|>> (#.Item [alias module])))))
+                                state)
                       []])))))
 
 (def: .public (exists? module)
@@ -127,7 +127,7 @@
   (///extension.lifted
    (function (_ state)
      (|> state
-         (get@ #.modules)
+         (value@ #.modules)
          (plist.value module)
          (case> (#.Some _) #1 #.None #0)
          [state] #try.Success))))
@@ -139,15 +139,15 @@
      [self_name meta.current_module_name
       self meta.current_module]
      (function (_ state)
-       (case (plist.value name (get@ #.definitions self))
+       (case (plist.value name (value@ #.definitions self))
          #.None
-         (#try.Success [(update@ #.modules
-                                 (plist.has self_name
-                                            (update@ #.definitions
-                                                     (: (-> (List [Text Global]) (List [Text Global]))
-                                                        (|>> (#.Item [name definition])))
-                                                     self))
-                                 state)
+         (#try.Success [(revised@ #.modules
+                                  (plist.has self_name
+                                             (revised@ #.definitions
+                                                       (: (-> (List [Text Global]) (List [Text Global]))
+                                                          (|>> (#.Item [name definition])))
+                                                       self))
+                                  state)
                         []])
 
          (#.Some already_existing)
@@ -157,9 +157,9 @@
   (-> Nat Text (Operation Any))
   (///extension.lifted
    (function (_ state)
-     (#try.Success [(update@ #.modules
-                             (plist.has name (..empty hash))
-                             state)
+     (#try.Success [(revised@ #.modules
+                              (plist.has name (..empty hash))
+                              state)
                     []]))))
 
 (def: .public (with_module hash name action)
@@ -176,15 +176,15 @@
      (-> Text (Operation Any))
      (///extension.lifted
       (function (_ state)
-        (case (|> state (get@ #.modules) (plist.value module_name))
+        (case (|> state (value@ #.modules) (plist.value module_name))
           (#.Some module)
-          (let [active? (case (get@ #.module_state module)
+          (let [active? (case (value@ #.module_state module)
                           #.Active #1
                           _        #0)]
             (if active?
-              (#try.Success [(update@ #.modules
-                                      (plist.has module_name (set@ #.module_state  module))
-                                      state)
+              (#try.Success [(revised@ #.modules
+                                       (plist.has module_name (with@ #.module_state  module))
+                                       state)
                              []])
               ((/.except' can_only_change_state_of_active_module [module_name ])
                state)))
@@ -196,10 +196,10 @@
      (-> Text (Operation Bit))
      (///extension.lifted
       (function (_ state)
-        (case (|> state (get@ #.modules) (plist.value module_name))
+        (case (|> state (value@ #.modules) (plist.value module_name))
           (#.Some module)
           (#try.Success [state
-                         (case (get@ #.module_state module)
+                         (case (value@ #.module_state module)
                             #1
                            _     #0)])
 
@@ -216,9 +216,9 @@
      (-> Text (Operation ))
      (///extension.lifted
       (function (_ state)
-        (case (|> state (get@ #.modules) (plist.value module_name))
+        (case (|> state (value@ #.modules) (plist.value module_name))
           (#.Some module)
-          (#try.Success [state (get@  module)])
+          (#try.Success [state (value@  module)])
 
           #.None
           ((/.except' unknown_module module_name) state)))))]
@@ -258,18 +258,18 @@
                       (text\= self_name type_module))]
     (///extension.lifted
      (function (_ state)
-       (case (|> state (get@ #.modules) (plist.value self_name))
+       (case (|> state (value@ #.modules) (plist.value self_name))
          (#.Some module)
          (let [namespaced_tags (list\map (|>> [self_name]) tags)]
-           (#try.Success [(update@ #.modules
-                                   (plist.revised self_name
-                                                  (|>> (update@ #.tags (function (_ tag_bindings)
-                                                                         (list\fold (function (_ [idx tag] table)
-                                                                                      (plist.has tag [idx namespaced_tags exported? type] table))
-                                                                                    tag_bindings
-                                                                                    (list.enumeration tags))))
-                                                       (update@ #.types (plist.has type_name [namespaced_tags exported? type]))))
-                                   state)
+           (#try.Success [(revised@ #.modules
+                                    (plist.revised self_name
+                                                   (|>> (revised@ #.tags (function (_ tag_bindings)
+                                                                           (list\fold (function (_ [idx tag] table)
+                                                                                        (plist.has tag [idx namespaced_tags exported? type] table))
+                                                                                      tag_bindings
+                                                                                      (list.enumeration tags))))
+                                                        (revised@ #.types (plist.has type_name [namespaced_tags exported? type]))))
+                                    state)
                           []]))
          #.None
          ((/.except' unknown_module self_name) state))))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/scope.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/scope.lux
index 052173d1f..44d3b7deb 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/scope.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/scope.lux
@@ -32,13 +32,13 @@
 (def: (local? name scope)
   (-> Text Scope Bit)
   (|> scope
-      (get@ [#.locals #.mappings])
+      (value@ [#.locals #.mappings])
       (plist.contains? name)))
 
 (def: (local name scope)
   (-> Text Scope (Maybe [Type Variable]))
   (|> scope
-      (get@ [#.locals #.mappings])
+      (value@ [#.locals #.mappings])
       (plist.value name)
       (maybe\map (function (_ [type value])
                    [type (#variable.Local value)]))))
@@ -46,18 +46,18 @@
 (def: (captured? name scope)
   (-> Text Scope Bit)
   (|> scope
-      (get@ [#.captured #.mappings])
+      (value@ [#.captured #.mappings])
       (plist.contains? name)))
 
 (def: (captured name scope)
   (-> Text Scope (Maybe [Type Variable]))
   (loop [idx 0
-         mappings (get@ [#.captured #.mappings] scope)]
+         mappings (value@ [#.captured #.mappings] scope)]
     (case mappings
       (#.Item [_name [_source_type _source_ref]] mappings')
       (if (text\= name _name)
         (#.Some [_source_type (#variable.Foreign idx)])
-        (recur (inc idx) mappings'))
+        (recur (++ idx) mappings'))
 
       #.End
       #.None)))
@@ -81,7 +81,7 @@
   (///extension.lifted
    (function (_ state)
      (let [[inner outer] (|> state
-                             (get@ #.scopes)
+                             (value@ #.scopes)
                              (list.split_when (|>> (reference? name))))]
        (case outer
          #.End
@@ -92,17 +92,17 @@
                                                (..reference name top_outer))
                [ref inner'] (list\fold (: (-> Scope [Variable (List Scope)] [Variable (List Scope)])
                                           (function (_ scope ref+inner)
-                                            [(#variable.Foreign (get@ [#.captured #.counter] scope))
-                                             (#.Item (update@ #.captured
-                                                              (: (-> Foreign Foreign)
-                                                                 (|>> (update@ #.counter inc)
-                                                                      (update@ #.mappings (plist.has name [ref_type (product.left ref+inner)]))))
-                                                              scope)
+                                            [(#variable.Foreign (value@ [#.captured #.counter] scope))
+                                             (#.Item (revised@ #.captured
+                                                               (: (-> Foreign Foreign)
+                                                                  (|>> (revised@ #.counter ++)
+                                                                       (revised@ #.mappings (plist.has name [ref_type (product.left ref+inner)]))))
+                                                               scope)
                                                      (product.right ref+inner))]))
                                        [init_ref #.End]
                                        (list.reversed inner))
                scopes (list\compose inner' outer)]
-           (#.Right [(set@ #.scopes scopes state)
+           (#.Right [(with@ #.scopes scopes state)
                      (#.Some [ref_type ref])]))
          )))))
 
@@ -112,23 +112,23 @@
 (def: .public (with_local [name type] action)
   (All [a] (-> [Text Type] (Operation a) (Operation a)))
   (function (_ [bundle state])
-    (case (get@ #.scopes state)
+    (case (value@ #.scopes state)
       (#.Item head tail)
-      (let [old_mappings (get@ [#.locals #.mappings] head)
-            new_var_id (get@ [#.locals #.counter] head)
-            new_head (update@ #.locals
-                              (: (-> Local Local)
-                                 (|>> (update@ #.counter inc)
-                                      (update@ #.mappings (plist.has name [type new_var_id]))))
-                              head)]
-        (case (///.result' [bundle (set@ #.scopes (#.Item new_head tail) state)]
+      (let [old_mappings (value@ [#.locals #.mappings] head)
+            new_var_id (value@ [#.locals #.counter] head)
+            new_head (revised@ #.locals
+                               (: (-> Local Local)
+                                  (|>> (revised@ #.counter ++)
+                                       (revised@ #.mappings (plist.has name [type new_var_id]))))
+                               head)]
+        (case (///.result' [bundle (with@ #.scopes (#.Item new_head tail) state)]
                            action)
           (#try.Success [[bundle' state'] output])
-          (case (get@ #.scopes state')
+          (case (value@ #.scopes state')
             (#.Item head' tail')
-            (let [scopes' (#.Item (set@ #.locals (get@ #.locals head) head')
+            (let [scopes' (#.Item (with@ #.locals (value@ #.locals head) head')
                                   tail')]
-              (#try.Success [[bundle' (set@ #.scopes scopes' state')]
+              (#try.Success [[bundle' (with@ #.scopes scopes' state')]
                              output]))
 
             _
@@ -161,19 +161,19 @@
 (def: .public (with_scope name action)
   (All [a] (-> Text (Operation a) (Operation a)))
   (function (_ [bundle state])
-    (let [parent_name (case (get@ #.scopes state)
+    (let [parent_name (case (value@ #.scopes state)
                         #.End
                         (list)
                         
                         (#.Item top _)
-                        (get@ #.name top))]
-      (case (action [bundle (update@ #.scopes
-                                     (|>> (#.Item (scope parent_name name)))
-                                     state)])
+                        (value@ #.name top))]
+      (case (action [bundle (revised@ #.scopes
+                                      (|>> (#.Item (scope parent_name name)))
+                                      state)])
         (#try.Success [[bundle' state'] output])
-        (#try.Success [[bundle' (update@ #.scopes
-                                         (|>> list.tail (maybe.else (list)))
-                                         state')]
+        (#try.Success [[bundle' (revised@ #.scopes
+                                          (|>> list.tail (maybe.else (list)))
+                                          state')]
                        output])
 
         (#try.Failure error)
@@ -185,9 +185,9 @@
   (Operation Register)
   (///extension.lifted
    (function (_ state)
-     (case (get@ #.scopes state)
+     (case (value@ #.scopes state)
        (#.Item top _)
-       (#try.Success [state (get@ [#.locals #.counter] top)])
+       (#try.Success [state (value@ [#.locals #.counter] top)])
 
        #.End
        (exception.except ..cannot_get_next_reference_when_there_is_no_scope [])))))
@@ -204,5 +204,5 @@
 (def: .public (environment scope)
   (-> Scope (List Variable))
   (|> scope
-      (get@ [#.captured #.mappings])
+      (value@ [#.captured #.mappings])
       (list\map (function (_ [_ [_ ref]]) (ref_variable ref)))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/structure.lux
index 56924a102..fe296c83e 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/structure.lux
@@ -299,11 +299,11 @@
 ... re-implementing the same functionality for records makes no sense.
 ... Records, thus, get transformed into tuples by ordering the elements.
 (def: .public (order record)
-  (-> (List [Name Code]) (Operation [(List Code) Type]))
+  (-> (List [Name Code]) (Operation [Nat (List Code) Type]))
   (case record
-    ... empty_record = empty_tuple = unit = []
+    ... empty_record = empty_tuple = unit/any = []
     #.End
-    (\ ///.monad in [(list) Any])
+    (\ ///.monad in [0 (list) Any])
 
     (#.Item [head_k head_v] _)
     (do {! ///.monad}
@@ -334,7 +334,7 @@
        .let [ordered_tuple (list\map (function (_ idx)
                                        (maybe.trusted (dictionary.value idx idx->val)))
                                      tuple_range)]]
-      (in [ordered_tuple recordT]))
+      (in [size_ts ordered_tuple recordT]))
     ))
 
 (def: .public (record archive analyse members)
@@ -349,12 +349,12 @@
     _
     (do {! ///.monad}
       [members (normal members)
-       [membersC recordT] (order members)
+       [record_size membersC recordT] (..order members)
        expectedT (///extension.lifted meta.expected_type)]
       (case expectedT
         (#.Var _)
         (do !
-          [inferenceT (//inference.record recordT)
+          [inferenceT (//inference.record record_size recordT)
            [inferredT membersA] (//inference.general archive analyse inferenceT membersC)]
           (in (/.tuple membersA)))
 
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/type.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/type.lux
index ed980b1e6..f1ffa9026 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/type.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/type.lux
@@ -18,15 +18,15 @@
 
 (def: .public (with_type expected)
   (All [a] (-> Type (Operation a) (Operation a)))
-  (///extension.localized (get@ #.expected) (set@ #.expected)
+  (///extension.localized (value@ #.expected) (with@ #.expected)
                           (function.constant (#.Some expected))))
 
 (def: .public (with_env action)
   (All [a] (-> (Check a) (Operation a)))
   (function (_ (^@ stateE [bundle state]))
-    (case (action (get@ #.type_context state))
+    (case (action (value@ #.type_context state))
       (#try.Success [context' output])
-      (#try.Success [[bundle (set@ #.type_context context' state)]
+      (#try.Success [[bundle (with@ #.type_context context' state)]
                      output])
 
       (#try.Failure error)
@@ -34,7 +34,7 @@
 
 (def: .public with_fresh_env
   (All [a] (-> (Operation a) (Operation a)))
-  (///extension.localized (get@ #.type_context) (set@ #.type_context)
+  (///extension.localized (value@ #.type_context) (with@ #.type_context)
                           (function.constant check.fresh_context)))
 
 (def: .public (infer actualT)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/directive.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/directive.lux
index 81fc21caa..cc34e04cf 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/directive.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/directive.lux
@@ -68,7 +68,7 @@
             (case expansion
               (^ (list&  referrals))
               (|> (recur archive )
-                  (\ ! map (update@ #/.referrals (list\compose referrals))))
+                  (\ ! map (revised@ #/.referrals (list\compose referrals))))
 
               _
               (|> expansion
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/jvm.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/jvm.lux
index aa1730655..508242cd8 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/jvm.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/jvm.lux
@@ -1140,24 +1140,22 @@
                     phase.lifted)]
     (in (and (java/lang/Object::equals class (java/lang/reflect/Constructor::getDeclaringClass constructor))
              (n.= (list.size inputsJT) (list.size parameters))
-             (list\fold (function (_ [expectedJC actualJC] prev)
-                          (and prev
-                               (jvm\= expectedJC (: (Type Value)
-                                                    (case (jvm_parser.var? actualJC)
-                                                      (#.Some name)
-                                                      (|> aliasing
-                                                          (dictionary.value name)
-                                                          (maybe.else name)
-                                                          jvm.var)
-
-                                                      #.None
-                                                      actualJC)))))
-                        true
-                        (list.zipped/2 parameters inputsJT))))))
+             (list.every? (function (_ [expectedJC actualJC])
+                            (jvm\= expectedJC (: (Type Value)
+                                                 (case (jvm_parser.var? actualJC)
+                                                   (#.Some name)
+                                                   (|> aliasing
+                                                       (dictionary.value name)
+                                                       (maybe.else name)
+                                                       jvm.var)
+
+                                                   #.None
+                                                   actualJC))))
+                          (list.zipped/2 parameters inputsJT))))))
 
 (def: index_parameter
   (-> Nat .Type)
-  (|>> (n.* 2) inc #.Parameter))
+  (|>> (n.* 2) ++ #.Parameter))
 
 (def: (jvm_type_var_mapping owner_tvars method_tvars)
   (-> (List Text) (List Text) [(List .Type) Mapping])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux
index 61f4e3763..0242d94b6 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux
@@ -279,9 +279,9 @@
                                                         super_classT
                                                         super_interfaceT+)]
          state (extension.lifted phase.get_state)
-         .let [analyse (get@ [#directive.analysis #directive.phase] state)
-               synthesize (get@ [#directive.synthesis #directive.phase] state)
-               generate (get@ [#directive.generation #directive.phase] state)]
+         .let [analyse (value@ [#directive.analysis #directive.phase] state)
+               synthesize (value@ [#directive.synthesis #directive.phase] state)
+               generate (value@ [#directive.generation #directive.phase] state)]
          methods (monad.map ! (..method_definition [mapping selfT] [analyse synthesize generate])
                             methods)
          ... _ (directive.lifted_generation
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/lux.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/lux.lux
index 604292cdd..329c79611 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/lux.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/lux.lux
@@ -63,7 +63,7 @@
 (def: (context [module_id artifact_id])
   (-> Context Context)
   ... TODO: Find a better way that doesn't rely on clever tricks.
-  [module_id (n.- (inc artifact_id) 0)])
+  [module_id (n.- (++ artifact_id) 0)])
 
 ... TODO: Inline "evaluate!'" into "evaluate!" ASAP
 (def: (evaluate!' archive generate code//type codeS)
@@ -87,9 +87,9 @@
     (-> Archive Type Code (Operation anchor expression directive [Type expression Any])))
   (do phase.monad
     [state (///.lifted phase.get_state)
-     .let [analyse (get@ [#/////directive.analysis #/////directive.phase] state)
-           synthesize (get@ [#/////directive.synthesis #/////directive.phase] state)
-           generate (get@ [#/////directive.generation #/////directive.phase] state)]
+     .let [analyse (value@ [#/////directive.analysis #/////directive.phase] state)
+           synthesize (value@ [#/////directive.synthesis #/////directive.phase] state)
+           generate (value@ [#/////directive.generation #/////directive.phase] state)]
      [_ codeA] (/////directive.lifted_analysis
                 (/////analysis.with_scope
                   (typeA.with_fresh_env
@@ -123,9 +123,9 @@
         (Operation anchor expression directive [Type expression Any])))
   (do {! phase.monad}
     [state (///.lifted phase.get_state)
-     .let [analyse (get@ [#/////directive.analysis #/////directive.phase] state)
-           synthesize (get@ [#/////directive.synthesis #/////directive.phase] state)
-           generate (get@ [#/////directive.generation #/////directive.phase] state)]
+     .let [analyse (value@ [#/////directive.analysis #/////directive.phase] state)
+           synthesize (value@ [#/////directive.synthesis #/////directive.phase] state)
+           generate (value@ [#/////directive.generation #/////directive.phase] state)]
      [_ code//type codeA] (/////directive.lifted_analysis
                            (/////analysis.with_scope
                              (typeA.with_fresh_env
@@ -175,9 +175,9 @@
            (Operation anchor expression directive [expression Any])))
      (do phase.monad
        [state (///.lifted phase.get_state)
-        .let [analyse (get@ [#/////directive.analysis #/////directive.phase] state)
-              synthesize (get@ [#/////directive.synthesis #/////directive.phase] state)
-              generate (get@ [#/////directive.generation #/////directive.phase] state)]
+        .let [analyse (value@ [#/////directive.analysis #/////directive.phase] state)
+              synthesize (value@ [#/////directive.synthesis #/////directive.phase] state)
+              generate (value@ [#/////directive.generation #/////directive.phase] state)]
         [_ codeA] (/////directive.lifted_analysis
                    (/////analysis.with_scope
                      (typeA.with_fresh_env
@@ -199,15 +199,15 @@
   (do phase.monad
     [[bundle state] phase.get_state
      .let [eval (/////analysis/evaluation.evaluator expander
-                                                    (get@ [#/////directive.synthesis #/////directive.state] state)
-                                                    (get@ [#/////directive.generation #/////directive.state] state)
-                                                    (get@ [#/////directive.generation #/////directive.phase] state))]]
+                                                    (value@ [#/////directive.synthesis #/////directive.state] state)
+                                                    (value@ [#/////directive.generation #/////directive.state] state)
+                                                    (value@ [#/////directive.generation #/////directive.phase] state))]]
     (phase.set_state [bundle
-                      (update@ [#/////directive.analysis #/////directive.state]
-                               (: (-> /////analysis.State+ /////analysis.State+)
-                                  (|>> product.right
-                                       [(///analysis.bundle eval host_analysis)]))
-                               state)])))
+                      (revised@ [#/////directive.analysis #/////directive.state]
+                                (: (-> /////analysis.State+ /////analysis.State+)
+                                   (|>> product.right
+                                        [(///analysis.bundle eval host_analysis)]))
+                                state)])))
 
 (def: (announce_definition! short type)
   (All [anchor expression directive]
@@ -310,8 +310,8 @@
     (function (_ extension_name phase archive [alias def_name])
       (do phase.monad
         [_ (///.lifted
-            (phase.sub [(get@ [#/////directive.analysis #/////directive.state])
-                        (set@ [#/////directive.analysis #/////directive.state])]
+            (phase.sub [(value@ [#/////directive.analysis #/////directive.state])
+                        (with@ [#/////directive.analysis #/////directive.state])]
                        (define_alias alias def_name)))]
         (in /////directive.no_requirements)))]))
 
@@ -405,9 +405,9 @@
       (^ (list programC))
       (do phase.monad
         [state (///.lifted phase.get_state)
-         .let [analyse (get@ [#/////directive.analysis #/////directive.phase] state)
-               synthesize (get@ [#/////directive.synthesis #/////directive.phase] state)
-               generate (get@ [#/////directive.generation #/////directive.phase] state)]
+         .let [analyse (value@ [#/////directive.analysis #/////directive.phase] state)
+               synthesize (value@ [#/////directive.synthesis #/////directive.phase] state)
+               generate (value@ [#/////directive.generation #/////directive.phase] state)]
          programS (prepare_program archive analyse synthesize programC)
          current_module (/////directive.lifted_analysis
                          (///.lifted meta.current_module_name))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
index a8caf13bf..e18b6d356 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux
@@ -128,7 +128,7 @@
                                   list\join)
                         conditionalsG (|> conditionalsG+
                                           (list\map product.right)
-                                          (monad.seq _.monad))]]
+                                          (monad.all _.monad))]]
                  (in (do _.monad
                        [@else _.new_label]
                        ($_ _.composite
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux
index a749fb6cd..be90b8876 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux
@@ -948,7 +948,7 @@
                             (monad.map _.monad (.function (_ register)
                                                  ($_ _.composite
                                                      (_.aload 0)
-                                                     (_.aload (inc register))
+                                                     (_.aload (++ register))
                                                      (_.putfield class (///reference.foreign_name register) $Object)))))]
     (method.method method.public "" (anonymous_init_method env)
                    (list)
@@ -966,7 +966,7 @@
     (in ($_ _.composite
             (_.new class)
             _.dup
-            (monad.seq _.monad captureG+)
+            (monad.all _.monad captureG+)
             (_.invokespecial class "" (anonymous_init_method env))))))
 
 (def: (returnG returnT)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux
index 45d6873da..02ddfbd71 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux
@@ -84,7 +84,7 @@
                   .let [foreigns (|> conditionals
                                      (list\map (|>> product.right synthesis.path/then //case.dependencies))
                                      (list& (//case.dependencies (synthesis.path/then else)))
-                                     list.joined
+                                     list.together
                                      (set.of_list _.hash)
                                      set.list)
                         @expression (_.constant (reference.artifact [context_module context_artifact]))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
index f683c9b9a..c531d05d9 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux
@@ -7,7 +7,7 @@
      ["." function]
      ["." try]
      ["<>" parser
-      ["" synthesis (#+ Parser)]]]
+      ["<.>" synthesis (#+ Parser)]]]
     [data
      ["." product]
      ["." text
@@ -41,7 +41,7 @@
          (-> Text (Generator s))]
         Handler))
   (function (_ extension_name phase archive input)
-    (case (.result parser input)
+    (case (.result parser input)
       (#try.Success input')
       (handler extension_name phase archive input')
 
@@ -51,11 +51,11 @@
 ... TODO: Get rid of this ASAP
 (def: lux::syntax_char_case!
   (..custom [($_ <>.and
-                 .any
-                 .any
-                 (<>.some (.tuple ($_ <>.and
-                                         (.tuple (<>.many .i64))
-                                         .any))))
+                 .any
+                 .any
+                 (<>.some (.tuple ($_ <>.and
+                                                 (.tuple (<>.many .i64))
+                                                 .any))))
              (function (_ extension_name phase archive [input else conditionals])
                (do {! /////.monad}
                  [inputG (phase archive input)
@@ -101,9 +101,9 @@
           (/.install "and" (binary (product.uncurried //runtime.i64::and)))
           (/.install "or" (binary (product.uncurried //runtime.i64::or)))
           (/.install "xor" (binary (product.uncurried //runtime.i64::xor)))
-          (/.install "left-shift" (binary (product.uncurried //runtime.i64::left_shift)))
-          (/.install "right-shift" (binary (product.uncurried //runtime.i64::right_shift)))
-          
+          (/.install "left-shift" (binary (product.uncurried //runtime.i64::left_shifted)))
+          (/.install "right-shift" (binary (product.uncurried //runtime.i64::right_shifted)))
+
           (/.install "<" (binary (product.uncurried _.<)))
           (/.install "=" (binary (product.uncurried _.=)))
           (/.install "+" (binary (product.uncurried (..capped _.+))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/case.lux
index 7bc4f46df..fae91850c 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/case.lux
@@ -124,7 +124,7 @@
                   (list))))))]
 
   [left_choice  _.nil         (<|)]
-  [right_choice (_.string "") inc]
+  [right_choice (_.string "") ++]
   )
 
 (def: (alternation @otherwise pre! post!)
@@ -248,7 +248,7 @@
      pattern_matching! (pattern_matching $output expression archive pathP)
      .let [storage (|> pathP
                        ////synthesis/case.storage
-                       (get@ #////synthesis/case.bindings)
+                       (value@ #////synthesis/case.bindings)
                        set.list
                        (list\map (function (_ register)
                                    [(..register register)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/function.lux
index 917ab8503..41faa95b6 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/function.lux
@@ -56,7 +56,7 @@
                     (_.funcall/+ [(_.function/1 @closure) inits]))))))
 
 (def: input
-  (|>> inc //case.register))
+  (|>> ++ //case.register))
 
 (def: .public (function expression archive [environment arity bodyS])
   (Generator (Abstraction Synthesis))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux
index db8c9b18e..7eca077bf 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux (#- Location inc)
+   [lux (#- Location)
     ["." meta]
     [abstract
      ["." monad (#+ do)]]
@@ -90,13 +90,13 @@
 (syntax: .public (with_vars [vars (.tuple (<>.some .local_identifier))
                              body .any])
   (do {! meta.monad}
-    [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))]
+    [ids (monad.all ! (list.repeated (list.size vars) meta.seed))]
     (in (list (` (let [(~+ (|> vars
                                (list.zipped/2 ids)
                                (list\map (function (_ [id var])
                                            (list (code.local_identifier var)
                                                  (` (_.var (~ (code.text (format "v" (%.nat id)))))))))
-                               list.joined))]
+                               list.together))]
                    (~ body)))))))
 
 (syntax: (runtime: [declaration (<>.or .local_identifier
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/structure.lux
index df957a3cd..6755b8f33 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/structure.lux
@@ -31,7 +31,7 @@
 (def: .public (variant expression archive [lefts right? valueS])
   (Generator (Variant Synthesis))
   (let [tag (if right?
-              (inc lefts)
+              (++ lefts)
               lefts)]
     (///////phase\map (|>> [tag right?] //runtime.variant)
                       (expression archive valueS))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/extension.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/extension.lux
index 6a5f40ef7..3802776c8 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/extension.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/extension.lux
@@ -36,7 +36,7 @@
                   type .any])
   (with_identifiers [g!_ g!extension g!name g!phase g!archive g!inputs g!of g!anchor g!expression g!directive]
     (do {! meta.monad}
-      [g!input+ (monad.seq ! (list.repeated arity (macro.identifier "input")))]
+      [g!input+ (monad.all ! (list.repeated arity (macro.identifier "input")))]
       (in (list (` (def: .public ((~ (code.local_identifier name)) (~ g!extension))
                      (All [(~ g!anchor) (~ g!expression) (~ g!directive)]
                        (-> ((~ type) (~ g!expression))
@@ -48,7 +48,7 @@
                            [(~+ (|> g!input+
                                     (list\map (function (_ g!input)
                                                 (list g!input (` ((~ g!phase) (~ g!archive) (~ g!input))))))
-                                    list.joined))]
+                                    list.together))]
                            ((~' in) ((~ g!extension) [(~+ g!input+)])))
 
                          (~' _)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/case.lux
index b89ca3c5a..9b0431808 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/case.lux
@@ -144,7 +144,7 @@
              (push_cursor! @temp)))))]
 
   [left_choice  _.null        (<|)]
-  [right_choice (_.string "") inc]
+  [right_choice (_.string "") ++]
   )
 
 (def: (alternation pre! post!)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/function.lux
index cccb72dd5..fdfc768a0 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/function.lux
@@ -56,7 +56,7 @@
   (_.var "curried"))
 
 (def: input
-  (|>> inc //case.register))
+  (|>> ++ //case.register))
 
 (def: @@arguments
   (_.var "arguments"))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux
index 57916d38a..368c69bb0 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux
@@ -68,7 +68,7 @@
 
 (def: .public low
   (-> (I64 Any) (I64 Any))
-  (let [mask (dec (i64.left_shifted 32 1))]
+  (let [mask (-- (i64.left_shifted 32 1))]
     (|>> (i64.and mask))))
 
 (def: .public unit
@@ -88,13 +88,13 @@
 (syntax: .public (with_vars [vars (.tuple (<>.some .local_identifier))
                              body .any])
   (do {! meta.monad}
-    [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))]
+    [ids (monad.all ! (list.repeated (list.size vars) meta.seed))]
     (in (list (` (let [(~+ (|> vars
                                (list.zipped/2 ids)
                                (list\map (function (_ [id var])
                                            (list (code.local_identifier var)
                                                  (` (_.var (~ (code.text (format "v" (%.nat id)))))))))
-                               list.joined))]
+                               list.together))]
                    (~ body)))))))
 
 (syntax: (runtime: [declaration (<>.or .local_identifier
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/structure.lux
index ebaaa7f49..6253b38b5 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/structure.lux
@@ -31,7 +31,7 @@
 (def: .public (variant generate archive [lefts right? valueS])
   (Generator (Variant Synthesis))
   (let [tag (if right?
-              (inc lefts)
+              (++ lefts)
               lefts)]
     (///////phase\map (//runtime.variant (_.i32 (.int tag))
                                          (//runtime.flag right?))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/case.lux
index aebb30404..417f74d2d 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/case.lux
@@ -174,7 +174,7 @@
     (#synthesis.Alt leftP rightP)
     (do phase.monad
       [@alt_else //runtime.forge_label
-       left! (path' (inc stack_depth) @alt_else @end phase archive leftP)
+       left! (path' (++ stack_depth) @alt_else @end phase archive leftP)
        right! (path' stack_depth @else @end phase archive rightP)]
       (in ($_ _.composite
               _.dup
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function.lux
index f3938db06..5eafc6556 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function.lux
@@ -74,7 +74,7 @@
                           (if (arity.multiary? arity)
                             (|> (n.min arity /arity.maximum)
                                 list.indices
-                                (list\map (|>> inc (/apply.method classT environment arity @begin body)))
+                                (list\map (|>> ++ (/apply.method classT environment arity @begin body)))
                                 (list& (/implementation.method arity @begin body)))
                             (list (/implementation.method' //runtime.apply::name arity @begin body)))))]
     (do phase.monad
@@ -129,7 +129,7 @@
                            (function (_ batchG)
                              ($_ _.composite
                                  (_.checkcast /abstract.class)
-                                 (monad.seq _.monad batchG)
+                                 (monad.all _.monad batchG)
                                  (_.invokevirtual /abstract.class //runtime.apply::name (//runtime.apply::type (list.size batchG)))
                                  ))))
             ))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/count.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/count.lux
new file mode 100644
index 000000000..1ec854f71
--- /dev/null
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/count.lux
@@ -0,0 +1,34 @@
+(.module:
+  [library
+   [lux (#- type)
+    [control
+     ["." try]]
+    [target
+     [jvm
+      ["_" bytecode (#+ Bytecode)]
+      ["." type]
+      [encoding
+       [name (#+ External)]
+       ["." signed]]]]]]
+  ["." //// #_
+   ["#." abstract]])
+
+(def: .public field "partials")
+(def: .public type type.int)
+
+(def: .public initial
+  (Bytecode Any)
+  (|> +0
+      signed.s1
+      try.trusted
+      _.bipush))
+
+(def: this
+  _.aload_0)
+
+(def: .public value
+  (Bytecode Any)
+  ($_ _.composite
+      ..this
+      (_.getfield ////abstract.class ..field ..type)
+      ))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux
index 57d285e8a..19dc23779 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux
@@ -35,7 +35,7 @@
   ($_ _.composite
       (|> _.aconst_null
           (list.repeated amount)
-          (monad.seq _.monad))
+          (monad.all _.monad))
       (_\in [])))
 
 (def: .public (get class register)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial/count.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial/count.lux
deleted file mode 100644
index 30f27def6..000000000
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial/count.lux
+++ /dev/null
@@ -1,34 +0,0 @@
-(.module:
-  [library
-   [lux (#- type)
-    [control
-     ["." try]]
-    [target
-     [jvm
-      ["_" bytecode (#+ Bytecode)]
-      [encoding
-       [name (#+ External)]
-       ["." signed]]
-      ["." type]]]]]
-  ["." ///// #_
-   ["#." abstract]])
-
-(def: .public field "partials")
-(def: .public type type.int)
-
-(def: .public initial
-  (Bytecode Any)
-  (|> +0
-      signed.s1
-      try.trusted
-      _.bipush))
-
-(def: this
-  _.aload_0)
-
-(def: .public value
-  (Bytecode Any)
-  ($_ _.composite
-      ..this
-      (_.getfield /////abstract.class ..field ..type)
-      ))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/apply.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/apply.lux
index da3292be8..1addefe99 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/apply.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/apply.lux
@@ -79,7 +79,7 @@
 
 (def: .public (method class environment function_arity @begin body apply_arity)
   (-> (Type Class) (Environment Synthesis) Arity Label (Bytecode Any) Arity (Resource Method))
-  (let [num_partials (dec function_arity)
+  (let [num_partials (-- function_arity)
         over_extent (i.- (.int apply_arity)
                          (.int function_arity))]
     (method.method //.modifier ////runtime.apply::name
@@ -95,15 +95,15 @@
                                  [@default _.new_label
                                   @labelsH _.new_label
                                   @labelsT (|> _.new_label
-                                               (list.repeated (dec num_partials))
-                                               (monad.seq _.monad))
+                                               (list.repeated (-- num_partials))
+                                               (monad.all _.monad))
                                   .let [cases (|> (list\compose (#.Item [@labelsH @labelsT])
                                                                 (list @default))
                                                   list.enumeration
                                                   (list\map (function (_ [stage @case])
                                                               (let [current_partials (|> (list.indices stage)
                                                                                          (list\map (///partial.get class))
-                                                                                         (monad.seq _.monad))
+                                                                                         (monad.all _.monad))
                                                                     already_partial? (n.> 0 stage)
                                                                     exact_match? (i.= over_extent (.int stage))
                                                                     has_more_than_necessary? (i.> over_extent (.int stage))]
@@ -135,10 +135,10 @@
                                                                           ... (i.< over_extent (.int stage))
                                                                           (let [current_environment (|> (list.indices (list.size environment))
                                                                                                         (list\map (///foreign.get class))
-                                                                                                        (monad.seq _.monad))
+                                                                                                        (monad.all _.monad))
                                                                                 missing_partials (|> _.aconst_null
                                                                                                      (list.repeated (|> num_partials (n.- apply_arity) (n.- stage)))
-                                                                                                     (monad.seq _.monad))]
+                                                                                                     (monad.all _.monad))]
                                                                             ($_ _.composite
                                                                                 (_.new class)
                                                                                 _.dup
@@ -150,7 +150,7 @@
                                                                                 missing_partials
                                                                                 (_.invokevirtual class //init.name (//init.type environment function_arity))
                                                                                 _.areturn)))))))
-                                                  (monad.seq _.monad))]]
+                                                  (monad.all _.monad))]]
                                  ($_ _.composite
                                      ///partial/count.value
                                      (_.tableswitch (try.trusted (signed.s4 +0)) @default [@labelsH @labelsT])
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/init.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/init.lux
index cd92f4aca..3c1922063 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/init.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/init.lux
@@ -45,7 +45,7 @@
 
 (def: (partials arity)
   (-> Arity (List (Type Value)))
-  (list.repeated (dec arity) ////type.value))
+  (list.repeated (-- arity) ////type.value))
 
 (def: .public (type environment arity)
   (-> (Environment Synthesis) Arity (Type category.Method))
@@ -64,7 +64,7 @@
 
 (def: .public (super environment_size arity)
   (-> Nat Arity (Bytecode Any))
-  (let [arity_register (inc environment_size)]
+  (let [arity_register (++ environment_size)]
     ($_ _.composite
         (if (arity.unary? arity)
           ..no_partials
@@ -80,7 +80,7 @@
       (list\map (function (_ register)
                   (put register
                        (_.aload (offset register)))))
-      (monad.seq _.monad)))
+      (monad.all _.monad)))
 
 (def: .public (method class environment arity)
   (-> (Type Class) (Environment Synthesis) Arity (Resource Method))
@@ -98,5 +98,5 @@
                                ////reference.this
                                (..super environment_size arity)
                                (store_all environment_size (///foreign.put class) offset_foreign)
-                               (store_all (dec arity) (///partial.put class) offset_partial)
+                               (store_all (-- arity) (///partial.put class) offset_partial)
                                _.return)))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux
index d153b35e9..c126f0296 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux
@@ -47,7 +47,7 @@
   ($_ _.composite
       (_.new class)
       _.dup
-      (monad.seq _.monad foreign_setup)
+      (monad.all _.monad foreign_setup)
       (///partial.new arity)
       (_.invokespecial class //init.name (//init.type environment arity))))
 
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/loop.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/loop.lux
index 6757bc987..9b69ffbae 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/loop.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/loop.lux
@@ -64,11 +64,11 @@
             ... should be the case.
             (|> updatesG
                 (list\map product.left)
-                (monad.seq _.monad))
+                (monad.all _.monad))
             (|> updatesG
                 list.reversed
                 (list\map product.right)
-                (monad.seq _.monad))
+                (monad.all _.monad))
             (_.goto @begin)))))
 
 (def: .public (scope translate archive [offset initsS+ iterationS])
@@ -83,7 +83,7 @@
                                            ($_ _.composite
                                                initG
                                                (_.astore (n.+ offset index)))))
-                               (monad.seq _.monad))]]
+                               (monad.all _.monad))]]
     (in ($_ _.composite
             initializationG
             (_.set_label @begin)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/runtime.lux
index f11c871c1..1d414ab77 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/runtime.lux
@@ -44,8 +44,7 @@
      [constant
       ["#/." arity]]
      [variable
-      [partial
-       ["#/." count]]]]]
+      ["#/." count]]]]
    ["//#" /// #_
     [//
      ["." version]
@@ -60,11 +59,14 @@
        [io (#+ lux_context)]
        [archive (#+ Archive)]]]]]])
 
-(type: .public Byte_Code Binary)
+(type: .public Byte_Code
+  Binary)
 
-(type: .public Definition [Text Byte_Code])
+(type: .public Definition
+  [Text Byte_Code])
 
-(type: .public Anchor [Label Register])
+(type: .public Anchor
+  [Label Register])
 
 (template [ ]
   [(type: .public 
@@ -542,7 +544,7 @@
 (def: generate_function
   (Operation Any)
   (let [apply::method+ (|> (enum.range n.enum
-                                       (inc //function/arity.minimum)
+                                       (++ //function/arity.minimum)
                                        //function/arity.maximum)
                            (list\map (function (_ arity)
                                        (method.method method.public ..apply::name (..apply::type arity)
@@ -553,7 +555,7 @@
                                                                                  (monad.map _.monad _.aload))]
                                                          ($_ _.composite
                                                              previous_inputs
-                                                             (_.invokevirtual //function.class ..apply::name (..apply::type (dec arity)))
+                                                             (_.invokevirtual //function.class ..apply::name (..apply::type (-- arity)))
                                                              (_.checkcast //function.class)
                                                              (_.aload arity)
                                                              (_.invokevirtual //function.class ..apply::name (..apply::type //function/arity.minimum))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/structure.lux
index 062708388..815c4fca0 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/structure.lux
@@ -50,12 +50,12 @@
       (in (do {! _.monad}
             [_ (_.int (.i64 (list.size membersS)))
              _ (_.anewarray $Object)]
-            (monad.seq ! membersI))))))
+            (monad.all ! membersI))))))
 
 (def: .public (tag lefts right?)
   (-> Nat Bit (Bytecode Any))
   (case (if right?
-          (.inc lefts)
+          (.++ lefts)
           lefts)
     0 _.iconst_0
     1 _.iconst_1
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/case.lux
index d21adc3ef..ef53de88c 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/case.lux
@@ -145,7 +145,7 @@
              (..push! @temp)))))]
 
   [left_choice  _.nil         (<|)]
-  [right_choice (_.string "") inc]
+  [right_choice (_.string "") ++]
   )
 
 (def: (alternation pre! post!)
@@ -250,7 +250,7 @@
 (def: .public dependencies
   (-> Path (List Var))
   (|>> ////synthesis/case.storage
-       (get@ #////synthesis/case.dependencies)
+       (value@ #////synthesis/case.dependencies)
        set.list
        (list\map (function (_ variable)
                    (.case variable
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/function.lux
index 65930fb75..509808d62 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/function.lux
@@ -57,7 +57,7 @@
        (_.apply/* inits @self)])))
 
 (def: input
-  (|>> inc //case.register))
+  (|>> ++ //case.register))
 
 (def: (@scope function_name)
   (-> Context Label)
@@ -82,7 +82,7 @@
            initialize! (list\fold (.function (_ post pre!)
                                     ($_ _.then
                                         pre!
-                                        (_.local/1 (..input post) (_.item (|> post inc .int _.int) @curried))))
+                                        (_.local/1 (..input post) (_.item (|> post ++ .int _.int) @curried))))
                                   initialize_self!
                                   (list.indices arity))
            pack (|>> (list) _.array)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux
index a1c3d7ca2..988274333 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux (#- Location inc)
+   [lux (#- Location)
     ["." meta]
     [abstract
      ["." monad (#+ do)]]
@@ -105,13 +105,13 @@
 (syntax: .public (with_vars [vars (.tuple (<>.some .local_identifier))
                              body .any])
   (do {! meta.monad}
-    [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))]
+    [ids (monad.all ! (list.repeated (list.size vars) meta.seed))]
     (in (list (` (let [(~+ (|> vars
                                (list.zipped/2 ids)
                                (list\map (function (_ [id var])
                                            (list (code.local_identifier var)
                                                  (` (_.var (~ (code.text (format "v" (%.nat id)))))))))
-                               list.joined))]
+                               list.together))]
                    (~ body)))))))
 
 (def: module_id
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/structure.lux
index 8c78dea65..6bbd167eb 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/structure.lux
@@ -31,7 +31,7 @@
 (def: .public (variant generate archive [lefts right? valueS])
   (Generator (Variant Synthesis))
   (let [tag (if right?
-              (inc lefts)
+              (++ lefts)
               lefts)]
     (///////phase\map (//runtime.variant tag right?)
                       (generate archive valueS))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/case.lux
index 04cce603a..28744fe33 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/case.lux
@@ -145,7 +145,7 @@
              (..push! @temp)))))]
 
   [left_choice  _.null        (<|)]
-  [right_choice (_.string "") inc]
+  [right_choice (_.string "") ++]
   )
 
 (def: (alternation pre! post!)
@@ -260,7 +260,7 @@
 (def: .public dependencies
   (-> Path (List Var))
   (|>> ////synthesis/case.storage
-       (get@ #////synthesis/case.dependencies)
+       (value@ #////synthesis/case.dependencies)
        set.list
        (list\map (function (_ variable)
                    (.case variable
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/function.lux
index 5cc25a622..175fadfc3 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/function.lux
@@ -41,7 +41,7 @@
   (|>> (///reference.foreign //reference.system) :expected))
 
 (def: input
-  (|>> inc //case.register))
+  (|>> ++ //case.register))
 
 (def: (@scope function_name)
   (-> Context Label)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/runtime.lux
index 6f69ba6e6..bd36c0785 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/runtime.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux (#- Location inc)
+   [lux (#- Location)
     ["." meta]
     [abstract
      ["." monad (#+ do)]]
@@ -73,13 +73,13 @@
 (syntax: .public (with_vars [vars (.tuple (<>.some .local_identifier))
                              body .any])
   (do {! meta.monad}
-    [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))]
+    [ids (monad.all ! (list.repeated (list.size vars) meta.seed))]
     (in (list (` (let [(~+ (|> vars
                                (list.zipped/2 ids)
                                (list\map (function (_ [id var])
                                            (list (code.local_identifier var)
                                                  (` (_.var (~ (code.text (format "v" (%.nat id)))))))))
-                               list.joined))]
+                               list.together))]
                    (~ body)))))))
 
 (def: module_id
@@ -342,7 +342,7 @@
 
 (def: .public low
   (-> (I64 Any) (I64 Any))
-  (let [mask (dec (i64.left_shifted 32 1))]
+  (let [mask (-- (i64.left_shifted 32 1))]
     (|>> (i64.and mask))))
 
 (runtime: (i64//right_shifted param subject)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/structure.lux
index 69979afd6..a7fe22f6d 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/structure.lux
@@ -36,7 +36,7 @@
 (def: .public (variant expression archive [lefts right? valueS])
   (Generator (Variant Synthesis))
   (let [tag (if right?
-              (inc lefts)
+              (++ lefts)
               lefts)]
     (///////phase\map (//runtime.variant tag right?)
                       (expression archive valueS))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/case.lux
index df2a1a3fc..5d66730d1 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/case.lux
@@ -148,7 +148,7 @@
            )))]
 
   [left_choice  _.none        (<|)]
-  [right_choice (_.string "") inc]
+  [right_choice (_.string "") ++]
   )
 
 (def: (with_looping in_closure? g!once body!)
@@ -298,7 +298,7 @@
 (def: .public dependencies
   (-> Path (List SVar))
   (|>> case.storage
-       (get@ #case.dependencies)
+       (value@ #case.dependencies)
        set.list
        (list\map (function (_ variable)
                    (.case variable
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/function.lux
index b1ce3f5c8..eee714ea8 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/function.lux
@@ -19,7 +19,7 @@
    ["/#" // #_
     ["#." reference]
     ["//#" /// #_
-     [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)]
+     [analysis (#+ Environment Abstraction Application Analysis)]
      [synthesis (#+ Synthesis)]
      ["#." generation (#+ Context)]
      ["//#" /// #_
@@ -64,7 +64,7 @@
       (in (_.apply/* @function inits)))))
 
 (def: input
-  (|>> inc //case.register))
+  (|>> ++ //case.register))
 
 (def: .public (function statement expression archive [environment arity bodyS])
   (-> Phase! (Generator (Abstraction Synthesis)))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/runtime.lux
index e26aca84a..207b74654 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/runtime.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux (#- inc)
+   [lux (#- ++)
     ["." meta]
     [abstract
      ["." monad (#+ do)]]
@@ -112,13 +112,13 @@
 (syntax: .public (with_vars [vars (.tuple (<>.some .local_identifier))
                              body .any])
   (do {! meta.monad}
-    [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))]
+    [ids (monad.all ! (list.repeated (list.size vars) meta.seed))]
     (in (list (` (let [(~+ (|> vars
                                (list.zipped/2 ids)
                                (list\map (function (_ [id var])
                                            (list (code.local_identifier var)
                                                  (` (_.var (~ (code.text (format "v" (%.nat id)))))))))
-                               list.joined))]
+                               list.together))]
                    (~ body)))))))
 
 (syntax: (runtime: [declaration (<>.or .local_identifier
@@ -395,7 +395,7 @@
                        ..none
                        (..some (..i64::64 idx)))))))
 
-(def: inc
+(def: ++
   (|>> (_.+ (_.int +1))))
 
 (def: (within? top value)
@@ -408,7 +408,7 @@
 
 (runtime: (text::char idx text)
   (_.if (|> idx (within? (_.len/1 text)))
-    (_.return (|> text (_.slice idx (..inc idx)) _.ord/1 ..i64::64))
+    (_.return (|> text (_.slice idx (..++ idx)) _.ord/1 ..i64::64))
     (_.raise (_.Exception/1 (_.unicode "[Lux Error] Cannot get char from text.")))))
 
 (def: runtime::text
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/structure.lux
index 1ab751074..756e3f00d 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/structure.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux #*
+   [lux (#- Variant Tuple)
     [abstract
      ["." monad (#+ do)]]
     [target
@@ -31,7 +31,7 @@
 (def: .public (variant generate archive [lefts right? valueS])
   (Generator (Variant Synthesis))
   (let [tag (if right?
-              (inc lefts)
+              (++ lefts)
               lefts)]
     (///////phase\map (//runtime.variant tag right?)
                       (generate archive valueS))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/case.lux
index cd41e5f3d..288fdc4bf 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/case.lux
@@ -187,7 +187,7 @@
                                 ..fail!
                                 (..push_cursor! $temp))))])
       ([/////synthesis.side/left  false (<|)]
-       [/////synthesis.side/right true  inc])
+       [/////synthesis.side/right true  ++])
 
       (^ (/////synthesis.member/left 0))
       (///////phase\in (_.item (_.int +1) ..peek))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/function.lux
index 34334c668..4ae6231c5 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/function.lux
@@ -68,8 +68,8 @@
 
 (def: (input_declaration register)
   (-> Register Expression)
-  (_.set! (|> register inc //case.register)
-          (|> $curried (_.item (|> register inc .int _.int)))))
+  (_.set! (|> register ++ //case.register)
+          (|> $curried (_.item (|> register ++ .int _.int)))))
 
 (def: .public (function expression archive [environment arity bodyS])
   (Generator (Abstraction Synthesis))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/common.lux
index e6134cb95..624826639 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/common.lux
@@ -67,7 +67,7 @@
                   arity s.nat])
   (with_identifiers [g!_ g!proc g!name g!translate g!inputs]
     (do {@ macro.monad}
-      [g!input+ (monad.seq @ (list.repeated arity (macro.identifier "input")))]
+      [g!input+ (monad.all @ (list.repeated arity (macro.identifier "input")))]
       (in (list (` (def: .public ((~ (code.local_identifier name)) (~ g!proc))
                        (-> (-> (..Vector (~ (code.nat arity)) Expression) Expression)
                            (-> Text ..Proc))
@@ -79,7 +79,7 @@
                                [(~+ (|> g!input+
                                         (list/map (function (_ g!input)
                                                     (list g!input (` ((~ g!translate) (~ g!input))))))
-                                        list.joined))]
+                                        list.together))]
                                ((~' in) ((~ g!proc) [(~+ g!input+)])))
 
                              (~' _)
@@ -125,7 +125,7 @@
   (-> Text Proc)
   (function (_ proc_name)
     (function (_ translate inputsS)
-      (case (s.result inputsS ($_ p.seq s.nat (s.tuple (p.many s.any)) s.any))
+      (case (s.result inputsS ($_ p.and s.nat (s.tuple (p.many s.any)) s.any))
         (#e.Success [offset initsS+ bodyS])
         (loopT.translate_loop translate offset initsS+ bodyS)
 
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux
index 36e86df65..21f2ded5a 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux (#- Location inc i64)
+   [lux (#- Location ++ i64)
     ["." meta]
     [abstract
      ["." monad (#+ do)]]
@@ -79,13 +79,13 @@
 (syntax: .public (with_vars [vars (.tuple (<>.some .local_identifier))
                              body .any])
   (do {! meta.monad}
-    [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))]
+    [ids (monad.all ! (list.repeated (list.size vars) meta.seed))]
     (in (list (` (let [(~+ (|> vars
                                (list.zipped/2 ids)
                                (list\map (function (_ [id var])
                                            (list (code.local_identifier var)
                                                  (` (_.var (~ (code.text (format "v" (%.nat id)))))))))
-                               list.joined))]
+                               list.together))]
                    (~ body)))))))
 
 (syntax: (runtime: [declaration (<>.or .local_identifier
@@ -718,7 +718,7 @@
       @frac::decode
       ))
 
-(def: inc
+(def: ++
   (-> Expression Expression)
   (|>> (_.+ (_.int +1))))
 
@@ -749,8 +749,8 @@
           ($_ _.then
               (_.set! idx (|> (_.apply_kw (list param (_.if (|> startF (_.= (_.int +0)))
                                                         subject
-                                                        (text_clip (inc startF)
-                                                                   (inc subjectL)
+                                                        (text_clip (++ startF)
+                                                                   (++ subjectL)
                                                                    subject)))
                                           (list ["fixed" (_.bool #1)])
                                           (_.var "regexpr"))
@@ -766,7 +766,7 @@
         (_.set! length (_.length text))
         (_.set! to (_.+ additional minimum))
         (_.if (within? length to)
-          (..some (text_clip (inc minimum) (inc to) text))
+          (..some (text_clip (++ minimum) (++ to) text))
           ..none))))
 
 (def: (char_at idx text)
@@ -777,7 +777,7 @@
 (runtime: (text::char text idx)
   (_.if (|> idx (within? (_.length text)))
     ($_ _.then
-        (_.set! idx (inc idx))
+        (_.set! idx (++ idx))
         (..some (i64::of_float (char_at idx text))))
     ..none))
 
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/structure.lux
index 3c74989df..748f56955 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/structure.lux
@@ -34,7 +34,7 @@
 (def: .public (variant expression archive [lefts right? valueS])
   (Generator (Variant Synthesis))
   (let [tag (if right?
-              (inc lefts)
+              (++ lefts)
               lefts)]
     (///////phase\map (|>> (//runtime.variant tag right?))
                       (expression archive valueS))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/reference.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/reference.lux
index 608bffb04..26ccf116d 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/reference.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/reference.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux #*
+   [lux (#- local)
     ["@" target]
     [data
      [text
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/case.lux
index fa95d1ba3..2af4e0dee 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/case.lux
@@ -151,7 +151,7 @@
              (..push! @temp)))))]
 
   [left_choice  _.nil         (<|)]
-  [right_choice (_.string "") inc]
+  [right_choice (_.string "") ++]
   )
 
 (def: (with_looping in_closure? g!once g!continue? body!)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux
index b64895b0e..192807829 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux
@@ -61,7 +61,7 @@
        (_.apply/* inits @self)])))
 
 (def: input
-  (|>> inc //case.register))
+  (|>> ++ //case.register))
 
 (def: .public (function statement expression archive [environment arity bodyS])
   (-> Phase! (Generator (Abstraction Synthesis)))
@@ -73,7 +73,7 @@
      .let [function_name (///reference.artifact [function_module function_artifact])
            @curried (_.local "curried")
            arityO (|> arity .int _.int)
-           limitO (|> arity dec .int _.int)
+           limitO (|> arity -- .int _.int)
            @num_args (_.local "num_args")
            @self (_.local function_name)
            initialize_self! (_.set (list (//case.register 0)) @self)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux
index 1bcb1d528..8a825e466 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux (#- inc)
+   [lux #*
     ["." meta]
     [abstract
      ["." monad (#+ do)]]
@@ -74,13 +74,13 @@
 (syntax: .public (with_vars [vars (.tuple (<>.some .local_identifier))
                              body .any])
   (do {! meta.monad}
-    [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))]
+    [ids (monad.all ! (list.repeated (list.size vars) meta.seed))]
     (in (list (` (let [(~+ (|> vars
                                (list.zipped/2 ids)
                                (list\map (function (_ [id var])
                                            (list (code.local_identifier var)
                                                  (` (_.local (~ (code.text (format "v" (%.nat id)))))))))
-                               list.joined))]
+                               list.together))]
                    (~ body)))))))
 
 (def: module_id
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/structure.lux
index f51cad8bc..57861f7d4 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/structure.lux
@@ -31,7 +31,7 @@
 (def: .public (variant generate archive [lefts right? valueS])
   (Generator (Variant Synthesis))
   (let [tag (if right?
-              (inc lefts)
+              (++ lefts)
               lefts)]
     (///////phase\map (//runtime.variant tag right?)
                       (generate archive valueS))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux
index 70dfee409..ae841dc5b 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux
@@ -180,7 +180,7 @@
                               ..fail!
                               (push_cursor! @temp))))])
       ([/////synthesis.side/left  false (<|)]
-       [/////synthesis.side/right true  inc])
+       [/////synthesis.side/right true  ++])
 
       (^ (/////synthesis.member/left 0))
       (///////phase\in (..push_cursor! (_.vector_ref/2 ..peek (_.int +0))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux
index c52ecd6dd..dc3c75d98 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux
@@ -42,7 +42,7 @@
                   arity .nat])
   (with_identifiers [g!_ g!extension g!name g!phase g!inputs]
     (do {! macro.monad}
-      [g!input+ (monad.seq ! (list.repeated arity (macro.identifier "input")))]
+      [g!input+ (monad.all ! (list.repeated arity (macro.identifier "input")))]
       (in (list (` (def: .public ((~ (code.local_identifier name)) (~ g!extension))
                      (-> (-> (..Vector (~ (code.nat arity)) Expression) Computation)
                          Handler)
@@ -53,7 +53,7 @@
                            [(~+ (|> g!input+
                                     (list\map (function (_ g!input)
                                                 (list g!input (` ((~ g!phase) (~ g!input))))))
-                                    list.joined))]
+                                    list.together))]
                            ((~' in) ((~ g!extension) [(~+ g!input+)])))
 
                          (~' _)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/function.lux
index a36feb036..58d8b55c6 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/function.lux
@@ -58,7 +58,7 @@
 (def: @missing (_.var "missing"))
 
 (def: input
-  (|>> inc //case.register))
+  (|>> ++ //case.register))
 
 (def: .public (function expression archive [environment arity bodyS])
   (Generator (Abstraction Synthesis))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux
index 95dfef826..452da33ef 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux (#- Location inc)
+   [lux (#- Location)
     ["." meta]
     [abstract
      ["." monad (#+ do)]]
@@ -61,13 +61,13 @@
 (syntax: .public (with_vars [vars (.tuple (<>.some .local_identifier))
                              body .any])
   (do {! meta.monad}
-    [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))]
+    [ids (monad.all ! (list.repeated (list.size vars) meta.seed))]
     (in (list (` (let [(~+ (|> vars
                                (list.zipped/2 ids)
                                (list\map (function (_ [id var])
                                            (list (code.local_identifier var)
                                                  (` (_.var (~ (code.text (format "v" (%.nat id)))))))))
-                               list.joined))]
+                               list.together))]
                    (~ body)))))))
 
 (syntax: (runtime: [declaration (<>.or .local_identifier
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux
index ebc933d4c..3c21b5e17 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux
@@ -34,7 +34,7 @@
 (def: .public (variant expression archive [lefts right? valueS])
   (Generator (Variant Synthesis))
   (let [tag (if right?
-              (inc lefts)
+              (++ lefts)
               lefts)]
     (///////phase\map (|>> [tag right?] //runtime.variant)
                       (expression archive valueS))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis.lux
index c234f9902..9e80130aa 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis.lux
@@ -59,8 +59,8 @@
         (case structure
           (#///analysis.Variant variant)
           (do phase.monad
-            [valueS (optimization' (get@ #///analysis.value variant))]
-            (in (/.variant (set@ #///analysis.value valueS variant))))
+            [valueS (optimization' (value@ #///analysis.value variant))]
+            (in (/.variant (with@ #///analysis.value valueS variant))))
 
           (#///analysis.Tuple tuple)
           (|> tuple
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/case.lux
index 7f2666d8b..1a178900e 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/case.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/case.lux
@@ -71,7 +71,7 @@
         thenC)
 
     (#///analysis.Complex (#///analysis.Tuple tuple))
-    (let [tuple::last (dec (list.size tuple))]
+    (let [tuple::last (-- (list.size tuple))]
       (list\fold (function (_ [tuple::lefts tuple::member] nextC)
                    (.case tuple::member
                      (#///analysis.Simple #///analysis.Unit)
@@ -81,7 +81,7 @@
                      (let [right? (n.= tuple::last tuple::lefts)
                            end?' (and end? right?)]
                        (<| (///\map (|>> (#/.Seq (#/.Access (#/.Member (if right?
-                                                                         (#.Right (dec tuple::lefts))
+                                                                         (#.Right (-- tuple::lefts))
                                                                          (#.Left tuple::lefts)))))))
                            (path' tuple::member end?')
                            (when> [(new> (not end?') [])] [(///\map ..clean_up)])
@@ -193,10 +193,10 @@
   (loop [lefts 0
          patterns patterns]
     (with_expansions [ (as_is (list))
-                       (as_is (recur (inc lefts)
+                       (as_is (recur (++ lefts)
                                                tail))
                        (as_is (if (list.empty? tail)
-                                        (#.Right (dec lefts))
+                                        (#.Right (-- lefts))
                                         (#.Left lefts)))]
       (case patterns
         #.End
@@ -308,7 +308,7 @@
   (case path
     (^ (/.path/seq #/.Pop path'))
     (let [[pops post_pops] (count_pops path')]
-      [(inc pops) post_pops])
+      [(++ pops) post_pops])
 
     _
     [0 path]))
@@ -341,8 +341,8 @@
       path_storage
 
       (^ (/.path/bind register))
-      (update@ #bindings (set.has register)
-               path_storage)
+      (revised@ #bindings (set.has register)
+                path_storage)
 
       (#/.Bit_Fork _ default otherwise)
       (|> (case otherwise
@@ -376,12 +376,12 @@
           (list\fold for_synthesis synthesis_storage members)
 
           (#/.Reference (#///reference.Variable (#///reference/variable.Local register)))
-          (if (set.member? (get@ #bindings synthesis_storage) register)
+          (if (set.member? (value@ #bindings synthesis_storage) register)
             synthesis_storage
-            (update@ #dependencies (set.has (#///reference/variable.Local register)) synthesis_storage))
+            (revised@ #dependencies (set.has (#///reference/variable.Local register)) synthesis_storage))
 
           (#/.Reference (#///reference.Variable var))
-          (update@ #dependencies (set.has var) synthesis_storage)
+          (revised@ #dependencies (set.has var) synthesis_storage)
 
           (^ (/.function/apply [functionS argsS]))
           (list\fold for_synthesis synthesis_storage (#.Item functionS argsS))
@@ -390,17 +390,17 @@
           (list\fold for_synthesis synthesis_storage environment)
 
           (^ (/.branch/case [inputS pathS]))
-          (update@ #dependencies
-                   (set.union (get@ #dependencies (for_path pathS synthesis_storage)))
-                   (for_synthesis inputS synthesis_storage))
+          (revised@ #dependencies
+                    (set.union (value@ #dependencies (for_path pathS synthesis_storage)))
+                    (for_synthesis inputS synthesis_storage))
 
           (^ (/.branch/let [inputS register exprS]))
-          (update@ #dependencies
-                   (set.union (|> synthesis_storage
-                                  (update@ #bindings (set.has register))
-                                  (for_synthesis exprS)
-                                  (get@ #dependencies)))
-                   (for_synthesis inputS synthesis_storage))
+          (revised@ #dependencies
+                    (set.union (|> synthesis_storage
+                                   (revised@ #bindings (set.has register))
+                                   (for_synthesis exprS)
+                                   (value@ #dependencies)))
+                    (for_synthesis inputS synthesis_storage))
 
           (^ (/.branch/if [testS thenS elseS]))
           (list\fold for_synthesis synthesis_storage (list testS thenS elseS))
@@ -409,15 +409,15 @@
           (for_synthesis whole synthesis_storage)
 
           (^ (/.loop/scope [start initsS+ iterationS]))
-          (update@ #dependencies
-                   (set.union (|> synthesis_storage
-                                  (update@ #bindings (set.union (|> initsS+
-                                                                    list.enumeration
-                                                                    (list\map (|>> product.left (n.+ start)))
-                                                                    (set.of_list n.hash))))
-                                  (for_synthesis iterationS)
-                                  (get@ #dependencies)))
-                   (list\fold for_synthesis synthesis_storage initsS+))
+          (revised@ #dependencies
+                    (set.union (|> synthesis_storage
+                                   (revised@ #bindings (set.union (|> initsS+
+                                                                      list.enumeration
+                                                                      (list\map (|>> product.left (n.+ start)))
+                                                                      (set.of_list n.hash))))
+                                   (for_synthesis iterationS)
+                                   (value@ #dependencies)))
+                    (list\fold for_synthesis synthesis_storage initsS+))
 
           (^ (/.loop/recur replacementsS+))
           (list\fold for_synthesis synthesis_storage replacementsS+)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/function.lux
index 7becfbe4d..1e7ca8cc3 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/function.lux
@@ -55,7 +55,7 @@
         (with_expansions [ (as_is (/.function/apply [funcS argsS]))]
           (case funcS
             (^ (/.function/abstraction functionS))
-            (if (n.= (get@ #/.arity functionS)
+            (if (n.= (value@ #/.arity functionS)
                      (list.size argsS))
               (do !
                 [locals /.locals]
@@ -94,7 +94,7 @@
   (-> (-> Synthesis (Operation Synthesis)) Path (Operation Path))
   (case path
     (#/.Bind register)
-    (phase\in (#/.Bind (inc register)))
+    (phase\in (#/.Bind (++ register)))
 
     (^template []
       [( left right)
@@ -160,7 +160,7 @@
       (#////reference.Variable variable)
       (case variable
         (#////reference/variable.Local register)
-        (phase\in (/.variable/local (inc register)))
+        (phase\in (/.variable/local (++ register)))
         
         (#////reference/variable.Foreign register)
         (..find_foreign environment register))
@@ -176,7 +176,7 @@
         (do phase.monad
           [inputS' (grow environment inputS)
            bodyS' (grow environment bodyS)]
-          (in (/.branch/let [inputS' (inc register) bodyS'])))
+          (in (/.branch/let [inputS' (++ register) bodyS'])))
         
         (#/.If [testS thenS elseS])
         (do phase.monad
@@ -202,7 +202,7 @@
         (do {! phase.monad}
           [initsS+' (monad.map ! (grow environment) initsS+)
            iterationS' (grow environment iterationS)]
-          (in (/.loop/scope [(inc start) initsS+' iterationS'])))
+          (in (/.loop/scope [(++ start) initsS+' iterationS'])))
         
         (#/.Recur argumentsS+)
         (|> argumentsS+
@@ -258,7 +258,7 @@
                           (grow env')
                           (\ ! map (function (_ body)
                                      {#/.environment environment
-                                      #/.arity (inc down_arity')
+                                      #/.arity (++ down_arity')
                                       #/.body body})))
                       
                       _
@@ -270,7 +270,7 @@
           (case (//loop.optimization false 1 (list) abstraction)
             (#.Some [startL initsL bodyL])
             (/.function/abstraction {#/.environment environment
-                                     #/.arity (get@ #/.arity abstraction)
+                                     #/.arity (value@ #/.arity abstraction)
                                      #/.body (/.loop/scope [startL initsL bodyL])})
             
             #.None
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/loop.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/loop.lux
index d9890dbc9..a615c00ef 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/loop.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/loop.lux
@@ -24,7 +24,7 @@
 
 (def: .public (register_optimization offset)
   (-> Register (-> Register Register))
-  (|>> dec (n.+ offset)))
+  (|>> -- (n.+ offset)))
 
 (def: (path_optimization body_optimization offset)
   (-> (Transform Synthesis) Register (Transform Path))
@@ -86,9 +86,9 @@
       (case structure
         (#analysis.Variant variant)
         (do maybe.monad
-          [value' (|> variant (get@ #analysis.value) (recur false))]
+          [value' (|> variant (value@ #analysis.value) (recur false))]
           (in (|> variant
-                  (set@ #analysis.value value')
+                  (with@ #analysis.value value')
                   /.variant)))
         
         (#analysis.Tuple tuple)
@@ -141,10 +141,10 @@
       (^ (/.loop/scope scope))
       (do {! maybe.monad}
         [inits' (|> scope
-                    (get@ #/.inits)
+                    (value@ #/.inits)
                     (monad.map ! (recur false)))
-         iteration' (recur return? (get@ #/.iteration scope))]
-        (in (/.loop/scope {#/.start (|> scope (get@ #/.start) (register_optimization offset))
+         iteration' (recur return? (value@ #/.iteration scope))]
+        (in (/.loop/scope {#/.start (|> scope (value@ #/.start) (register_optimization offset))
                            #/.inits inits'
                            #/.iteration iteration'})))
 
@@ -183,6 +183,6 @@
 
 (def: .public (optimization true_loop? offset inits functionS)
   (-> Bit Register (List Synthesis) Abstraction (Maybe [Register (List Synthesis) Synthesis]))
-  (|> (get@ #/.body functionS)
-      (body_optimization true_loop? offset (get@ #/.environment functionS) (get@ #/.arity functionS))
+  (|> (value@ #/.body functionS)
+      (body_optimization true_loop? offset (value@ #/.environment functionS) (value@ #/.arity functionS))
       (maybe\map (|>> [offset inits]))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/variable.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/variable.lux
index feadf7fa5..cb647c284 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/variable.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/variable.lux
@@ -29,7 +29,7 @@
 (def: (prune redundant register)
   (-> Register Register Register)
   (if (n.> redundant register)
-    (dec register)
+    (-- register)
     register))
 
 (type: (Remover a)
@@ -44,7 +44,7 @@
       (if (n.= redundant register)
         (recur post)
         (#/.Seq (#/.Bind (if (n.> redundant register)
-                           (dec register)
+                           (-- register)
                            register))
                 (recur post)))
 
@@ -60,7 +60,7 @@
         (recur post)
         (#/.Seq (#/.Access (#/.Member member))
                 (#/.Seq (#/.Bind (if (n.> redundant register)
-                                   (dec register)
+                                   (-- register)
                                    register))
                         (recur post))))
 
@@ -188,7 +188,7 @@
 
 (def: (default arity)
   (-> Arity Redundancy)
-  (product.right (..extended 0 (inc arity) ..initial)))
+  (product.right (..extended 0 (++ arity) ..initial)))
 
 (type: (Optimization a)
   (-> [Redundancy a] (Try [Redundancy a])))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/program.lux b/stdlib/source/library/lux/tool/compiler/language/lux/program.lux
index 365f9e804..f181fd077 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/program.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/program.lux
@@ -42,7 +42,7 @@
                                  (do !
                                    [id (archive.id module archive)
                                     [descriptor document] (archive.find module archive)]
-                                   (in [[module id] (get@ #descriptor.registry descriptor)])))))]
+                                   (in [[module id] (value@ #descriptor.registry descriptor)])))))]
     (case (list.one (function (_ [[module module_id] registry])
                       (do maybe.monad
                         [program_id (artifact.remember ..name registry)]
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux b/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux
index 15539ae10..d4b612bf2 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux
@@ -70,13 +70,13 @@
 (type: Char
   Nat)
 
-(template [  ]
+(template [  ]
   [(template: ( value)
      [(  value)])]
 
-  [!inc   "lux i64 +" 1]
-  [!inc/2 "lux i64 +" 2]
-  [!dec   "lux i64 -" 1]
+  ["lux i64 +" 1 !++]
+  ["lux i64 +" 2 !++/2]
+  ["lux i64 -" 1 !--]
   )
 
 (template: (!clip from to text)
@@ -198,14 +198,14 @@
      (:expected <>))])
 
 (template: (!horizontal where offset source_code)
-  [[(update@ #.column inc where)
-    (!inc offset)
+  [[(revised@ #.column ++ where)
+    (!++ offset)
     source_code]])
 
 (inline: (!new_line where)
   (-> Location Location)
   (let [[where::file where::line where::column] where]
-    [where::file (!inc where::line) 0]))
+    [where::file (!++ where::line) 0]))
 
 (inline: (!forward length where)
   (-> Nat Location Location)
@@ -214,7 +214,7 @@
 
 (template: (!vertical where offset source_code)
   [[(!new_line where)
-    (!inc offset)
+    (!++ offset)
     source_code]])
 
 (template [  ]
@@ -272,8 +272,8 @@
     (<| (let [g!content (!clip offset g!end source_code)])
         (!guarantee_no_new_lines where offset source_code g!content)
         (#.Right [[(let [size (!n/- offset g!end)]
-                     (update@ #.column (|>> (!n/+ size) (!n/+ 2)) where))
-                   (!inc g!end)
+                     (revised@ #.column (|>> (!n/+ size) (!n/+ 2)) where))
+                   (!++ g!end)
                    source_code]
                   [where
                    (#.Text g!content)]]))
@@ -365,11 +365,11 @@
            exponent (static ..no_exponent)]
       (<| (!with_char+ source_code//size source_code end char/0 )
           (!if_digit?+ char/0
-                       (recur (!inc end) exponent)
+                       (recur (!++ end) exponent)
 
                        [["e" "E"]
                         (if (same? (static ..no_exponent) exponent)
-                          (<| (!with_char+ source_code//size source_code (!inc end) char/1 )
+                          (<| (!with_char+ source_code//size source_code (!++ end) char/1 )
                               (`` ("lux syntax char case!" char/1
                                    [[]
                                     (<| (!with_char+ source_code//size source_code (!n/+ 2 end) char/2 )
@@ -389,10 +389,10 @@
     (loop [end offset]
       (<| (!with_char+ source_code//size source_code end char )
           (!if_digit?+ char
-                       (recur (!inc end))
+                       (recur (!++ end))
 
                        [[]
-                        (frac_parser source_code//size start where (!inc end) source_code)]
+                        (frac_parser source_code//size start where (!++ end) source_code)]
 
                        ))))
   )
@@ -404,7 +404,7 @@
      (loop [g!end offset]
        (<| (!with_char+ source_code//size source_code g!end g!char (!number_output source_code start g!end  ))
            (!if_digit?+ g!char
-                        (recur (!inc g!end))
+                        (recur (!++ g!end))
                         []
                         (!number_output source_code start g!end  )))))]
 
@@ -413,13 +413,13 @@
   )
 
 (template: (!signed_parser source_code//size offset where source_code @aliases @end)
-  [(<| (let [g!offset/1 (!inc offset)])
+  [(<| (let [g!offset/1 (!++ offset)])
        (!with_char+ source_code//size source_code g!offset/1 g!char/1 @end)
        (!if_digit? g!char/1
-                   (signed_parser source_code//size offset where (!inc/2 offset) source_code)
-                   (!full_name_parser offset [where (!inc offset) source_code] where @aliases #.Identifier)))])
+                   (signed_parser source_code//size offset where (!++/2 offset) source_code)
+                   (!full_name_parser offset [where (!++ offset) source_code] where @aliases #.Identifier)))])
 
-(with_expansions [ (#.Right [[(update@ #.column (|>> (!n/+ (!n/- start end))) where)
+(with_expansions [ (#.Right [[(revised@ #.column (|>> (!n/+ (!n/- start end))) where)
                                       end
                                       source_code]
                                      (!clip start end source_code)])]
@@ -430,12 +430,12 @@
       (loop [end offset]
         (<| (!with_char+ source_code//size source_code end char )
             (!if_name_char?|tail char
-                                 (recur (!inc end))
+                                 (recur (!++ end))
                                  ))))))
 
 (template: (!half_name_parser @offset @char @module)
   [(!if_name_char?|head @char
-                        (!letE [source' name] (..name_part_parser @offset where (!inc @offset) source_code)
+                        (!letE [source' name] (..name_part_parser @offset where (!++ @offset) source_code)
                                (#.Right [source' [@module name]]))
                         (!failure ..!half_name_parser where @offset source_code))])
 
@@ -444,7 +444,7 @@
       (<| (!with_char+ source_code//size source_code offset/0 char/0
                        (!end_of_file where offset/0 source_code current_module))
           (if (!n/= (char (~~ (static ..name_separator))) char/0)
-            (<| (let [offset/1 (!inc offset/0)])
+            (<| (let [offset/1 (!++ offset/0)])
                 (!with_char+ source_code//size source_code offset/1 char/1
                              (!end_of_file where offset/1 source_code current_module))
                 (!half_name_parser offset/1 char/1 current_module))
@@ -462,7 +462,7 @@
             (let [[where' offset' source_code'] source'])
             (!with_char source_code' offset' char/separator )
             (if (!n/= (char (~~ (static ..name_separator))) char/separator)
-              (<| (let [offset'' (!inc offset')])
+              (<| (let [offset'' (!++ offset')])
                   (!letE [source'' complex] (..name_part_parser offset'' (!forward 1 where') offset'' source_code'))
                   (if ("lux text =" "" complex)
                     (let [[where offset source_code] source]
@@ -482,9 +482,9 @@
 ...   [expression ...]
 ...   [form "(" [#* expression] ")"])
 
-(with_expansions [ (as_is where (!inc offset/0) source_code)
-                   (as_is [(!forward 1 where) (!inc offset/0) source_code])
-                   (as_is [(!forward 1 where) (!inc/2 offset/0) source_code])
+(with_expansions [ (as_is where (!++ offset/0) source_code)
+                   (as_is [(!forward 1 where) (!++ offset/0) source_code])
+                   (as_is [(!forward 1 where) (!++/2 offset/0) source_code])
                    (as_is (parse current_module aliases source_code//size))]
 
   (template: (!close closer)
@@ -492,8 +492,8 @@
 
   (def: (bit_syntax value [where offset/0 source_code])
     (-> Bit (Parser Code))
-    (#.Right [[(update@ #.column (|>> !inc/2) where)
-               (!inc/2 offset/0)
+    (#.Right [[(revised@ #.column (|>> !++/2) where)
+               (!++/2 offset/0)
                source_code]
               [where (#.Bit value)]]))
   
@@ -530,11 +530,11 @@
 
                     ... Text
                     [(~~ (static ..text_delimiter))]
-                    (text_parser where (!inc offset/0) source_code)
+                    (text_parser where (!++ offset/0) source_code)
 
                     ... Special code
                     [(~~ (static ..sigil))]
-                    (<| (let [offset/1 (!inc offset/0)])
+                    (<| (let [offset/1 (!++ offset/0)])
                         (!with_char+ source_code//size source_code offset/1 char/1
                                      (!end_of_file where offset/1 source_code current_module))
                         ("lux syntax char case!" char/1
@@ -559,15 +559,15 @@
                      ... (~~ (static ..frac_separator))
                      ]
                     ... It's either a Rev, an identifier, or a comment.
-                    (with_expansions [ (rev_parser source_code//size offset/0 where (!inc offset/1) source_code)
+                    (with_expansions [ (rev_parser source_code//size offset/0 where (!++ offset/1) source_code)
                                        (!short_name_parser source_code//size current_module [where offset/1 source_code] where #.Identifier)
-                                       (case ("lux text index" (!inc offset/1) (static text.new_line) source_code)
+                                       (case ("lux text index" (!++ offset/1) (static text.new_line) source_code)
                                                          (#.Some end)
                                                          (recur (!vertical where end source_code))
                                                          
                                                          _
                                                          (!end_of_file where offset/1 source_code current_module))]
-                      (<| (let [offset/1 (!inc offset/0)])
+                      (<| (let [offset/1 (!++ offset/0)])
                           (!with_char+ source_code//size source_code offset/1 char/1
                                        (!end_of_file where offset/1 source_code current_module))
                           (!if_digit? char/1
@@ -577,7 +577,7 @@
                                       ("lux syntax char case!" char/1
                                        [[(~~ (static ..name_separator))]
                                         ... It's either an identifier, or a comment.
-                                        (<| (let [offset/2 (!inc offset/1)])
+                                        (<| (let [offset/2 (!++ offset/1)])
                                             (!with_char+ source_code//size source_code offset/2 char/2
                                                          (!end_of_file where offset/2 source_code current_module))
                                             ("lux syntax char case!" char/2
@@ -597,7 +597,7 @@
                    ... else
                    (!if_digit? char/0
                                ... Natural number
-                               (nat_parser source_code//size offset/0 where (!inc offset/0) source_code)
+                               (nat_parser source_code//size offset/0 where (!++ offset/0) source_code)
                                ... Identifier
                                (!full_name_parser offset/0 [] where aliases #.Identifier))
                    )))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux
index 58dc336dd..7f7d205c3 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux
@@ -190,11 +190,11 @@
 (template [   ]
   [(def: .public ( value)
      (->  (All [a] (-> (Operation a) (Operation a))))
-     (extension.temporary (set@  value)))
+     (extension.temporary (with@  value)))
 
    (def: .public 
      (Operation )
-     (extension.read (get@ )))]
+     (extension.read (value@ )))]
 
   [with_locals    locals    #locals    Nat]
   [with_currying? currying? #currying? Bit]
@@ -204,7 +204,7 @@
   (All [a] (-> (Operation a) (Operation a)))
   (<<| (do phase.monad
          [locals ..locals])
-       (..with_locals (inc locals))))
+       (..with_locals (++ locals))))
 
 (template [ ]
   [(template: .public ( content)
@@ -389,12 +389,12 @@
       (#Loop loop)
       (case loop
         (#Scope scope)
-        (|> (format (%.nat (get@ #start scope))
-                    " " (|> (get@ #inits scope)
+        (|> (format (%.nat (value@ #start scope))
+                    " " (|> (value@ #inits scope)
                             (list\map %synthesis)
                             (text.interposed " ")
                             (text.enclosed ["[" "]"]))
-                    " " (%synthesis (get@ #iteration scope)))
+                    " " (%synthesis (value@ #iteration scope)))
             (text.enclosed ["(#loop " ")"]))
         
         (#Recur args)
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive.lux b/stdlib/source/library/lux/tool/compiler/meta/archive.lux
index 06a2d5ca8..d810d7aca 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive.lux
@@ -82,7 +82,7 @@
 
   (def: next
     (-> Archive ID)
-    (|>> :representation (get@ #next)))
+    (|>> :representation (value@ #next)))
 
   (def: .public empty
     Archive
@@ -111,8 +111,8 @@
         (#try.Success [next
                        (|> archive
                            :representation
-                           (update@ #..resolver (dictionary.has module [next #.None]))
-                           (update@ #..next inc)
+                           (revised@ #..resolver (dictionary.has module [next #.None]))
+                           (revised@ #..next ++)
                            :abstraction)]))))
 
   (def: .public (has module [descriptor document output] archive)
@@ -122,7 +122,7 @@
         (#.Some [id #.None])
         (#try.Success (|> archive
                           :representation
-                          (update@ #..resolver (dictionary.has module [id (#.Some [descriptor document output])]))
+                          (revised@ #..resolver (dictionary.has module [id (#.Some [descriptor document output])]))
                           :abstraction))
         
         (#.Some [id (#.Some [existing_descriptor existing_document existing_output])])
@@ -160,7 +160,7 @@
   (def: .public archived
     (-> Archive (List Module))
     (|>> :representation
-         (get@ #resolver)
+         (value@ #resolver)
          dictionary.entries
          (list.all (function (_ [module [id descriptor+document]])
                      (case descriptor+document
@@ -180,13 +180,13 @@
   (def: .public reserved
     (-> Archive (List Module))
     (|>> :representation
-         (get@ #resolver)
+         (value@ #resolver)
          dictionary.keys))
 
   (def: .public reservations
     (-> Archive (List [Module ID]))
     (|>> :representation
-         (get@ #resolver)
+         (value@ #resolver)
          dictionary.entries
          (list\map (function (_ [module [id _]])
                      [module id]))))
@@ -196,17 +196,17 @@
     (let [[+next +resolver] (:representation additions)]
       (|> archive
           :representation
-          (update@ #next (n.max +next))
-          (update@ #resolver (function (_ resolver)
-                               (list\fold (function (_ [module [id entry]] resolver)
-                                            (case entry
-                                              (#.Some _)
-                                              (dictionary.has module [id entry] resolver)
-                                              
-                                              #.None
-                                              resolver))
-                                          resolver
-                                          (dictionary.entries +resolver))))
+          (revised@ #next (n.max +next))
+          (revised@ #resolver (function (_ resolver)
+                                (list\fold (function (_ [module [id entry]] resolver)
+                                             (case entry
+                                               (#.Some _)
+                                               (dictionary.has module [id entry] resolver)
+                                               
+                                               #.None
+                                               resolver))
+                                           resolver
+                                           (dictionary.entries +resolver))))
           :abstraction)))
 
   (type: Reservation
@@ -281,6 +281,6 @@
            {#next next
             #resolver (list\fold (function (_ [module id] archive)
                                    (dictionary.has module [id #.None] archive))
-                                 (get@ #resolver (:representation ..empty))
+                                 (value@ #resolver (:representation ..empty))
                                  reservations)}))))
   )
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux
index de1858b97..e4cc633de 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux
@@ -50,7 +50,7 @@
 
   (def: .public artifacts
     (-> Registry (Row Artifact))
-    (|>> :representation (get@ #artifacts)))
+    (|>> :representation (value@ #artifacts)))
 
   (def: next
     (-> Registry ID)
@@ -62,8 +62,8 @@
       [id
        (|> registry
            :representation
-           (update@ #artifacts (row.add {#id id
-                                         #category #Anonymous}))
+           (revised@ #artifacts (row.suffix {#id id
+                                             #category #Anonymous}))
            :abstraction)]))
 
   (template [  ]
@@ -73,18 +73,18 @@
          [id
           (|> registry
               :representation
-              (update@ #artifacts (row.add {#id id
-                                            #category ( name)}))
-              (update@ #resolver (dictionary.has name id))
+              (revised@ #artifacts (row.suffix {#id id
+                                                #category ( name)}))
+              (revised@ #resolver (dictionary.has name id))
               :abstraction)]))
 
      (def: .public ( registry)
        (-> Registry (List Text))
        (|> registry
            :representation
-           (get@ #artifacts)
+           (value@ #artifacts)
            row.list
-           (list.all (|>> (get@ #category)
+           (list.all (|>> (value@ #category)
                           (case> ( name) (#.Some name)
                                  _ #.None)))))]
 
@@ -99,7 +99,7 @@
   (def: .public (remember name registry)
     (-> Text Registry (Maybe ID))
     (|> (:representation registry)
-        (get@ #resolver)
+        (value@ #resolver)
         (dictionary.value name)))
 
   (def: .public writer
@@ -119,8 +119,8 @@
           artifacts (: (Writer (Row Category))
                        (binary.row/64 category))]
       (|>> :representation
-           (get@ #artifacts)
-           (row\map (get@ #category))
+           (value@ #artifacts)
+           (row\map (value@ #category))
            artifacts)))
 
   (exception: .public (invalid_category {tag Nat})
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux
index 30777c282..a14d708d5 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux
@@ -59,7 +59,7 @@
 
   (def: .public signature
     (-> (Document Any) Signature)
-    (|>> :representation (get@ #signature)))
+    (|>> :representation (value@ #signature)))
 
   (def: .public (writer content)
     (All [d] (-> (Writer d) (Writer (Document d))))
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux
index bc413b413..8b4dfedb8 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux
@@ -29,7 +29,7 @@
 
 (def: .public (description signature)
   (-> Signature Text)
-  (format (%.name (get@ #name signature)) " " (%.nat (get@ #version signature))))
+  (format (%.name (value@ #name signature)) " " (%.nat (value@ #version signature))))
 
 (def: .public writer
   (Writer Signature)
diff --git a/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux b/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux
index 2df8c36ec..6ee936f42 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux
@@ -57,7 +57,7 @@
                   (do {! state.monad}
                     [.let [parents (case (archive.find module archive)
                                      (#try.Success [descriptor document])
-                                     (get@ #descriptor.references descriptor)
+                                     (value@ #descriptor.references descriptor)
                                      
                                      (#try.Failure error)
                                      ..fresh)]
diff --git a/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux b/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux
index c5483ac0c..b4fa30d12 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux
@@ -61,9 +61,9 @@
 
 (def: (archive fs static)
   (All [!] (-> (file.System !) Static file.Path))
-  (format (get@ #static.target static)
+  (format (value@ #static.target static)
           (\ fs separator)
-          (get@ #static.host static)))
+          (value@ #static.host static)))
 
 (def: (unversioned_lux_archive fs static)
   (All [!] (-> (file.System !) Static file.Path))
@@ -88,7 +88,7 @@
   (format (..module fs static module_id)
           (\ fs separator)
           (%.nat artifact_id)
-          (get@ #static.artifact_extension static)))
+          (value@ #static.artifact_extension static)))
 
 (def: (ensure_directory fs path)
   (-> (file.System Async) file.Path (Async (Try Any)))
@@ -125,7 +125,7 @@
 (def: .public (enable fs static)
   (-> (file.System Async) Static (Async (Try Any)))
   (do (try.with async.monad)
-    [_ (..ensure_directory fs (get@ #static.target static))]
+    [_ (..ensure_directory fs (value@ #static.target static))]
     (..ensure_directory fs (..archive fs static))))
 
 (def: (general_descriptor fs static)
@@ -174,7 +174,7 @@
                                   content (document.read $.key document)]
                                  (in [module content])))
                            (archive.archived archive)))]
-    (in (set@ #.modules modules (fresh_analysis_state host)))))
+    (in (with@ #.modules modules (fresh_analysis_state host)))))
 
 (def: (cached_artifacts fs static module_id)
   (-> (file.System Async) Static archive.ID (Async (Try (Dictionary Text Binary))))
@@ -231,7 +231,7 @@
                                             (case artifact_category
                                               #artifact.Anonymous
                                               (do !
-                                                [.let [output (row.add [artifact_id #.None data] output)]
+                                                [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  _ (\ host re_learn context #.None directive)]
                                                 (in [definitions
                                                      [analysers
@@ -241,7 +241,7 @@
                                                      output]))
                                               
                                               (#artifact.Definition name)
-                                              (let [output (row.add [artifact_id #.None data] output)]
+                                              (let [output (row.suffix [artifact_id #.None data] output)]
                                                 (if (text\= $/program.name name)
                                                   (in [definitions
                                                        [analysers
@@ -260,7 +260,7 @@
 
                                               (#artifact.Analyser extension)
                                               (do !
-                                                [.let [output (row.add [artifact_id #.None data] output)]
+                                                [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  value (\ host re_load context #.None directive)]
                                                 (in [definitions
                                                      [(dictionary.has extension (:as analysis.Handler value) analysers)
@@ -271,7 +271,7 @@
 
                                               (#artifact.Synthesizer extension)
                                               (do !
-                                                [.let [output (row.add [artifact_id #.None data] output)]
+                                                [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  value (\ host re_load context #.None directive)]
                                                 (in [definitions
                                                      [analysers
@@ -282,7 +282,7 @@
 
                                               (#artifact.Generator extension)
                                               (do !
-                                                [.let [output (row.add [artifact_id #.None data] output)]
+                                                [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  value (\ host re_load context #.None directive)]
                                                 (in [definitions
                                                      [analysers
@@ -293,7 +293,7 @@
 
                                               (#artifact.Directive extension)
                                               (do !
-                                                [.let [output (row.add [artifact_id #.None data] output)]
+                                                [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  value (\ host re_load context #.None directive)]
                                                 (in [definitions
                                                      [analysers
@@ -304,7 +304,7 @@
 
                                               (#artifact.Custom name)
                                               (do !
-                                                [.let [output (row.add [artifact_id (#.Some name) data] output)]
+                                                [.let [output (row.suffix [artifact_id (#.Some name) data] output)]
                                                  _ (\ host re_learn context (#.Some name) directive)]
                                                 (in [definitions
                                                      [analysers
@@ -333,8 +333,8 @@
                                       (\ ! map (|>> [exported? type annotations]
                                                     #.Definition
                                                     [def_name])))))
-                            (get@ #.definitions content))]
-    (in [(document.write $.key (set@ #.definitions definitions content))
+                            (value@ #.definitions content))]
+    (in [(document.write $.key (with@ #.definitions definitions content))
          bundles])))
 
 (def: (load_definitions fs static module_id host_environment descriptor document)
@@ -345,8 +345,8 @@
                      Bundles]))))
   (do (try.with async.monad)
     [actual (cached_artifacts fs static module_id)
-     .let [expected (|> descriptor (get@ #descriptor.registry) artifact.artifacts)]
-     [document bundles output] (async\in (loaded_document (get@ #static.artifact_extension static) host_environment module_id expected actual document))]
+     .let [expected (|> descriptor (value@ #descriptor.registry) artifact.artifacts)]
+     [document bundles output] (async\in (loaded_document (value@ #static.artifact_extension static) host_environment module_id expected actual document))]
     (in [[descriptor document output] bundles])))
 
 (def: (purge! fs static [module_name module_id])
@@ -361,12 +361,12 @@
 
 (def: (valid_cache? expected actual)
   (-> Descriptor Input Bit)
-  (and (text\= (get@ #descriptor.name expected)
-               (get@ #////.module actual))
-       (text\= (get@ #descriptor.file expected)
-               (get@ #////.file actual))
-       (n.= (get@ #descriptor.hash expected)
-            (get@ #////.hash actual))))
+  (and (text\= (value@ #descriptor.name expected)
+               (value@ #////.module actual))
+       (text\= (value@ #descriptor.file expected)
+               (value@ #////.file actual))
+       (n.= (value@ #descriptor.hash expected)
+            (value@ #////.hash actual))))
 
 (type: Purge
   (Dictionary Module archive.ID))
@@ -390,7 +390,7 @@
                  (if (purged? module_name)
                    purge
                    (if (|> descriptor
-                           (get@ #descriptor.references)
+                           (value@ #descriptor.references)
                            set.list
                            (list.any? purged?))
                      (dictionary.has module_name module_id purge)
@@ -417,7 +417,7 @@
                                               (in [true
                                                    [module_name [module_id [descriptor document]]]])
                                               (do !
-                                                [input (//context.read fs ..pseudo_module import contexts (get@ #static.host_module_extension static) module_name)]
+                                                [input (//context.read fs ..pseudo_module import contexts (value@ #static.host_module_extension static) module_name)]
                                                 (in [(..valid_cache? descriptor input)
                                                      [module_name [module_id [descriptor document]]]])))))))
      load_order (|> pre_loaded_caches
@@ -447,7 +447,7 @@
                               (archive.has module descriptor,document,output archive))
                             archive
                             loaded_caches)
-        analysis_state (..analysis_state (get@ #static.host static) archive)]
+        analysis_state (..analysis_state (value@ #static.host static) archive)]
        (in [archive
             analysis_state
             (list\fold (function (_ [_ [+analysers +synthesizers +generators +directives]]
@@ -473,5 +473,5 @@
       
       (#try.Failure error)
       (in (#try.Success [archive.empty
-                         (fresh_analysis_state (get@ #static.host static))
+                         (fresh_analysis_state (value@ #static.host static))
                          ..empty_bundles])))))
diff --git a/stdlib/source/library/lux/tool/compiler/meta/io/context.lux b/stdlib/source/library/lux/tool/compiler/meta/io/context.lux
index 0c7969507..979edaa76 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/io/context.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/io/context.lux
@@ -6,6 +6,7 @@
      [predicate (#+ Predicate)]
      ["." monad (#+ Monad do)]]
     [control
+     ["." maybe]
      ["." try (#+ Try)]
      ["." exception (#+ exception:)]
      [concurrency
@@ -17,7 +18,8 @@
       [encoding
        ["." utf8]]]
      [collection
-      ["." dictionary (#+ Dictionary)]]]
+      ["." dictionary (#+ Dictionary)]
+      ["." list]]]
     [world
      ["." file]]]]
   [program
@@ -138,8 +140,8 @@
 (type: .public Enumeration
   (Dictionary file.Path Binary))
 
-(def: (context_listing fs directory enumeration)
-  (-> (file.System Async) Context Enumeration (Async (Try Enumeration)))
+(def: (context_listing fs context directory enumeration)
+  (-> (file.System Async) Context file.Path Enumeration (Async (Try Enumeration)))
   (do {! (try.with async.monad)}
     [enumeration (|> directory
                      (\ fs directory_files)
@@ -147,23 +149,40 @@
                                               (if (text.ends_with? ..lux_extension file)
                                                 (do !
                                                   [source_code (\ fs read file)]
-                                                  (async\in (dictionary.has' (file.name fs file) source_code enumeration)))
+                                                  (async\in (dictionary.has' (text.replaced context "" file) source_code enumeration)))
                                                 (in enumeration)))
                                           enumeration))
                      (\ ! join))]
     (|> directory
         (\ fs sub_directories)
-        (\ ! map (monad.fold ! (context_listing fs) enumeration))
+        (\ ! map (monad.fold ! (context_listing fs context) enumeration))
         (\ ! join))))
 
 (def: Action
   (type (All [a] (Async (Try a)))))
 
+(def: (canonical fs context)
+  (-> (file.System Async) Context (Action Context))
+  (do (try.with async.monad)
+    [subs (\ fs sub_directories context)]
+    (in (|> subs
+            list.head
+            (maybe.else context)
+            (file.parent fs)
+            (maybe.else context)))))
+
 (def: .public (listing fs contexts)
   (-> (file.System Async) (List Context) (Action Enumeration))
-  (monad.fold (: (Monad Action)
-                 (try.with async.monad))
-              (..context_listing fs)
-              (: Enumeration
-                 (dictionary.empty text.hash))
-              contexts))
+  (let [! (: (Monad Action)
+             (try.with async.monad))]
+    (monad.fold !
+                (function (_ context enumeration)
+                  (do !
+                    [context (..canonical fs context)]
+                    (..context_listing fs
+                                       (format context (\ fs separator))
+                                       context
+                                       enumeration)))
+                (: Enumeration
+                   (dictionary.empty text.hash))
+                contexts)))
diff --git a/stdlib/source/library/lux/tool/compiler/meta/packager.lux b/stdlib/source/library/lux/tool/compiler/meta/packager.lux
index 21c15d551..744d0ecb9 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/packager.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/packager.lux
@@ -35,8 +35,8 @@
   (-> dependency.Order Order)
   (list\map (function (_ [module [module_id [descriptor document]]])
               (|> descriptor
-                  (get@ #descriptor.registry)
+                  (value@ #descriptor.registry)
                   artifact.artifacts
                   row.list
-                  (list\map (|>> (get@ #artifact.id)))
+                  (list\map (|>> (value@ #artifact.id)))
                   [module_id]))))
diff --git a/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux b/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux
index 06ef9b25b..d9707b0c0 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux
@@ -143,7 +143,7 @@
   (let [class_path (|> custom
                        (maybe\map (|>> name.internal name.read))
                        (maybe.else (runtime.class_name [module artifact]))
-                       (text.suffix (get@ #static.artifact_extension static)))]
+                       (text.suffix (value@ #static.artifact_extension static)))]
     (do try.monad
       [_ (java/util/jar/JarOutputStream::putNextEntry (java/util/jar/JarEntry::new class_path) sink)]
       (in (do_to sink
diff --git a/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux b/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux
index 90d28197a..a229c78a1 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux
@@ -104,7 +104,7 @@
                (..bundle_module output))
      entry_content (: (Try tar.Content)
                       (|> descriptor
-                          (get@ #descriptor.references)
+                          (value@ #descriptor.references)
                           set.list
                           (list.all (function (_ module) (dictionary.value module mapping)))
                           (list\map (|>> ..module_file _.string _.load_relative/1))
diff --git a/stdlib/source/library/lux/tool/interpreter.lux b/stdlib/source/library/lux/tool/interpreter.lux
index 6e28d5c1a..ee02eacc9 100644
--- a/stdlib/source/library/lux/tool/interpreter.lux
+++ b/stdlib/source/library/lux/tool/interpreter.lux
@@ -75,14 +75,14 @@
   (do Monad
     [state (platform.initialize platform generation_bundle)
      state (platform.compile platform
-                             (set@ #cli.module syntax.prelude configuration)
-                             (set@ [#extension.state
-                                    #directive.analysis #directive.state
-                                    #extension.state
-                                    #.info #.mode]
-                                   #.Interpreter
-                                   state))
-     [state _] (\ (get@ #platform.file_system platform)
+                             (with@ #cli.module syntax.prelude configuration)
+                             (with@ [#extension.state
+                                     #directive.analysis #directive.state
+                                     #extension.state
+                                     #.info #.mode]
+                                    #.Interpreter
+                                    state))
+     [state _] (\ (value@ #platform.file_system platform)
                   lift (phase.result' state enter_module))
      _ (\ Console write ..welcome_message)]
     (in state)))
@@ -102,9 +102,9 @@
       (-> Code ))
     (do {! phase.monad}
       [state (extension.lifted phase.get_state)
-       .let [analyse (get@ [#directive.analysis #directive.phase] state)
-             synthesize (get@ [#directive.synthesis #directive.phase] state)
-             generate (get@ [#directive.generation #directive.phase] state)]
+       .let [analyse (value@ [#directive.analysis #directive.phase] state)
+             synthesize (value@ [#directive.synthesis #directive.phase] state)
+             generate (value@ [#directive.generation #directive.phase] state)]
        [_ codeT codeA] (directive.lifted_analysis
                         (analysis.with_scope
                           (type.with_fresh_env
@@ -154,10 +154,10 @@
   (do phase.monad
     [[codeT codeV] (interpret configuration code)
      state phase.get_state]
-    (in (/type.represent (get@ [#extension.state
-                                #directive.analysis #directive.state
-                                #extension.state]
-                               state)
+    (in (/type.represent (value@ [#extension.state
+                                  #directive.analysis #directive.state
+                                  #extension.state]
+                                 state)
                          codeT
                          codeV))))
 
@@ -171,24 +171,24 @@
     (All [anchor expression directive]
       (->  (Try [ Text])))
     (do try.monad
-      [.let [[_where _offset _code] (get@ #source context)]
-       [source' input] (syntax.parse ..module syntax.no_aliases (text.size _code) (get@ #source context))
+      [.let [[_where _offset _code] (value@ #source context)]
+       [source' input] (syntax.parse ..module syntax.no_aliases (text.size _code) (value@ #source context))
        [state' representation] (let [... TODO: Simplify ASAP
                                      state (:sharing [anchor expression directive]
                                                      {
                                                       context}
                                                      {(State+ anchor expression directive)
-                                                      (get@ #state context)})]
+                                                      (value@ #state context)})]
                                  (<| (phase.result' state)
                                      ... TODO: Simplify ASAP
                                      (:sharing [anchor expression directive]
                                                {
                                                 context}
                                                {(Operation anchor expression directive Text)
-                                                (execute (get@ #configuration context) input)})))]
+                                                (execute (value@ #configuration context) input)})))]
       (in [(|> context
-               (set@ #state state')
-               (set@ #source source'))
+               (with@ #state state')
+               (with@ #source source'))
            representation]))))
 
 (def: .public (run! Monad Console platform configuration generation_bundle)
@@ -212,7 +212,7 @@
         (if (and (not multi_line?)
                  (text\= ..exit_command line))
           (\ Console write ..farewell_message)
-          (case (read_eval_print (update@ #source (add_line line) context))
+          (case (read_eval_print (revised@ #source (add_line line) context))
             (#try.Success [context' representation])
             (do !
               [_ (\ Console write representation)]
@@ -222,5 +222,5 @@
             (if (ex.match? syntax.end_of_file error)
               (recur context #1)
               (exec (log! (ex.error ..error error))
-                (recur (set@ #source ..fresh_source context) #0))))))
+                (recur (with@ #source ..fresh_source context) #0))))))
       )))
diff --git a/stdlib/source/library/lux/type.lux b/stdlib/source/library/lux/type.lux
index c6be00945..2a99dded3 100644
--- a/stdlib/source/library/lux/type.lux
+++ b/stdlib/source/library/lux/type.lux
@@ -36,7 +36,7 @@
             type type]
        (case type
          ( env sub_type)
-         (recur (inc num_args) sub_type)
+         (recur (++ num_args) sub_type)
 
          _
          [num_args type])))]
@@ -345,7 +345,7 @@
      (-> Nat Type Type)
      (case size
        0 body
-       _  (|> body ( (dec size)) ( (list)))))]
+       _  (|> body ( (-- size)) ( (list)))))]
 
   [univ_q #.UnivQ]
   [ex_q   #.ExQ]
@@ -375,7 +375,7 @@
   (case depth
     0 element_type
     _ (|> element_type
-          (array (dec depth))
+          (array (-- depth))
           (list)
           (#.Primitive array.type_name))))
 
@@ -386,7 +386,7 @@
     (^multi (^ (#.Primitive name (list element_type)))
             (text\= array.type_name name))
     (let [[depth element_type] (flat_array element_type)]
-      [(inc depth) element_type])
+      [(++ depth) element_type])
 
     _
     [0 type]))
@@ -487,11 +487,11 @@
                                (bar expression))))}
   (macro.with_identifiers [g!_]
     (let [shareC (` (: (All [(~+ (list\map code.local_identifier type_vars))]
-                         (-> (~ (get@ #type exemplar))
-                             (~ (get@ #type computation))))
+                         (-> (~ (value@ #type exemplar))
+                             (~ (value@ #type computation))))
                        (.function ((~ g!_) (~ g!_))
-                         (~ (get@ #expression computation)))))]
-      (in (list (` ((~ shareC) (~ (get@ #expression exemplar)))))))))
+                         (~ (value@ #expression computation)))))]
+      (in (list (` ((~ shareC) (~ (value@ #expression exemplar)))))))))
 
 (syntax: .public (:by_example [type_vars ..type_parameters
                                exemplar ..typed
@@ -509,8 +509,8 @@
   (in (list (` (:of ((~! :sharing)
                      [(~+ (list\map code.local_identifier type_vars))]
 
-                     (~ (get@ #type exemplar))
-                     (~ (get@ #expression exemplar))
+                     (~ (value@ #type exemplar))
+                     (~ (value@ #expression exemplar))
                      
                      (~ extraction)
                      (:expected [])))))))
diff --git a/stdlib/source/library/lux/type/abstract.lux b/stdlib/source/library/lux/type/abstract.lux
index 25c864755..9b657cb19 100644
--- a/stdlib/source/library/lux/type/abstract.lux
+++ b/stdlib/source/library/lux/type/abstract.lux
@@ -69,7 +69,7 @@
 (def: (peek_frames reference definition_reference source)
   (-> Text Text (List [Text Module]) (Stack Frame))
   (!peek source reference
-         (peek_frames_definition definition_reference (get@ #.definitions head))))
+         (peek_frames_definition definition_reference (value@ #.definitions head))))
 
 (exception: .public no_active_frames)
 
@@ -77,7 +77,7 @@
   (-> (Maybe Text) (Meta Frame))
   (function (_ compiler)
     (let [[reference definition_reference] (name_of ..frames)
-          current_frames (peek_frames reference definition_reference (get@ #.modules compiler))]
+          current_frames (peek_frames reference definition_reference (value@ #.modules compiler))]
       (case (case frame
               (#.Some frame)
               (list.example (function (_ [actual _])
@@ -131,14 +131,14 @@
 (def: (push_frame [module_reference definition_reference] frame source)
   (-> Name Frame (List [Text Module]) (List [Text Module]))
   (!push source module_reference
-         (update@ #.definitions (push_frame_definition definition_reference frame) head)))
+         (revised@ #.definitions (push_frame_definition definition_reference frame) head)))
 
 (def: (push! frame)
   (-> Frame (Meta Any))
   (function (_ compiler)
-    (#.Right [(update@ #.modules
-                       (..push_frame (name_of ..frames) frame)
-                       compiler)
+    (#.Right [(revised@ #.modules
+                        (..push_frame (name_of ..frames) frame)
+                        compiler)
               []])))
 
 (def: (pop_frame_definition reference source)
@@ -163,13 +163,13 @@
 (def: (pop_frame [module_reference definition_reference] source)
   (-> Name (List [Text Module]) (List [Text Module]))
   (!push source module_reference
-         (|> head (update@ #.definitions (pop_frame_definition definition_reference)))))
+         (|> head (revised@ #.definitions (pop_frame_definition definition_reference)))))
 
 (syntax: (pop! [])
   (function (_ compiler)
-    (#.Right [(update@ #.modules
-                       (..pop_frame (name_of ..frames))
-                       compiler)
+    (#.Right [(revised@ #.modules
+                        (..pop_frame (name_of ..frames))
+                        compiler)
               (list)])))
 
 (def: cast
diff --git a/stdlib/source/library/lux/type/check.lux b/stdlib/source/library/lux/type/check.lux
index b4aedaef1..aa8e213af 100644
--- a/stdlib/source/library/lux/type/check.lux
+++ b/stdlib/source/library/lux/type/check.lux
@@ -188,15 +188,15 @@
   {#.doc "A brand-new existential type."}
   (Check [Nat Type])
   (function (_ context)
-    (let [id (get@ #.ex_counter context)]
-      (#try.Success [(update@ #.ex_counter inc context)
+    (let [id (value@ #.ex_counter context)]
+      (#try.Success [(revised@ #.ex_counter ++ context)
                      [id (#.Ex id)]]))))
 
 (template [   ]
   [(def: .public ( id)
      (-> Var (Check ))
      (function (_ context)
-       (case (|> context (get@ #.var_bindings) (var::get id))
+       (case (|> context (value@ #.var_bindings) (var::get id))
          (^or (#.Some (#.Some (#.Var _)))
               (#.Some #.None))
          (#try.Success [context ])
@@ -208,13 +208,13 @@
          (exception.except ..unknown_type_var id))))]
 
   [bound? Bit          false  true]
-  [read   (Maybe Type) #.None (#.Some bound)]
+  [read'  (Maybe Type) #.None (#.Some bound)]
   )
 
-(def: .public (read! id)
+(def: .public (read id)
   (-> Var (Check Type))
   (do ..monad
-    [?type (read id)]
+    [?type (read' id)]
     (case ?type
       (#.Some type)
       (in type)
@@ -225,7 +225,7 @@
 (def: (bound id)
   (-> Var (Check Type))
   (function (_ context)
-    (case (|> context (get@ #.var_bindings) (var::get id))
+    (case (|> context (value@ #.var_bindings) (var::get id))
       (#.Some (#.Some bound))
       (#try.Success [context bound])
 
@@ -240,9 +240,9 @@
                   "Fails if the variable has been bound already.")}
   (-> Type Var (Check Any))
   (function (_ context)
-    (case (|> context (get@ #.var_bindings) (var::get id))
+    (case (|> context (value@ #.var_bindings) (var::get id))
       (#.Some #.None)
-      (#try.Success [(update@ #.var_bindings (var::put id (#.Some type)) context)
+      (#try.Success [(revised@ #.var_bindings (var::put id (#.Some type)) context)
                      []])
 
       (#.Some (#.Some bound))
@@ -251,12 +251,12 @@
       _
       (exception.except ..unknown_type_var id))))
 
-(def: (update type id)
+(def: (re_bind type id)
   (-> Type Var (Check Any))
   (function (_ context)
-    (case (|> context (get@ #.var_bindings) (var::get id))
+    (case (|> context (value@ #.var_bindings) (var::get id))
       (#.Some _)
-      (#try.Success [(update@ #.var_bindings (var::put id (#.Some type)) context)
+      (#try.Success [(revised@ #.var_bindings (var::put id (#.Some type)) context)
                      []])
       
       _
@@ -266,29 +266,29 @@
   {#.doc (example "A brand-new (unbound) type-variable.")}
   (Check [Var Type])
   (function (_ context)
-    (let [id (get@ #.var_counter context)]
+    (let [id (value@ #.var_counter context)]
       (#try.Success [(|> context
-                         (update@ #.var_counter inc)
-                         (update@ #.var_bindings (var::new id)))
+                         (revised@ #.var_counter ++)
+                         (revised@ #.var_bindings (var::new id)))
                      [id (#.Var id)]]))))
 
-(def: (apply_type! funcT argT)
+(def: (on argT funcT)
   (-> Type Type (Check Type))
   (case funcT
     (#.Var func_id)
     (do ..monad
-      [?funcT' (read func_id)]
+      [?funcT' (read' func_id)]
       (case ?funcT'
         (#.Some funcT')
-        (apply_type! funcT' argT)
+        (on argT funcT')
 
         _
         (except ..invalid_type_application [funcT argT])))
 
     (#.Apply argT' funcT')
     (do ..monad
-      [funcT'' (apply_type! funcT' argT')]
-      (apply_type! funcT'' argT))
+      [funcT'' (on argT' funcT')]
+      (on argT funcT''))
 
     _
     (case (//.applied (list argT) funcT)
@@ -311,7 +311,7 @@
   (function (_ context)
     (loop [current start
            output (set.has start empty_ring)]
-      (case (|> context (get@ #.var_bindings) (var::get current))
+      (case (|> context (value@ #.var_bindings) (var::get current))
         (#.Some (#.Some type))
         (case type
           (#.Var post)
@@ -362,12 +362,8 @@
                     (//\= a a')))
              assumptions))
 
-(def: (assume! assumption assumptions)
-  (-> Assumption (List Assumption) (List Assumption))
-  (#.Item assumption assumptions))
-
-... TODO: "if_bind" can be optimized...
-(def: (if_bind id type then else)
+... TODO: "if_can_bind" can be optimized...
+(def: (if_can_bind id type then else)
   (All [a]
     (-> Var Type (Check a) (-> Type (Check a))
         (Check a)))
@@ -378,10 +374,10 @@
       (do {! ..monad}
         [ring (..ring id)
          _ (..assertion "" (n.> 1 (set.size ring)))
-         _ (monad.map ! (update type) (set.list ring))]
+         _ (monad.map ! (re_bind type) (set.list ring))]
         then)
       (do ..monad
-        [?bound (read id)]
+        [?bound (read' id)]
         (else (maybe.else (#.Var id) ?bound)))))
 
 ... TODO: "link/2" can be optimized...
@@ -395,8 +391,8 @@
 (def: (link/3 interpose to from)
   (-> Var Var Var (Check Any))
   (do ..monad
-    [_ (update (#.Var interpose) from)]
-    (update (#.Var to) interpose)))
+    [_ (re_bind (#.Var interpose) from)]
+    (re_bind (#.Var to) interpose)))
 
 ... TODO: "check_vars" can be optimized...
 (def: (check_vars check' assumptions idE idA)
@@ -457,7 +453,7 @@
             [
              (do !
                [ring (..ring )
-                _ (monad.map ! (update ) (set.list ring))]
+                _ (monad.map ! (re_bind ) (set.list ring))]
                (in assumptions))])
           ([[(#.Var _) _] idE atype]
            [[_ (#.Var _)] idA etype])
@@ -482,22 +478,22 @@
 
       [(#.UnivQ _ _) (#.Ex _)]
       (do ..monad
-        [expected' (apply_type! expected_function expected_input)]
+        [expected' (..on expected_input expected_function)]
         (check' assumptions expected' (#.Apply actual)))
 
       [(#.Ex _) (#.UnivQ _ _)]
       (do ..monad
-        [actual' (apply_type! actual_function actual_input)]
+        [actual' (..on actual_input actual_function)]
         (check' assumptions (#.Apply expected) actual'))
 
       [(#.Apply [expected_input' expected_function']) (#.Ex _)]
       (do ..monad
-        [expected_function'' (apply_type! expected_function' expected_input')]
+        [expected_function'' (..on expected_input' expected_function')]
         (check' assumptions (#.Apply [expected_input expected_function'']) (#.Apply actual)))
 
       [(#.Ex _) (#.Apply [actual_input' actual_function'])]
       (do ..monad
-        [actual_function'' (apply_type! actual_function' actual_input')]
+        [actual_function'' (..on actual_input' actual_function')]
         (check' assumptions (#.Apply expected) (#.Apply [actual_input actual_function''])))
 
       (^or [(#.Ex _) _] [_ (#.Ex _)])
@@ -508,7 +504,7 @@
       [(#.Var id) _]
       (function (_ context)
         (case ((do ..monad
-                 [expected_function' (..read! id)]
+                 [expected_function' (..read id)]
                  (check' assumptions (#.Apply expected_input expected_function') (#.Apply actual)))
                context)
           (#try.Success output)
@@ -518,7 +514,7 @@
           (case actual_function
             (#.UnivQ _ _)
             ((do ..monad
-               [actual' (apply_type! actual_function actual_input)]
+               [actual' (..on actual_input actual_function)]
                (check' assumptions (#.Apply expected) actual'))
              context)
             
@@ -531,15 +527,15 @@
             _
             ((do ..monad
                [assumptions (check' assumptions expected_function actual_function)
-                expected' (apply_type! actual_function expected_input)
-                actual' (apply_type! actual_function actual_input)]
+                expected' (..on expected_input actual_function)
+                actual' (..on actual_input actual_function)]
                (check' assumptions expected' actual'))
              context))))
 
       [_ (#.Var id)]
       (function (_ context)
         (case ((do ..monad
-                 [actual_function' (read! id)]
+                 [actual_function' (read id)]
                  (check' assumptions (#.Apply expected) (#.Apply actual_input actual_function')))
                context)
           (#try.Success output)
@@ -548,8 +544,8 @@
           _
           ((do ..monad
              [assumptions (check' assumptions expected_function actual_function)
-              expected' (apply_type! expected_function expected_input)
-              actual' (apply_type! expected_function actual_input)]
+              expected' (..on expected_input expected_function)
+              actual' (..on actual_input expected_function)]
              (check' assumptions expected' actual'))
            context)))
 
@@ -573,16 +569,16 @@
         (check_vars check' assumptions idE idA)
         
         [(#.Var id) _]
-        (if_bind id actual
-                 (check\in assumptions)
-                 (function (_ bound)
-                   (check' assumptions bound actual)))
+        (if_can_bind id actual
+                     (check\in assumptions)
+                     (function (_ bound)
+                       (check' assumptions bound actual)))
         
         [_ (#.Var id)]
-        (if_bind id expected
-                 (check\in assumptions)
-                 (function (_ bound)
-                   (check' assumptions expected bound)))
+        (if_can_bind id expected
+                     (check\in assumptions)
+                     (function (_ bound)
+                       (check' assumptions expected bound)))
 
         (^template [ ]
           [[(#.Apply aE ) (#.Apply aA )]
@@ -597,12 +593,12 @@
           (if (assumed? new_assumption assumptions)
             (check\in assumptions)
             (do ..monad
-              [expected' (apply_type! F A)]
-              (check' (assume! new_assumption assumptions) expected' actual))))
+              [expected' (..on A F)]
+              (check' (#.Item new_assumption assumptions) expected' actual))))
 
         [_ (#.Apply A F)]
         (do ..monad
-          [actual' (apply_type! F A)]
+          [actual' (..on A F)]
           (check' assumptions expected actual'))
 
         ... TODO: Refactor-away as cold-code
@@ -610,7 +606,7 @@
           [[( _) _]
            (do ..monad
              [[_ paramT] 
-              expected' (apply_type! expected paramT)]
+              expected' (..on paramT expected)]
              (check' assumptions expected' actual))])
         ([#.UnivQ ..existential]
          [#.ExQ ..var])
@@ -620,7 +616,7 @@
           [[_ ( _)]
            (do ..monad
              [[_ paramT] 
-              actual' (apply_type! actual paramT)]
+              actual' (..on paramT actual)]
              (check' assumptions expected actual'))])
         ([#.UnivQ ..var]
          [#.ExQ ..existential])
@@ -713,7 +709,7 @@
 
     (#.Var id)
     (do ..monad
-      [?actualT (read id)]
+      [?actualT (read' id)]
       (case ?actualT
         (#.Some actualT)
         (clean actualT)
diff --git a/stdlib/source/library/lux/type/implicit.lux b/stdlib/source/library/lux/type/implicit.lux
index 99cafdcda..cc54a82a1 100644
--- a/stdlib/source/library/lux/type/implicit.lux
+++ b/stdlib/source/library/lux/type/implicit.lux
@@ -30,7 +30,7 @@
 (def: (type_var id env)
   (-> Nat Type_Context (Meta Type))
   (case (list.example (|>> product.left (n.= id))
-                      (get@ #.var_bindings env))
+                      (value@ #.var_bindings env))
     (#.Some [_ (#.Some type)])
     (case type
       (#.Var id')
@@ -53,7 +53,7 @@
      compiler meta.compiler_state]
     (case raw_type
       (#.Var id)
-      (type_var id (get@ #.type_context compiler))
+      (type_var id (value@ #.type_context compiler))
 
       _
       (in raw_type))))
@@ -75,7 +75,7 @@
     (#.Product left right)
     (if (n.= 0 idx)
       (\ check.monad in left)
-      (member_type (dec idx) right))
+      (member_type (-- idx) right))
 
     _
     (if (n.= 0 idx)
@@ -336,7 +336,7 @@
                       (list.indices 10)
                       (list.indices 10))
                   "(Functor List) map"
-                  (\\ map inc (list.indices 10))
+                  (\\ map ++ (list.indices 10))
                   "Caveat emptor: You need to make sure to import the module of any implementation you want to use."
                   "Otherwise, this macro will not find it.")}
   (case args
@@ -364,7 +364,7 @@
 
     (#.Right [args _])
     (do {! meta.monad}
-      [labels (|> (macro.identifier "") (list.repeated (list.size args)) (monad.seq !))]
+      [labels (|> (macro.identifier "") (list.repeated (list.size args)) (monad.all !))]
       (in (list (` (let [(~+ (|> args (list.zipped/2 labels) (list\map ..pair_list) list\join))]
                      (..\\ (~ (code.identifier member)) (~+ labels)))))))
     ))
@@ -373,7 +373,7 @@
   (-> Nat (Meta (List Code)))
   (|> (macro.identifier "g!implicit")
       (list.repeated amount)
-      (monad.seq meta.monad)))
+      (monad.all meta.monad)))
 
 (def: implicits
   (Parser (List Code))
diff --git a/stdlib/source/library/lux/type/poly.lux b/stdlib/source/library/lux/type/poly.lux
index edd21a88c..51f0b7618 100644
--- a/stdlib/source/library/lux/type/poly.lux
+++ b/stdlib/source/library/lux/type/poly.lux
@@ -86,7 +86,7 @@
         (let [idx (.adjusted_idx env idx)]
           (if (n.= 0 idx)
             (|> (dictionary.value idx env) maybe.trusted product.left (code env))
-            (` (.$ (~ (code.nat (dec idx)))))))
+            (` (.$ (~ (code.nat (-- idx)))))))
 
         (#.Apply (#.Named [(~~ (static .prelude_module)) "Nothing"] _) (#.Parameter idx))
         (let [idx (.adjusted_idx env idx)]
diff --git a/stdlib/source/library/lux/type/quotient.lux b/stdlib/source/library/lux/type/quotient.lux
index 0006d9dbd..6334d68f3 100644
--- a/stdlib/source/library/lux/type/quotient.lux
+++ b/stdlib/source/library/lux/type/quotient.lux
@@ -40,7 +40,7 @@
     (template [  ]
       [(def: .public 
          (All [t c %] (-> (Quotient t c %) ))
-         (|>> :representation (get@ )))]
+         (|>> :representation (value@ )))]
 
       [value t #value]
       [label c #label]
diff --git a/stdlib/source/library/lux/type/refinement.lux b/stdlib/source/library/lux/type/refinement.lux
index 4e1a88c09..7bb718659 100644
--- a/stdlib/source/library/lux/type/refinement.lux
+++ b/stdlib/source/library/lux/type/refinement.lux
@@ -34,7 +34,7 @@
   (template [  ]
     [(def: .public 
        (All [t %] (-> (Refined t %) ))
-       (|>> :representation (get@ )))]
+       (|>> :representation (value@ )))]
 
     [value     t             #value]
     [predicate (Predicate t) #predicate]
diff --git a/stdlib/source/library/lux/type/resource.lux b/stdlib/source/library/lux/type/resource.lux
index 5ee949bd3..fee4aaf79 100644
--- a/stdlib/source/library/lux/type/resource.lux
+++ b/stdlib/source/library/lux/type/resource.lux
@@ -55,7 +55,7 @@
     (function (_ keys)
       (\ monad in [keys value])))
 
-  (def: (bind f input)
+  (def: (then f input)
     (function (_ keysI)
       (do monad
         [[keysT value] (input keysI)]
@@ -166,12 +166,12 @@
       (#.Item head tail)
       (do {! meta.monad}
         [.let [max_idx (list\fold n.max head tail)]
-         g!inputs (<| (monad.seq !) (list.repeated (inc max_idx)) (macro.identifier "input"))
+         g!inputs (<| (monad.all !) (list.repeated (++ max_idx)) (macro.identifier "input"))
          .let [g!outputs (|> (monad.fold maybe.monad
                                          (function (_ from to)
                                            (do maybe.monad
                                              [input (list.item from g!inputs)]
-                                             (in (row.add input to))))
+                                             (in (row.suffix input to))))
                                          (: (Row Code) row.empty)
                                          swaps)
                              maybe.trusted
@@ -210,7 +210,7 @@
        (do {! meta.monad}
          [g!keys (|> (macro.identifier "keys")
                      (list.repeated amount)
-                     (monad.seq !))]
+                     (monad.all !))]
          (in (list (` (: (All [(~ g!!) (~+ g!keys) (~ g!context)]
                            (-> ((~! monad.Monad) (~ g!!))
                                (Procedure (~ g!!)
diff --git a/stdlib/source/library/lux/type/unit.lux b/stdlib/source/library/lux/type/unit.lux
index fcbfe0711..e18af25b0 100644
--- a/stdlib/source/library/lux/type/unit.lux
+++ b/stdlib/source/library/lux/type/unit.lux
@@ -217,5 +217,5 @@
   (All [unit] (Enum (Qty unit)))
   
   (def: &order ..order)
-  (def: succ (|>> ..out inc ..in))
-  (def: pred (|>> ..out dec ..in)))
+  (def: succ (|>> ..out ++ ..in))
+  (def: pred (|>> ..out -- ..in)))
diff --git a/stdlib/source/library/lux/world/db/jdbc.lux b/stdlib/source/library/lux/world/db/jdbc.lux
index 2906cebeb..76c1cc17b 100644
--- a/stdlib/source/library/lux/world/db/jdbc.lux
+++ b/stdlib/source/library/lux/world/db/jdbc.lux
@@ -92,10 +92,10 @@
         (-> java/sql/PreparedStatement (IO (Try a)))
         (IO (Try a))))
   (do (try.with io.monad)
-    [prepared (io.io (java/sql/Connection::prepareStatement (sql.sql (get@ #sql statement))
+    [prepared (io.io (java/sql/Connection::prepareStatement (sql.sql (value@ #sql statement))
                                                             (java/sql/Statement::RETURN_GENERATED_KEYS)
                                                             conn))
-     _ (io.io ((get@ #input statement) (get@ #value statement) [1 prepared]))
+     _ (io.io ((value@ #input statement) (value@ #value statement) [1 prepared]))
      result (action prepared)
      _ (java/sql/Statement::close prepared)]
     (in result)))
@@ -114,29 +114,29 @@
 (def: .public (connect creds)
   (-> Credentials (IO (Try (DB IO))))
   (do (try.with io.monad)
-    [connection (java/sql/DriverManager::getConnection (get@ #url creds)
-                                                       (get@ #user creds)
-                                                       (get@ #password creds))]
+    [connection (java/sql/DriverManager::getConnection (value@ #url creds)
+                                                       (value@ #user creds)
+                                                       (value@ #password creds))]
     (in (: (DB IO)
            (implementation
             (def: execute
               (..can_execute
                (function (execute statement)
                  (with_statement statement connection
-                                 (function (_ prepared)
-                                   (do (try.with io.monad)
-                                     [row_count (java/sql/PreparedStatement::executeUpdate prepared)]
-                                     (in (.nat row_count))))))))
+                   (function (_ prepared)
+                     (do (try.with io.monad)
+                       [row_count (java/sql/PreparedStatement::executeUpdate prepared)]
+                       (in (.nat row_count))))))))
 
             (def: insert
               (..can_insert
                (function (insert statement)
                  (with_statement statement connection
-                                 (function (_ prepared)
-                                   (do (try.with io.monad)
-                                     [_ (java/sql/PreparedStatement::executeUpdate prepared)
-                                      result_set (io.io (java/sql/Statement::getGeneratedKeys prepared))]
-                                     (/output.rows /output.long result_set)))))))
+                   (function (_ prepared)
+                     (do (try.with io.monad)
+                       [_ (java/sql/PreparedStatement::executeUpdate prepared)
+                        result_set (io.io (java/sql/Statement::getGeneratedKeys prepared))]
+                       (/output.rows /output.long result_set)))))))
 
             (def: close
               (..can_close
@@ -147,10 +147,10 @@
               (..can_query
                (function (query [statement output])
                  (with_statement statement connection
-                                 (function (_ prepared)
-                                   (do (try.with io.monad)
-                                     [result_set (java/sql/PreparedStatement::executeQuery prepared)]
-                                     (/output.rows output result_set)))))))
+                   (function (_ prepared)
+                     (do (try.with io.monad)
+                       [result_set (java/sql/PreparedStatement::executeQuery prepared)]
+                       (/output.rows output result_set)))))))
             )))))
 
 (def: .public (with_db creds action)
diff --git a/stdlib/source/library/lux/world/db/jdbc/input.lux b/stdlib/source/library/lux/world/db/jdbc/input.lux
index fe510ea66..4a2f43507 100644
--- a/stdlib/source/library/lux/world/db/jdbc/input.lux
+++ b/stdlib/source/library/lux/world/db/jdbc/input.lux
@@ -75,7 +75,7 @@
      (function (_ value [idx statement])
        (do try.monad
          [_ ( (.int idx) value statement)]
-         (in [(.inc idx) statement]))))]
+         (in [(.++ idx) statement]))))]
 
   [boolean Bit java/sql/PreparedStatement::setBoolean]
 
@@ -99,7 +99,7 @@
          [_ ( (.int idx)
                       ( (instant.millis value))
                       statement)]
-         (in [(.inc idx) statement]))))]
+         (in [(.++ idx) statement]))))]
 
   [date       java/sql/PreparedStatement::setDate      java/sql/Date::new]
   [time       java/sql/PreparedStatement::setTime      java/sql/Time::new]
diff --git a/stdlib/source/library/lux/world/db/jdbc/output.lux b/stdlib/source/library/lux/world/db/jdbc/output.lux
index 08c7354f5..e6e9a8306 100644
--- a/stdlib/source/library/lux/world/db/jdbc/output.lux
+++ b/stdlib/source/library/lux/world/db/jdbc/output.lux
@@ -121,7 +121,7 @@
          (#try.Failure error)
 
          (#try.Success value)
-         (#try.Success [(inc idx) value]))))]
+         (#try.Success [(++ idx) value]))))]
 
   [boolean java/sql/ResultSet::getBoolean Bit]
 
@@ -146,7 +146,7 @@
          (#try.Failure error)
 
          (#try.Success value)
-         (#try.Success [(inc idx)
+         (#try.Success [(++ idx)
                         (instant.from_millis (java/util/Date::getTime value))]))))]
 
   [date       java/sql/ResultSet::getDate]
diff --git a/stdlib/source/library/lux/world/file.lux b/stdlib/source/library/lux/world/file.lux
index e6c10352f..05925b4e8 100644
--- a/stdlib/source/library/lux/world/file.lux
+++ b/stdlib/source/library/lux/world/file.lux
@@ -1059,8 +1059,8 @@
           [(#.Left file) #.End]
           (#try.Success (dictionary.has head
                                         (#.Left (|> file
-                                                    (set@ #mock_last_modified now)
-                                                    (set@ #mock_content content)))
+                                                    (with@ #mock_last_modified now)
+                                                    (with@ #mock_content content)))
                                         directory))
 
           [(#.Right sub_directory) (#.Item _)]
@@ -1239,7 +1239,7 @@
               (in (|> |store|
                       (..retrieve_mock_file! separator path)
                       (try\map (|>> product.right
-                                    (get@ #mock_content)
+                                    (value@ #mock_content)
                                     binary.size)))))))
 
          (def: (last_modified path)
@@ -1249,7 +1249,7 @@
               (in (|> |store|
                       (..retrieve_mock_file! separator path)
                       (try\map (|>> product.right
-                                    (get@ #mock_last_modified))))))))
+                                    (value@ #mock_last_modified))))))))
 
          (def: (can_execute? path)
            (stm.commit!
@@ -1258,7 +1258,7 @@
               (in (|> |store|
                       (..retrieve_mock_file! separator path)
                       (try\map (|>> product.right
-                                    (get@ #mock_can_execute))))))))
+                                    (value@ #mock_can_execute))))))))
 
          (def: (read path)
            (stm.commit!
@@ -1267,7 +1267,7 @@
               (in (|> |store|
                       (..retrieve_mock_file! separator path)
                       (try\map (|>> product.right
-                                    (get@ #mock_content))))))))
+                                    (value@ #mock_content))))))))
 
          (def: (delete path)
            (stm.commit!
@@ -1278,7 +1278,7 @@
             (..attempt! (function (_ |store|)
                           (do try.monad
                             [[name file] (..retrieve_mock_file! separator path |store|)]
-                            (..update_mock_file! separator path now (get@ #mock_content file) |store|)))
+                            (..update_mock_file! separator path now (value@ #mock_content file) |store|)))
                         store)))
 
          (def: (write content path)
@@ -1296,7 +1296,7 @@
                               [[name file] (..retrieve_mock_file! separator path |store|)]
                               (..update_mock_file! separator path now
                                                    (\ binary.monoid compose
-                                                      (get@ #mock_content file)
+                                                      (value@ #mock_content file)
                                                       content)
                                                    |store|)))
                           store))))
@@ -1308,7 +1308,7 @@
               (case (do try.monad
                       [[name file] (..retrieve_mock_file! separator origin |store|)
                        |store| (..delete_mock_node! separator origin |store|)]
-                      (..update_mock_file! separator destination (get@ #mock_last_modified file) (get@ #mock_content file) |store|))
+                      (..update_mock_file! separator destination (value@ #mock_last_modified file) (value@ #mock_content file) |store|))
                 (#try.Success |store|)
                 (do !
                   [_ (stm.write |store| store)]
diff --git a/stdlib/source/library/lux/world/file/watch.lux b/stdlib/source/library/lux/world/file/watch.lux
index 3a0b98f86..0e5deec4a 100644
--- a/stdlib/source/library/lux/world/file/watch.lux
+++ b/stdlib/source/library/lux/world/file/watch.lux
@@ -56,7 +56,7 @@
 
      (def: .public 
        (Predicate Concern)
-       (|>> :representation (get@ )))]
+       (|>> :representation (value@ )))]
 
     [creation creation? #create
      true false false]
@@ -283,7 +283,7 @@
                                    (loop [idx 0
                                           output #.End]
                                      (if (n.< size idx)
-                                       (recur (inc idx)
+                                       (recur (++ idx)
                                               (#.Item (java/util/List::get (.int idx) list)
                                                       output))
                                        output))))
@@ -365,7 +365,7 @@
                                (def: (default_start watch_events watcher path)
                                  (-> (List Watch_Event) java/nio/file/WatchService //.Path (Async (Try java/nio/file/WatchKey)))
                                  (let [watch_events' (list\fold (function (_ [index watch_event] watch_events')
-                                                                  (ffi.array_write index watch_event watch_events'))
+                                                                  (ffi.write! index watch_event watch_events'))
                                                                 (ffi.array (java/nio/file/WatchEvent$Kind java/lang/Object)
                                                                            (list.size watch_events))
                                                                 (list.enumeration watch_events))]
diff --git a/stdlib/source/library/lux/world/net/http/client.lux b/stdlib/source/library/lux/world/net/http/client.lux
index 167d87c88..50a5a2436 100644
--- a/stdlib/source/library/lux/world/net/http/client.lux
+++ b/stdlib/source/library/lux/world/net/http/client.lux
@@ -182,7 +182,7 @@
                                        (#.Some name)
                                        (do !
                                          [?value (java/net/URLConnection::getHeaderField index connection)]
-                                         (recur (inc index)
+                                         (recur (++ index)
                                                 (dictionary.has name (maybe.else "" ?value) headers)))
 
                                        #.None
@@ -232,10 +232,10 @@
         async.future
         (\ async.monad map
            (|>> (case> (#try.Success [status message])
-                       (#try.Success [status (update@ #//.body (: (-> (//.Body IO) (//.Body Async))
-                                                                  (function (_ body)
-                                                                    (|>> body async.future)))
-                                                      message)])
+                       (#try.Success [status (revised@ #//.body (: (-> (//.Body IO) (//.Body Async))
+                                                                   (function (_ body)
+                                                                     (|>> body async.future)))
+                                                       message)])
                        
                        (#try.Failure error)
                        (#try.Failure error)))))))
diff --git a/stdlib/source/library/lux/world/net/http/request.lux b/stdlib/source/library/lux/world/net/http/request.lux
index 6d9e94b8e..5b0a254e4 100644
--- a/stdlib/source/library/lux/world/net/http/request.lux
+++ b/stdlib/source/library/lux/world/net/http/request.lux
@@ -56,7 +56,7 @@
   (All [a] (-> (.Reader a) (-> a Server) Server))
   (function (_ (^@ request [identification protocol resource message]))
     (do async.monad
-      [?raw (read_text_body (get@ #//.body message))]
+      [?raw (read_text_body (value@ #//.body message))]
       (case (do try.monad
               [raw ?raw
                content (\ json.codec decode raw)]
@@ -71,7 +71,7 @@
   (-> (-> Text Server) Server)
   (function (_ (^@ request [identification protocol resource message]))
     (do async.monad
-      [?raw (read_text_body (get@ #//.body message))]
+      [?raw (read_text_body (value@ #//.body message))]
       (case ?raw
         (#try.Success content)
         (server content request)
@@ -82,14 +82,14 @@
 (def: .public (query property server)
   (All [a] (-> (Property a) (-> a Server) Server))
   (function (_ [identification protocol resource message])
-    (let [full (get@ #//.uri resource)
+    (let [full (value@ #//.uri resource)
           [uri query] (|> full
                           (text.split_by "?")
                           (maybe.else [full ""]))]
       (case (do try.monad
               [query (//query.parameters query)
                input (context.result query property)]
-              (in [[identification protocol (set@ #//.uri uri resource) message]
+              (in [[identification protocol (with@ #//.uri uri resource) message]
                    input]))
         (#try.Success [request input])
         (server input request)
@@ -101,7 +101,7 @@
   (All [a] (-> (Property a) (-> a Server) Server))
   (function (_ (^@ request [identification protocol resource message]))
     (do async.monad
-      [?body (read_text_body (get@ #//.body message))]
+      [?body (read_text_body (value@ #//.body message))]
       (case (do try.monad
               [body ?body
                form (//query.parameters body)]
@@ -116,7 +116,7 @@
   (All [a] (-> (Property a) (-> a Server) Server))
   (function (_ (^@ request [identification protocol resource message]))
     (case (do try.monad
-            [cookies (|> (get@ #//.headers message)
+            [cookies (|> (value@ #//.headers message)
                          (dictionary.value "Cookie")
                          (maybe.else "")
                          //cookie.get)]
diff --git a/stdlib/source/library/lux/world/net/http/response.lux b/stdlib/source/library/lux/world/net/http/response.lux
index 9d74ced0c..b49715c4d 100644
--- a/stdlib/source/library/lux/world/net/http/response.lux
+++ b/stdlib/source/library/lux/world/net/http/response.lux
@@ -40,7 +40,7 @@
 (def: .public (temporary_redirect to)
   (-> URL Response)
   (let [[status message] (..empty status.temporary_redirect)]
-    [status (update@ #//.headers (header.location to) message)]))
+    [status (revised@ #//.headers (header.location to) message)]))
 
 (def: .public not_found
   Response
diff --git a/stdlib/source/library/lux/world/net/http/route.lux b/stdlib/source/library/lux/world/net/http/route.lux
index a650f53d2..9689e3414 100644
--- a/stdlib/source/library/lux/world/net/http/route.lux
+++ b/stdlib/source/library/lux/world/net/http/route.lux
@@ -18,7 +18,7 @@
   [(def: .public ( server)
      (-> Server Server)
      (function (_ (^@ request [identification protocol resource message]))
-       (case (get@ #//.scheme protocol)
+       (case (value@ #//.scheme protocol)
          
          (server request)
 
@@ -33,7 +33,7 @@
   [(def: .public ( server)
      (-> Server Server)
      (function (_ (^@ request [identification protocol resource message]))
-       (case (get@ #//.method resource)
+       (case (value@ #//.method resource)
          
          (server request)
 
@@ -54,12 +54,12 @@
 (def: .public (uri path server)
   (-> URI Server Server)
   (function (_ [identification protocol resource message])
-    (if (text.starts_with? path (get@ #//.uri resource))
+    (if (text.starts_with? path (value@ #//.uri resource))
       (server [identification
                protocol
-               (update@ #//.uri
-                        (|>> (text.clip' (text.size path)) maybe.trusted)
-                        resource)
+               (revised@ #//.uri
+                         (|>> (text.clip' (text.size path)) maybe.trusted)
+                         resource)
                message])
       (async.resolved //response.not_found))))
 
diff --git a/stdlib/source/library/lux/world/service/journal.lux b/stdlib/source/library/lux/world/service/journal.lux
index 424288cb5..afab93a3e 100644
--- a/stdlib/source/library/lux/world/service/journal.lux
+++ b/stdlib/source/library/lux/world/service/journal.lux
@@ -33,12 +33,12 @@
 (implementation: .public (equivalence (^open "_\."))
   (All [a] (-> (Equivalence a) (Equivalence (Entry a))))
   (def: (= reference sample)
-    (and (_\= (get@ #what reference) (get@ #what sample))
-         (text\= (get@ #why reference) (get@ #why sample))
-         (text\= (get@ #how reference) (get@ #how sample))
-         (text\= (get@ #who reference) (get@ #who sample))
-         (text\= (get@ #where reference) (get@ #where sample))
-         (instant\= (get@ #when reference) (get@ #when sample)))))
+    (and (_\= (value@ #what reference) (value@ #what sample))
+         (text\= (value@ #why reference) (value@ #why sample))
+         (text\= (value@ #how reference) (value@ #how sample))
+         (text\= (value@ #who reference) (value@ #who sample))
+         (text\= (value@ #where reference) (value@ #where sample))
+         (instant\= (value@ #when reference) (value@ #when sample)))))
 
 (capability: .public (Can_Write ! a)
   (can_write (Entry a) (! (Try Any))))
diff --git a/stdlib/source/library/lux/world/shell.lux b/stdlib/source/library/lux/world/shell.lux
index 429c46897..d59b72786 100644
--- a/stdlib/source/library/lux/world/shell.lux
+++ b/stdlib/source/library/lux/world/shell.lux
@@ -182,9 +182,9 @@
                                  (-> (List Argument) (Array java/lang/String))
                                  (product.right
                                   (list\fold (function (_ argument [idx output])
-                                               [(inc idx) (jvm.array_write idx
-                                                                           (:as java/lang/String argument)
-                                                                           output)])
+                                               [(++ idx) (jvm.write! idx
+                                                                     (:as java/lang/String argument)
+                                                                     output)])
                                              [0 (jvm.array java/lang/String (list.size arguments))]
                                              arguments)))
 
@@ -197,9 +197,10 @@
                                      (java/util/Map java/lang/String java/lang/String)
                                      (java/util/Map java/lang/String java/lang/String))
                                  (list\fold (function (_ [key value] target')
-                                              (exec (java/util/Map::put (:as java/lang/String key)
-                                                                        (:as java/lang/String value)
-                                                                        target')
+                                              (exec
+                                                (java/util/Map::put (:as java/lang/String key)
+                                                                    (:as java/lang/String value)
+                                                                    target')
                                                 target'))
                                             target
                                             (dictionary.entries input)))
-- 
cgit v1.2.3