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/documentation/lux/abstract.lux | 2 +- .../source/documentation/lux/abstract/comonad.lux | 2 +- .../source/documentation/lux/abstract/interval.lux | 6 +- stdlib/source/documentation/lux/abstract/monad.lux | 6 +- stdlib/source/documentation/lux/control.lux | 51 ++- .../documentation/lux/control/concatenative.lux | 4 +- .../documentation/lux/control/concurrency.lux | 2 +- .../lux/control/concurrency/actor.lux | 2 +- .../lux/control/concurrency/async.lux | 12 +- .../documentation/lux/control/concurrency/frp.lux | 2 +- .../source/documentation/lux/control/exception.lux | 2 +- .../source/documentation/lux/control/function.lux | 12 +- .../lux/control/function/contract.lux | 36 ++ .../documentation/lux/control/function/memo.lux | 36 ++ .../documentation/lux/control/function/mixin.lux | 60 +++ .../documentation/lux/control/function/mutual.lux | 50 +++ stdlib/source/documentation/lux/control/io.lux | 2 +- stdlib/source/documentation/lux/control/parser.lux | 180 +++++++++ .../documentation/lux/control/parser/analysis.lux | 71 ++++ .../documentation/lux/control/parser/binary.lux | 139 +++++++ .../documentation/lux/control/parser/cli.lux | 59 +++ .../documentation/lux/control/parser/code.lux | 113 ++++++ .../lux/control/parser/environment.lux | 45 +++ stdlib/source/documentation/lux/control/pipe.lux | 117 ++++++ stdlib/source/documentation/lux/control/reader.lux | 47 +++ stdlib/source/documentation/lux/control/region.lux | 51 +++ .../source/documentation/lux/control/remember.lux | 38 ++ .../source/documentation/lux/control/security.lux | 18 + .../lux/control/security/capability.lux | 44 +++ .../documentation/lux/control/security/policy.lux | 89 +++++ stdlib/source/documentation/lux/control/state.lux | 82 ++++ stdlib/source/documentation/lux/control/thread.lux | 57 +++ stdlib/source/documentation/lux/control/try.lux | 62 +++ stdlib/source/documentation/lux/control/writer.lux | 39 ++ 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 +- stdlib/source/poly/lux/abstract/equivalence.lux | 6 +- stdlib/source/poly/lux/abstract/functor.lux | 12 +- stdlib/source/poly/lux/data/format/json.lux | 12 +- stdlib/source/program/aedifex.lux | 36 +- stdlib/source/program/aedifex/artifact.lux | 40 +- stdlib/source/program/aedifex/command/auto.lux | 8 +- stdlib/source/program/aedifex/command/build.lux | 64 ++-- stdlib/source/program/aedifex/command/clean.lux | 2 +- stdlib/source/program/aedifex/command/deploy.lux | 2 +- stdlib/source/program/aedifex/command/deps.lux | 6 +- stdlib/source/program/aedifex/command/install.lux | 4 +- stdlib/source/program/aedifex/command/test.lux | 9 +- stdlib/source/program/aedifex/dependency.lux | 12 +- .../program/aedifex/dependency/deployment.lux | 50 +-- .../program/aedifex/dependency/resolution.lux | 30 +- stdlib/source/program/aedifex/format.lux | 38 +- stdlib/source/program/aedifex/hash.lux | 22 +- stdlib/source/program/aedifex/metadata.lux | 10 +- .../source/program/aedifex/metadata/artifact.lux | 8 +- .../source/program/aedifex/metadata/snapshot.lux | 14 +- stdlib/source/program/aedifex/package.lux | 12 +- stdlib/source/program/aedifex/parser.lux | 2 +- stdlib/source/program/aedifex/pom.lux | 38 +- stdlib/source/program/aedifex/profile.lux | 36 +- stdlib/source/program/aedifex/project.lux | 6 +- .../source/program/aedifex/repository/remote.lux | 6 +- stdlib/source/program/aedifex/runtime.lux | 8 +- stdlib/source/program/compositor.lux | 8 +- stdlib/source/program/scriptum.lux | 54 +-- stdlib/source/specification/aedifex/repository.lux | 4 +- stdlib/source/specification/compositor.lux | 2 +- stdlib/source/specification/compositor/common.lux | 6 +- .../specification/compositor/generation/case.lux | 8 +- .../compositor/generation/function.lux | 6 +- .../compositor/generation/structure.lux | 4 +- stdlib/source/specification/lux/world/file.lux | 2 +- .../aedifex/artifact/snapshot/version/value.lux | 8 +- stdlib/source/test/aedifex/artifact/time/time.lux | 2 +- stdlib/source/test/aedifex/cache.lux | 14 +- stdlib/source/test/aedifex/command/auto.lux | 10 +- stdlib/source/test/aedifex/command/build.lux | 8 +- stdlib/source/test/aedifex/command/clean.lux | 2 +- stdlib/source/test/aedifex/command/deploy.lux | 14 +- stdlib/source/test/aedifex/command/deps.lux | 24 +- stdlib/source/test/aedifex/command/install.lux | 8 +- stdlib/source/test/aedifex/command/pom.lux | 2 +- stdlib/source/test/aedifex/command/test.lux | 8 +- .../source/test/aedifex/dependency/deployment.lux | 10 +- .../source/test/aedifex/dependency/resolution.lux | 82 ++-- stdlib/source/test/aedifex/input.lux | 6 +- stdlib/source/test/aedifex/local.lux | 2 +- stdlib/source/test/aedifex/metadata/artifact.lux | 6 +- stdlib/source/test/aedifex/metadata/snapshot.lux | 2 +- stdlib/source/test/aedifex/package.lux | 18 +- stdlib/source/test/aedifex/parser.lux | 14 +- stdlib/source/test/aedifex/pom.lux | 6 +- stdlib/source/test/aedifex/profile.lux | 4 +- stdlib/source/test/aedifex/project.lux | 8 +- stdlib/source/test/aedifex/runtime.lux | 8 +- stdlib/source/test/lux.lux | 118 +++--- stdlib/source/test/lux/abstract/comonad.lux | 4 +- stdlib/source/test/lux/abstract/enum.lux | 2 +- stdlib/source/test/lux/abstract/monad.lux | 24 +- stdlib/source/test/lux/abstract/monad/free.lux | 2 +- stdlib/source/test/lux/control/concatenative.lux | 48 +-- .../source/test/lux/control/concurrency/actor.lux | 26 +- .../source/test/lux/control/concurrency/async.lux | 18 +- stdlib/source/test/lux/control/concurrency/frp.lux | 34 +- .../test/lux/control/concurrency/semaphore.lux | 24 +- stdlib/source/test/lux/control/concurrency/stm.lux | 4 +- stdlib/source/test/lux/control/continuation.lux | 2 +- stdlib/source/test/lux/control/function.lux | 4 +- stdlib/source/test/lux/control/function/memo.lux | 6 +- stdlib/source/test/lux/control/function/mixin.lux | 12 +- stdlib/source/test/lux/control/function/mutual.lux | 8 +- stdlib/source/test/lux/control/parser.lux | 6 +- stdlib/source/test/lux/control/parser/binary.lux | 4 +- stdlib/source/test/lux/control/parser/cli.lux | 2 +- .../source/test/lux/control/parser/synthesis.lux | 4 +- stdlib/source/test/lux/control/parser/text.lux | 6 +- stdlib/source/test/lux/control/parser/type.lux | 2 +- stdlib/source/test/lux/control/parser/xml.lux | 6 +- stdlib/source/test/lux/control/pipe.lux | 16 +- stdlib/source/test/lux/control/region.lux | 8 +- stdlib/source/test/lux/control/state.lux | 8 +- stdlib/source/test/lux/data/binary.lux | 20 +- stdlib/source/test/lux/data/collection/array.lux | 6 +- stdlib/source/test/lux/data/collection/bits.lux | 6 +- .../source/test/lux/data/collection/dictionary.lux | 18 +- .../lux/data/collection/dictionary/ordered.lux | 4 +- .../test/lux/data/collection/dictionary/plist.lux | 2 +- stdlib/source/test/lux/data/collection/list.lux | 22 +- stdlib/source/test/lux/data/collection/queue.lux | 4 +- .../test/lux/data/collection/queue/priority.lux | 4 +- stdlib/source/test/lux/data/collection/row.lux | 28 +- .../source/test/lux/data/collection/sequence.lux | 54 +-- stdlib/source/test/lux/data/collection/set.lux | 2 +- .../source/test/lux/data/collection/set/multi.lux | 2 +- .../test/lux/data/collection/set/ordered.lux | 4 +- .../test/lux/data/collection/tree/zipper.lux | 4 +- stdlib/source/test/lux/data/color.lux | 6 +- stdlib/source/test/lux/data/color/named.lux | 14 +- stdlib/source/test/lux/data/format/tar.lux | 22 +- stdlib/source/test/lux/data/product.lux | 8 +- stdlib/source/test/lux/data/sum.lux | 6 +- stdlib/source/test/lux/data/text.lux | 24 +- stdlib/source/test/lux/data/text/buffer.lux | 12 +- stdlib/source/test/lux/data/text/encoding.lux | 2 +- stdlib/source/test/lux/data/text/escape.lux | 6 +- stdlib/source/test/lux/data/text/unicode/block.lux | 10 +- stdlib/source/test/lux/data/text/unicode/set.lux | 4 +- stdlib/source/test/lux/documentation.lux | 12 +- stdlib/source/test/lux/ffi.jvm.lux | 16 +- stdlib/source/test/lux/ffi.old.lux | 10 +- stdlib/source/test/lux/locale/language.lux | 10 +- stdlib/source/test/lux/locale/territory.lux | 10 +- stdlib/source/test/lux/macro/local.lux | 4 +- stdlib/source/test/lux/macro/syntax/check.lux | 4 +- stdlib/source/test/lux/macro/syntax/definition.lux | 4 +- stdlib/source/test/lux/math.lux | 4 +- stdlib/source/test/lux/math/logic/continuous.lux | 4 +- stdlib/source/test/lux/math/modulus.lux | 2 +- stdlib/source/test/lux/math/number/complex.lux | 40 +- stdlib/source/test/lux/math/number/i16.lux | 4 +- stdlib/source/test/lux/math/number/i32.lux | 4 +- stdlib/source/test/lux/math/number/i64.lux | 12 +- stdlib/source/test/lux/math/number/i8.lux | 4 +- stdlib/source/test/lux/math/number/int.lux | 2 +- stdlib/source/test/lux/math/number/nat.lux | 2 +- stdlib/source/test/lux/math/number/rev.lux | 2 +- stdlib/source/test/lux/meta.lux | 2 +- stdlib/source/test/lux/target/jvm.lux | 20 +- stdlib/source/test/lux/test.lux | 112 +++--- stdlib/source/test/lux/time/date.lux | 2 +- stdlib/source/test/lux/time/month.lux | 2 +- stdlib/source/test/lux/time/year.lux | 2 +- .../compiler/language/lux/phase/analysis/case.lux | 12 +- .../language/lux/phase/analysis/function.lux | 12 +- .../language/lux/phase/analysis/structure.lux | 39 +- .../compiler/language/lux/phase/synthesis/case.lux | 12 +- .../language/lux/phase/synthesis/function.lux | 20 +- .../compiler/language/lux/phase/synthesis/loop.lux | 8 +- .../language/lux/phase/synthesis/structure.lux | 11 +- .../language/lux/phase/synthesis/variable.lux | 50 +-- stdlib/source/test/lux/type.lux | 31 +- stdlib/source/test/lux/type/abstract.lux | 2 +- stdlib/source/test/lux/type/check.lux | 38 +- stdlib/source/test/lux/type/implicit.lux | 4 +- stdlib/source/test/lux/type/refinement.lux | 6 +- stdlib/source/test/lux/world/file/watch.lux | 2 +- stdlib/source/test/lux/world/input/keyboard.lux | 18 +- stdlib/source/test/lux/world/net/http/client.lux | 2 +- stdlib/source/test/lux/world/net/http/status.lux | 14 +- stdlib/source/test/lux/world/program.lux | 2 +- 414 files changed, 4525 insertions(+), 3349 deletions(-) create mode 100644 stdlib/source/documentation/lux/control/function/contract.lux create mode 100644 stdlib/source/documentation/lux/control/function/memo.lux create mode 100644 stdlib/source/documentation/lux/control/function/mixin.lux create mode 100644 stdlib/source/documentation/lux/control/function/mutual.lux create mode 100644 stdlib/source/documentation/lux/control/parser.lux create mode 100644 stdlib/source/documentation/lux/control/parser/analysis.lux create mode 100644 stdlib/source/documentation/lux/control/parser/binary.lux create mode 100644 stdlib/source/documentation/lux/control/parser/cli.lux create mode 100644 stdlib/source/documentation/lux/control/parser/code.lux create mode 100644 stdlib/source/documentation/lux/control/parser/environment.lux create mode 100644 stdlib/source/documentation/lux/control/pipe.lux create mode 100644 stdlib/source/documentation/lux/control/reader.lux create mode 100644 stdlib/source/documentation/lux/control/region.lux create mode 100644 stdlib/source/documentation/lux/control/remember.lux create mode 100644 stdlib/source/documentation/lux/control/security.lux create mode 100644 stdlib/source/documentation/lux/control/security/capability.lux create mode 100644 stdlib/source/documentation/lux/control/security/policy.lux create mode 100644 stdlib/source/documentation/lux/control/state.lux create mode 100644 stdlib/source/documentation/lux/control/thread.lux create mode 100644 stdlib/source/documentation/lux/control/try.lux create mode 100644 stdlib/source/documentation/lux/control/writer.lux 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') diff --git a/stdlib/source/documentation/lux/abstract.lux b/stdlib/source/documentation/lux/abstract.lux index 9cc80dcac..a8c0d3b03 100644 --- a/stdlib/source/documentation/lux/abstract.lux +++ b/stdlib/source/documentation/lux/abstract.lux @@ -24,7 +24,7 @@ (.def: .public documentation (.List $.Module) - (list.joined + (list.together (list /apply.documentation /codec.documentation /comonad.documentation diff --git a/stdlib/source/documentation/lux/abstract/comonad.lux b/stdlib/source/documentation/lux/abstract/comonad.lux index f1e220593..5ae976a63 100644 --- a/stdlib/source/documentation/lux/abstract/comonad.lux +++ b/stdlib/source/documentation/lux/abstract/comonad.lux @@ -18,7 +18,7 @@ "A co-monadic parallel to the 'do' macro." [(let [square (function (_ n) (* n n))] (be comonad - [inputs (iterate inc +2)] + [inputs (iterate ++ +2)] (square (out inputs))))]) (.def: .public documentation diff --git a/stdlib/source/documentation/lux/abstract/interval.lux b/stdlib/source/documentation/lux/abstract/interval.lux index f4c57de2a..7162f9ee9 100644 --- a/stdlib/source/documentation/lux/abstract/interval.lux +++ b/stdlib/source/documentation/lux/abstract/interval.lux @@ -11,6 +11,10 @@ (documentation: /.Interval "A representation of top and bottom boundaries for an ordered type.") +(documentation: /.singleton + "An interval where both top and bottom are the same value." + [(singleton enum elem)]) + (documentation: /.borders? "Where a value is at the border of an interval.") @@ -31,13 +35,13 @@ ($.module /._ "" [..Interval + ..singleton ..borders? ..union ..intersection ..complement ..meets? ($.default /.between) - ($.default /.singleton) ($.default /.inner?) ($.default /.outer?) ($.default /.singleton?) diff --git a/stdlib/source/documentation/lux/abstract/monad.lux b/stdlib/source/documentation/lux/abstract/monad.lux index dd472057d..2d55ff0c5 100644 --- a/stdlib/source/documentation/lux/abstract/monad.lux +++ b/stdlib/source/documentation/lux/abstract/monad.lux @@ -21,9 +21,9 @@ z (f2 z)] (in (f3 z)))]) -(documentation: /.bind +(documentation: /.then "Apply a function with monadic effects to a monadic value and yield a new monadic value." - [(bind monad function)]) + [(then monad function)]) (documentation: /.seq "Run all the monadic values in the list and produce a list of the base values." @@ -47,7 +47,7 @@ "" [..Monad ..do - ..bind + ..then ..seq ..map ..only diff --git a/stdlib/source/documentation/lux/control.lux b/stdlib/source/documentation/lux/control.lux index 4fcbe7a98..3a1f688a9 100644 --- a/stdlib/source/documentation/lux/control.lux +++ b/stdlib/source/documentation/lux/control.lux @@ -16,30 +16,21 @@ ["#." io] ["#." lazy] ["#." maybe] - ... ["#." parser] - ... ["#." pipe] - ... ["#." reader] - ... ["#." region] - ... ["#." remember] - ... [security - ... ["#." policy] - ... ["#." capability]] - ... ["#." state] - ... ["#." thread] - ... ["#." try] - ... ["#." writer] + ["#." parser] + ["#." pipe] + ["#." reader] + ["#." region] + ["#." remember] + ["#." security] + ["#." state] + ["#." thread] + ["#." try] + ["#." writer] ]) -... (def: security -... Test -... ($_ _.and -... /policy.documentation -... /capability.documentation -... )) - (.def: .public documentation (.List $.Module) - (list.joined + (list.together (list /concatenative.documentation /concurrency.documentation /continuation.documentation @@ -48,14 +39,14 @@ /io.documentation /lazy.documentation /maybe.documentation - ... /parser.documentation - ... /pipe.documentation - ... /reader.documentation - ... /region.documentation - ... /remember.documentation - ... ..security - ... /state.documentation - ... /thread.documentation - ... /try.documentation - ... /writer.documentation + /parser.documentation + /pipe.documentation + /reader.documentation + /region.documentation + /remember.documentation + /security.documentation + /state.documentation + /thread.documentation + /try.documentation + /writer.documentation ))) diff --git a/stdlib/source/documentation/lux/control/concatenative.lux b/stdlib/source/documentation/lux/control/concatenative.lux index 495bc5512..6c97e056f 100644 --- a/stdlib/source/documentation/lux/control/concatenative.lux +++ b/stdlib/source/documentation/lux/control/concatenative.lux @@ -51,7 +51,7 @@ (documentation: /.apply "A generator for functions that turn arity N functions into arity N concatenative functions." [(: (=> [Nat] [Nat]) - ((apply 1) inc))]) + ((apply 1) ++))]) (template [] [(with_expansions [ (template.identifier [/._] ["apply/" ]) @@ -167,7 +167,7 @@ (documentation: /.do "Do-while loop expression." - [(n.= (inc sample) + [(n.= (++ sample) (||> (push sample) (push (push false)) (push (|>> (push 1) n/+)) diff --git a/stdlib/source/documentation/lux/control/concurrency.lux b/stdlib/source/documentation/lux/control/concurrency.lux index f9b751494..1408c984a 100644 --- a/stdlib/source/documentation/lux/control/concurrency.lux +++ b/stdlib/source/documentation/lux/control/concurrency.lux @@ -18,7 +18,7 @@ (.def: .public documentation (.List $.Module) - (list.joined + (list.together (list /actor.documentation /async.documentation /atom.documentation diff --git a/stdlib/source/documentation/lux/control/concurrency/actor.lux b/stdlib/source/documentation/lux/control/concurrency/actor.lux index 29513888c..6f9327a9a 100644 --- a/stdlib/source/documentation/lux/control/concurrency/actor.lux +++ b/stdlib/source/documentation/lux/control/concurrency/actor.lux @@ -87,7 +87,7 @@ [(actor {Nat 123} ((on_mail message state self) - (message (inc state) self)))]) + (message (++ state) self)))]) (documentation: /.message: (format "A message can access the actor's state through the state parameter." diff --git a/stdlib/source/documentation/lux/control/concurrency/async.lux b/stdlib/source/documentation/lux/control/concurrency/async.lux index 2842ed06b..823967b36 100644 --- a/stdlib/source/documentation/lux/control/concurrency/async.lux +++ b/stdlib/source/documentation/lux/control/concurrency/async.lux @@ -59,17 +59,17 @@ \n "Returns an async that will eventually host its result.") [(future computation)]) -(documentation: /.delayed +(documentation: /.after "Delivers a value after a certain period has passed." - [(delayed milli_seconds value)]) + [(after milli_seconds value)]) (documentation: /.delay "An async that will be resolved after the specified amount of milli-seconds." [(delay milli_seconds)]) -(documentation: /.time_out +(documentation: /.within "Wait for an async to be resolved within the specified amount of milli-seconds." - [(time_out milli_seconds async)]) + [(within milli_seconds async)]) (.def: .public documentation (.List $.Module) @@ -87,9 +87,9 @@ ..either ..schedule! ..future - ..delayed + ..after ..delay - ..time_out + ..within ($.default /.functor) ($.default /.apply) ($.default /.monad)] diff --git a/stdlib/source/documentation/lux/control/concurrency/frp.lux b/stdlib/source/documentation/lux/control/concurrency/frp.lux index 71f740782..2500b119d 100644 --- a/stdlib/source/documentation/lux/control/concurrency/frp.lux +++ b/stdlib/source/documentation/lux/control/concurrency/frp.lux @@ -57,7 +57,7 @@ ($.default /.apply) ($.default /.monad) ($.default /.subscribe!) - ($.default /.folds) + ($.default /.aggregates) ($.default /.poll) ($.default /.periodic) ($.default /.iterations) diff --git a/stdlib/source/documentation/lux/control/exception.lux b/stdlib/source/documentation/lux/control/exception.lux index ec225630a..fae2b0163 100644 --- a/stdlib/source/documentation/lux/control/exception.lux +++ b/stdlib/source/documentation/lux/control/exception.lux @@ -63,7 +63,7 @@ (.def: .public documentation (.List $.Module) ($.module /._ - "" + "Pure-Lux exception-handling functionality." [..Exception ..match? ..when diff --git a/stdlib/source/documentation/lux/control/function.lux b/stdlib/source/documentation/lux/control/function.lux index 889cc8655..88556dda7 100644 --- a/stdlib/source/documentation/lux/control/function.lux +++ b/stdlib/source/documentation/lux/control/function.lux @@ -8,7 +8,12 @@ [macro ["." template]]]] [\\library - ["." /]]) + ["." /]] + ["." / #_ + ["#." contract] + ["#." memo] + ["#." mixin] + ["#." mutual]]) (documentation: /.identity (format "Identity function." @@ -45,4 +50,7 @@ ..flipped ..apply ($.default /.monoid)] - [])) + [/contract.documentation + /memo.documentation + /mixin.documentation + /mutual.documentation])) diff --git a/stdlib/source/documentation/lux/control/function/contract.lux b/stdlib/source/documentation/lux/control/function/contract.lux new file mode 100644 index 000000000..84ef6ad13 --- /dev/null +++ b/stdlib/source/documentation/lux/control/function/contract.lux @@ -0,0 +1,36 @@ +(.module: + [library + [lux (#- if loop) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.pre + (format "Pre-conditions." + \n "Given a test and an expression to run, only runs the expression if the test passes." + \n "Otherwise, an error is raised.") + [(pre (i.= +4 (i.+ +2 +2)) + (foo +123 +456 +789))]) + +(documentation: /.post + (format "Post-conditions." + \n "Given a predicate and an expression to run, evaluates the expression and then tests the output with the predicate." + \n "If the predicate returns #1, returns the value of the expression." + \n "Otherwise, an error is raised.") + [(post i.even? + (i.+ +2 +2))]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..pre + ..post + ($.default /.pre_condition_failed) + ($.default /.post_condition_failed)] + [])) diff --git a/stdlib/source/documentation/lux/control/function/memo.lux b/stdlib/source/documentation/lux/control/function/memo.lux new file mode 100644 index 000000000..823b49772 --- /dev/null +++ b/stdlib/source/documentation/lux/control/function/memo.lux @@ -0,0 +1,36 @@ +(.module: + [library + [lux (#- if loop) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.open + "Memoization where the memoized results can be re-used accross invocations." + [(open memo)]) + +(documentation: /.closed + (format "Memoization confined to a single invocation to the function (not counting any subsequent recursive invocations)." + \n "Memoized results will be re-used during recursive invocations, but cannot be accessed after the main invocation has ended.") + [(closed hash memo)]) + +(documentation: /.none + (format "No memoization at all." + \n "This is useful as a test control when measuring the effect of using memoization.") + [(none hash memo)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..open + ..closed + ..none + ($.default /.memoization) + ($.default /.Memo)] + [])) diff --git a/stdlib/source/documentation/lux/control/function/mixin.lux b/stdlib/source/documentation/lux/control/function/mixin.lux new file mode 100644 index 000000000..f23f065b0 --- /dev/null +++ b/stdlib/source/documentation/lux/control/function/mixin.lux @@ -0,0 +1,60 @@ +(.module: + [library + [lux (#- if loop) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Mixin + "A partially-defined function which can be mixed with others to inherit their behavior.") + +(documentation: /.mixin + "Given a mixin, produces a normal function." + [(mixin f)]) + +(documentation: /.nothing + "A mixin that does nothing and just delegates work to the next mixin.") + +(documentation: /.with + "Produces a new mixin, where the behavior of the child can make use of the behavior of the parent." + [(with parent child)]) + +(documentation: /.advice + "Only apply then mixin when the input meets some criterion." + [(advice when then)]) + +(documentation: /.before + "Executes an action before doing the main work." + [(before monad action)]) + +(documentation: /.after + "Executes an action after doing the main work." + [(after monad action)]) + +(documentation: /.Recursive + "An indirectly recursive function.") + +(documentation: /.of_recursive + "Transform an indirectly recursive function into a mixin." + [(of_recursive recursive)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Mixin + ..mixin + ..nothing + ..with + ..advice + ..before + ..after + ..Recursive + ..of_recursive + ($.default /.monoid)] + [])) diff --git a/stdlib/source/documentation/lux/control/function/mutual.lux b/stdlib/source/documentation/lux/control/function/mutual.lux new file mode 100644 index 000000000..9dd7588b7 --- /dev/null +++ b/stdlib/source/documentation/lux/control/function/mutual.lux @@ -0,0 +1,50 @@ +(.module: + [library + [lux (#- let def:) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.let + "Locally-defined mutually-recursive functions." + [(let [(even? number) + (-> Nat Bit) + (case number + 0 true + _ (odd? (-- number))) + + (odd? number) + (-> Nat Bit) + (case number + 0 false + _ (even? (-- number)))] + (and (even? 4) + (odd? 5)))]) + +(documentation: /.def: + "Globally-defined mutually-recursive functions." + [(def: + [.public (even? number) + (-> Nat Bit) + (case number + 0 true + _ (odd? (-- number)))] + + [.public (odd? number) + (-> Nat Bit) + (case number + 0 false + _ (even? (-- number)))])]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..let + ..def:] + [])) diff --git a/stdlib/source/documentation/lux/control/io.lux b/stdlib/source/documentation/lux/control/io.lux index 81cf08740..085a70314 100644 --- a/stdlib/source/documentation/lux/control/io.lux +++ b/stdlib/source/documentation/lux/control/io.lux @@ -26,7 +26,7 @@ (.def: .public documentation (.List $.Module) ($.module /._ - "" + "A method for abstracting I/O and effectful computations to make it safe while writing pure functional code." [..IO ..io ..run! diff --git a/stdlib/source/documentation/lux/control/parser.lux b/stdlib/source/documentation/lux/control/parser.lux new file mode 100644 index 000000000..081c5a792 --- /dev/null +++ b/stdlib/source/documentation/lux/control/parser.lux @@ -0,0 +1,180 @@ +(.module: + [library + [lux (#- or and not) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]] + ["." / #_ + ["#." analysis] + ["#." binary] + ["#." cli] + ["#." code] + ["#." environment] + ... ["#." json] + ... ["#." synthesis] + ... ["#." text] + ... ["#." tree] + ... ["#." type] + ... ["#." xml] + ]) + +(documentation: /.Parser + "A generic parser.") + +(documentation: /.assertion + "Fails with the given message if the test is #0." + [(assertion message test)]) + +(documentation: /.maybe + "Optionality combinator." + [(maybe parser)]) + +(documentation: /.result + (format "Executes the parser on the input." + \n "Does not verify that all of the input has been consumed by the parser." + \n "Returns both the parser's output, and a value that represents the remaining input.") + [(result parser input)]) + +(documentation: /.and + "Sequencing combinator." + [(and first second)]) + +(documentation: /.or + "Heterogeneous alternative combinator." + [(or left right)]) + +(documentation: /.either + "Homogeneous alternative combinator." + [(either this that)]) + +(documentation: /.some + "0-or-more combinator." + [(some parser)]) + +(documentation: /.many + "1-or-more combinator." + [(many parser)]) + +(documentation: /.exactly + "Parse exactly N times." + [(exactly amount parser)]) + +(documentation: /.at_least + "Parse at least N times." + [(at_least amount parser)]) + +(documentation: /.at_most + "Parse at most N times." + [(at_most amount parser)]) + +(documentation: /.between + "" + [(between minimum additional parser)]) + +(documentation: /.separated_by + "Parses instances of 'parser' that are separated by instances of 'separator'." + [(separated_by separator parser)]) + +(documentation: /.not + "Only succeeds when the underlying parser fails." + [(not parser)]) + +(documentation: /.failure + "Always fail with this 'message'." + [(failure message)]) + +(documentation: /.lifted + "Lift a potentially failed computation into a parser." + [(lifted operation)]) + +(documentation: /.else + "If the given parser fails, returns the default value." + [(else value parser)]) + +(documentation: /.remaining + "Yield the remaining input (without consuming it).") + +(documentation: /.rec + "Combinator for recursive parsers." + [(rec parser)]) + +(documentation: /.after + "Run the parser after another one (whose output is ignored)." + [(after param subject)]) + +(documentation: /.before + "Run the parser before another one (whose output is ignored)." + [(before param subject)]) + +(documentation: /.only + "Only succeed when the parser's output passes a test." + [(only test parser)]) + +(documentation: /.parses? + "Ignore a parser's output and just verify that it succeeds." + [(parses? parser)]) + +(documentation: /.parses + "Ignore a parser's output and just execute it." + [(parses parser)]) + +(documentation: /.speculative + (format "Executes a parser, without actually consuming the input." + \n "That way, the same input can be consumed again by another parser.") + [(speculative parser)]) + +(documentation: /.codec + "Decode the output of a parser using a codec." + [(codec codec parser)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Parser + ..assertion + ..maybe + ..result + ..and + ..or + ..either + ..some + ..many + ..exactly + ..at_least + ..at_most + ..between + ..separated_by + ..not + ..failure + ..lifted + ..else + ..remaining + ..rec + ..after + ..before + ..only + ..parses? + ..parses + ..speculative + ..codec + ($.default /.functor) + ($.default /.apply) + ($.default /.monad)] + [/analysis.documentation + /binary.documentation + /cli.documentation + /code.documentation + /environment.documentation + ... /json.documentation + ... /synthesis.documentation + ... /text.documentation + ... /tree.documentation + ... /type.documentation + ... /xml.documentation + ])) diff --git a/stdlib/source/documentation/lux/control/parser/analysis.lux b/stdlib/source/documentation/lux/control/parser/analysis.lux new file mode 100644 index 000000000..1f66be4bf --- /dev/null +++ b/stdlib/source/documentation/lux/control/parser/analysis.lux @@ -0,0 +1,71 @@ +(.module: + [library + [lux (#- nat int rev local) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Parser + "A parser for Lux code analysis nodes.") + +(documentation: /.result + "Executes a parser and makes sure no inputs go unconsumed." + [(result parser input)]) + +(documentation: /.any + "Matches any value, without discrimination.") + +(documentation: /.end! + "Ensures there are no more inputs.") + +(documentation: /.end? + "Checks whether there are no more inputs.") + +(template [ ] + [(`` (as_is (`` (documentation: + (format "Queries for a " (~~ (template.text [])) " value."))) + (`` (documentation: + (format "Assert a specific " (~~ (template.text [])) " value.")))))] + + [/.bit /.bit!] + [/.nat /.nat!] + [/.int /.int!] + [/.rev /.rev!] + [/.frac /.frac!] + [/.text /.text!] + [/.local /.local!] + [/.foreign /.foreign!] + [/.constant /.constant!] + ) + +(documentation: /.tuple + "Parses only within the context of a tuple's contents." + [(tuple parser)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Parser + ..result + ..any + ..end! + ..end? + ..bit ..bit! + ..nat ..nat! + ..int ..int! + ..rev ..rev! + ..frac ..frac! + ..text ..text! + ..local ..local! + ..foreign ..foreign! + ..constant ..constant! + ..tuple + ($.default /.cannot_parse) + ($.default /.unconsumed_input)] + [])) diff --git a/stdlib/source/documentation/lux/control/parser/binary.lux b/stdlib/source/documentation/lux/control/parser/binary.lux new file mode 100644 index 000000000..c20d3b0a7 --- /dev/null +++ b/stdlib/source/documentation/lux/control/parser/binary.lux @@ -0,0 +1,139 @@ +(.module: + [library + [lux (#- list) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Offset + "An offset for reading within binary data.") + +(documentation: /.Parser + "A parser for raw binary data.") + +(documentation: /.result + "Runs a parser and checks that all the binary data was read by it." + [(result parser input)]) + +(documentation: /.end? + "Checks whether there is no more data to read.") + +(documentation: /.offset + "The current offset (i.e. how much data has been read).") + +(documentation: /.remaining + "How much of the data remains to be read.") + +(documentation: /.Size + "The size of a chunk of data within a binary array.") + +(documentation: /.rec + "Tie the knot for a recursive parser.") + +(documentation: /.any + "Does no parsing, and just returns a dummy value.") + +(documentation: /.segment + "Parses a chunk of data of a given size." + [(segment size)]) + +(template [ ] + [(documentation: + (format "Parses a block of data prefixed with a size that is " (%.nat ) " bytes long."))] + + [08 /.binary/8] + [16 /.binary/16] + [32 /.binary/32] + [64 /.binary/64] + ) + +(template [ ] + [(documentation: + (format "Parses a block of (UTF-8 encoded) text prefixed with a size that is " (%.nat ) " bytes long."))] + + [08 /.utf8/8] + [16 /.utf8/16] + [32 /.utf8/32] + [64 /.utf8/64] + ) + +(template [ ] + [(documentation: + (format "Parses a row of values prefixed with a size that is " (%.nat ) " bytes long."))] + + [08 /.row/8] + [16 /.row/16] + [32 /.row/32] + [64 /.row/64] + ) + +(documentation: /.list + "Parses an arbitrarily long list of values." + [(list value)]) + +(documentation: /.set + "" + [(set hash value)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Offset + ..Parser + ..result + ..end? + ..offset + ..remaining + ..Size + ..rec + ..any + ..segment + + ..binary/8 + ..binary/16 + ..binary/32 + ..binary/64 + + ..utf8/8 + ..utf8/16 + ..utf8/32 + ..utf8/64 + + ..row/8 + ..row/16 + ..row/32 + ..row/64 + + ..list + ..set + ($.default /.binary_was_not_fully_read) + ($.default /.size/8) + ($.default /.size/16) + ($.default /.size/32) + ($.default /.size/64) + ($.default /.bits/8) + ($.default /.bits/16) + ($.default /.bits/32) + ($.default /.bits/64) + ($.default /.nat) + ($.default /.int) + ($.default /.rev) + ($.default /.frac) + ($.default /.invalid_tag) + ($.default /.or) + ($.default /.not_a_bit) + ($.default /.bit) + ($.default /.text) + ($.default /.maybe) + ($.default /.set_elements_are_not_unique) + ($.default /.name) + ($.default /.type) + ($.default /.location) + ($.default /.code)] + [])) diff --git a/stdlib/source/documentation/lux/control/parser/cli.lux b/stdlib/source/documentation/lux/control/parser/cli.lux new file mode 100644 index 000000000..ecb2b4cb7 --- /dev/null +++ b/stdlib/source/documentation/lux/control/parser/cli.lux @@ -0,0 +1,59 @@ +(.module: + [library + [lux #* + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Parser + "A command-line interface parser.") + +(documentation: /.result + "Executes the parser and verifies that all inputs are processed." + [(result parser inputs)]) + +(documentation: /.any + "Just returns the next input without applying any logic.") + +(documentation: /.parse + "Parses the next input with a parsing function." + [(parse parser)]) + +(documentation: /.this + "Checks that a token is in the inputs." + [(this reference)]) + +(documentation: /.somewhere + "Given a parser, tries to parse it somewhere in the inputs (i.e. not necessarily parsing the immediate inputs)." + [(somewhere cli)]) + +(documentation: /.end + "Ensures there are no more inputs.") + +(documentation: /.named + "Parses a named parameter and yields its value." + [(named name value)]) + +(documentation: /.parameter + "Parses a parameter that can have either a short or a long name." + [(parameter [short long] value)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Parser + ..result + ..any + ..parse + ..this + ..somewhere + ..end + ..named + ..parameter] + [])) diff --git a/stdlib/source/documentation/lux/control/parser/code.lux b/stdlib/source/documentation/lux/control/parser/code.lux new file mode 100644 index 000000000..aa7e91442 --- /dev/null +++ b/stdlib/source/documentation/lux/control/parser/code.lux @@ -0,0 +1,113 @@ +(.module: + [library + [lux (#- nat int rev local) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Parser + "A Lux code parser.") + +(documentation: /.any + "Yields the next input without applying any logic.") + +(template [ ] + [(`` (documentation: + (format "Parses the next " (~~ (template.text [])) " input."))) + (`` (documentation: + (format "Checks for a specific " (~~ (template.text [])) " input.")))] + + [/.bit /.bit!] + [/.nat /.nat!] + [/.int /.int!] + [/.rev /.rev!] + [/.frac /.frac!] + [/.text /.text!] + [/.identifier /.identifier!] + [/.tag /.tag!] + ) + +(documentation: /.this! + "Ensures the given Code is the next input." + [(this! code)]) + +(template [ ] + [(documentation: + (format "Parse a local " " (a " " that has no module prefix).")) + (documentation: + (format "Checks for a specific local " " (a " " that has no module prefix)."))] + + [/.local_identifier /.local_identifier! "local identifier"] + [ /.local_tag /.local_tag! "local tag"] + ) + +(template [] + [(`` (documentation: + (format "Parses the contents of a " (~~ (template.text [])) ".")))] + + [/.form] + [/.tuple] + ) + +(documentation: /.record + "Parses the contents of a record.") + +(documentation: /.end! + "Verifies there are no more inputs.") + +(documentation: /.end? + "Checks whether there are no more inputs.") + +(documentation: /.result + "Executes a parser against a stream of code, and verifies all the inputs are consumed." + [(result parser inputs)]) + +(documentation: /.local + "Runs parser against the given list of inputs." + [(local inputs parser)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Parser + ..any + + ..bit + ..bit! + ..nat + ..nat! + ..int + ..int! + ..rev + ..rev! + ..frac + ..frac! + ..text + ..text! + ..identifier + ..identifier! + ..tag + ..tag! + + ..this! + + ..local_identifier + ..local_identifier! + ..local_tag + ..local_tag! + + ..form + ..tuple + + ..record + ..end! + ..end? + ..result + ..local] + [])) diff --git a/stdlib/source/documentation/lux/control/parser/environment.lux b/stdlib/source/documentation/lux/control/parser/environment.lux new file mode 100644 index 000000000..f4961a0d4 --- /dev/null +++ b/stdlib/source/documentation/lux/control/parser/environment.lux @@ -0,0 +1,45 @@ +(.module: + [library + [lux #* + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Property + "A property in the environment.") + +(documentation: /.Environment + "An abstraction for environment variables of a program.") + +(documentation: /.Parser + "A parser of environment variables of a program.") + +(documentation: /.empty + "An empty environment.") + +(documentation: /.property + "" + [(property name)]) + +(documentation: /.result + (format "Executes a parser against the given environment variables." + \n "Does not check whether all environment variables were parsed, since they're usually an open set.") + [(result parser environment)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Property + ..Environment + ..Parser + ..empty + ..property + ..result + ($.default /.unknown_property)] + [])) diff --git a/stdlib/source/documentation/lux/control/pipe.lux b/stdlib/source/documentation/lux/control/pipe.lux new file mode 100644 index 000000000..f18415290 --- /dev/null +++ b/stdlib/source/documentation/lux/control/pipe.lux @@ -0,0 +1,117 @@ +(.module: + [library + [lux (#- if loop) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.new> + "Ignores the piped argument, and begins a new pipe." + [(n.= 1 + (|> 20 + (n.* 3) + (n.+ 4) + (new> 0 [++])))]) + +(documentation: /.let> + "Gives a name to the piped-argument, within the given expression." + [(n.= 10 + (|> 5 + (let> x (n.+ x x))))]) + +(documentation: /.cond> + (format "Branching for pipes." + \n "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 [])]))]) + +(documentation: /.if> + "If-branching." + [(same? (if (n.even? sample) + "even" + "odd") + (|> sample + (if> [n.even?] + [(new> "even" [])] + [(new> "odd" [])])))]) + +(documentation: /.when> + "Only execute the body when the test passes." + [(same? (if (n.even? sample) + (n.* 2 sample) + sample) + (|> sample + (when> [n.even?] + [(n.* 2)])))]) + +(documentation: /.loop> + (format "Loops for pipes." + \n "Both the testing and calculating steps are pipes and must be given inside tuples.") + [(|> +1 + (loop> [(i.< +10)] + [++]))]) + +(documentation: /.do> + (format "Monadic pipes." + \n "Each steps in the monadic computation is a pipe and must be given inside a tuple.") + [(|> +5 + (do> identity.monad + [(i.* +3)] + [(i.+ +4)] + [++]))]) + +(documentation: /.exec> + (format "Non-updating pipes." + \n "Will generate piped computations, but their results will not be used in the larger scope.") + [(|> +5 + (exec> [.nat %n log!]) + (i.* +10))]) + +(documentation: /.tuple> + (format "Parallel branching for pipes." + \n "Allows to run multiple pipelines for a value and gives you a tuple of the outputs.") + [(|> +5 + (tuple> [(i.* +10)] + [-- (i./ +2)] + [i\encode])) + "=>" + [+50 +2 "+5"]]) + +(documentation: /.case> + (format "Pattern-matching for pipes." + \n "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" + _ "???"))]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..new> + ..let> + ..cond> + ..if> + ..when> + ..loop> + ..do> + ..exec> + ..tuple> + ..case>] + [])) diff --git a/stdlib/source/documentation/lux/control/reader.lux b/stdlib/source/documentation/lux/control/reader.lux new file mode 100644 index 000000000..959c44217 --- /dev/null +++ b/stdlib/source/documentation/lux/control/reader.lux @@ -0,0 +1,47 @@ +(.module: + [library + [lux (#- local) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Reader + "Computations that have access to some environmental value.") + +(documentation: /.read + "Get the environment.") + +(documentation: /.local + "Run computation with a locally-modified environment." + [(local change proc)]) + +(documentation: /.result + "Executes the reader against the given environment." + [(result env proc)]) + +(documentation: /.with + "Monad transformer for Reader." + [(with monad)]) + +(documentation: /.lifted + "Lift monadic values to the Reader wrapper.") + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Reader + ..read + ..local + ..result + ..with + ..lifted + ($.default /.functor) + ($.default /.apply) + ($.default /.monad)] + [])) diff --git a/stdlib/source/documentation/lux/control/region.lux b/stdlib/source/documentation/lux/control/region.lux new file mode 100644 index 000000000..08e8177b9 --- /dev/null +++ b/stdlib/source/documentation/lux/control/region.lux @@ -0,0 +1,51 @@ +(.module: + [library + [lux (#- if loop) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Region + (format "A region where resources may be be claimed and where a side-effecting computation may be performed." + \n "Every resource is paired with a function that knows how to clean/reclaim it, to make sure there are no leaks.")) + +(documentation: /.run! + "Executes a region-based computation, with a side-effect determined by the monad." + [(run! monad computation)]) + +(documentation: /.acquire! + "Acquire a resource while pairing it a function that knows how to reclaim it." + [(acquire! monad cleaner value)]) + +(documentation: /.failure + "Immediately fail with this 'message'." + [(failure monad error)]) + +(documentation: /.except + "Fail by throwing/raising an exception." + [(except monad exception message)]) + +(documentation: /.lifted + "Lift an effectful computation into a region-based computation." + [(lifted monad operation)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Region + ..run! + ..acquire! + ..failure + ..except + ..lifted + ($.default /.clean_up_error) + ($.default /.functor) + ($.default /.apply) + ($.default /.monad)] + [])) diff --git a/stdlib/source/documentation/lux/control/remember.lux b/stdlib/source/documentation/lux/control/remember.lux new file mode 100644 index 000000000..c17fdf3cc --- /dev/null +++ b/stdlib/source/documentation/lux/control/remember.lux @@ -0,0 +1,38 @@ +(.module: + [library + [lux #* + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(template [ ] + [(`` (documentation: + (format "A" " message with an expiration date." + \n "Can have an optional piece of code to focus on.") + [((~~ (template.identifier [])) + "2022-04-01" + "Do this, that and the other.")] + [((~~ (template.identifier [])) + "2022-04-01" + "Improve the performace." + (some (complicated (computation 123))))]))] + + [/.remember ""] + [/.to_do " TODO"] + [/.fix_me " FIXME"] + ) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..remember + ..to_do + ..fix_me + ($.default /.must_remember)] + [])) diff --git a/stdlib/source/documentation/lux/control/security.lux b/stdlib/source/documentation/lux/control/security.lux new file mode 100644 index 000000000..ac39298dd --- /dev/null +++ b/stdlib/source/documentation/lux/control/security.lux @@ -0,0 +1,18 @@ +(.module: + [library + [lux #* + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]] + [collection + ["." list]]]]] + ["." / #_ + ["#." capability] + ["#." policy]]) + +(.def: .public documentation + (.List $.Module) + (list.together + (list /policy.documentation + /capability.documentation))) diff --git a/stdlib/source/documentation/lux/control/security/capability.lux b/stdlib/source/documentation/lux/control/security/capability.lux new file mode 100644 index 000000000..fb43184d8 --- /dev/null +++ b/stdlib/source/documentation/lux/control/security/capability.lux @@ -0,0 +1,44 @@ +(.module: + [library + [lux #* + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Capability + (format "Represents the capability to perform an operation." + \n "This operation is assumed to have security implications.")) + +(documentation: /.use + "Applies a capability against its required input." + [(use capability input)]) + +(documentation: /.capability: + "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))]) + +(documentation: /.async + "Converts a synchronous I/O-based capability into an asynchronous capability." + [(async capability)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Capability + ..use + ..capability: + ..async] + [])) diff --git a/stdlib/source/documentation/lux/control/security/policy.lux b/stdlib/source/documentation/lux/control/security/policy.lux new file mode 100644 index 000000000..9d9cb655d --- /dev/null +++ b/stdlib/source/documentation/lux/control/security/policy.lux @@ -0,0 +1,89 @@ +(.module: + [library + [lux #* + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Policy + "A security policy encoded as the means to 'upgrade' or 'downgrade' in a secure context.") + +(documentation: /.Can_Upgrade + "Represents the capacity to 'upgrade' a value.") + +(documentation: /.Can_Downgrade + "Represents the capacity to 'downgrade' a value.") + +(documentation: /.Privilege + "Represents the privilege to both 'upgrade' and 'downgrade' a value.") + +(documentation: /.Delegation + "Represents the act of delegating policy capacities.") + +(documentation: /.delegation + "Delegating policy capacities." + [(delegation downgrade upgrade)]) + +(documentation: /.Context + "A computational context with an associated policy privilege.") + +(documentation: /.with_policy + "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)))))))] + [(with_policy context)]) + +(documentation: /.Privacy + (format "A security context for privacy." + \n "Private data is data which cannot be allowed to leak outside of the programmed.")) + +(documentation: /.Safety + (format "A security context for safety." + \n "Safe data is data coming from outside the program which can be trusted to be properly formatted and lacking injections.")) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Policy + ..Can_Upgrade + ..Can_Downgrade + ..Privilege + ..Delegation + ..delegation + ..Context + ..with_policy + ..Privacy + ..Safety + ($.default /.functor) + ($.default /.apply) + ($.default /.monad) + ($.default /.Private) + ($.default /.Can_Conceal) + ($.default /.Can_Reveal) + ($.default /.Safe) + ($.default /.Can_Trust) + ($.default /.Can_Distrust)] + [])) diff --git a/stdlib/source/documentation/lux/control/state.lux b/stdlib/source/documentation/lux/control/state.lux new file mode 100644 index 000000000..99be4d130 --- /dev/null +++ b/stdlib/source/documentation/lux/control/state.lux @@ -0,0 +1,82 @@ +(.module: + [library + [lux (#- local) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.State + "Stateful computations.") + +(documentation: /.get + "Read the current state.") + +(documentation: /.put + "Set the new state." + [(put new_state)]) + +(documentation: /.update + "Compute the new state." + [(update change)]) + +(documentation: /.use + "Run a function on the current state." + [(use user)]) + +(documentation: /.local + "Run the computation with a locally-modified state." + [(local change action)]) + +(documentation: /.result + "Run a stateful computation." + [(result state action)]) + +(documentation: /.while + "A stateful while loop." + [(while condition body)]) + +(documentation: /.do_while + "A stateful do-while loop." + [(do_while condition body)]) + +(documentation: /.+State + "Stateful computations decorated by a monad.") + +(documentation: /.result' + "Execute a stateful computation decorated by a monad." + [(result' state action)]) + +(documentation: /.with + "A monad transformer to create composite stateful computations." + [(with monad)]) + +(documentation: /.lifted + "Lift monadic values to the +State wrapper." + [(lifted monad ma)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..State + ..get + ..put + ..update + ..use + ..local + ..result + ..while + ..do_while + ..+State + ..result' + ..with + ..lifted + ($.default /.functor) + ($.default /.apply) + ($.default /.monad)] + [])) diff --git a/stdlib/source/documentation/lux/control/thread.lux b/stdlib/source/documentation/lux/control/thread.lux new file mode 100644 index 000000000..cc3134d2f --- /dev/null +++ b/stdlib/source/documentation/lux/control/thread.lux @@ -0,0 +1,57 @@ +(.module: + [library + [lux (#- local) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Thread + "An imperative process with access to mutable values.") + +(documentation: /.Box + "A mutable box holding a value.") + +(documentation: /.box + "A brand-new box initialized to the given value." + [(box init)]) + +(documentation: /.read! + "Reads the current value in the box." + [(read! box)]) + +(documentation: /.write! + "Mutates the value in the box." + [(write! value box)]) + +(documentation: /.result + "Executes the imperative thread in a self-contained way." + [(result thread)]) + +(documentation: /.io + "Transforms the imperative thread into an I/O computation.") + +(documentation: /.update! + "Update a box's value by applying a function to it." + [(update! f box)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Thread + ..Box + ..box + ..read! + ..write! + ..result + ..io + ..update! + ($.default /.functor) + ($.default /.apply) + ($.default /.monad)] + [])) diff --git a/stdlib/source/documentation/lux/control/try.lux b/stdlib/source/documentation/lux/control/try.lux new file mode 100644 index 000000000..7b226c132 --- /dev/null +++ b/stdlib/source/documentation/lux/control/try.lux @@ -0,0 +1,62 @@ +(.module: + [library + [lux (#- local) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Try + "A computation that can fail with an error message.") + +(documentation: /.with + "Enhances a monad with error-handling functionality." + [(with monad)]) + +(documentation: /.lifted + "Wraps a monadic value with error-handling machinery." + [(lifted monad)]) + +(documentation: /.trusted + (format "Assumes a Try value succeeded, and yields its value." + \n "If it didn't, raises the error as a runtime error." + \n "WARNING: Use with caution.") + [(trusted try)]) + +(documentation: /.maybe + "" + [(maybe try)]) + +(documentation: /.of_maybe + "" + [(of_maybe maybe)]) + +(documentation: /.else + (format "Allows you to provide a default value that will be used" + \n "if a (Try x) value turns out to be #Failure." + \n "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!")))]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Try + ..with + ..lifted + ..trusted + ..maybe + ..of_maybe + ..else + ($.default /.functor) + ($.default /.apply) + ($.default /.monad) + ($.default /.equivalence)] + [])) diff --git a/stdlib/source/documentation/lux/control/writer.lux b/stdlib/source/documentation/lux/control/writer.lux new file mode 100644 index 000000000..99cbe0463 --- /dev/null +++ b/stdlib/source/documentation/lux/control/writer.lux @@ -0,0 +1,39 @@ +(.module: + [library + [lux (#- local) + ["$" documentation (#+ documentation:)] + [data + [text (#+ \n) + ["%" format (#+ format)]]] + [macro + ["." template]]]] + [\\library + ["." /]]) + +(documentation: /.Writer + "Represents a value with an associated 'log' to record arbitrary information.") + +(documentation: /.write + "Write a value to the log." + [(write message)]) + +(documentation: /.with + "Enhances a monad with Writer functionality." + [(with monoid monad)]) + +(documentation: /.lifted + "Wraps a monadic value with Writer machinery." + [(lifted monoid monad)]) + +(.def: .public documentation + (.List $.Module) + ($.module /._ + "" + [..Writer + ..write + ..with + ..lifted + ($.default /.functor) + ($.default /.apply) + ($.default /.monad)] + [])) 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)))
diff --git a/stdlib/source/poly/lux/abstract/equivalence.lux b/stdlib/source/poly/lux/abstract/equivalence.lux
index b311d97ec..bcb2574bc 100644
--- a/stdlib/source/poly/lux/abstract/equivalence.lux
+++ b/stdlib/source/poly/lux/abstract/equivalence.lux
@@ -108,7 +108,7 @@
             ... Variants
             (do !
               [members (.variant (<>.many equivalence))
-               .let [last (dec (list.size members))
+               .let [last (-- (list.size members))
                      g!_ (code.local_identifier "_____________")
                      g!left (code.local_identifier "_____________left")
                      g!right (code.local_identifier "_____________right")]]
@@ -117,8 +117,8 @@
                           (case [(~ g!left) (~ g!right)]
                             (~+ (list\join (list\map (function (_ [tag g!eq])
                                                        (if (nat.= last tag)
-                                                         (list (` [((~ (code.nat (dec tag))) #1 (~ g!left))
-                                                                   ((~ (code.nat (dec tag))) #1 (~ g!right))])
+                                                         (list (` [((~ (code.nat (-- tag))) #1 (~ g!left))
+                                                                   ((~ (code.nat (-- tag))) #1 (~ g!right))])
                                                                (` ((~ g!eq) (~ g!left) (~ g!right))))
                                                          (list (` [((~ (code.nat tag)) #0 (~ g!left))
                                                                    ((~ (code.nat tag)) #0 (~ g!right))])
diff --git a/stdlib/source/poly/lux/abstract/functor.lux b/stdlib/source/poly/lux/abstract/functor.lux
index 57f047798..d68d55af8 100644
--- a/stdlib/source/poly/lux/abstract/functor.lux
+++ b/stdlib/source/poly/lux/abstract/functor.lux
@@ -38,7 +38,7 @@
                        (function (_ unwrappedT)
                          (if (n.= 1 num_vars)
                            (` ((~! /.Functor) (~ (poly.code *env* unwrappedT))))
-                           (let [paramsC (|> num_vars dec list.indices (list\map (|>> %.nat code.local_identifier)))]
+                           (let [paramsC (|> num_vars -- list.indices (list\map (|>> %.nat code.local_identifier)))]
                              (` (All [(~+ paramsC)]
                                   ((~! /.Functor) ((~ (poly.code *env* unwrappedT)) (~+ paramsC)))))))))
            Arg (: (-> Code (.Parser Code))
@@ -46,19 +46,19 @@
                        ($_ p.either
                            ... Type-var
                            (do p.monad
-                             [.let [varI (|> num_vars (n.* 2) dec)]
+                             [.let [varI (|> num_vars (n.* 2) --)]
                               _ (.parameter! varI)]
                              (in (` ((~ funcC) (~ valueC)))))
                            ... Variants
                            (do !
                              [_ (in [])
                               membersC (.variant (p.many (Arg valueC)))
-                              .let [last (dec (list.size membersC))]]
+                              .let [last (-- (list.size membersC))]]
                              (in (` (case (~ valueC)
                                       (~+ (list\join (list\map (function (_ [tag memberC])
                                                                  (if (n.= last tag)
-                                                                   (list (` ((~ (code.nat (dec tag))) #1 (~ valueC)))
-                                                                         (` ((~ (code.nat (dec tag))) #1 (~ memberC))))
+                                                                   (list (` ((~ (code.nat (-- tag))) #1 (~ valueC)))
+                                                                         (` ((~ (code.nat (-- tag))) #1 (~ memberC))))
                                                                    (list (` ((~ (code.nat tag)) #0 (~ valueC)))
                                                                          (` ((~ (code.nat tag)) #0 (~ memberC))))))
                                                                (list.enumeration membersC))))))))
@@ -72,7 +72,7 @@
                                                                      (do !
                                                                        [_ (in [])
                                                                         memberC (Arg slotC)]
-                                                                       (recur (inc idx)
+                                                                       (recur (++ idx)
                                                                               (list\compose pairsCC (list [slotC memberC])))))
                                                                    (in pairsCC)))))]
                              (in (` (case (~ valueC)
diff --git a/stdlib/source/poly/lux/data/format/json.lux b/stdlib/source/poly/lux/data/format/json.lux
index 42f0ed7d8..1496026a7 100644
--- a/stdlib/source/poly/lux/data/format/json.lux
+++ b/stdlib/source/poly/lux/data/format/json.lux
@@ -51,7 +51,7 @@
   (function (_ input)
     (non_rec (rec_encode non_rec) input)))
 
-(def: low_mask Nat (|> 1 (i64.left_shifted 32) dec))
+(def: low_mask Nat (|> 1 (i64.left_shifted 32) --))
 (def: high_mask Nat (|> low_mask (i64.left_shifted 32)))
 
 (implementation: nat_codec
@@ -166,14 +166,14 @@
             [.let [g!_ (code.local_identifier "_______")
                    g!input (code.local_identifier "_______input")]
              members (.variant (<>.many encode))
-             .let [last (dec (list.size members))]]
+             .let [last (-- (list.size members))]]
             (in (` (: (~ (@JSON\encode inputT))
                       (function ((~ g!_) (~ g!input))
                         (case (~ g!input)
                           (~+ (list\join (list\map (function (_ [tag g!encode])
                                                      (if (n.= last tag)
-                                                       (.list (` ((~ (code.nat (dec tag))) #1 (~ g!input)))
-                                                              (` ((~! /.json) [(~ (code.frac (..tag (dec tag))))
+                                                       (.list (` ((~ (code.nat (-- tag))) #1 (~ g!input)))
+                                                              (` ((~! /.json) [(~ (code.frac (..tag (-- tag))))
                                                                                #1
                                                                                ((~ g!encode) (~ g!input))])))
                                                        (.list (` ((~ (code.nat tag)) #0 (~ g!input)))
@@ -278,14 +278,14 @@
                       ((~! .array) ((~! <>.some) (~ subC)))))))
           (do !
             [members (.variant (<>.many decode))
-             .let [last (dec (list.size members))]]
+             .let [last (-- (list.size members))]]
             (in (` (: (~ (@JSON\decode inputT))
                       ($_ ((~! <>.or))
                           (~+ (list\map (function (_ [tag memberC])
                                           (if (n.= last tag)
                                             (` (|> (~ memberC)
                                                    ((~! <>.after) ((~! .boolean!) (~ (code.bit #1))))
-                                                   ((~! <>.after) ((~! .number!) (~ (code.frac (..tag (dec tag))))))
+                                                   ((~! <>.after) ((~! .number!) (~ (code.frac (..tag (-- tag))))))
                                                    ((~! .array))))
                                             (` (|> (~ memberC)
                                                    ((~! <>.after) ((~! .boolean!) (~ (code.bit #0))))
diff --git a/stdlib/source/program/aedifex.lux b/stdlib/source/program/aedifex.lux
index 05aee240b..4dd110551 100644
--- a/stdlib/source/program/aedifex.lux
+++ b/stdlib/source/program/aedifex.lux
@@ -66,7 +66,7 @@
 
 (def: repositories
   (-> /.Profile (List (Repository Async)))
-  (|>> (get@ #/.repositories)
+  (|>> (value@ #/.repositories)
        set.list
        (list\map (|>> (/repository/remote.repository http.default #.None) /repository.async))))
 
@@ -165,20 +165,21 @@
 
                 (#/cli.Deploy repository identity)
                 (..command
-                 (case [(get@ #/.identity profile)
-                        (dictionary.value repository (get@ #/.deploy_repositories profile))]
-                   [(#.Some artifact) (#.Some repository)]
-                   (/command/deploy.do! console
-                                        (/repository.async (/repository/remote.repository http.default (#.Some identity) repository))
-                                        (file.async file.default)
-                                        artifact
-                                        profile)
-
-                   [#.None _]
-                   (async\in (exception.except /.no_identity []))
-
-                   [_ #.None]
-                   (async\in (exception.except ..cannot_find_repository [repository (get@ #/.deploy_repositories profile)]))))
+                 (case (value@ #/.identity profile)
+                   (#.Some artifact)
+                   (case (dictionary.value repository (value@ #/.deploy_repositories profile))
+                     (#.Some repository)
+                     (/command/deploy.do! console
+                                          (/repository.async (/repository/remote.repository http.default (#.Some identity) repository))
+                                          (file.async file.default)
+                                          artifact
+                                          profile)
+                     
+                     #.None
+                     (async\in (exception.except ..cannot_find_repository [repository (value@ #/.deploy_repositories profile)])))
+                   
+                   #.None
+                   (async\in (exception.except /.no_identity []))))
                 
                 #/cli.Dependencies
                 (..command
@@ -207,8 +208,5 @@
                     (..command
                      (case auto
                        #/cli.Build (..with_dependencies program console (/command/auto.do! /command/auto.delay watcher /command/build.do!) profile)
-                       #/cli.Test (..with_dependencies program console (/command/auto.do! /command/auto.delay watcher /command/test.do!) profile)))))
-
-                _
-                (undefined)))
+                       #/cli.Test (..with_dependencies program console (/command/auto.do! /command/auto.delay watcher /command/test.do!) profile)))))))
             ))))))
diff --git a/stdlib/source/program/aedifex/artifact.lux b/stdlib/source/program/aedifex/artifact.lux
index cd53db5c4..6fd2d495f 100644
--- a/stdlib/source/program/aedifex/artifact.lux
+++ b/stdlib/source/program/aedifex/artifact.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux (#- Name)
+   [lux (#- Name local)
     [abstract
      [equivalence (#+ Equivalence)]
      [order (#+ Order)]
@@ -49,18 +49,18 @@
     ..equivalence)
 
   (def: (< reference subject)
-    (<| (or (text\< (get@ #group reference)
-                    (get@ #group subject)))
+    (<| (or (text\< (value@ #group reference)
+                    (value@ #group subject)))
 
-        (and (text\= (get@ #group reference)
-                     (get@ #group subject)))
-        (or (text\< (get@ #name reference)
-                    (get@ #name subject)))
+        (and (text\= (value@ #group reference)
+                     (value@ #group subject)))
+        (or (text\< (value@ #name reference)
+                    (value@ #name subject)))
         
-        (and (text\= (get@ #name reference)
-                     (get@ #name subject)))
-        (text\< (get@ #version reference)
-                (get@ #version subject)))))
+        (and (text\= (value@ #name reference)
+                     (value@ #name subject)))
+        (text\< (value@ #version reference)
+                (value@ #version subject)))))
 
 (template [ ]
   [(def: 
@@ -74,13 +74,13 @@
 
 (def: .public (identity artifact)
   (-> Artifact Text)
-  (%.format (get@ #name artifact)
+  (%.format (value@ #name artifact)
             ..version_separator
-            (get@ #version artifact)))
+            (value@ #version artifact)))
 
 (def: .public (format value)
   (Format Artifact)
-  (%.format (get@ #group value)
+  (%.format (value@ #group value)
             ..identity_separator
             (..identity value)))
 
@@ -93,16 +93,16 @@
 (def: .public (uri version artifact)
   (-> Version Artifact URI)
   (let [/ uri.separator
-        group (..directory / (get@ #group artifact))
-        name (get@ #name artifact)
-        ... version (get@ #version artifact)
+        group (..directory / (value@ #group artifact))
+        name (value@ #name artifact)
+        ... version (value@ #version artifact)
         identity (..identity artifact)]
     (%.format group / name / version / identity)))
 
 (def: .public (local artifact)
   (-> Artifact (List Text))
   (list\compose (|> artifact
-                    (get@ #group)
+                    (value@ #group)
                     (text.all_split_by ..group_separator))
-                (list (get@ #name artifact)
-                      (get@ #version artifact))))
+                (list (value@ #name artifact)
+                      (value@ #version artifact))))
diff --git a/stdlib/source/program/aedifex/command/auto.lux b/stdlib/source/program/aedifex/command/auto.lux
index 805ffb1ba..0a1998730 100644
--- a/stdlib/source/program/aedifex/command/auto.lux
+++ b/stdlib/source/program/aedifex/command/auto.lux
@@ -33,7 +33,7 @@
         (\ ! map (|>> (try.else (list))
                       (monad.map ! (targets fs))))
         (\ ! join)
-        (\ ! map (|>> list.joined (list& path))))))
+        (\ ! map (|>> list.together (list& path))))))
 
 (def: .public delay
   Nat
@@ -41,7 +41,7 @@
 
 (def: (pause delay)
   (-> Nat (Async (Try Any)))
-  (async.delayed delay (#try.Success [])))
+  (async.after delay (#try.Success [])))
 
 (def: .public (do! delay watcher command)
   (All [a]
@@ -53,10 +53,10 @@
       (with_expansions [ ((command console program fs shell resolution) profile)]
         (do {! async.monad}
           [targets (|> profile
-                       (get@ #///.sources)
+                       (value@ #///.sources)
                        set.list
                        (monad.map ! (..targets fs))
-                       (\ ! map list.joined))]
+                       (\ ! map list.together))]
           (do {! ///action.monad}
             [_ (monad.map ! (\ watcher start watch.modification) targets)
              _ ]
diff --git a/stdlib/source/program/aedifex/command/build.lux b/stdlib/source/program/aedifex/command/build.lux
index ff469d896..e4de9ab0a 100644
--- a/stdlib/source/program/aedifex/command/build.lux
+++ b/stdlib/source/program/aedifex/command/build.lux
@@ -49,8 +49,8 @@
   (-> Group Name Finder)
   (|>> dictionary.entries
        (list.one (function (_ [dependency package])
-                   (if (and (text\= group (get@ [#///dependency.artifact #///artifact.group] dependency))
-                            (text\= name (get@ [#///dependency.artifact #///artifact.name] dependency)))
+                   (if (and (text\= group (value@ [#///dependency.artifact #///artifact.group] dependency))
+                            (text\= name (value@ [#///dependency.artifact #///artifact.name] dependency)))
                      (#.Some dependency)
                      #.None)))))
 
@@ -111,17 +111,17 @@
 (def: (path fs home dependency)
   (All [!] (-> (file.System !) Path Dependency Path))
   (let [/ (\ fs separator)
-        artifact (get@ #///dependency.artifact dependency)]
+        artifact (value@ #///dependency.artifact dependency)]
     (|> artifact
-        (///local.uri (get@ #///artifact.version artifact))
+        (///local.uri (value@ #///artifact.version artifact))
         (text.replaced uri.separator /)
         (format home /)
-        (text.suffix (format "." (get@ #///dependency.type dependency))))))
+        (text.suffix (format "." (value@ #///dependency.type dependency))))))
 
 (def: (libraries fs home)
   (All [!] (-> (file.System !) Path Resolution (List Path)))
   (|>> dictionary.keys
-       (list.only (|>> (get@ #///dependency.type)
+       (list.only (|>> (value@ #///dependency.type)
                        (text\= ///artifact/type.lux_library)))
        (list\map (..path fs home))))
 
@@ -156,14 +156,14 @@
 (def: .public (host_dependencies fs home)
   (All [!] (-> (file.System !) Path Resolution (List Path)))
   (|>> dictionary.keys
-       (list.only (|>> (get@ #///dependency.type)
+       (list.only (|>> (value@ #///dependency.type)
                        (text\= ///artifact/type.lux_library)
                        not))
        (list\fold (function (_ dependency uniques)
-                    (let [artifact (get@ #///dependency.artifact dependency)
-                          identity [(get@ #///artifact.group artifact)
-                                    (get@ #///artifact.name artifact)]
-                          version (get@ #///artifact.version artifact)]
+                    (let [artifact (value@ #///dependency.artifact dependency)
+                          identity [(value@ #///artifact.group artifact)
+                                    (value@ #///artifact.name artifact)]
+                          version (value@ #///artifact.version artifact)]
                       (case (dictionary.value identity uniques)
                         (#.Some [current_version current_path])
                         (if (\ version_order < version current_version)
@@ -183,7 +183,7 @@
 
 (def: (plural name)
   (-> Text (List Text) (List Text))
-  (|>> (list\map (|>> (list name))) list.joined))
+  (|>> (list\map (|>> (list name))) list.together))
 
 (def: .public start "[BUILD STARTED]")
 (def: .public success "[BUILD ENDED]")
@@ -245,8 +245,7 @@
   (-> (List Path) Text)
   (|> host_dependencies
       (#.Item ".")
-      (text.interposed ..jvm_class_path_separator)
-      %.text))
+      (text.interposed ..jvm_class_path_separator)))
 
 (def: .public (with_jvm_class_path host_dependencies runtime)
   (-> (List Path) ///runtime.Runtime ///runtime.Runtime)
@@ -255,15 +254,15 @@
     runtime
 
     _
-    (update@ #///runtime.parameters
-             (|>> (list& "-classpath" (..jvm_class_path host_dependencies)))
-             runtime)))
+    (revised@ #///runtime.parameters
+              (|>> (list& "-cp" (..jvm_class_path host_dependencies)))
+              runtime)))
 
 (def: .public (do! console program fs shell resolution)
   (-> (Console Async) (Program Async) (file.System Async) (Shell Async) Resolution (Command [Exit Compiler Path]))
   (function (_ profile)
-    (let [target (get@ #///.target profile)]
-      (case (get@ #///.program profile)
+    (let [target (value@ #///.target profile)]
+      (case (value@ #///.program profile)
         #.None
         (async\in (exception.except ..no_specified_program []))
 
@@ -273,19 +272,20 @@
            .let [home (\ program home)
                  working_directory (\ program directory)]]
           (do ///action.monad
-            [[resolution compiler] (async\in (..compiler resolution (get@ #///.compiler profile)))
+            [[resolution compiler] (async\in (..compiler resolution (value@ #///.compiler profile)))
              .let [host_dependencies (..host_dependencies fs home resolution)
                    [[command compiler_params] output] (case compiler
                                                         (#JVM dependency)
-                                                        [(|> (..path fs home dependency)
-                                                             (///runtime.for (get@ #///.java profile))
-                                                             (with_jvm_class_path host_dependencies))
+                                                        [(|> (value@ #///.java profile)
+                                                             (with@ #///runtime.parameters (list "program._"))
+                                                             (with_jvm_class_path (#.Item (..path fs home dependency) host_dependencies)))
                                                          "program.jar"]
                                                         
                                                         (^template [  ]
                                                           [( dependency)
-                                                           [(///runtime.for (get@  profile)
-                                                                            (..path fs home dependency))
+                                                           [(|> dependency
+                                                                (..path fs home)
+                                                                (///runtime.for (value@  profile)))
                                                             ]])
                                                         ([#JS #///.js "program.js"]
                                                          [#Python #///.java "program.py"]
@@ -294,13 +294,13 @@
                    / (\ fs separator)
                    cache_directory (format working_directory / target)]
              _ (console.write_line ..start console)
-             .let [full_parameters (list.joined (list compiler_params
-                                                      (list "build")
-                                                      (..plural "--library" (..libraries fs home resolution))
-                                                      (..plural "--host_dependency" host_dependencies)
-                                                      (..plural "--source" (set.list (get@ #///.sources profile)))
-                                                      (..singular "--target" cache_directory)
-                                                      (..singular "--module" program_module)))]
+             .let [full_parameters (list.together (list compiler_params
+                                                        (list "build")
+                                                        (..plural "--library" (..libraries fs home resolution))
+                                                        (..plural "--host_dependency" host_dependencies)
+                                                        (..plural "--source" (set.list (value@ #///.sources profile)))
+                                                        (..singular "--target" cache_directory)
+                                                        (..singular "--module" program_module)))]
              process (\ shell execute [environment
                                        working_directory
                                        command
diff --git a/stdlib/source/program/aedifex/command/clean.lux b/stdlib/source/program/aedifex/command/clean.lux
index 67d539db7..9e55ccc83 100644
--- a/stdlib/source/program/aedifex/command/clean.lux
+++ b/stdlib/source/program/aedifex/command/clean.lux
@@ -33,7 +33,7 @@
 (def: .public (do! console fs profile)
   (-> (Console Async) (file.System Async) (Command Any))
   (do {! async.monad}
-    [.let [target (get@ #///.target profile)]
+    [.let [target (value@ #///.target profile)]
      ? (\ fs directory? target)
      _ (let [! ///action.monad]
          (if ?
diff --git a/stdlib/source/program/aedifex/command/deploy.lux b/stdlib/source/program/aedifex/command/deploy.lux
index cbddc9b27..38f975939 100644
--- a/stdlib/source/program/aedifex/command/deploy.lux
+++ b/stdlib/source/program/aedifex/command/deploy.lux
@@ -60,7 +60,7 @@
   (-> (Console Async) (Repository Async) (file.System Async) Artifact (Command Any))
   (do {! ///action.monad}
     [library (|> profile
-                 (get@ #/.sources)
+                 (value@ #/.sources)
                  set.list
                  (export.library fs)
                  (\ ! map (binary.result tar.writer)))
diff --git a/stdlib/source/program/aedifex/command/deps.lux b/stdlib/source/program/aedifex/command/deps.lux
index 3cbb82403..3c8381e51 100644
--- a/stdlib/source/program/aedifex/command/deps.lux
+++ b/stdlib/source/program/aedifex/command/deps.lux
@@ -33,16 +33,16 @@
 
 (def: format
   (%.Format Dependency)
-  (|>> (get@ #///dependency.artifact)
+  (|>> (value@ #///dependency.artifact)
        ///artifact.format
        %.text))
 
 (def: .public (do! console local remotes new_repository profile)
   (-> (Console Async) (Repository Async) (List (Repository Async)) (-> URL (Repository Async)) (Command Resolution))
   (do async.monad
-    [.let [dependencies (|> (get@ #///.dependencies profile)
+    [.let [dependencies (|> (value@ #///.dependencies profile)
                             set.list
-                            (#.Item (get@ #///.compiler profile)))]
+                            (#.Item (value@ #///.compiler profile)))]
      [local_successes local_failures cache] (///dependency/resolution.all console
                                                                           (list local)
                                                                           new_repository
diff --git a/stdlib/source/program/aedifex/command/install.lux b/stdlib/source/program/aedifex/command/install.lux
index 9b06daaec..f0677afc7 100644
--- a/stdlib/source/program/aedifex/command/install.lux
+++ b/stdlib/source/program/aedifex/command/install.lux
@@ -51,11 +51,11 @@
 
 (def: .public (do! console fs repository profile)
   (-> (Console Async) (file.System Async) (Repository Async) (Command Any))
-  (case (get@ #/.identity profile)
+  (case (value@ #/.identity profile)
     (#.Some identity)
     (do ///action.monad
       [package (|> profile
-                   (get@ #/.sources)
+                   (value@ #/.sources)
                    set.list
                    (export.library fs))
        pom (|> profile
diff --git a/stdlib/source/program/aedifex/command/test.lux b/stdlib/source/program/aedifex/command/test.lux
index a7279c5ec..ae627bcb7 100644
--- a/stdlib/source/program/aedifex/command/test.lux
+++ b/stdlib/source/program/aedifex/command/test.lux
@@ -36,7 +36,7 @@
     (do {! ///action.monad}
       [.let [home (\ program home)]
        [build_exit compiler program] (//build.do! console program fs shell resolution
-                                                  (set@ #///.program (get@ #///.test profile) profile))]
+                                                  (with@ #///.program (value@ #///.test profile) profile))]
       (if (i.= shell.normal build_exit)
         (do !
           [_ (console.write_line ..start console)
@@ -44,15 +44,14 @@
                  [test_command test_parameters] (case compiler
                                                   (#//build.JVM dependency)
                                                   (|> program
-                                                      (///runtime.for (get@ #///.java profile))
+                                                      (///runtime.for (value@ #///.java profile))
                                                       (//build.with_jvm_class_path host_dependencies))
                                                   
                                                   (^template [ ]
                                                     [( artifact)
-                                                     (///runtime.for (get@  profile)
+                                                     (///runtime.for (value@  profile)
                                                                      program)])
-                                                  ([#//build.JVM #///.java]
-                                                   [#//build.JS #///.js]
+                                                  ([#//build.JS #///.js]
                                                    [#//build.Python #///.python]
                                                    [#//build.Lua #///.lua]
                                                    [#//build.Ruby #///.ruby]))]
diff --git a/stdlib/source/program/aedifex/dependency.lux b/stdlib/source/program/aedifex/dependency.lux
index f31f0ca44..b1a23c0de 100644
--- a/stdlib/source/program/aedifex/dependency.lux
+++ b/stdlib/source/program/aedifex/dependency.lux
@@ -35,10 +35,10 @@
     ..equivalence)
 
   (def: (< reference subject)
-    (<| (or (//\< (get@ #artifact reference)
-                  (get@ #artifact subject)))
+    (<| (or (//\< (value@ #artifact reference)
+                  (value@ #artifact subject)))
         
-        (and (//\= (get@ #artifact reference)
-                   (get@ #artifact subject)))
-        (text\< (get@ #type reference)
-                (get@ #type subject)))))
+        (and (//\= (value@ #artifact reference)
+                   (value@ #artifact subject)))
+        (text\< (value@ #type reference)
+                (value@ #type subject)))))
diff --git a/stdlib/source/program/aedifex/dependency/deployment.lux b/stdlib/source/program/aedifex/dependency/deployment.lux
index d23e4a805..0e9ab0def 100644
--- a/stdlib/source/program/aedifex/dependency/deployment.lux
+++ b/stdlib/source/program/aedifex/dependency/deployment.lux
@@ -91,39 +91,39 @@
   (do try.monad
     [now (: (Try ///artifact/time.Time)
             (///artifact/time.of_instant now))
-     .let [version_template (get@ #///artifact.version artifact)
+     .let [version_template (value@ #///artifact.version artifact)
            snapshot (|> snapshot
-                        (update@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot]
-                                 (function (_ snapshot)
-                                   (case snapshot
-                                     #///artifact/snapshot.Local
-                                     #///artifact/snapshot.Local
-                                     
-                                     (#///artifact/snapshot.Remote [_ build])
-                                     (#///artifact/snapshot.Remote [now (inc build)]))))
-                        (set@ [#///metadata/snapshot.versioning #///artifact/versioning.last_updated] now))
-           versioning_snapshot (get@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot] snapshot)]]
+                        (revised@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot]
+                                  (function (_ snapshot)
+                                    (case snapshot
+                                      #///artifact/snapshot.Local
+                                      #///artifact/snapshot.Local
+                                      
+                                      (#///artifact/snapshot.Remote [_ build])
+                                      (#///artifact/snapshot.Remote [now (++ build)]))))
+                        (with@ [#///metadata/snapshot.versioning #///artifact/versioning.last_updated] now))
+           versioning_snapshot (value@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot] snapshot)]]
     (in (|> snapshot
-            (set@ [#///metadata/snapshot.versioning #///artifact/versioning.versions]
-                  (list {#///artifact/snapshot/version.extension type
-                         #///artifact/snapshot/version.value (///artifact/snapshot/version/value.format
-                                                              {#///artifact/snapshot/version/value.version version_template
-                                                               #///artifact/snapshot/version/value.snapshot versioning_snapshot})
-                         #///artifact/snapshot/version.updated now}))
-            ... (set@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot]
-            ...       (list\compose (..artifacts type (product.right (get@ #///package.library package)))
-            ...                     (..artifacts ///artifact/type.pom (product.right (get@ #///package.pom package)))))
+            (with@ [#///metadata/snapshot.versioning #///artifact/versioning.versions]
+                   (list {#///artifact/snapshot/version.extension type
+                          #///artifact/snapshot/version.value (///artifact/snapshot/version/value.format
+                                                               {#///artifact/snapshot/version/value.version version_template
+                                                                #///artifact/snapshot/version/value.snapshot versioning_snapshot})
+                          #///artifact/snapshot/version.updated now}))
+            ... (with@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot]
+            ...       (list\compose (..artifacts type (product.right (value@ #///package.library package)))
+            ...                     (..artifacts ///artifact/type.pom (product.right (value@ #///package.pom package)))))
             ))))
 
 (def: .public (one repository [artifact type] package)
   (-> (Repository Async) Dependency Package (Async (Try Artifact)))
   (do {! async.monad}
     [now (async.future instant.now)
-     .let [version_template (get@ #///artifact.version artifact)]]
+     .let [version_template (value@ #///artifact.version artifact)]]
     (do (try.with !)
-      [_ (with_status repository version_template [artifact type] (get@ #///package.library package))
+      [_ (with_status repository version_template [artifact type] (value@ #///package.library package))
 
-       _ (let [[pom pom_data status] (get@ #///package.pom package)]
+       _ (let [[pom pom_data status] (value@ #///package.pom package)]
            (with_status repository
              version_template
              [artifact ///artifact/type.pom]
@@ -135,8 +135,8 @@
        _ (///metadata/snapshot.write repository artifact snapshot)
        project (///metadata/artifact.read repository artifact)
        _ (|> project
-             (set@ #///metadata/artifact.versions (list version_template))
-             (set@ #///metadata/artifact.last_updated now)
+             (with@ #///metadata/artifact.versions (list version_template))
+             (with@ #///metadata/artifact.last_updated now)
              (///metadata/artifact.write repository artifact))]
       (in artifact))))
 
diff --git a/stdlib/source/program/aedifex/dependency/resolution.lux b/stdlib/source/program/aedifex/dependency/resolution.lux
index 22778e25b..73c5f6608 100644
--- a/stdlib/source/program/aedifex/dependency/resolution.lux
+++ b/stdlib/source/program/aedifex/dependency/resolution.lux
@@ -1,6 +1,7 @@
 (.module:
   [library
    [lux (#- Name)
+    ["@" target]
     ["." debug]
     ["." ffi (#+ import:)]
     [abstract
@@ -83,9 +84,10 @@
     (case ?actual
       (#try.Success actual)
       (in (do {! try.monad}
-            [output (\ ! map (|>> (:as java/lang/String)
-                                  java/lang/String::trim
-                                  (:as Text))
+            [output (\ ! map (for {@.old (|>> (:as java/lang/String)
+                                              java/lang/String::trim
+                                              (:as Text))
+                                   @.jvm (|>> java/lang/String::trim)})
                        (\ utf8.codec decode actual))
              actual (|> output
                         (text.all_split_by " ")
@@ -113,10 +115,10 @@
                 [(#.Some sha-1) (#.Some md5)]
                 (#//status.Verified sha-1 md5)
 
-                [(#.Some sha-1) _]
+                [(#.Some sha-1) #.None]
                 (#//status.Partial (#.Left sha-1))
 
-                [_ (#.Some md5)]
+                [#.None (#.Some md5)]
                 (#//status.Partial (#.Right md5))
 
                 [#.None #.None]
@@ -128,10 +130,10 @@
         extension (///artifact/extension.extension type)]
     (do (try.with async.monad)
       [snapshot (///metadata/snapshot.read repository artifact)
-       .let [version_template (get@ [#///metadata/snapshot.artifact #///artifact.version] snapshot)
+       .let [version_template (value@ [#///metadata/snapshot.artifact #///artifact.version] snapshot)
              artifact_version (value.format {#value.version version_template
-                                             #value.snapshot (get@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot] snapshot)})
-             artifact (set@ #///artifact.version artifact_version artifact)]
+                                             #value.snapshot (value@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot] snapshot)})
+             artifact (with@ #///artifact.version artifact_version artifact)]
        [pom_data pom_status] (..hashed repository version_template artifact ///artifact/extension.pom)
        library_&_status (..hashed repository version_template artifact extension)]
       (\ async.monad in
@@ -156,8 +158,8 @@
 
 (exception: .public (cannot_resolve {dependency Dependency})
   (exception.report
-   ["Artifact" (%.text (///artifact.format (get@ #//.artifact dependency)))]
-   ["Type" (%.text (get@ #//.type dependency))]))
+   ["Artifact" (%.text (///artifact.format (value@ #//.artifact dependency)))]
+   ["Type" (%.text (value@ #//.type dependency))]))
 
 (template [   ]
   [(def: ( console repository artifact)
@@ -184,17 +186,17 @@
 
     (#.Item repository alternatives)
     (do {! async.monad}
-      [_ (..announce_fetching console repository (get@ #//.artifact dependency))
+      [_ (..announce_fetching console repository (value@ #//.artifact dependency))
        outcome (..one repository dependency)]
       (case outcome
         (#try.Success package)
         (do !
-          [_ (..announce_success console repository (get@ #//.artifact dependency))]
+          [_ (..announce_success console repository (value@ #//.artifact dependency))]
           (in outcome))
 
         (#try.Failure error)
         (do !
-          [_ (..announce_failure console repository (get@ #//.artifact dependency))]
+          [_ (..announce_failure console repository (value@ #//.artifact dependency))]
           (any console alternatives dependency))))))
 
 (def: .public (all console repositories new_repository dependencies resolution)
@@ -213,7 +215,7 @@
          [successes failures resolution])
 
       (#.Item head tail)
-      (case (get@ [#//.artifact #///artifact.version] head)
+      (case (value@ [#//.artifact #///artifact.version] head)
         ... Skip if there is no version
         "" (recur repositories
                   successes
diff --git a/stdlib/source/program/aedifex/format.lux b/stdlib/source/program/aedifex/format.lux
index 82b15f84d..74583c8f5 100644
--- a/stdlib/source/program/aedifex/format.lux
+++ b/stdlib/source/program/aedifex/format.lux
@@ -108,13 +108,13 @@
 (def: (info value)
   (Format /.Info)
   (|> ..empty
-      (..on_maybe "url" (get@ #/.url value) code.text)
-      (..on_maybe "scm" (get@ #/.scm value) code.text)
-      (..on_maybe "description" (get@ #/.description value) code.text)
-      (..on_list "licenses" (get@ #/.licenses value) ..license)
-      (..on_maybe "organization" (get@ #/.organization value) ..organization)
-      (..on_list "developers" (get@ #/.developers value) ..developer)
-      (..on_list "contributors" (get@ #/.contributors value) ..contributor)
+      (..on_maybe "url" (value@ #/.url value) code.text)
+      (..on_maybe "scm" (value@ #/.scm value) code.text)
+      (..on_maybe "description" (value@ #/.description value) code.text)
+      (..on_list "licenses" (value@ #/.licenses value) ..license)
+      (..on_maybe "organization" (value@ #/.organization value) ..organization)
+      (..on_list "developers" (value@ #/.developers value) ..developer)
+      (..on_list "contributors" (value@ #/.contributors value) ..contributor)
       ..aggregate))
 
 (def: (artifact' [group name version])
@@ -142,19 +142,19 @@
 (def: .public (profile value)
   (Format /.Profile)
   (`` (|> ..empty
-          (..on_list "parents" (get@ #/.parents value) code.text)
-          (..on_maybe "identity" (get@ #/.identity value) ..artifact)
-          (..on_maybe "info" (get@ #/.info value) ..info)
-          (..on_set "repositories" (get@ #/.repositories value) code.text)
-          (..on_set "dependencies" (get@ #/.dependencies value) ..dependency)
-          (dictionary.has "compiler" (..dependency (get@ #/.compiler value)))
-          (..on_set "sources" (get@ #/.sources value) code.text)
-          (dictionary.has "target" (code.text (get@ #/.target value)))
-          (..on_maybe "program" (get@ #/.program value) code.text)
-          (..on_maybe "test" (get@ #/.test value) code.text)
-          (..on_dictionary "deploy_repositories" (get@ #/.deploy_repositories value) code.text code.text)
+          (..on_list "parents" (value@ #/.parents value) code.text)
+          (..on_maybe "identity" (value@ #/.identity value) ..artifact)
+          (..on_maybe "info" (value@ #/.info value) ..info)
+          (..on_set "repositories" (value@ #/.repositories value) code.text)
+          (..on_set "dependencies" (value@ #/.dependencies value) ..dependency)
+          (dictionary.has "compiler" (..dependency (value@ #/.compiler value)))
+          (..on_set "sources" (value@ #/.sources value) code.text)
+          (dictionary.has "target" (code.text (value@ #/.target value)))
+          (..on_maybe "program" (value@ #/.program value) code.text)
+          (..on_maybe "test" (value@ #/.test value) code.text)
+          (..on_dictionary "deploy_repositories" (value@ #/.deploy_repositories value) code.text code.text)
           (~~ (template []
-                [(dictionary.has (template.text []) (..runtime (get@  value)))]
+                [(dictionary.has (template.text []) (..runtime (value@  value)))]
 
                 [#/.java]
                 [#/.js]
diff --git a/stdlib/source/program/aedifex/hash.lux b/stdlib/source/program/aedifex/hash.lux
index 63394c8c9..92414c441 100644
--- a/stdlib/source/program/aedifex/hash.lux
+++ b/stdlib/source/program/aedifex/hash.lux
@@ -31,10 +31,12 @@
    (#static getInstance [java/lang/String] java/security/MessageDigest)
    (digest [[byte]] [byte])])
 
-(abstract: .public SHA-1 Any)
-(abstract: .public MD5 Any)
+(abstract: .public SHA-1 {} Any)
+(abstract: .public MD5 {} Any)
 
 (abstract: .public (Hash h)
+  {}
+
   Binary
 
   (def: .public data
@@ -54,13 +56,13 @@
 
   (def: encode
     (Format Binary)
-    (binary.fold (function (_ byte representation)
-                   (let [hex (\ n.hex encode byte)
-                         hex (case (text.size hex)
-                               1 (format "0" hex)
-                               _ hex)]
-                     (format representation hex)))
-                 ""))
+    (binary.aggregate (function (_ byte representation)
+                        (let [hex (\ n.hex encode byte)
+                              hex (case (text.size hex)
+                                    1 (format "0" hex)
+                                    _ hex)]
+                          (format representation hex)))
+                      ""))
 
   (template [ ]
     [(def: 
@@ -128,7 +130,7 @@
               (do try.monad
                 [head (\ n.hex decode head)
                  output (binary.write/64! index head output)]
-                (recur tail (inc chunk) output))
+                (recur tail (++ chunk) output))
               
               #.None
               (case (..hash_size input)
diff --git a/stdlib/source/program/aedifex/metadata.lux b/stdlib/source/program/aedifex/metadata.lux
index 5badc4783..c8bad9fed 100644
--- a/stdlib/source/program/aedifex/metadata.lux
+++ b/stdlib/source/program/aedifex/metadata.lux
@@ -18,16 +18,16 @@
 (def: .public (remote_artifact_uri artifact)
   (-> Artifact URI)
   (let [/ uri.separator]
-    (format (//artifact.directory / (get@ #//artifact.group artifact))
-            / (get@ #//artifact.name artifact)
-            / (get@ #//artifact.version artifact)
+    (format (//artifact.directory / (value@ #//artifact.group artifact))
+            / (value@ #//artifact.name artifact)
+            / (value@ #//artifact.version artifact)
             / ..remote_file)))
 
 (def: .public (remote_project_uri artifact)
   (-> Artifact URI)
   (let [/ uri.separator]
-    (format (//artifact.directory / (get@ #//artifact.group artifact))
-            / (get@ #//artifact.name artifact)
+    (format (//artifact.directory / (value@ #//artifact.group artifact))
+            / (value@ #//artifact.name artifact)
             / ..remote_file)))
 
 (def: local_file
diff --git a/stdlib/source/program/aedifex/metadata/artifact.lux b/stdlib/source/program/aedifex/metadata/artifact.lux
index 0d6f86c2c..3512114be 100644
--- a/stdlib/source/program/aedifex/metadata/artifact.lux
+++ b/stdlib/source/program/aedifex/metadata/artifact.lux
@@ -99,12 +99,12 @@
   (-> Metadata XML)
   (#xml.Node ..
              xml.attributes
-             (list (..group_format (get@ #group value))
-                   (..name_format (get@ #name value))
+             (list (..group_format (value@ #group value))
+                   (..name_format (value@ #name value))
                    (#xml.Node ..
                               xml.attributes
-                              (list (..versions_format (get@ #versions value))
-                                    (..last_updated_format (get@ #last_updated value)))))))
+                              (list (..versions_format (value@ #versions value))
+                                    (..last_updated_format (value@ #last_updated value)))))))
 
 (def: (text tag)
   (-> xml.Tag (Parser Text))
diff --git a/stdlib/source/program/aedifex/metadata/snapshot.lux b/stdlib/source/program/aedifex/metadata/snapshot.lux
index 90fa9bb86..6a32effef 100644
--- a/stdlib/source/program/aedifex/metadata/snapshot.lux
+++ b/stdlib/source/program/aedifex/metadata/snapshot.lux
@@ -95,14 +95,14 @@
                                                          #///artifact/snapshot/version.updated ///artifact/time.epoch}]
                       (|> (.somewhere ///artifact/versioning.parser)
                           (\ ! map
-                             (update@ #///artifact/versioning.versions
-                                      (: (-> (List ///artifact/snapshot/version.Version)
-                                             (List ///artifact/snapshot/version.Version))
-                                         (|>> (case> (^ (list))
-                                                     (list )
+                             (revised@ #///artifact/versioning.versions
+                                       (: (-> (List ///artifact/snapshot/version.Version)
+                                              (List ///artifact/snapshot/version.Version))
+                                          (|>> (case> (^ (list))
+                                                      (list )
 
-                                                     versions
-                                                     versions)))))
+                                                      versions
+                                                      versions)))))
                           (<>.else {#///artifact/versioning.snapshot #///artifact/snapshot.Local
                                     #///artifact/versioning.last_updated ///artifact/time.epoch
                                     #///artifact/versioning.versions (list )})))]
diff --git a/stdlib/source/program/aedifex/package.lux b/stdlib/source/program/aedifex/package.lux
index 6b65a936d..c0c73e0fd 100644
--- a/stdlib/source/program/aedifex/package.lux
+++ b/stdlib/source/program/aedifex/package.lux
@@ -1,6 +1,6 @@
 (.module:
   [library
-   [lux #*
+   [lux (#- local)
     [abstract
      [equivalence (#+ Equivalence)]]
     [control
@@ -36,7 +36,7 @@
 (template [ ]
   [(def: .public ( package)
      (-> Package Bit)
-     (case (get@ #origin package)
+     (case (value@ #origin package)
        ( _)
        true
        
@@ -61,19 +61,19 @@
 
 (def: .public dependencies
   (-> Package (Try (Set Dependency)))
-  (|>> (get@ #pom)
+  (|>> (value@ #pom)
        product.left
        list
        (.result //pom.parser)
-       (try\map (get@ #/.dependencies))))
+       (try\map (value@ #/.dependencies))))
 
 (def: .public repositories
   (-> Package (Try (Set Address)))
-  (|>> (get@ #pom)
+  (|>> (value@ #pom)
        product.left
        list
        (.result //pom.parser)
-       (try\map (get@ #/.repositories))))
+       (try\map (value@ #/.repositories))))
 
 (def: .public equivalence
   (Equivalence Package)
diff --git a/stdlib/source/program/aedifex/parser.lux b/stdlib/source/program/aedifex/parser.lux
index 6d4d05b92..d5f4d3bb8 100644
--- a/stdlib/source/program/aedifex/parser.lux
+++ b/stdlib/source/program/aedifex/parser.lux
@@ -262,7 +262,7 @@
   (Parser Project)
   (let [default_profile (: (Parser Project)
                            (\ <>.monad map
-                              (|>> [/.else] (list) (dictionary.of_list text.hash))
+                              (|>> [/.default] (list) (dictionary.of_list text.hash))
                               ..profile))
         multi_profile (: (Parser Project)
                          (\ <>.monad map
diff --git a/stdlib/source/program/aedifex/pom.lux b/stdlib/source/program/aedifex/pom.lux
index 36e3ff440..810c30588 100644
--- a/stdlib/source/program/aedifex/pom.lux
+++ b/stdlib/source/program/aedifex/pom.lux
@@ -58,9 +58,9 @@
 
 (def: (artifact value)
   (-> Artifact (List XML))
-  (list (..property ..group_tag (get@ #//artifact.group value))
-        (..property ..artifact_tag (get@ #//artifact.name value))
-        (..property ..version_tag (get@ #//artifact.version value))))
+  (list (..property ..group_tag (value@ #//artifact.group value))
+        (..property ..artifact_tag (value@ #//artifact.name value))
+        (..property ..version_tag (value@ #//artifact.version value))))
 
 (def: distribution
   (-> /.Distribution XML)
@@ -85,8 +85,8 @@
   (-> Dependency XML)
   (#_.Node ["" ..dependency_tag]
            _.attributes
-           (list\compose (..artifact (get@ #//dependency.artifact value))
-                         (list (..property "type" (get@ #//dependency.type value))))))
+           (list\compose (..artifact (value@ #//dependency.artifact value))
+                         (list (..property "type" (value@ #//dependency.type value))))))
 
 (def: (group tag)
   (-> Text (-> (List XML) XML))
@@ -128,27 +128,27 @@
   (def: (info value)
     (-> /.Info (List XML))
     ($_ list\compose
-        (|> value (get@ #/.url) (maybe\map (..property ..url_tag)) maybe.list)
-        (|> value (get@ #/.description) (maybe\map (..property "description")) maybe.list)
-        (|> value (get@ #/.licenses) (list\map ..license) (..group "licenses") list)
-        (|> value (get@ #/.scm) (maybe\map ..scm) maybe.list)
-        (|> value (get@ #/.organization) (maybe\map ..organization) maybe.list)
-        (|> value (get@ #/.developers) (list\map ..developer) (..group "developers") list)
-        (|> value (get@ #/.contributors) (list\map ..contributor) (..group "contributors") list)
+        (|> value (value@ #/.url) (maybe\map (..property ..url_tag)) maybe.list)
+        (|> value (value@ #/.description) (maybe\map (..property "description")) maybe.list)
+        (|> value (value@ #/.licenses) (list\map ..license) (..group "licenses") list)
+        (|> value (value@ #/.scm) (maybe\map ..scm) maybe.list)
+        (|> value (value@ #/.organization) (maybe\map ..organization) maybe.list)
+        (|> value (value@ #/.developers) (list\map ..developer) (..group "developers") list)
+        (|> value (value@ #/.contributors) (list\map ..contributor) (..group "contributors") list)
         ))
   )
 
 (def: .public (write value)
   (-> /.Profile (Try XML))
-  (case (get@ #/.identity value)
+  (case (value@ #/.identity value)
     (#.Some identity)
     (#try.Success
      (#_.Node ["" ..project_tag] _.attributes
               ($_ list\compose
                   (list ..version)
                   (..artifact identity)
-                  (|> value (get@ #/.repositories) set.list (list\map ..repository) (..group "repositories") list)
-                  (|> value (get@ #/.dependencies) set.list (list\map ..dependency) (..group ..dependencies_tag) list)
+                  (|> value (value@ #/.repositories) set.list (list\map ..repository) (..group "repositories") list)
+                  (|> value (value@ #/.dependencies) set.list (list\map ..dependency) (..group ..dependencies_tag) list)
                   )))
 
     _
@@ -225,7 +225,7 @@
                             (<>.else (list)))
            _ (<>.some .any)]
           (in (|> (\ /.monoid identity)
-                  (update@ #/.dependencies (function (_ empty)
-                                             (list\fold set.has empty dependencies)))
-                  (update@ #/.repositories (function (_ empty)
-                                             (list\fold set.has empty repositories)))))))))
+                  (revised@ #/.dependencies (function (_ empty)
+                                              (list\fold set.has empty dependencies)))
+                  (revised@ #/.repositories (function (_ empty)
+                                              (list\fold set.has empty repositories)))))))))
diff --git a/stdlib/source/program/aedifex/profile.lux b/stdlib/source/program/aedifex/profile.lux
index 2ff458967..f4a1f9a0d 100644
--- a/stdlib/source/program/aedifex/profile.lux
+++ b/stdlib/source/program/aedifex/profile.lux
@@ -230,24 +230,24 @@
 
   (def: (compose override baseline)
     (template.let [(!runtime  )
-                   [(if (runtime\=  (get@  override))
-                      (get@  baseline)
-                      (get@  override))]]
-      {#parents (list\compose (get@ #parents baseline) (get@ #parents override))
-       #identity (maybe\compose (get@ #identity override) (get@ #identity baseline))
-       #info (maybe\compose (get@ #info override) (get@ #info baseline))
-       #repositories (set.union (get@ #repositories baseline) (get@ #repositories override))
-       #dependencies (set.union (get@ #dependencies baseline) (get@ #dependencies override))
-       #compiler (if (dependency\= ..default_compiler (get@ #compiler override))
-                   (get@ #compiler baseline)
-                   (get@ #compiler override))
-       #sources (set.union (get@ #sources baseline) (get@ #sources override))
-       #target (if (text\= ..default_target (get@ #target baseline))
-                 (get@ #target override)
-                 (get@ #target baseline))
-       #program (maybe\compose (get@ #program override) (get@ #program baseline))
-       #test (maybe\compose (get@ #test override) (get@ #test baseline))
-       #deploy_repositories (dictionary.merged (get@ #deploy_repositories override) (get@ #deploy_repositories baseline))
+                   [(if (runtime\=  (value@  override))
+                      (value@  baseline)
+                      (value@  override))]]
+      {#parents (list\compose (value@ #parents baseline) (value@ #parents override))
+       #identity (maybe\compose (value@ #identity override) (value@ #identity baseline))
+       #info (maybe\compose (value@ #info override) (value@ #info baseline))
+       #repositories (set.union (value@ #repositories baseline) (value@ #repositories override))
+       #dependencies (set.union (value@ #dependencies baseline) (value@ #dependencies override))
+       #compiler (if (dependency\= ..default_compiler (value@ #compiler override))
+                   (value@ #compiler baseline)
+                   (value@ #compiler override))
+       #sources (set.union (value@ #sources baseline) (value@ #sources override))
+       #target (if (text\= ..default_target (value@ #target baseline))
+                 (value@ #target override)
+                 (value@ #target baseline))
+       #program (maybe\compose (value@ #program override) (value@ #program baseline))
+       #test (maybe\compose (value@ #test override) (value@ #test baseline))
+       #deploy_repositories (dictionary.merged (value@ #deploy_repositories override) (value@ #deploy_repositories baseline))
        #java (!runtime #java runtime.default_java)
        #js (!runtime #js runtime.default_js)
        #python (!runtime #python runtime.default_python)
diff --git a/stdlib/source/program/aedifex/project.lux b/stdlib/source/program/aedifex/project.lux
index 951e82d34..5717221d1 100644
--- a/stdlib/source/program/aedifex/project.lux
+++ b/stdlib/source/program/aedifex/project.lux
@@ -55,17 +55,17 @@
   (case (dictionary.value name project)
     (#.Some profile)
     (case (list.example (set.member? lineage)
-                        (get@ #//.parents profile))
+                        (value@ #//.parents profile))
       (#.Some ouroboros)
       (exception.except ..circular_dependency [ouroboros name])
       
       #.None
       (do {! try.monad}
         [parents (monad.map ! (profile' (set.has name lineage) project)
-                            (get@ #//.parents profile))]
+                            (value@ #//.parents profile))]
         (in (list\fold (function (_ parent child)
                          (\ //.monoid compose child parent))
-                       (set@ #//.parents (list) profile)
+                       (with@ #//.parents (list) profile)
                        parents))))
     
     #.None
diff --git a/stdlib/source/program/aedifex/repository/remote.lux b/stdlib/source/program/aedifex/repository/remote.lux
index feaf3201f..11d29716e 100644
--- a/stdlib/source/program/aedifex/repository/remote.lux
+++ b/stdlib/source/program/aedifex/repository/remote.lux
@@ -68,11 +68,11 @@
                                      http))]
       (case status
         (^ (static http/status.ok))
-        (\ ! map product.right ((get@ #@http.body message) #.None))
+        (\ ! map product.right ((value@ #@http.body message) #.None))
         
         _
         (do !
-          [_ ((get@ #@http.body message) (#.Some 0))]
+          [_ ((value@ #@http.body message) (#.Some 0))]
           (\ io.monad in (exception.except ..download_failure [(format address uri) status]))))))
 
   (def: (upload uri content)
@@ -88,7 +88,7 @@
                                                             ..base_headers)))
                                      (#.Some content)
                                      http))
-       _ ((get@ #@http.body message) (#.Some 0))]
+       _ ((value@ #@http.body message) (#.Some 0))]
       (case status
         (^ (static http/status.created))
         (in [])
diff --git a/stdlib/source/program/aedifex/runtime.lux b/stdlib/source/program/aedifex/runtime.lux
index b239d03ea..f029bed15 100644
--- a/stdlib/source/program/aedifex/runtime.lux
+++ b/stdlib/source/program/aedifex/runtime.lux
@@ -40,7 +40,7 @@
 
 (def: .public (for runtime path)
   (-> Runtime file.Path Runtime)
-  (update@ #parameters
-           (function (_ parameters)
-             (list\compose parameters (list path)))
-           runtime))
+  (revised@ #parameters
+            (function (_ parameters)
+              (list\compose parameters (list path)))
+            runtime))
diff --git a/stdlib/source/program/compositor.lux b/stdlib/source/program/compositor.lux
index 1a6e7356e..7f0e29903 100644
--- a/stdlib/source/program/compositor.lux
+++ b/stdlib/source/program/compositor.lux
@@ -136,7 +136,7 @@
             ..timed
             (do (try.with async.monad)
               [.let [[compilation_sources compilation_host_dependencies compilation_libraries compilation_target compilation_module] compilation]
-               import (/import.import (get@ #platform.&file_system platform) compilation_libraries)
+               import (/import.import (value@ #platform.&file_system platform) compilation_libraries)
                [state archive] (:sharing []
                                          (Platform )
                                          platform
@@ -151,9 +151,9 @@
                                          
                                          (Async (Try [Archive (directive.State+ )]))
                                          (:expected (platform.compile import static expander platform compilation [archive state])))
-               _ (ioW.freeze (get@ #platform.&file_system platform) static archive)
+               _ (ioW.freeze (value@ #platform.&file_system platform) static archive)
                program_context (async\in ($/program.context archive))
-               host_dependencies (..load_host_dependencies (get@ #platform.&file_system platform) compilation_host_dependencies)
+               host_dependencies (..load_host_dependencies (value@ #platform.&file_system platform) compilation_host_dependencies)
                _ (..package! (for {@.old (file.async file.default)
                                    @.jvm (file.async file.default)
                                    @.js file.default})
@@ -167,7 +167,7 @@
         (#/cli.Export export)
         (<| (or_crash! "Export failed:")
             (do (try.with async.monad)
-              [_ (/export.export (get@ #platform.&file_system platform)
+              [_ (/export.export (value@ #platform.&file_system platform)
                                  export)]
               (in (debug.log! "Export complete!"))))
         
diff --git a/stdlib/source/program/scriptum.lux b/stdlib/source/program/scriptum.lux
index dbe3ea022..5083e0afc 100644
--- a/stdlib/source/program/scriptum.lux
+++ b/stdlib/source/program/scriptum.lux
@@ -51,7 +51,7 @@
 
 (def: type_var_names
   (Sequence Text)
-  (|> 0 (sequence.iterations inc) (sequence\map parameter_type_name)))
+  (|> 0 (sequence.iterations ++) (sequence\map parameter_type_name)))
 
 (template [ ]
   [(def: ( id)
@@ -86,9 +86,9 @@
   (if (n.= 0 level)
     (list)
     (|> level
-        dec
+        --
         (enum.range n.enum 0)
-        (list\map (|>> (n.+ (inc offset)) parameter_type_name)))))
+        (list\map (|>> (n.+ (++ offset)) parameter_type_name)))))
 
 (def: (prefix_lines prefix lines)
   (-> Text Text Text)
@@ -283,28 +283,28 @@
 (def: (add_definition [name [exported? def_type def_annotations def_value]] organization)
   (-> [Text Definition] Organization Organization)
   (cond (type\= .Type def_type)
-        (update@ #types
-                 (: (Mutation (List Value))
-                    (|>> (#.Item [name def_annotations (:as Type def_value)])))
-                 organization)
+        (revised@ #types
+                  (: (Mutation (List Value))
+                     (|>> (#.Item [name def_annotations (:as Type def_value)])))
+                  organization)
 
         (type\= .Macro def_type)
-        (update@ #macros
-                 (: (Mutation (List [Text Code]))
-                    (|>> (#.Item [name def_annotations])))
-                 organization)
+        (revised@ #macros
+                  (: (Mutation (List [Text Code]))
+                     (|>> (#.Item [name def_annotations])))
+                  organization)
 
         (annotation.implementation? def_annotations)
-        (update@ #implementations
-                 (: (Mutation (List Value))
-                    (|>> (#.Item [name def_annotations def_type])))
-                 organization)
+        (revised@ #implementations
+                  (: (Mutation (List Value))
+                     (|>> (#.Item [name def_annotations def_type])))
+                  organization)
 
         ... else
-        (update@ #values
-                 (: (Mutation (List Value))
-                    (|>> (#.Item [name def_annotations def_type])))
-                 organization)))
+        (revised@ #values
+                  (: (Mutation (List Value))
+                     (|>> (#.Item [name def_annotations def_type])))
+                  organization)))
 
 (def: name_sort
   (All [r] (-> [Text r] [Text r] Bit))
@@ -319,17 +319,17 @@
               #implementations (list)
               #values (list)}]
     (|> (list\fold add_definition init defs)
-        (update@ #types (list.sorted name_sort))
-        (update@ #macros (list.sorted name_sort))
-        (update@ #implementations (list.sorted name_sort))
-        (update@ #values (list.sorted name_sort)))))
+        (revised@ #types (list.sorted name_sort))
+        (revised@ #macros (list.sorted name_sort))
+        (revised@ #implementations (list.sorted name_sort))
+        (revised@ #values (list.sorted name_sort)))))
 
 (def: (unravel_type_func level type)
   (-> Nat Type Type)
   (if (n.> 0 level)
     (case type
       (#.UnivQ _env _type)
-      (unravel_type_func (dec level) _type)
+      (unravel_type_func (-- level) _type)
 
       _
       type)
@@ -371,7 +371,7 @@
                            (|> type
                                (unravel_type_func nesting)
                                (when> [(new> recursive_type? [])] [unrecurse_type])
-                               (pprint_type_definition (dec nesting) [_name type_arguments] (maybe.else (list) tags) module interface? recursive_type?)
+                               (pprint_type_definition (-- nesting) [_name type_arguments] (maybe.else (list) tags) module interface? recursive_type?)
                                (text.all_split_by text.new_line)
                                (list\map (|>> (format "  ")))
                                (text.interposed text.new_line))
@@ -421,7 +421,7 @@
 (template [  
] [(def: ( module type) (-> Text Type (Markdown Block)) - (md.code (pprint_type (dec 0) "?" module type))) + (md.code (pprint_type (-- 0) "?" module type))) (def: ( module values) (-> Text (List Value) (Markdown Block)) @@ -462,7 +462,7 @@ (do meta.monad [.let [(^slots [#types #macros #implementations #values]) organization annotations (|> module - (get@ #.module_annotations) + (value@ #.module_annotations) (maybe.else (' {})) annotation.documentation) description (case annotations diff --git a/stdlib/source/specification/aedifex/repository.lux b/stdlib/source/specification/aedifex/repository.lux index 9f29b2b4c..6a834a0a8 100644 --- a/stdlib/source/specification/aedifex/repository.lux +++ b/stdlib/source/specification/aedifex/repository.lux @@ -29,11 +29,11 @@ [expected (_binary.random 100)] (in ($_ _.and' (do async.monad - [.let [good_uri (/remote.uri (get@ #//artifact.version valid_artifact) valid_artifact //artifact/extension.lux_library)] + [.let [good_uri (/remote.uri (value@ #//artifact.version valid_artifact) valid_artifact //artifact/extension.lux_library)] good_upload! (\ subject upload good_uri expected) good_download! (\ subject download good_uri) - .let [bad_uri (/remote.uri (get@ #//artifact.version invalid_artifact) invalid_artifact //artifact/extension.lux_library)] + .let [bad_uri (/remote.uri (value@ #//artifact.version invalid_artifact) invalid_artifact //artifact/extension.lux_library)] bad_upload! (\ subject upload bad_uri expected) bad_download! (\ subject download bad_uri)] (_.cover' [/.Repository] diff --git a/stdlib/source/specification/compositor.lux b/stdlib/source/specification/compositor.lux index cf7008b76..70c314997 100644 --- a/stdlib/source/specification/compositor.lux +++ b/stdlib/source/specification/compositor.lux @@ -60,7 +60,7 @@ (case ?state,runner,definer (#try.Success [[directive_bundle directive_state] runner definer]) (..test runner definer - (get@ [#directive.analysis #directive.state] directive_state) + (value@ [#directive.analysis #directive.state] directive_state) expander) (#try.Failure error) diff --git a/stdlib/source/specification/compositor/common.lux b/stdlib/source/specification/compositor/common.lux index 3a7f70731..f663de359 100644 --- a/stdlib/source/specification/compositor/common.lux +++ b/stdlib/source/specification/compositor/common.lux @@ -73,9 +73,9 @@ [?state (platform.initialize target expander analysis_bundle platform generation_bundle directive_bundle program extender)] (in (do try.monad [[directive_bundle directive_state] ?state - .let [generation_state (get@ [#directive.generation - #directive.state] - directive_state)]] + .let [generation_state (value@ [#directive.generation + #directive.state] + directive_state)]] (in [[directive_bundle directive_state] (..runner platform generation_state) (..definer platform generation_state)]))))) diff --git a/stdlib/source/specification/compositor/generation/case.lux b/stdlib/source/specification/compositor/generation/case.lux index 371a89162..8508220ed 100644 --- a/stdlib/source/specification/compositor/generation/case.lux +++ b/stdlib/source/specification/compositor/generation/case.lux @@ -36,7 +36,7 @@ (def: (tail? size idx) (-> Nat Nat Bit) - (n.= (dec size) idx)) + (n.= (-- size) idx)) (def: .public (verify expected) (-> Frac (Try Any) Bit) @@ -70,9 +70,9 @@ [subS subP] case .let [unitS (synthesis.text synthesis.unit) caseS (synthesis.tuple - (list.joined (list (list.repeated idx unitS) - (list subS) - (list.repeated (|> size dec (n.- idx)) unitS)))) + (list.together (list (list.repeated idx unitS) + (list subS) + (list.repeated (|> size -- (n.- idx)) unitS)))) caseP ($_ synthesis.path/seq (if (tail? size idx) (synthesis.member/right idx) diff --git a/stdlib/source/specification/compositor/generation/function.lux b/stdlib/source/specification/compositor/generation/function.lux index c3143b958..8a090094f 100644 --- a/stdlib/source/specification/compositor/generation/function.lux +++ b/stdlib/source/specification/compositor/generation/function.lux @@ -34,7 +34,7 @@ (def: (local arity) (-> Arity (Random Register)) - (|> r.nat (r\map (|>> (n.% arity) inc)))) + (|> r.nat (r\map (|>> (n.% arity) ++)))) (def: function (Random [Arity Register Synthesis]) @@ -53,7 +53,7 @@ [[arity local functionS] ..function partial_arity (|> r.nat (\ ! map (|>> (n.% arity) (n.max 1)))) inputs (r.list arity r.safe_frac) - .let [expectation (maybe.trusted (list.item (dec local) inputs)) + .let [expectation (maybe.trusted (list.item (-- local) inputs)) inputsS (list\map (|>> synthesis.f64) inputs)]] ($_ _.and (_.test "Can read arguments." @@ -77,7 +77,7 @@ (enum.range n.enum 1) (list\map (|>> #reference.Local))) variableS (if (n.<= partial_arity local) - (synthesis.variable/foreign (dec local)) + (synthesis.variable/foreign (-- local)) (synthesis.variable/local (|> local (n.- partial_arity)))) inner_arity (n.- partial_arity arity) innerS (synthesis.function/abstraction diff --git a/stdlib/source/specification/compositor/generation/structure.lux b/stdlib/source/specification/compositor/generation/structure.lux index b1f0e5666..de61ed882 100644 --- a/stdlib/source/specification/compositor/generation/structure.lux +++ b/stdlib/source/specification/compositor/generation/structure.lux @@ -33,11 +33,11 @@ (do {! r.monad} [num_tags (|> r.nat (\ ! map (|>> (n.% 10) (n.max 2)))) tag_in (|> r.nat (\ ! map (n.% num_tags))) - .let [last?_in (|> num_tags dec (n.= tag_in))] + .let [last?_in (|> num_tags -- (n.= tag_in))] value_in r.i64] (_.test (%.name (name_of synthesis.variant)) (|> (synthesis.variant {#analysis.lefts (if last?_in - (dec tag_in) + (-- tag_in) tag_in) #analysis.right? last?_in #analysis.value (synthesis.i64 value_in)}) diff --git a/stdlib/source/specification/lux/world/file.lux b/stdlib/source/specification/lux/world/file.lux index 971e312de..0b5414dea 100644 --- a/stdlib/source/specification/lux/world/file.lux +++ b/stdlib/source/specification/lux/world/file.lux @@ -166,7 +166,7 @@ (|>> (text\= child) not) (|>> (text\= sub_dir) not)) (random.ascii/numeric 2)) - expected_file_size (\ ! map (|>> (n.% 10) inc) random.nat) + expected_file_size (\ ! map (|>> (n.% 10) ++) random.nat) content ($binary.random expected_file_size) appendix ($binary.random expected_file_size) expected_time random.instant]) diff --git a/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux b/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux index ada815059..915d283da 100644 --- a/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux +++ b/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux @@ -47,18 +47,18 @@ (do random.monad [sample random stamp $///stamp.random] - (let [version (get@ #/.version sample) + (let [version (value@ #/.version sample) local! (text\= version - (/.format (set@ #/.snapshot #///.Local sample))) + (/.format (with@ #/.snapshot #///.Local sample))) remote_format (/.format {#/.version (format version /.snapshot) #/.snapshot (#///.Remote stamp)}) remote! - (and (text.starts_with? (format version (///time.format (get@ #///stamp.time stamp))) + (and (text.starts_with? (format version (///time.format (value@ #///stamp.time stamp))) remote_format) - (text.ends_with? (%.nat (get@ #///stamp.build stamp)) + (text.ends_with? (%.nat (value@ #///stamp.build stamp)) remote_format))] (_.cover [/.snapshot /.format] (and local! diff --git a/stdlib/source/test/aedifex/artifact/time/time.lux b/stdlib/source/test/aedifex/artifact/time/time.lux index 4dcdac3cc..1f5e4c6e7 100644 --- a/stdlib/source/test/aedifex/artifact/time/time.lux +++ b/stdlib/source/test/aedifex/artifact/time/time.lux @@ -19,7 +19,7 @@ (def: .public random (Random /.Time) - (random.one (|>> time.clock (set@ #time.milli_second 0) time.time) + (random.one (|>> time.clock (with@ #time.milli_second 0) time.time) random.time)) (def: .public test diff --git a/stdlib/source/test/aedifex/cache.lux b/stdlib/source/test/aedifex/cache.lux index 44641af70..91870d680 100644 --- a/stdlib/source/test/aedifex/cache.lux +++ b/stdlib/source/test/aedifex/cache.lux @@ -57,7 +57,7 @@ (try.maybe (do try.monad [pom (//pom.write profile) - identity (try.of_maybe (get@ #//.identity profile))] + identity (try.of_maybe (value@ #//.identity profile))] (in [identity profile pom])))) @profile.random)) @@ -75,7 +75,7 @@ content ..content] (in [{#//dependency.artifact identity #//dependency.type type} - (set@ #//package.origin (#//repository/origin.Remote "") (//package.local pom content))]))) + (with@ #//package.origin (#//repository/origin.Remote "") (//package.local pom content))]))) (def: resolution (Random Resolution) @@ -88,14 +88,14 @@ (do ! [pom (random.one (function (_ [identity profile pom]) (|> profile - (set@ #//.dependencies (set.empty //dependency.hash)) - (set@ #//.identity (#.Some (get@ #//dependency.artifact dependency))) + (with@ #//.dependencies (set.empty //dependency.hash)) + (with@ #//.identity (#.Some (value@ #//dependency.artifact dependency))) //pom.write try.maybe)) ..profile) content ..content] (in [dependency - (set@ #//package.origin (#//repository/origin.Remote "") (//package.local pom content))])))))] + (with@ #//package.origin (#//repository/origin.Remote "") (//package.local pom content))])))))] (in (dictionary.of_list //dependency.hash (list& [main_dependency main_package] dependencies))))) (def: singular @@ -116,7 +116,7 @@ [_ wrote! actual_package read!] (in (\ //package.equivalence = - (set@ #//package.origin (#//repository/origin.Local "") expected_package) + (with@ #//package.origin (#//repository/origin.Local "") expected_package) actual_package))))))))) (def: plural @@ -138,7 +138,7 @@ actual read!] (in (\ //dependency/resolution.equivalence = (\ dictionary.functor map - (set@ #//package.origin (#//repository/origin.Local "")) + (with@ #//package.origin (#//repository/origin.Local "")) expected) actual))))))))) diff --git a/stdlib/source/test/aedifex/command/auto.lux b/stdlib/source/test/aedifex/command/auto.lux index 41d0f080f..ea62b6daa 100644 --- a/stdlib/source/test/aedifex/command/auto.lux +++ b/stdlib/source/test/aedifex/command/auto.lux @@ -53,7 +53,7 @@ [@runs (function (_ console program fs shell resolution profile) (do {! async.monad} - [[_ actual_runs] (async.future (atom.update! inc @runs))] + [[_ actual_runs] (async.future (atom.update! ++ @runs))] (if (n.= expected_runs actual_runs) (in (#try.Failure end_signal)) (do (try.with !) @@ -77,14 +77,14 @@ .let [empty_profile (: Profile (\ ///.monoid identity)) with_target (: (-> Profile Profile) - (set@ #///.target target)) + (with@ #///.target target)) with_program (: (-> Profile Profile) - (set@ #///.program (#.Some program))) + (with@ #///.program (#.Some program))) profile (|> empty_profile with_program with_target - (set@ #///.sources (set.of_list text.hash (list source))))] + (with@ #///.sources (set.of_list text.hash (list source))))] home (random.ascii/alpha 5) working_directory (random.ascii/alpha 5) @@ -103,7 +103,7 @@ _ (\ watcher poll [])] (do {! async.monad} [no_dangling_process! (|> profile - (set@ #///.compiler compiler) + (with@ #///.compiler compiler) ((/.do! 1 watcher command) ($version.echo "") (program.async (program.mock environment.empty home working_directory)) diff --git a/stdlib/source/test/aedifex/command/build.lux b/stdlib/source/test/aedifex/command/build.lux index 81f331e41..03625f0c1 100644 --- a/stdlib/source/test/aedifex/command/build.lux +++ b/stdlib/source/test/aedifex/command/build.lux @@ -151,9 +151,9 @@ .let [empty_profile (: Profile (\ ///.monoid identity)) with_target (: (-> Profile Profile) - (set@ #///.target target)) + (with@ #///.target target)) with_program (: (-> Profile Profile) - (set@ #///.program (#.Some program))) + (with@ #///.program (#.Some program))) profile (|> empty_profile with_program @@ -185,7 +185,7 @@ [verdict (do ///action.monad [_ (/.do! console (program.async (program.mock environment.empty home working_directory)) fs shell resolution - (set@ #///.compiler compiler profile)) + (with@ #///.compiler compiler profile)) start (\ console read_line []) end (\ console read_line [])] (in (and (text\= /.start start) @@ -207,7 +207,7 @@ [verdict (do ///action.monad [_ (/.do! console (program.async (program.mock environment.empty home working_directory)) fs (shell.async (..bad_shell [])) resolution - (set@ #///.compiler compiler profile)) + (with@ #///.compiler compiler profile)) start (\ console read_line []) end (\ console read_line [])] (in (and (text\= /.start start) diff --git a/stdlib/source/test/aedifex/command/clean.lux b/stdlib/source/test/aedifex/command/clean.lux index fffef3033..30ef6eb6f 100644 --- a/stdlib/source/test/aedifex/command/clean.lux +++ b/stdlib/source/test/aedifex/command/clean.lux @@ -103,7 +103,7 @@ context_exists!/pre (..directory_exists? fs context) target_exists!/pre (..assets_exist? fs target_path direct_files) sub_exists!/pre (..assets_exist? fs sub_path sub_files) - _ (/.do! console fs (set@ #///.target target_path dummy)) + _ (/.do! console fs (with@ #///.target target_path dummy)) context_exists!/post (..directory_exists? fs context) target_exists!/post (..assets_exist? fs target_path direct_files) sub_exists!/post (..assets_exist? fs sub_path sub_files) diff --git a/stdlib/source/test/aedifex/command/deploy.lux b/stdlib/source/test/aedifex/command/deploy.lux index 4d11234bd..1df6a4180 100644 --- a/stdlib/source/test/aedifex/command/deploy.lux +++ b/stdlib/source/test/aedifex/command/deploy.lux @@ -55,7 +55,7 @@ (Async (Try Text))) (do ///action.monad [.let [console ($version.echo "")] - _ ($install.make_sources! fs (get@ #///.sources profile)) + _ ($install.make_sources! fs (value@ #///.sources profile)) _ (/.do! console repository fs artifact profile)] (\ console read_line []))) @@ -66,7 +66,7 @@ [[artifact expected_pom profile] (random.one (function (_ profile) (do maybe.monad - [artifact (get@ #///.identity profile) + [artifact (value@ #///.identity profile) expected_pom (try.maybe (///pom.write profile))] (in [artifact expected_pom profile]))) $profile.random) @@ -81,19 +81,19 @@ [verdict (do {! ///action.monad} [logging (..execute! program repository fs artifact profile) expected_library (|> profile - (get@ #///.sources) + (value@ #///.sources) set.list (export.library fs) (\ ! map (format.result tar.writer))) - actual_pom (\ repository download (///repository/remote.uri (get@ #///artifact.version artifact) artifact ///artifact/extension.pom)) - actual_library (\ repository download (///repository/remote.uri (get@ #///artifact.version artifact) artifact ///artifact/extension.lux_library)) - actual_sha-1 (\ repository download (///repository/remote.uri (get@ #///artifact.version artifact) artifact (format ///artifact/extension.lux_library ///artifact/extension.sha-1))) + actual_pom (\ repository download (///repository/remote.uri (value@ #///artifact.version artifact) artifact ///artifact/extension.pom)) + actual_library (\ repository download (///repository/remote.uri (value@ #///artifact.version artifact) artifact ///artifact/extension.lux_library)) + actual_sha-1 (\ repository download (///repository/remote.uri (value@ #///artifact.version artifact) artifact (format ///artifact/extension.lux_library ///artifact/extension.sha-1))) actual_sha-1 (\ async.monad in (do try.monad [actual_sha-1 (\ utf8.codec decode actual_sha-1)] (\ ///hash.sha-1_codec decode actual_sha-1))) - actual_md5 (\ repository download (///repository/remote.uri (get@ #///artifact.version artifact) artifact (format ///artifact/extension.lux_library ///artifact/extension.md5))) + actual_md5 (\ repository download (///repository/remote.uri (value@ #///artifact.version artifact) artifact (format ///artifact/extension.lux_library ///artifact/extension.md5))) actual_md5 (\ async.monad in (do try.monad [actual_md5 (\ utf8.codec decode actual_md5)] diff --git a/stdlib/source/test/aedifex/command/deps.lux b/stdlib/source/test/aedifex/command/deps.lux index 0c6676488..ec45ba697 100644 --- a/stdlib/source/test/aedifex/command/deps.lux +++ b/stdlib/source/test/aedifex/command/deps.lux @@ -73,25 +73,25 @@ #///dependency.type ///artifact/type.lux_library} dependee_pom (|> (\ ///.monoid identity) - (set@ #///.identity (#.Some dependee_artifact)) + (with@ #///.identity (#.Some dependee_artifact)) ///pom.write try.trusted) depender_pom (|> (\ ///.monoid identity) - (set@ #///.identity (#.Some depender_artifact)) - (set@ #///.dependencies (set.of_list ///dependency.hash (list dependee))) + (with@ #///.identity (#.Some depender_artifact)) + (with@ #///.dependencies (set.of_list ///dependency.hash (list dependee))) ///pom.write try.trusted) dependee_package (|> dependee_package - (set@ #///package.origin (#///repository/origin.Remote "")) - (set@ #///package.pom [dependee_pom - (|> dependee_pom (\ xml.codec encode) (\ utf8.codec encode)) - #///dependency/status.Unverified])) + (with@ #///package.origin (#///repository/origin.Remote "")) + (with@ #///package.pom [dependee_pom + (|> dependee_pom (\ xml.codec encode) (\ utf8.codec encode)) + #///dependency/status.Unverified])) depender_package (|> depender_package - (set@ #///package.origin (#///repository/origin.Remote "")) - (set@ #///package.pom [depender_pom - (|> depender_pom (\ xml.codec encode) (\ utf8.codec encode)) - #///dependency/status.Unverified])) + (with@ #///package.origin (#///repository/origin.Remote "")) + (with@ #///package.pom [depender_pom + (|> depender_pom (\ xml.codec encode) (\ utf8.codec encode)) + #///dependency/status.Unverified])) fs (file.mock (\ file.default separator)) program (program.async (program.mock environment.empty home working_directory))]] @@ -103,7 +103,7 @@ (dictionary.has dependee dependee_package) (///dependency/deployment.all local)) post (|> (\ ///.monoid identity) - (set@ #///.dependencies (set.of_list ///dependency.hash (list dependee depender))) + (with@ #///.dependencies (set.of_list ///dependency.hash (list dependee depender))) (/.do! console local (list (///repository.mock ($///dependency/resolution.single depender_artifact depender_package) [])) diff --git a/stdlib/source/test/aedifex/command/install.lux b/stdlib/source/test/aedifex/command/install.lux index 86fe5ebea..f1c0c2de1 100644 --- a/stdlib/source/test/aedifex/command/install.lux +++ b/stdlib/source/test/aedifex/command/install.lux @@ -56,7 +56,7 @@ (-> (Program Async) (file.System Async) ///.Profile (Async (Try Text))) (do ///action.monad [.let [console ($version.echo "")] - _ (..make_sources! fs (get@ #///.sources sample)) + _ (..make_sources! fs (value@ #///.sources sample)) _ (/.do! console fs (///repository/local.repository program fs) sample)] (\ console read_line []))) @@ -65,7 +65,7 @@ (<| (_.covering /._) (do {! random.monad} [identity $artifact.random - sample (\ ! map (set@ #///.identity (#.Some identity)) + sample (\ ! map (with@ #///.identity (#.Some identity)) $profile.random) home (random.ascii/alpha 5) working_directory (random.ascii/alpha 5) @@ -75,7 +75,7 @@ [.let [fs (file.mock /) program (program.async (program.mock environment.empty home working_directory)) - artifact_path (///local.uri (get@ #///artifact.version identity) identity) + artifact_path (///local.uri (value@ #///artifact.version identity) identity) library_path (format artifact_path ///artifact/extension.lux_library) pom_path (format artifact_path ///artifact/extension.pom)] verdict (do {! ///action.monad} @@ -97,7 +97,7 @@ (in (do {! async.monad} [.let [fs (file.mock /) program (program.async (program.mock environment.empty home working_directory))] - logging (..execute! program fs (set@ #///.identity #.None sample))] + logging (..execute! program fs (with@ #///.identity #.None sample))] (_.cover' [/.failure] (|> logging (try\map (text\= /.failure)) diff --git a/stdlib/source/test/aedifex/command/pom.lux b/stdlib/source/test/aedifex/command/pom.lux index 9577842c1..b06a7c944 100644 --- a/stdlib/source/test/aedifex/command/pom.lux +++ b/stdlib/source/test/aedifex/command/pom.lux @@ -62,7 +62,7 @@ (#try.Failure error) (_.cover' [/.do!] - (case (get@ #///.identity sample) + (case (value@ #///.identity sample) (#.Some _) false diff --git a/stdlib/source/test/aedifex/command/test.lux b/stdlib/source/test/aedifex/command/test.lux index f2117fad4..3e3cf85d7 100644 --- a/stdlib/source/test/aedifex/command/test.lux +++ b/stdlib/source/test/aedifex/command/test.lux @@ -50,9 +50,9 @@ .let [empty_profile (: Profile (\ ///.monoid identity)) with_target (: (-> Profile Profile) - (set@ #///.target target)) + (with@ #///.target target)) with_test (: (-> Profile Profile) - (set@ #///.test (#.Some test))) + (with@ #///.test (#.Some test))) profile (|> empty_profile with_test @@ -65,7 +65,7 @@ [verdict (do ///action.monad [_ (/.do! console (program.async (program.mock environment.empty home working_directory)) fs (shell.async (@build.good_shell [])) resolution - (set@ #///.compiler compiler profile)) + (with@ #///.compiler compiler profile)) build_start (\ console read_line []) build_end (\ console read_line []) test_start (\ console read_line []) @@ -101,7 +101,7 @@ [])] _ (/.do! console (program.async (program.mock environment.empty home working_directory)) fs (shell.async bad_shell) resolution - (set@ #///.compiler compiler profile)) + (with@ #///.compiler compiler profile)) build_start (\ console read_line []) build_end (\ console read_line []) test_start (\ console read_line []) diff --git a/stdlib/source/test/aedifex/dependency/deployment.lux b/stdlib/source/test/aedifex/dependency/deployment.lux index ae97a70ca..009298783 100644 --- a/stdlib/source/test/aedifex/dependency/deployment.lux +++ b/stdlib/source/test/aedifex/dependency/deployment.lux @@ -79,20 +79,20 @@ (-> Nat URL Package (Dictionary URL Binary) Artifact Artifact Bit) (let [url (: (-> URI URL) (|>> (format address))) - library_url (url (format (artifact.uri (get@ #artifact.version expected_artifact) + library_url (url (format (artifact.uri (value@ #artifact.version expected_artifact) expected_artifact) artifact/extension.lux_library)) - pom_url (url (format (artifact.uri (get@ #artifact.version expected_artifact) + pom_url (url (format (artifact.uri (value@ #artifact.version expected_artifact) expected_artifact) artifact/extension.pom)) artifact_metadata_url (url (metadata.remote_artifact_uri expected_artifact)) project_metadata_url (url (metadata.remote_project_uri expected_artifact)) expected_library (|> package - (get@ #package.library) + (value@ #package.library) product.left) expected_pom (|> package - (get@ #package.pom) + (value@ #package.pom) product.right product.left) @@ -136,7 +136,7 @@ (do random.monad [[profile package] $///package.random .let [artifact (|> profile - (get@ #profile.identity) + (value@ #profile.identity) maybe.trusted) dependency (: Dependency [artifact diff --git a/stdlib/source/test/aedifex/dependency/resolution.lux b/stdlib/source/test/aedifex/dependency/resolution.lux index c7f7d6d40..44420243d 100644 --- a/stdlib/source/test/aedifex/dependency/resolution.lux +++ b/stdlib/source/test/aedifex/dependency/resolution.lux @@ -98,7 +98,7 @@ (def: .public (single artifact package) (-> Artifact Package (Mock Any)) - (let [expected (///artifact.uri (get@ #///artifact.version artifact) artifact)] + (let [expected (///artifact.uri (value@ #///artifact.version artifact) artifact)] (implementation (def: the_description "[1]") @@ -106,11 +106,11 @@ (if (text.contains? expected uri) (let [library (: Binary (|> package - (get@ #///package.library) + (value@ #///package.library) product.left)) pom (: Binary (|> package - (get@ #///package.pom) + (value@ #///package.pom) product.left (\ xml.codec encode) (\ utf8.codec encode)))] @@ -144,34 +144,34 @@ (def: the_description "[~SHA-1]") (def: (on_download uri state) - (if (text.contains? (///artifact.uri (get@ #///artifact.version expected_artifact) expected_artifact) uri) + (if (text.contains? (///artifact.uri (value@ #///artifact.version expected_artifact) expected_artifact) uri) (cond (text.ends_with? ///artifact/extension.lux_library uri) (#try.Success [state (|> expected_package - (get@ #///package.library) + (value@ #///package.library) product.left)]) (text.ends_with? ..lux_sha-1 uri) (#try.Success [state (|> expected_package - (get@ #///package.library) + (value@ #///package.library) product.left ..sha-1)]) (text.ends_with? ..lux_md5 uri) (#try.Success [state (|> expected_package - (get@ #///package.library) + (value@ #///package.library) product.left ..md5)]) (text.ends_with? ///artifact/extension.pom uri) (#try.Success [state (|> expected_package - (get@ #///package.pom) + (value@ #///package.pom) product.left (\ xml.codec encode) (\ utf8.codec encode))]) (text.ends_with? ..pom_sha-1 uri) (#try.Success [state (|> dummy_package - (get@ #///package.pom) + (value@ #///package.pom) product.left (\ xml.codec encode) (\ utf8.codec encode) @@ -179,7 +179,7 @@ (text.ends_with? ..pom_md5 uri) (#try.Success [state (|> expected_package - (get@ #///package.pom) + (value@ #///package.pom) product.left (\ xml.codec encode) (\ utf8.codec encode) @@ -197,34 +197,34 @@ (def: the_description "[~MD5]") (def: (on_download uri state) - (if (text.contains? (///artifact.uri (get@ #///artifact.version expected_artifact) expected_artifact) uri) + (if (text.contains? (///artifact.uri (value@ #///artifact.version expected_artifact) expected_artifact) uri) (cond (text.ends_with? ///artifact/extension.lux_library uri) (#try.Success [state (|> expected_package - (get@ #///package.library) + (value@ #///package.library) product.left)]) (text.ends_with? ..lux_sha-1 uri) (#try.Success [state (|> expected_package - (get@ #///package.library) + (value@ #///package.library) product.left ..sha-1)]) (text.ends_with? ..lux_md5 uri) (#try.Success [state (|> dummy_package - (get@ #///package.library) + (value@ #///package.library) product.left ..md5)]) (text.ends_with? ///artifact/extension.pom uri) (#try.Success [state (|> expected_package - (get@ #///package.pom) + (value@ #///package.pom) product.left (\ xml.codec encode) (\ utf8.codec encode))]) (text.ends_with? ..pom_sha-1 uri) (#try.Success [state (|> expected_package - (get@ #///package.pom) + (value@ #///package.pom) product.left (\ xml.codec encode) (\ utf8.codec encode) @@ -232,7 +232,7 @@ (text.ends_with? ..pom_md5 uri) (#try.Success [state (|> dummy_package - (get@ #///package.pom) + (value@ #///package.pom) product.left (\ xml.codec encode) (\ utf8.codec encode) @@ -250,7 +250,7 @@ [expected_artifact $///artifact.random [_ expected_package] $///package.random [_ dummy_package] (random.only (|>> product.right - (set@ #///package.pom (get@ #///package.pom expected_package)) + (with@ #///package.pom (value@ #///package.pom expected_package)) (\ ///package.equivalence = expected_package) not) $///package.random) @@ -266,7 +266,7 @@ (case actual_package (#try.Success actual_package) (\ ///package.equivalence = - (set@ #///package.origin (#///repository/origin.Remote "") expected_package) + (with@ #///package.origin (#///repository/origin.Remote "") expected_package) actual_package) (#try.Failure _) @@ -295,7 +295,7 @@ [expected_artifact $///artifact.random [_ expected_package] $///package.random [_ dummy_package] (random.only (|>> product.right - (set@ #///package.pom (get@ #///package.pom expected_package)) + (with@ #///package.pom (value@ #///package.pom expected_package)) (\ ///package.equivalence = expected_package) not) $///package.random) @@ -315,7 +315,7 @@ (case actual_package (#try.Success actual_package) (\ ///package.equivalence = - (set@ #///package.origin (#///repository/origin.Remote "") expected_package) + (with@ #///package.origin (#///repository/origin.Remote "") expected_package) actual_package) (#try.Failure _) @@ -344,8 +344,8 @@ (\ ///artifact.equivalence = dependee_artifact)) $///artifact.random) ignored_artifact (random.only (predicate.complement - (predicate.unite (\ ///artifact.equivalence = dependee_artifact) - (\ ///artifact.equivalence = depender_artifact))) + (predicate.and (\ ///artifact.equivalence = dependee_artifact) + (\ ///artifact.equivalence = depender_artifact))) $///artifact.random)] (in [dependee_artifact depender_artifact ignored_artifact]))) @@ -366,34 +366,34 @@ #///dependency.type ///artifact/type.lux_library} dependee_pom (|> (\ ///.monoid identity) - (set@ #///.identity (#.Some dependee_artifact)) + (with@ #///.identity (#.Some dependee_artifact)) ///pom.write try.trusted) depender_pom (|> (\ ///.monoid identity) - (set@ #///.identity (#.Some depender_artifact)) - (set@ #///.dependencies (set.of_list ///dependency.hash (list dependee))) + (with@ #///.identity (#.Some depender_artifact)) + (with@ #///.dependencies (set.of_list ///dependency.hash (list dependee))) ///pom.write try.trusted) ignored_pom (|> (\ ///.monoid identity) - (set@ #///.identity (#.Some ignored_artifact)) + (with@ #///.identity (#.Some ignored_artifact)) ///pom.write try.trusted) - dependee_package (set@ #///package.pom - [dependee_pom - (|> dependee_pom (\ xml.codec encode) (\ utf8.codec encode)) + dependee_package (with@ #///package.pom + [dependee_pom + (|> dependee_pom (\ xml.codec encode) (\ utf8.codec encode)) + #///dependency/status.Unverified] + dependee_package) + depender_package (with@ #///package.pom + [depender_pom + (|> depender_pom (\ xml.codec encode) (\ utf8.codec encode)) + #///dependency/status.Unverified] + depender_package) + ignored_package (with@ #///package.pom + [ignored_pom + (|> ignored_pom (\ xml.codec encode) (\ utf8.codec encode)) #///dependency/status.Unverified] - dependee_package) - depender_package (set@ #///package.pom - [depender_pom - (|> depender_pom (\ xml.codec encode) (\ utf8.codec encode)) - #///dependency/status.Unverified] - depender_package) - ignored_package (set@ #///package.pom - [ignored_pom - (|> ignored_pom (\ xml.codec encode) (\ utf8.codec encode)) - #///dependency/status.Unverified] - ignored_package)]] + ignored_package)]] (in [[dependee depender ignored] [dependee_package depender_package ignored_package]]))) diff --git a/stdlib/source/test/aedifex/input.lux b/stdlib/source/test/aedifex/input.lux index 086551be0..1c47fdd6f 100644 --- a/stdlib/source/test/aedifex/input.lux +++ b/stdlib/source/test/aedifex/input.lux @@ -45,7 +45,7 @@ Test (<| (_.covering /._) (do {! random.monad} - [expected (\ ! map (set@ #//.parents (list)) $profile.random) + [expected (\ ! map (with@ #//.parents (list)) $profile.random) .let [fs (: (file.System Async) (file.mock (\ file.default separator)))]] (in (do async.monad @@ -59,8 +59,8 @@ (/.read async.monad fs //.default))] (in (\ //.equivalence = (|> expected - (update@ #//.sources ..with_default_source) - (update@ #//.repositories ..with_default_repository)) + (revised@ #//.sources ..with_default_source) + (revised@ #//.repositories ..with_default_repository)) actual)))] (_.cover' [/.read] (try.else false verdict))))))) diff --git a/stdlib/source/test/aedifex/local.lux b/stdlib/source/test/aedifex/local.lux index a797f2a97..a8c0702bb 100644 --- a/stdlib/source/test/aedifex/local.lux +++ b/stdlib/source/test/aedifex/local.lux @@ -23,5 +23,5 @@ ($_ _.and (_.cover [/.repository /.uri] (text.starts_with? /.repository - (/.uri (get@ #//artifact.version sample) sample))) + (/.uri (value@ #//artifact.version sample) sample))) )))) diff --git a/stdlib/source/test/aedifex/metadata/artifact.lux b/stdlib/source/test/aedifex/metadata/artifact.lux index 46ebf4eae..85aafa550 100644 --- a/stdlib/source/test/aedifex/metadata/artifact.lux +++ b/stdlib/source/test/aedifex/metadata/artifact.lux @@ -72,10 +72,10 @@ (_.for [/.Metadata]) (do random.monad [expected ..random - .let [artifact {#///artifact.group (get@ #/.group expected) - #///artifact.name (get@ #/.name expected) + .let [artifact {#///artifact.group (value@ #/.group expected) + #///artifact.name (value@ #/.name expected) #///artifact.version (|> expected - (get@ #/.versions) + (value@ #/.versions) list.head (maybe.else ""))}]] ($_ _.and diff --git a/stdlib/source/test/aedifex/metadata/snapshot.lux b/stdlib/source/test/aedifex/metadata/snapshot.lux index d5dc8595e..2c74296e0 100644 --- a/stdlib/source/test/aedifex/metadata/snapshot.lux +++ b/stdlib/source/test/aedifex/metadata/snapshot.lux @@ -91,7 +91,7 @@ (_.for [/.Metadata]) (do random.monad [expected ..random - .let [artifact (get@ #/.artifact expected)]] + .let [artifact (value@ #/.artifact expected)]] ($_ _.and (_.for [/.equivalence] ($equivalence.spec /.equivalence ..random)) diff --git a/stdlib/source/test/aedifex/package.lux b/stdlib/source/test/aedifex/package.lux index e05c1d753..9596eb63f 100644 --- a/stdlib/source/test/aedifex/package.lux +++ b/stdlib/source/test/aedifex/package.lux @@ -64,18 +64,18 @@ ($equivalence.spec /.equivalence (\ ! map product.right ..random))) (_.cover [/.local?] - (/.local? (set@ #/.origin (#//origin.Local "~/yolo") package))) + (/.local? (with@ #/.origin (#//origin.Local "~/yolo") package))) (_.cover [/.remote?] - (/.remote? (set@ #/.origin (#//origin.Remote "https://example.com") package))) + (/.remote? (with@ #/.origin (#//origin.Remote "https://example.com") package))) (_.cover [/.local] - (let [expected_pom (|> package (get@ #/.pom) product.left) - expected_library (|> package (get@ #/.library) product.left) + (let [expected_pom (|> package (value@ #/.pom) product.left) + expected_library (|> package (value@ #/.library) product.left) local (/.local expected_pom expected_library) - [actual_pom binary_pom pom_status] (get@ #/.pom local) - [actual_library library_status] (get@ #/.library local)] - (and (case (get@ #/.origin local) + [actual_pom binary_pom pom_status] (value@ #/.pom local) + [actual_library library_status] (value@ #/.library local)] + (and (case (value@ #/.origin local) (#//origin.Local "") true _ false) (let [expected_sha1 (//hash.sha-1 expected_library) @@ -104,7 +104,7 @@ _ false)))))) (_.cover [/.dependencies] - (let [expected (get@ #//.dependencies profile)] + (let [expected (value@ #//.dependencies profile)] (case (/.dependencies package) (#try.Success actual) (\ set.equivalence = expected actual) @@ -112,7 +112,7 @@ (#try.Failure error) false))) (_.cover [/.repositories] - (let [expected (get@ #//.repositories profile)] + (let [expected (value@ #//.repositories profile)] (case (/.repositories package) (#try.Success actual) (\ set.equivalence = expected actual) diff --git a/stdlib/source/test/aedifex/parser.lux b/stdlib/source/test/aedifex/parser.lux index 152123d55..6f1516258 100644 --- a/stdlib/source/test/aedifex/parser.lux +++ b/stdlib/source/test/aedifex/parser.lux @@ -55,16 +55,16 @@ (def: with_default_sources (-> //.Profile //.Profile) - (update@ #//.sources - (: (-> (Set //.Source) (Set //.Source)) - (function (_ sources) - (if (set.empty? sources) - (set.of_list text.hash (list //.default_source)) - sources))))) + (revised@ #//.sources + (: (-> (Set //.Source) (Set //.Source)) + (function (_ sources) + (if (set.empty? sources) + (set.of_list text.hash (list //.default_source)) + sources))))) (def: with_default_repository (-> //.Profile //.Profile) - (update@ #//.repositories (set.has //.default_repository))) + (revised@ #//.repositories (set.has //.default_repository))) (def: single_profile Test diff --git a/stdlib/source/test/aedifex/pom.lux b/stdlib/source/test/aedifex/pom.lux index f51ac9abc..e413b69ed 100644 --- a/stdlib/source/test/aedifex/pom.lux +++ b/stdlib/source/test/aedifex/pom.lux @@ -34,15 +34,15 @@ [expected @profile.random] (_.cover [/.write /.parser] (case [(/.write expected) - (get@ #//.identity expected)] + (value@ #//.identity expected)] [(#try.Success pom) (#.Some _)] (case (.result /.parser (list pom)) (#try.Success actual) (\ //.equivalence = (|> (\ //.monoid identity) - (set@ #//.dependencies (get@ #//.dependencies expected)) - (set@ #//.repositories (get@ #//.repositories expected))) + (with@ #//.dependencies (value@ #//.dependencies expected)) + (with@ #//.repositories (value@ #//.repositories expected))) actual) (#try.Failure error) diff --git a/stdlib/source/test/aedifex/profile.lux b/stdlib/source/test/aedifex/profile.lux index b1ec22e6c..4cb58d0d0 100644 --- a/stdlib/source/test/aedifex/profile.lux +++ b/stdlib/source/test/aedifex/profile.lux @@ -154,10 +154,10 @@ (text\= "" /.default)) (_.cover [/.default_compiler] (|> (\ /.monoid identity) - (get@ #/.compiler) + (value@ #/.compiler) (same? /.default_compiler))) (_.cover [/.default_target] (|> (\ /.monoid identity) - (get@ #/.target) + (value@ #/.target) (same? /.default_target))) ))))) diff --git a/stdlib/source/test/aedifex/project.lux b/stdlib/source/test/aedifex/project.lux index 3d027eec7..291935293 100644 --- a/stdlib/source/test/aedifex/project.lux +++ b/stdlib/source/test/aedifex/project.lux @@ -27,7 +27,7 @@ (def: profile (Random [//.Name //.Profile]) (|> @profile.random - (random\map (set@ #//.parents (list))) + (random\map (with@ #//.parents (list))) (random.and (random.ascii/alpha 1)))) (def: .public random @@ -66,11 +66,11 @@ .let [project ($_ (\ /.monoid compose) (/.project super_name super_profile) (/.project dummy_name dummy_profile) - (/.project sub_name (set@ #//.parents (list super_name) sub_profile))) + (/.project sub_name (with@ #//.parents (list super_name) sub_profile))) circular ($_ (\ /.monoid compose) - (/.project super_name (set@ #//.parents (list sub_name) super_profile)) + (/.project super_name (with@ #//.parents (list sub_name) super_profile)) (/.project dummy_name dummy_profile) - (/.project sub_name (set@ #//.parents (list super_name) sub_profile)))]] + (/.project sub_name (with@ #//.parents (list super_name) sub_profile)))]] ($_ _.and (_.cover [/.profile] (and (|> (/.profile super_name project) diff --git a/stdlib/source/test/aedifex/runtime.lux b/stdlib/source/test/aedifex/runtime.lux index c9e61b017..782b20204 100644 --- a/stdlib/source/test/aedifex/runtime.lux +++ b/stdlib/source/test/aedifex/runtime.lux @@ -44,7 +44,7 @@ (~~ (template [] [(_.cover [/.default_java /.default_js /.default_python /.default_lua /.default_ruby] (let [listing (|> (list /.default_java /.default_js /.default_python /.default_lua /.default_ruby) - (list\map (get@ #/.program))) + (list\map (value@ #/.program))) unique (set.of_list text.hash listing)] (n.= (list.size listing) (set.size unique))))] @@ -57,10 +57,10 @@ )) (_.cover [/.for] (let [runtime' (/.for runtime path)] - (and (text\= (get@ #/.program runtime) - (get@ #/.program runtime')) + (and (text\= (value@ #/.program runtime) + (value@ #/.program runtime')) (|> runtime' - (get@ #/.parameters) + (value@ #/.parameters) list.last (maybe\map (text\= path)) (maybe.else false))))) diff --git a/stdlib/source/test/lux.lux b/stdlib/source/test/lux.lux index a0e00fdd4..6eab1c60b 100644 --- a/stdlib/source/test/lux.lux +++ b/stdlib/source/test/lux.lux @@ -280,20 +280,20 @@ (do random.monad [start random.nat factor random.nat - .let [expected (n.* factor (inc start))]] + .let [expected (n.* factor (++ start))]] ($_ _.and (_.cover [/.|>] (n.= expected - (/.|> start inc (n.* factor)))) + (/.|> start ++ (n.* factor)))) (_.cover [/.|>>] (n.= expected - ((/.|>> inc (n.* factor)) start))) + ((/.|>> ++ (n.* factor)) start))) (_.cover [/.<|] (n.= expected - (/.<| (n.* factor) inc start))) + (/.<| (n.* factor) ++ start))) (_.cover [/.<<|] (n.= expected - ((/.<<| (n.* factor) inc) start))) + ((/.<<| (n.* factor) ++) start))) ))) (def: example_identifier "YOLO") @@ -421,7 +421,7 @@ )) (_.cover [/.Ann] (|> example - (get@ #/.meta) + (value@ #/.meta) (location\= location.dummy))) ))) @@ -432,7 +432,7 @@ "This is an arbitrary text whose only purpose is to be found, somewhere, in the source-code.") (/.macro: (found_crosshair? tokens lux) - (let [[_ _ source_code] (get@ #.source lux)] + (let [[_ _ source_code] (value@ #.source lux)] (#.Right [lux (list (code.bit (text.contains? ..crosshair source_code)))]))) (def: for_macro @@ -572,11 +572,11 @@ (_.cover [/.rev] (same? (: Any expected) (: Any (/.rev expected)))) - (_.cover [/.inc] + (_.cover [/.++] (n.= 1 (n.- expected - (/.inc expected)))) - (_.cover [/.dec] - (n.= 1 (n.- (/.dec expected) + (/.++ expected)))) + (_.cover [/.--] + (n.= 1 (n.- (/.-- expected) expected))) ))) @@ -588,13 +588,13 @@ (_.cover [/.-> /.function] (and (let [actual (: (/.-> Nat Nat Nat) (/.function (_ actual_left actual_right) - (n.* (inc actual_left) (dec actual_right))))] - (n.= (n.* (inc expected_left) (dec expected_right)) + (n.* (++ actual_left) (-- actual_right))))] + (n.= (n.* (++ expected_left) (-- expected_right)) (actual expected_left expected_right))) (let [actual (: (/.-> [Nat Nat] Nat) (/.function (_ [actual_left actual_right]) - (n.* (inc actual_left) (dec actual_right))))] - (n.= (n.* (inc expected_left) (dec expected_right)) + (n.* (++ actual_left) (-- actual_right))))] + (n.= (n.* (++ expected_left) (-- expected_right)) (actual [expected_left expected_right]))))))) (/.template: (!n/+ ) @@ -673,72 +673,72 @@ #big_right {#small_left start/s #small_right text}}]] ($_ _.and - (_.cover [/.get@] + (_.cover [/.value@] (and (and (|> sample - (/.get@ #big_left) + (/.value@ #big_left) (same? start/b)) (|> sample - ((/.get@ #big_left)) + ((/.value@ #big_left)) (same? start/b))) (and (|> sample - (/.get@ [#big_right #small_left]) + (/.value@ [#big_right #small_left]) (same? start/s)) (|> sample - ((/.get@ [#big_right #small_left])) + ((/.value@ [#big_right #small_left])) (same? start/s))))) - (_.cover [/.set@] + (_.cover [/.with@] (and (and (|> sample - (/.set@ #big_left shift/b) - (/.get@ #big_left) + (/.with@ #big_left shift/b) + (/.value@ #big_left) (same? shift/b)) (|> sample - ((/.set@ #big_left shift/b)) - (/.get@ #big_left) + ((/.with@ #big_left shift/b)) + (/.value@ #big_left) (same? shift/b)) (|> sample - ((/.set@ #big_left) shift/b) - (/.get@ #big_left) + ((/.with@ #big_left) shift/b) + (/.value@ #big_left) (same? shift/b))) (and (|> sample - (/.set@ [#big_right #small_left] shift/s) - (/.get@ [#big_right #small_left]) + (/.with@ [#big_right #small_left] shift/s) + (/.value@ [#big_right #small_left]) (same? shift/s)) (|> sample - ((/.set@ [#big_right #small_left] shift/s)) - (/.get@ [#big_right #small_left]) + ((/.with@ [#big_right #small_left] shift/s)) + (/.value@ [#big_right #small_left]) (same? shift/s)) (|> sample - ((/.set@ [#big_right #small_left]) shift/s) - (/.get@ [#big_right #small_left]) + ((/.with@ [#big_right #small_left]) shift/s) + (/.value@ [#big_right #small_left]) (same? shift/s))))) - (_.cover [/.update@] + (_.cover [/.revised@] (and (and (|> sample - (/.update@ #big_left (n.+ shift/b)) - (/.get@ #big_left) + (/.revised@ #big_left (n.+ shift/b)) + (/.value@ #big_left) (n.= expected/b)) (|> sample - ((/.update@ #big_left (n.+ shift/b))) - (/.get@ #big_left) + ((/.revised@ #big_left (n.+ shift/b))) + (/.value@ #big_left) (n.= expected/b)) (|> sample ((: (-> (-> Nat Nat) (-> Big Big)) - (/.update@ #big_left)) + (/.revised@ #big_left)) (n.+ shift/b)) - (/.get@ #big_left) + (/.value@ #big_left) (n.= expected/b))) (and (|> sample - (/.update@ [#big_right #small_left] (n.+ shift/s)) - (/.get@ [#big_right #small_left]) + (/.revised@ [#big_right #small_left] (n.+ shift/s)) + (/.value@ [#big_right #small_left]) (n.= expected/s)) (|> sample - ((/.update@ [#big_right #small_left] (n.+ shift/s))) - (/.get@ [#big_right #small_left]) + ((/.revised@ [#big_right #small_left] (n.+ shift/s))) + (/.value@ [#big_right #small_left]) (n.= expected/s)) (|> sample ((: (-> (-> Nat Nat) (-> Big Big)) - (/.update@ [#big_right #small_left])) + (/.revised@ [#big_right #small_left])) (n.+ shift/s)) - (/.get@ [#big_right #small_left]) + (/.value@ [#big_right #small_left]) (n.= expected/s))))) ))) @@ -862,7 +862,7 @@ (hide left)) true))) (_.cover [/.same?] - (let [not_left (|> left inc dec)] + (let [not_left (|> left ++ --)] (and (/.same? left left) (and (n.= not_left left) (not (/.same? not_left left)))))) @@ -1009,7 +1009,7 @@ (/.loop [counter 0 value 0] (if (n.< iterations counter) - (recur (inc counter) (n.+ factor value)) + (recur (++ counter) (n.+ factor value)) value))))) (do random.monad [pre random.nat @@ -1051,13 +1051,13 @@ (syntax: (for_meta|Info []) (function (_ lux) - (let [info (get@ #.info lux) + (let [info (value@ #.info lux) conforming_target! - (set.member? ..possible_targets (get@ #.target info)) + (set.member? ..possible_targets (value@ #.target info)) compiling! - (case (get@ #.mode info) + (case (value@ #.mode info) #.Build true _ false)] (#.Right [lux (list (code.bit (and conforming_target! @@ -1066,7 +1066,7 @@ (syntax: (for_meta|Module_State []) (do meta.monad [prelude_module (meta.module .prelude_module)] - (in (list (code.bit (case (get@ #.module_state prelude_module) + (in (list (code.bit (case (value@ #.module_state prelude_module) #.Active false _ true)))))) @@ -1103,22 +1103,22 @@ let/2 .local_identifier let/3 .local_identifier]) - (in (list (code.bit (case (get@ #.scopes *lux*) + (in (list (code.bit (case (value@ #.scopes *lux*) (^ (list& scope/2 _)) - (let [locals/2 (get@ #.locals scope/2) + (let [locals/2 (value@ #.locals scope/2) expected_locals/2 (set.of_list text.hash (list fn/2 var/2 let/2 let/3)) actual_locals/2 (|> locals/2 - (get@ #.mappings) + (value@ #.mappings) (list\map product.left) (set.of_list text.hash)) correct_locals! - (and (n.= 4 (get@ #.counter locals/2)) + (and (n.= 4 (value@ #.counter locals/2)) (set\= expected_locals/2 actual_locals/2)) - captured/2 (get@ #.captured scope/2) + captured/2 (value@ #.captured scope/2) local? (: (-> Ref Bit) (function (_ ref) @@ -1130,13 +1130,13 @@ binding? (: (-> (-> Ref Bit) Text Bit) (function (_ is? name) (|> captured/2 - (get@ #.mappings) + (value@ #.mappings) (plist.value name) (maybe\map (|>> product.right is?)) (maybe.else false)))) correct_closure! - (and (n.= 6 (get@ #.counter captured/2)) + (and (n.= 6 (value@ #.counter captured/2)) (binding? local? fn/1) (binding? local? var/1) (binding? local? let/1) diff --git a/stdlib/source/test/lux/abstract/comonad.lux b/stdlib/source/test/lux/abstract/comonad.lux index 431272d9f..05067e786 100644 --- a/stdlib/source/test/lux/abstract/comonad.lux +++ b/stdlib/source/test/lux/abstract/comonad.lux @@ -20,9 +20,9 @@ (<| (_.covering /._) ($_ _.and (_.cover [/.be] - (n.= (inc sample) + (n.= (++ sample) (: (Identity Nat) (/.be identity.comonad [value (out sample)] - (out (inc value)))))) + (out (++ value)))))) )))) diff --git a/stdlib/source/test/lux/abstract/enum.lux b/stdlib/source/test/lux/abstract/enum.lux index 88d4cc732..179dad8df 100644 --- a/stdlib/source/test/lux/abstract/enum.lux +++ b/stdlib/source/test/lux/abstract/enum.lux @@ -31,7 +31,7 @@ (<| (_.covering /._) ($_ _.and (_.cover [/.range] - (let [expected_size (|> end (n.- start) inc) + (let [expected_size (|> end (n.- start) ++) expected_start? (|> range list.head (maybe\map (n.= start)) (maybe.else false)) expected_end? (|> range list.last (maybe\map (n.= end)) (maybe.else false)) can_be_backwards? (\ (list.equivalence n.equivalence) = diff --git a/stdlib/source/test/lux/abstract/monad.lux b/stdlib/source/test/lux/abstract/monad.lux index 0fc605a0c..051f63a5c 100644 --- a/stdlib/source/test/lux/abstract/monad.lux +++ b/stdlib/source/test/lux/abstract/monad.lux @@ -21,30 +21,30 @@ (<| (_.covering /._) ($_ _.and (_.cover [/.do] - (n.= (inc mono) + (n.= (++ mono) (: (Identity Nat) (/.do identity.monad [sample (in mono)] - (in (inc sample)))))) - (_.cover [/.bind] - (n.= (inc mono) + (in (++ sample)))))) + (_.cover [/.then] + (n.= (++ mono) (: (Identity Nat) - (/.bind identity.monad - (|>> inc (\ identity.monad in)) + (/.then identity.monad + (|>> ++ (\ identity.monad in)) (\ identity.monad in mono))))) - (_.cover [/.seq] + (_.cover [/.all] (\ (list.equivalence n.equivalence) = - (list\map inc poly) + (list\map ++ poly) (|> poly - (list\map (|>> inc (\ identity.monad in))) + (list\map (|>> ++ (\ identity.monad in))) (: (List (Identity Nat))) - (/.seq identity.monad) + (/.all identity.monad) (: (Identity (List Nat)))))) (_.cover [/.map] (\ (list.equivalence n.equivalence) = - (list\map inc poly) + (list\map ++ poly) (|> poly - (/.map identity.monad (|>> inc (\ identity.monad in))) + (/.map identity.monad (|>> ++ (\ identity.monad in))) (: (Identity (List Nat)))))) (_.cover [/.only] (\ (list.equivalence n.equivalence) = diff --git a/stdlib/source/test/lux/abstract/monad/free.lux b/stdlib/source/test/lux/abstract/monad/free.lux index b583f4a8e..523741df6 100644 --- a/stdlib/source/test/lux/abstract/monad/free.lux +++ b/stdlib/source/test/lux/abstract/monad/free.lux @@ -31,7 +31,7 @@ (#/.Effect effect) (|> effect (list\map interpret) - list.joined))) + list.together))) (def: comparison (Comparison (/.Free List)) diff --git a/stdlib/source/test/lux/control/concatenative.lux b/stdlib/source/test/lux/control/concatenative.lux index deb5601a7..97b7a48f6 100644 --- a/stdlib/source/test/lux/control/concatenative.lux +++ b/stdlib/source/test/lux/control/concatenative.lux @@ -76,18 +76,18 @@ [/.||L #.Left] [/.||R #.Right])) (_.cover [/.dip] - (n.= (inc sample) + (n.= (++ sample) (||> (/.push sample) (/.push dummy) - (/.push (/.apply/1 inc)) + (/.push (/.apply/1 ++)) /.dip /.drop))) (_.cover [/.dip/2] - (n.= (inc sample) + (n.= (++ sample) (||> (/.push sample) (/.push dummy) (/.push dummy) - (/.push (/.apply/1 inc)) + (/.push (/.apply/1 ++)) /.dip/2 /.drop /.drop))) )))) @@ -142,13 +142,13 @@ sample random.nat start random.nat .let [distance 10 - |inc| (/.apply/1 inc) + |++| (/.apply/1 ++) |test| (/.apply/1 (|>> (n.- start) (n.< distance)))]] ($_ _.and (_.cover [/.call /.apply/1] - (n.= (inc sample) + (n.= (++ sample) (||> (/.push sample) - (/.push (/.apply/1 inc)) + (/.push (/.apply/1 ++)) /.call))) (_.cover [/.apply/2] (n.= (n.+ sample sample) @@ -235,35 +235,35 @@ /.call))) (_.cover [/.if] (n.= (if choice - (inc sample) - (dec sample)) + (++ sample) + (-- sample)) (||> (/.push sample) (/.push choice) - (/.push (/.apply/1 inc)) - (/.push (/.apply/1 dec)) + (/.push (/.apply/1 ++)) + (/.push (/.apply/1 --)) /.if))) (_.cover [/.loop] (n.= (n.+ distance start) (||> (/.push start) - (/.push (|>> |inc| /.dup |test|)) + (/.push (|>> |++| /.dup |test|)) /.loop))) (_.cover [/.while] (n.= (n.+ distance start) (||> (/.push start) (/.push (|>> /.dup |test|)) - (/.push |inc|) + (/.push |++|) /.while))) (_.cover [/.do] - (n.= (inc sample) + (n.= (++ sample) (||> (/.push sample) (/.push (|>> (/.push false))) - (/.push |inc|) + (/.push |++|) /.do /.while))) (_.cover [/.compose] - (n.= (inc (inc sample)) + (n.= (++ (++ sample)) (||> (/.push sample) - (/.push |inc|) - (/.push |inc|) + (/.push |++|) + (/.push |++|) /.compose /.call))) (_.cover [/.partial] @@ -275,19 +275,19 @@ /.call))) (_.cover [/.when] (n.= (if choice - (inc sample) + (++ sample) sample) (||> (/.push sample) (/.push choice) - (/.push (/.apply/1 inc)) + (/.push (/.apply/1 ++)) /.when))) (_.cover [/.?] (n.= (if choice - (inc sample) - (dec sample)) + (++ sample) + (-- sample)) (||> (/.push choice) - (/.push (inc sample)) - (/.push (dec sample)) + (/.push (++ sample)) + (/.push (-- sample)) /.?))) ))) diff --git a/stdlib/source/test/lux/control/concurrency/actor.lux b/stdlib/source/test/lux/control/concurrency/actor.lux index 627b294ad..93c68faff 100644 --- a/stdlib/source/test/lux/control/concurrency/actor.lux +++ b/stdlib/source/test/lux/control/concurrency/actor.lux @@ -55,8 +55,8 @@ (function (_ transform) (function (_ state actor) (|> state transform #try.Success async\in)))) - inc! (: (/.Mail Nat) (as_mail inc)) - dec! (: (/.Mail Nat) (as_mail dec))]] + ++! (: (/.Mail Nat) (as_mail ++)) + --! (: (/.Mail Nat) (as_mail --))]] (<| (_.covering /._) (_.for [/.Actor]) ($_ _.and @@ -116,7 +116,7 @@ (in (do async.monad [sent? (async.future (do io.monad [actor (/.spawn! /.default 0) - sent? (/.mail! inc! actor)] + sent? (/.mail! ++! actor)] (in (..mailed? sent?))))] (_.cover' [/.Behavior /.Mail /.default /.spawn! /.mail!] @@ -126,7 +126,7 @@ [result (async.future (do io.monad [counter (/.spawn! /.default 0) _ (/.poison! counter)] - (/.mail! inc! counter)))] + (/.mail! ++! counter)))] (_.cover' [/.dead] (case result (#try.Success outcome) @@ -180,18 +180,18 @@ [anonymous (/.actor {Nat initial_state} ((on_mail message state self) - (message (inc state) self))) - sent/inc? (/.mail! inc! anonymous) - sent/dec? (/.mail! dec! anonymous) + (message (++ state) self))) + sent/++? (/.mail! ++! anonymous) + sent/--? (/.mail! --! anonymous) poisoned? (/.poison! anonymous) obituary (/.obituary' anonymous)] - (in (and (..mailed? sent/inc?) - (..mailed? sent/dec?) + (in (and (..mailed? sent/++?) + (..mailed? sent/--?) (..mailed? poisoned?) (case obituary (^ (#.Some [error final_state (list poison_pill)])) (and (exception.match? /.poisoned error) - (n.= (inc (inc initial_state)) + (n.= (++ (++ initial_state)) final_state)) _ @@ -200,7 +200,7 @@ verdict))) (do ! - [num_events (\ ! map (|>> (n.% 10) inc) random.nat) + [num_events (\ ! map (|>> (n.% 10) ++) random.nat) events (random.list num_events random.nat) num_observations (\ ! map (n.% num_events) random.nat) .let [expected (list.first num_observations events) @@ -215,8 +215,8 @@ (async.future (if (n.< num_observations events_seen) (do ! - [_ (atom.update! (row.add event) sink)] - (in (#try.Success (inc events_seen)))) + [_ (atom.update! (row.suffix event) sink)] + (in (#try.Success (++ events_seen)))) (do ! [_ stop] (in (#try.Failure "YOLO"))))))) diff --git a/stdlib/source/test/lux/control/concurrency/async.lux b/stdlib/source/test/lux/control/concurrency/async.lux index a92a5c44c..f9b917ee5 100644 --- a/stdlib/source/test/lux/control/concurrency/async.lux +++ b/stdlib/source/test/lux/control/concurrency/async.lux @@ -107,16 +107,16 @@ (n.+ leftA rightA))))) (in (do /.monad [pre (/.future instant.now) - actual (/.delayed waiting_time expected) + actual (/.after waiting_time expected) post (/.future instant.now)] - (_.cover' [/.delayed] + (_.cover' [/.after] (and (n.= expected actual) (i.>= (.int waiting_time) (duration.millis (instant.span pre post))))))) (in (do /.monad [?left (/.or (in leftE) - (/.delayed waiting_time dummy)) - ?right (/.or (/.delayed waiting_time dummy) + (/.after waiting_time dummy)) + ?right (/.or (/.after waiting_time dummy) (in rightE))] (_.cover' [/.or] (case [?left ?right] @@ -128,8 +128,8 @@ false)))) (in (do /.monad [leftA (/.either (in leftE) - (/.delayed waiting_time dummy)) - rightA (/.either (/.delayed waiting_time dummy) + (/.after waiting_time dummy)) + rightA (/.either (/.after waiting_time dummy) (in rightE))] (_.cover' [/.either] (n.= (n.+ leftE rightE) @@ -155,9 +155,9 @@ (and yep (not nope))))) (in (do /.monad - [?none (/.time_out 0 (/.delayed waiting_time dummy)) - ?actual (/.time_out waiting_time (in expected))] - (_.cover' [/.time_out] + [?none (/.within 0 (/.after waiting_time dummy)) + ?actual (/.within waiting_time (in expected))] + (_.cover' [/.within] (case [?none ?actual] [#.None (#.Some actual)] (n.= expected actual) diff --git a/stdlib/source/test/lux/control/concurrency/frp.lux b/stdlib/source/test/lux/control/concurrency/frp.lux index 45dadc8cb..5876331b6 100644 --- a/stdlib/source/test/lux/control/concurrency/frp.lux +++ b/stdlib/source/test/lux/control/concurrency/frp.lux @@ -60,7 +60,7 @@ (#.Some [head tail]) (\ ! map (|>> (#.Item head)) - (take_amount (dec amount_of_polls) [channel sink])))))) + (take_amount (-- amount_of_polls) [channel sink])))))) (def: .public test Test @@ -145,9 +145,9 @@ _ (async.future (/.subscribe! (function (_ value) (do {! io.monad} [current (atom.read! sink) - _ (atom.update! (row.add value) sink)] + _ (atom.update! (row.suffix value) sink)] (if (n.< (list.size inputs) - (inc (row.size current))) + (++ (row.size current))) (in (#.Some [])) (do ! [_ (!signal [])] @@ -161,22 +161,22 @@ (_.cover' [/.Subscriber /.subscribe!] (list\= inputs listened)))) (in (do async.monad - [actual (/.fold (function (_ input total) - (async.resolved (n.+ input total))) - 0 - (/.sequential 0 inputs))] - (_.cover' [/.fold] + [actual (/.aggregate (function (_ input total) + (async.resolved (n.+ input total))) + 0 + (/.sequential 0 inputs))] + (_.cover' [/.aggregate] (n.= (list\fold n.+ 0 inputs) actual)))) (in (do async.monad [actual (|> inputs (/.sequential 0) - (/.folds (function (_ input total) - (async.resolved (n.+ input total))) - 0) + (/.aggregates (function (_ input total) + (async.resolved (n.+ input total))) + 0) /.list)] - (_.cover' [/.folds] - (list\= (list.folds n.+ 0 inputs) + (_.cover' [/.aggregates] + (list\= (list.aggregates n.+ 0 inputs) actual)))) (in (do async.monad [actual (|> (list distint/0 distint/0 distint/0 @@ -189,8 +189,8 @@ (list\= (list distint/0 distint/1 distint/2) actual)))) (do ! - [polling_delay (\ ! map (|>> (n.% 10) inc) random.nat) - amount_of_polls (\ ! map (|>> (n.% 10) inc) random.nat)] + [polling_delay (\ ! map (|>> (n.% 10) ++) random.nat) + amount_of_polls (\ ! map (|>> (n.% 10) ++) random.nat)] ($_ _.and (in (do {! async.monad} [actual (..take_amount amount_of_polls (/.poll polling_delay (: (IO Nat) (io.io sample)))) @@ -212,12 +212,12 @@ (/.iterations (function (_ [iterations current]) (async.resolved (if (n.< max_iterations iterations) - (#.Some [[(inc iterations) (n.+ shift current)] + (#.Some [[(++ iterations) (n.+ shift current)] current]) #.None)))) /.list)] (_.cover' [/.iterations] (and (n.= max_iterations (list.size actual)) - (list\= (list.folds n.+ sample (list.repeated (dec max_iterations) shift)) + (list\= (list.aggregates n.+ sample (list.repeated (-- max_iterations) shift)) actual))))) ))))) diff --git a/stdlib/source/test/lux/control/concurrency/semaphore.lux b/stdlib/source/test/lux/control/concurrency/semaphore.lux index a57e3bcd6..b4b07bbb0 100644 --- a/stdlib/source/test/lux/control/concurrency/semaphore.lux +++ b/stdlib/source/test/lux/control/concurrency/semaphore.lux @@ -42,7 +42,7 @@ [initial_open_positions (|> random.nat (\ ! map (|>> (n.% 10) (n.max 1)))) .let [semaphore (/.semaphore initial_open_positions)]] (in (do async.monad - [result (async.time_out ..delay (/.wait! semaphore))] + [result (async.within ..delay (/.wait! semaphore))] (_.cover' [/.semaphore] (case result (#.Some _) @@ -55,7 +55,7 @@ .let [semaphore (/.semaphore initial_open_positions)]] (in (do {! async.monad} [_ (monad.map ! /.wait! (list.repeated initial_open_positions semaphore)) - result (async.time_out ..delay (/.wait! semaphore))] + result (async.within ..delay (/.wait! semaphore))] (_.cover' [/.wait!] (case result (#.Some _) @@ -69,9 +69,9 @@ (in (do {! async.monad} [_ (monad.map ! /.wait! (list.repeated initial_open_positions semaphore)) .let [block (/.wait! semaphore)] - result/0 (async.time_out ..delay block) + result/0 (async.within ..delay block) open_positions (/.signal! semaphore) - result/1 (async.time_out ..delay block)] + result/1 (async.within ..delay block)] (_.cover' [/.signal!] (case [result/0 result/1 open_positions] [#.None (#.Some _) (#try.Success +0)] @@ -100,14 +100,14 @@ (do {! random.monad} [repetitions (|> random.nat (\ ! map (|>> (n.% 100) (n.max 10)))) .let [resource (atom.atom "") - expected_As (text.joined (list.repeated repetitions "A")) - expected_Bs (text.joined (list.repeated repetitions "B")) + expected_As (text.together (list.repeated repetitions "A")) + expected_Bs (text.together (list.repeated repetitions "B")) mutex (/.mutex []) processA (<| (/.synchronize! mutex) io.io async.future (do {! io.monad} - [_ (<| (monad.seq !) + [_ (<| (monad.all !) (list.repeated repetitions) (atom.update! (|>> (format "A")) resource))] (in []))) @@ -115,7 +115,7 @@ io.io async.future (do {! io.monad} - [_ (<| (monad.seq !) + [_ (<| (monad.all !) (list.repeated repetitions) (atom.update! (|>> (format "B")) resource))] (in [])))]] @@ -155,21 +155,21 @@ _ false))) (do {! random.monad} - [limit (\ ! map (|>> (n.% 9) inc) random.nat) + [limit (\ ! map (|>> (n.% 9) ++) random.nat) .let [barrier (/.barrier (maybe.trusted (/.limit limit))) resource (atom.atom "")]] (in (do {! async.monad} [.let [suffix "_" expected_ending (|> suffix (list.repeated limit) - text.joined) - expected_ids (enum.range n.enum 0 (dec limit))] + text.together) + expected_ids (enum.range n.enum 0 (-- limit))] _ (|> expected_ids (list\map (function (_ id) (exec (io.run! (atom.update! (|>> (format suffix)) resource)) (waiter resource barrier id)))) - (monad.seq !)) + (monad.all !)) .let [outcome (io.run! (atom.read! resource))]] (_.cover' [/.barrier /.block!] (and (text.ends_with? expected_ending outcome) diff --git a/stdlib/source/test/lux/control/concurrency/stm.lux b/stdlib/source/test/lux/control/concurrency/stm.lux index dbe98177f..f3a5c618c 100644 --- a/stdlib/source/test/lux/control/concurrency/stm.lux +++ b/stdlib/source/test/lux/control/concurrency/stm.lux @@ -94,8 +94,8 @@ (in (let [var (/.var 0)] (do {! async.monad} [_ (|> (list.repeated iterations_per_process []) - (list\map (function (_ _) (/.commit! (/.update inc var)))) - (monad.seq !)) + (list\map (function (_ _) (/.commit! (/.update ++ var)))) + (monad.all !)) cummulative (/.commit! (/.read var))] (_.cover' [/.STM] (n.= iterations_per_process diff --git a/stdlib/source/test/lux/control/continuation.lux b/stdlib/source/test/lux/control/continuation.lux index 4844e521f..cac3794a0 100644 --- a/stdlib/source/test/lux/control/continuation.lux +++ b/stdlib/source/test/lux/control/continuation.lux @@ -63,7 +63,7 @@ (/.result (do /.monad [[restart [output idx]] (/.portal [sample 0])] (if (n.< 10 idx) - (restart [(n.+ 10 output) (inc idx)]) + (restart [(n.+ 10 output) (++ idx)]) (in output)))))) (_.cover [/.shift /.reset] (let [(^open "_\.") /.monad diff --git a/stdlib/source/test/lux/control/function.lux b/stdlib/source/test/lux/control/function.lux index 369a018e0..4450991ec 100644 --- a/stdlib/source/test/lux/control/function.lux +++ b/stdlib/source/test/lux/control/function.lux @@ -56,9 +56,9 @@ outcome) (not (n.= (n.- expected extra) outcome))))) - (_.cover [/.apply] + (_.cover [/.on] (n.= (f0 extra) - (/.apply extra f0))) + (/.on extra f0))) /contract.test /memo.test diff --git a/stdlib/source/test/lux/control/function/memo.lux b/stdlib/source/test/lux/control/function/memo.lux index a91f2a69a..914247204 100644 --- a/stdlib/source/test/lux/control/function/memo.lux +++ b/stdlib/source/test/lux/control/function/memo.lux @@ -85,7 +85,7 @@ open (/.open fibonacci)] [none_time none_output] (..time none input) [open_time [memory open_output]] (..time open [memory input]) - [open_time/+1 _] (..time open [memory (inc input)]) + [open_time/+1 _] (..time open [memory (++ input)]) .let [same_output! (n.= none_output open_output) @@ -108,10 +108,10 @@ (case input (^or 0 1) (\ state.monad in 1) _ (do state.monad - [output' (recur (dec input))] + [output' (recur (-- input))] (in (n.* input output'))))))) expected (|> (list.indices input) - (list\map inc) + (list\map ++) (list\fold n.* 1)) actual (|> (memo input) (state.result (dictionary.empty n.hash)) diff --git a/stdlib/source/test/lux/control/function/mixin.lux b/stdlib/source/test/lux/control/function/mixin.lux index 19e67b7aa..b41da5623 100644 --- a/stdlib/source/test/lux/control/function/mixin.lux +++ b/stdlib/source/test/lux/control/function/mixin.lux @@ -39,7 +39,7 @@ (in (function (_ delegate recur input) output)))) expected (|> (list.indices input) - (list\map inc) + (list\map ++) (list\fold n.* 1))]]) ($_ _.and (_.for [/.Mixin] @@ -52,7 +52,7 @@ (function (_ delegate recur input) (case input (^or 0 1) 1 - _ (n.* input (recur (dec input))))))] + _ (n.* input (recur (-- input))))))] (n.= expected (factorial input)))) (_.cover [/.with] @@ -63,7 +63,7 @@ _ (delegate input)))) multiplication (: (/.Mixin Nat Nat) (function (_ delegate recur input) - (n.* input (recur (dec input))))) + (n.* input (recur (-- input))))) factorial (/.mixin (/.with bottom multiplication))] (n.= expected (factorial input)))) @@ -72,7 +72,7 @@ (function (_ delegate recur input) (case input (^or 0 1) 1 - _ (n.* input (delegate (dec input)))))) + _ (n.* input (delegate (-- input)))))) left (/.mixin (/.with /.nothing loop)) right (/.mixin (/.with loop /.nothing))] (and (n.= expected @@ -90,7 +90,7 @@ _ false))) multiplication (: (/.Mixin Nat Nat) (function (_ delegate recur input) - (n.* input (recur (dec input))))) + (n.* input (recur (-- input))))) factorial (/.mixin (/.with (/.advice bottom? bottom) multiplication))] (n.= expected @@ -129,7 +129,7 @@ (function (_ recur input) (case input (^or 0 1) 1 - _ (n.* input (recur (dec input)))))))] + _ (n.* input (recur (-- input)))))))] (n.= expected (factorial input))))) ))) diff --git a/stdlib/source/test/lux/control/function/mutual.lux b/stdlib/source/test/lux/control/function/mutual.lux index 5aeb9be71..4fe2e4219 100644 --- a/stdlib/source/test/lux/control/function/mutual.lux +++ b/stdlib/source/test/lux/control/function/mutual.lux @@ -25,13 +25,13 @@ (-> Nat Bit) (case number 0 true - _ (odd? (dec number))) + _ (odd? (-- number))) (odd? number) (-> Nat Bit) (case number 0 false - _ (even? (dec number)))] + _ (even? (-- number)))] (and (bit\= expected (even? sample)) (bit\= (not expected) (odd? sample))))))) @@ -40,13 +40,13 @@ (-> Nat Bit) (case number 0 true - _ (odd? (dec number)))] + _ (odd? (-- number)))] [(odd? number) (-> Nat Bit) (case number 0 false - _ (even? (dec number)))]) + _ (even? (-- number)))]) (def: test_def Test diff --git a/stdlib/source/test/lux/control/parser.lux b/stdlib/source/test/lux/control/parser.lux index f45ba2111..e37a2f355 100644 --- a/stdlib/source/test/lux/control/parser.lux +++ b/stdlib/source/test/lux/control/parser.lux @@ -195,7 +195,7 @@ (list.first times expected+) actual))) (|> (list\map code.nat expected+) - (/.result (/.exactly (inc variadic) .nat)) + (/.result (/.exactly (++ variadic) .nat)) fails?))) (_.cover [/.at_least] (and (|> (list\map code.nat expected+) @@ -205,7 +205,7 @@ expected+ actual))) (|> (list\map code.nat expected+) - (/.result (/.at_least (inc variadic) .nat)) + (/.result (/.at_least (++ variadic) .nat)) fails?))) (_.cover [/.at_most] (and (|> (list\map code.nat expected+) @@ -215,7 +215,7 @@ (list.first times expected+) actual))) (|> (list\map code.nat expected+) - (/.result (/.at_most (inc variadic) .nat)) + (/.result (/.at_most (++ variadic) .nat)) (match actual (\ (list.equivalence n.equivalence) = expected+ diff --git a/stdlib/source/test/lux/control/parser/binary.lux b/stdlib/source/test/lux/control/parser/binary.lux index 50233ba6e..dcf4d0e80 100644 --- a/stdlib/source/test/lux/control/parser/binary.lux +++ b/stdlib/source/test/lux/control/parser/binary.lux @@ -355,7 +355,7 @@ post)))) (!expect (#try.Success #1))))) (do {! random.monad} - [to_read (\ ! map (n.% (inc ..segment_size)) random.nat) + [to_read (\ ! map (n.% (++ ..segment_size)) random.nat) data (\ ! map (\ utf8.codec encode) (random.ascii ..segment_size))] (_.cover [/.Offset /.offset] (|> data @@ -370,7 +370,7 @@ (n.= ..segment_size nothing_left))))) (!expect (#try.Success #1))))) (do {! random.monad} - [to_read (\ ! map (n.% (inc ..segment_size)) random.nat) + [to_read (\ ! map (n.% (++ ..segment_size)) random.nat) data (\ ! map (\ utf8.codec encode) (random.ascii ..segment_size))] (_.cover [/.remaining] (|> data diff --git a/stdlib/source/test/lux/control/parser/cli.lux b/stdlib/source/test/lux/control/parser/cli.lux index fb1f485c0..529986ad4 100644 --- a/stdlib/source/test/lux/control/parser/cli.lux +++ b/stdlib/source/test/lux/control/parser/cli.lux @@ -57,7 +57,7 @@ (_.cover [/.somewhere] (|> (/.result (|> (/.somewhere (/.this expected)) (<>.before (<>.some /.any))) - (list.joined (list pre_ignore (list expected) post_ignore))) + (list.together (list pre_ignore (list expected) post_ignore))) (!expect (#try.Success _)))) (_.cover [/.end] (and (|> (/.result /.end (list)) diff --git a/stdlib/source/test/lux/control/parser/synthesis.lux b/stdlib/source/test/lux/control/parser/synthesis.lux index 068ba1235..e412ff262 100644 --- a/stdlib/source/test/lux/control/parser/synthesis.lux +++ b/stdlib/source/test/lux/control/parser/synthesis.lux @@ -132,12 +132,12 @@ expected_environment ..random_environment expected_body (random.unicode 1)] (_.cover [/.wrong_arity] - (|> (/.result (/.function (inc arity) /.text) + (|> (/.result (/.function (++ arity) /.text) (list (synthesis.function/abstraction [expected_environment arity (synthesis.text expected_body)]))) (!expect (^multi (#try.Failure error) (exception.match? /.wrong_arity error)))))) (do {! random.monad} - [arity (\ ! map (|>> (n.% 10) inc) random.nat) + [arity (\ ! map (|>> (n.% 10) ++) random.nat) expected_offset random.nat expected_inits (random.list arity random.bit) expected_body (random.unicode 1)] diff --git a/stdlib/source/test/lux/control/parser/text.lux b/stdlib/source/test/lux/control/parser/text.lux index 7be2416d0..951bed82e 100644 --- a/stdlib/source/test/lux/control/parser/text.lux +++ b/stdlib/source/test/lux/control/parser/text.lux @@ -77,7 +77,7 @@ .let [limit (n.+ offset range)] expected (\ ! map (|>> (n.% range) (n.+ offset) text.of_char) random.nat) out_of_range (case offset - 0 (\ ! map (|>> (n.% 10) inc (n.+ limit) text.of_char) random.nat) + 0 (\ ! map (|>> (n.% 10) ++ (n.+ limit) text.of_char) random.nat) _ (\ ! map (|>> (n.% offset) text.of_char) random.nat))] (_.cover [/.range] (and (..should_pass expected (/.range offset limit)) @@ -157,7 +157,7 @@ (random.set n.hash num_options) (\ ! map (|>> set.list (list\map text.of_char) - text.joined))) + text.together))) expected (\ ! map (function (_ value) (|> options (text.char (n.% num_options value)) @@ -183,7 +183,7 @@ (random.set n.hash num_options) (\ ! map (|>> set.list (list\map text.of_char) - text.joined))) + text.together))) invalid (\ ! map (function (_ value) (|> options (text.char (n.% num_options value)) diff --git a/stdlib/source/test/lux/control/parser/type.lux b/stdlib/source/test/lux/control/parser/type.lux index 373d549e9..dc901e3c4 100644 --- a/stdlib/source/test/lux/control/parser/type.lux +++ b/stdlib/source/test/lux/control/parser/type.lux @@ -166,7 +166,7 @@ Test (do {! random.monad} [not_polymorphic ..primitive - expected_inputs (\ ! map (|>> (n.% 10) inc) random.nat)] + expected_inputs (\ ! map (|>> (n.% 10) ++) random.nat)] ($_ _.and (_.cover [/.not_polymorphic] (and (|> (/.result (/.polymorphic /.any) diff --git a/stdlib/source/test/lux/control/parser/xml.lux b/stdlib/source/test/lux/control/parser/xml.lux index 92efb1121..e92216696 100644 --- a/stdlib/source/test/lux/control/parser/xml.lux +++ b/stdlib/source/test/lux/control/parser/xml.lux @@ -164,9 +164,9 @@ (_.cover [/.somewhere] (|> (/.result parser (list (node parent - (list.joined (list (list.repeated repetitions (node wrong (list))) - (list (node right (list))) - (list.repeated repetitions (node wrong (list)))))))) + (list.together (list (list.repeated repetitions (node wrong (list))) + (list (node right (list))) + (list.repeated repetitions (node wrong (list)))))))) (!expect (#try.Success [])))) (_.cover [/.nowhere] (|> (/.result parser diff --git a/stdlib/source/test/lux/control/pipe.lux b/stdlib/source/test/lux/control/pipe.lux index 27e92a7e0..3ef82e309 100644 --- a/stdlib/source/test/lux/control/pipe.lux +++ b/stdlib/source/test/lux/control/pipe.lux @@ -25,11 +25,11 @@ (do ! [another random.nat] (_.cover [/.new>] - (n.= (inc another) + (n.= (++ another) (|> sample (n.* 3) (n.+ 4) - (/.new> another [inc]))))) + (/.new> another [++]))))) (_.cover [/.let>] (n.= (n.+ sample sample) (|> sample @@ -63,12 +63,12 @@ (/.loop> [(n.= (n.* 10 sample)) not] [(n.+ sample)])))) (_.cover [/.do>] - (n.= (inc (n.+ 4 (n.* 3 sample))) + (n.= (++ (n.+ 4 (n.* 3 sample))) (|> sample (/.do> identity.monad [(n.* 3)] [(n.+ 4)] - [inc])))) + [++])))) (_.cover [/.exec>] (n.= (n.* 10 sample) (|> sample @@ -76,11 +76,11 @@ (n.* 10)))) (_.cover [/.tuple>] (let [[left middle right] (|> sample - (/.tuple> [inc] - [dec] + (/.tuple> [++] + [--] [%.nat]))] - (and (n.= (inc sample) left) - (n.= (dec sample) middle) + (and (n.= (++ sample) left) + (n.= (-- sample) middle) (text\= (%.nat sample) right)))) (_.cover [/.case>] (text\= (case (n.% 10 sample) diff --git a/stdlib/source/test/lux/control/region.lux b/stdlib/source/test/lux/control/region.lux index caabbadf6..555f30b4f 100644 --- a/stdlib/source/test/lux/control/region.lux +++ b/stdlib/source/test/lux/control/region.lux @@ -103,7 +103,7 @@ .let [//@ ! count_clean_up (function (_ value) (do ! - [_ (thread.update! inc clean_up_counter)] + [_ (thread.update! ++ clean_up_counter)] (in (#try.Success []))))] outcome (/.run! ! (do {! (/.monad !)} @@ -121,7 +121,7 @@ .let [//@ ! count_clean_up (function (_ value) (do ! - [_ (thread.update! inc clean_up_counter)] + [_ (thread.update! ++ clean_up_counter)] (in (#try.Success []))))] outcome (/.run! ! (do {! (/.monad !)} @@ -140,7 +140,7 @@ .let [//@ ! count_clean_up (function (_ value) (do ! - [_ (thread.update! inc clean_up_counter)] + [_ (thread.update! ++ clean_up_counter)] (in (#try.Success []))))] outcome (/.run! ! (do {! (/.monad !)} @@ -159,7 +159,7 @@ .let [//@ ! count_clean_up (function (_ value) (do ! - [_ (thread.update! inc clean_up_counter)] + [_ (thread.update! ++ clean_up_counter)] (in (: (Try Any) (exception.except ..oops [])))))] outcome (/.run! ! diff --git a/stdlib/source/test/lux/control/state.lux b/stdlib/source/test/lux/control/state.lux index 864c16bd9..eda78cbeb 100644 --- a/stdlib/source/test/lux/control/state.lux +++ b/stdlib/source/test/lux/control/state.lux @@ -46,8 +46,8 @@ [_ (/.update (n.* value))] /.get))) (_.cover [/.use] - (with_conditions [state (inc state)] - (/.use inc))) + (with_conditions [state (++ state)] + (/.use ++))) (_.cover [/.local] (with_conditions [state (n.* value state)] (/.local (n.* value) @@ -88,12 +88,12 @@ (in (n.< limit state)))]] ($_ _.and (_.cover [/.while /.result] - (|> (/.while condition (/.update inc)) + (|> (/.while condition (/.update ++)) (/.result 0) (let> [state' output'] (n.= limit state')))) (_.cover [/.do_while] - (|> (/.do_while condition (/.update inc)) + (|> (/.do_while condition (/.update ++)) (/.result 0) (let> [state' output'] (or (n.= limit state') diff --git a/stdlib/source/test/lux/data/binary.lux b/stdlib/source/test/lux/data/binary.lux index 372aed7de..331e05142 100644 --- a/stdlib/source/test/lux/data/binary.lux +++ b/stdlib/source/test/lux/data/binary.lux @@ -39,7 +39,7 @@ (do random.monad [byte random.nat] (exec (try.trusted (/.write/8! idx byte output)) - (recur (inc idx)))) + (recur (++ idx)))) (\ random.monad in output))))) (def: (throws? exception try) @@ -56,8 +56,8 @@ (let [bytes (i64.left_shifted power 1) binary (/.empty bytes) cap (case bytes - 8 (dec 0) - _ (|> 1 (i64.left_shifted (n.* 8 bytes)) dec)) + 8 (-- 0) + _ (|> 1 (i64.left_shifted (n.* 8 bytes)) --)) capped_value (i64.and cap value)] (and (..succeed (do try.monad @@ -71,9 +71,9 @@ (def: as_list (-> /.Binary (List Nat)) - (/.fold (function (_ head tail) - (#.Item head tail)) - (list))) + (/.aggregate (function (_ head tail) + (#.Item head tail)) + (list))) (def: .public test Test @@ -92,9 +92,9 @@ ($equivalence.spec /.equivalence (..random size))) (_.for [/.monoid] ($monoid.spec /.equivalence /.monoid (..random size))) - (_.cover [/.fold] + (_.cover [/.aggregate] (n.= (\ list.fold fold n.+ 0 (..as_list sample)) - (/.fold n.+ 0 sample))) + (/.aggregate n.+ 0 sample))) (_.cover [/.empty] (\ /.equivalence = @@ -117,7 +117,7 @@ idxs (: (List Nat) (case length 0 (list) - _ (enum.range n.enum 0 (dec length)))) + _ (enum.range n.enum 0 (-- length)))) reader (function (_ binary idx) (/.read/8! idx binary))] (and (n.= length (/.size random_slice)) @@ -143,7 +143,7 @@ (#.Item head tail) (n.= (list.fold n.+ 0 tail) - (/.fold n.+ 0 (/.after 1 sample)))))) + (/.aggregate n.+ 0 (/.after 1 sample)))))) (_.cover [/.copy] (and (case (/.copy size 0 sample 0 (/.empty size)) (#try.Success output) diff --git a/stdlib/source/test/lux/data/collection/array.lux b/stdlib/source/test/lux/data/collection/array.lux index c1e1471f8..4045c008a 100644 --- a/stdlib/source/test/lux/data/collection/array.lux +++ b/stdlib/source/test/lux/data/collection/array.lux @@ -169,14 +169,14 @@ _ false))) (do ! - [occupancy (\ ! map (n.% (inc size)) random.nat)] + [occupancy (\ ! map (n.% (++ size)) random.nat)] (_.cover [/.occupancy /.vacancy] (let [the_array (loop [output (: (Array Nat) (/.empty size)) idx 0] (if (n.< occupancy idx) (recur (/.write! idx expected output) - (inc idx)) + (++ idx)) output))] (and (n.= occupancy (/.occupancy the_array)) (n.= size (n.+ (/.occupancy the_array) @@ -189,7 +189,7 @@ (|> the_array /.list /.of_list (\ (/.equivalence n.equivalence) = the_array))))) (do ! - [amount (\ ! map (n.% (inc size)) random.nat)] + [amount (\ ! map (n.% (++ size)) random.nat)] (_.cover [/.copy!] (let [copy (: (Array Nat) (/.empty size))] diff --git a/stdlib/source/test/lux/data/collection/bits.lux b/stdlib/source/test/lux/data/collection/bits.lux index 6710ef7c6..c0e54e3bb 100644 --- a/stdlib/source/test/lux/data/collection/bits.lux +++ b/stdlib/source/test/lux/data/collection/bits.lux @@ -17,7 +17,7 @@ (def: (size min max) (-> Nat Nat (Random Nat)) (|> random.nat - (\ random.monad map (|>> (n.% (inc max)) (n.max min))))) + (\ random.monad map (|>> (n.% (++ max)) (n.max min))))) (def: .public random (Random Bits) @@ -47,7 +47,7 @@ (/.empty? /.empty)) (do {! random.monad} - [size (\ ! map (|>> (n.% 1,000) inc) random.nat) + [size (\ ! map (|>> (n.% 1,000) ++) random.nat) idx (\ ! map (n.% size) random.nat) sample ..random] ($_ _.and @@ -73,7 +73,7 @@ /.empty)) (/.intersects? (/.one idx /.empty) (/.one idx /.empty)) - (not (/.intersects? (/.one (inc idx) /.empty) + (not (/.intersects? (/.one (++ idx) /.empty) (/.one idx /.empty))) (not (/.intersects? sample (/.not sample))))) (_.cover [/.not] diff --git a/stdlib/source/test/lux/data/collection/dictionary.lux b/stdlib/source/test/lux/data/collection/dictionary.lux index 080e09001..446c4e354 100644 --- a/stdlib/source/test/lux/data/collection/dictionary.lux +++ b/stdlib/source/test/lux/data/collection/dictionary.lux @@ -112,7 +112,7 @@ (let [merging_with_oneself (let [(^open ".") (/.equivalence n.equivalence)] (= dict (/.merged dict dict))) overwritting_keys (let [dict' (|> dict /.entries - (list\map (function (_ [k v]) [k (inc v)])) + (list\map (function (_ [k v]) [k (++ v)])) (/.of_list n.hash)) (^open ".") (/.equivalence n.equivalence)] (= dict' (/.merged dict' dict)))] @@ -155,7 +155,7 @@ _ true))) (_.cover [/.has] - (and (n.= (inc (/.size dict)) + (and (n.= (++ (/.size dict)) (/.size (/.has non_key test_val dict))) (case (/.value non_key (/.has non_key test_val dict)) (#.Some v) (n.= test_val v) @@ -193,24 +193,24 @@ true (#.Some known_key) - (n.= (dec (/.size dict)) + (n.= (-- (/.size dict)) (/.size (/.lacks known_key dict)))))) (_.cover [/.revised] (let [base (/.has non_key test_val dict) - updt (/.revised non_key inc base)] + updt (/.revised non_key ++ base)] (case [(/.value non_key base) (/.value non_key updt)] [(#.Some x) (#.Some y)] - (n.= (inc x) y) + (n.= (++ x) y) _ false))) (_.cover [/.revised'] (let [can_upsert_new_key! - (case (/.value non_key (/.revised' non_key test_val inc dict)) + (case (/.value non_key (/.revised' non_key test_val ++ dict)) (#.Some inserted) - (n.= (inc test_val) inserted) + (n.= (++ test_val) inserted) #.None false) @@ -221,9 +221,9 @@ true (#.Some [known_key known_value]) - (case (/.value known_key (/.revised' known_key test_val inc dict)) + (case (/.value known_key (/.revised' known_key test_val ++ dict)) (#.Some updated) - (n.= (inc known_value) updated) + (n.= (++ known_value) updated) #.None false))] diff --git a/stdlib/source/test/lux/data/collection/dictionary/ordered.lux b/stdlib/source/test/lux/data/collection/dictionary/ordered.lux index 838d2cf5d..7f6178f8e 100644 --- a/stdlib/source/test/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/test/lux/data/collection/dictionary/ordered.lux @@ -32,7 +32,7 @@ _ (do random.monad - [partial (dictionary order gen_key gen_value (dec size)) + [partial (dictionary order gen_key gen_value (-- size)) key (random.only (|>> (/.key? partial) not) gen_key) value gen_value] @@ -111,7 +111,7 @@ (and (not (/.key? sample extra_key)) (let [sample+ (/.has extra_key extra_value sample)] (and (/.key? sample+ extra_key) - (n.= (inc (/.size sample)) + (n.= (++ (/.size sample)) (/.size sample+)))))) (_.cover [/.value] (let [sample+ (/.has extra_key extra_value sample)] diff --git a/stdlib/source/test/lux/data/collection/dictionary/plist.lux b/stdlib/source/test/lux/data/collection/dictionary/plist.lux index c76892185..2172fbd44 100644 --- a/stdlib/source/test/lux/data/collection/dictionary/plist.lux +++ b/stdlib/source/test/lux/data/collection/dictionary/plist.lux @@ -69,7 +69,7 @@ (let [sample+ (/.has extra_key extra_value sample)] (and (not (/.contains? extra_key sample)) (/.contains? extra_key sample+) - (n.= (inc (/.size sample)) + (n.= (++ (/.size sample)) (/.size sample+))))) (_.cover [/.value] (|> sample diff --git a/stdlib/source/test/lux/data/collection/list.lux b/stdlib/source/test/lux/data/collection/list.lux index 8ba430845..f635eca05 100644 --- a/stdlib/source/test/lux/data/collection/list.lux +++ b/stdlib/source/test/lux/data/collection/list.lux @@ -146,7 +146,7 @@ (/.sorted n.< indices)) expected_numbers! - (/.every? (n.= (dec size)) + (/.every? (n.= (-- size)) (/.zipped_with/2 n.+ indices (/.sorted n.> indices)))] @@ -185,7 +185,7 @@ ..random) .let [size (/.size sample)] idx (\ ! map (n.% size) random.nat) - sub_size (\ ! map (|>> (n.% size) inc) random.nat)] + sub_size (\ ! map (|>> (n.% size) ++) random.nat)] ($_ _.and (_.cover [/.only] (let [positives (/.only n.even? sample) @@ -222,7 +222,7 @@ (let [subs (/.sub sub_size sample)] (and (/.every? (|>> /.size (n.<= sub_size)) subs) (/\= sample - (/.joined subs))))) + (/.together subs))))) )))) (def: member @@ -341,11 +341,11 @@ ((/.zipped_with 2) +/2 sample/0 sample/1)) (/\= (/.zipped_with/3 +/3 sample/0 sample/1 sample/2) ((/.zipped_with 3) +/3 sample/0 sample/1 sample/2)))) - (_.cover [/.joined] + (_.cover [/.together] (and (/\= (/\compose sample/0 sample/1) - (/.joined (list sample/0 sample/1))) + (/.together (list sample/0 sample/1))) (/\= ($_ /\compose sample/0 sample/1 sample/2) - (/.joined (list sample/0 sample/1 sample/2))))) + (/.together (list sample/0 sample/1 sample/2))))) )))) (def: search @@ -410,7 +410,7 @@ (_.cover [/.interposed] (or (/.empty? sample) (let [sample+ (/.interposed separator sample)] - (and (n.= (|> (/.size sample) (n.* 2) dec) + (and (n.= (|> (/.size sample) (n.* 2) --) (/.size sample+)) (|> sample+ /.pairs (/.every? (|>> product.right (n.= separator)))))))) (_.cover [/.iterations] @@ -419,14 +419,14 @@ (/\= (/.indices size) (/.iterations (function (_ index) (if (n.< size index) - (#.Some (inc index)) + (#.Some (++ index)) #.None)) 0))))) - (_.cover [/.folds] + (_.cover [/.aggregates] (/\= (/\map (function (_ index) (\ /.fold fold n.+ 0 (/.first index sample))) - (/.indices (inc (/.size sample)))) - (/.folds n.+ 0 sample))) + (/.indices (++ (/.size sample)))) + (/.aggregates n.+ 0 sample))) (do random.monad [expected random.nat .let [(^open "/\.") (/.equivalence n.equivalence)]] diff --git a/stdlib/source/test/lux/data/collection/queue.lux b/stdlib/source/test/lux/data/collection/queue.lux index 5fcec5102..cdb7198b5 100644 --- a/stdlib/source/test/lux/data/collection/queue.lux +++ b/stdlib/source/test/lux/data/collection/queue.lux @@ -81,7 +81,7 @@ (let [pushed (/.end non_member sample) size_increases! - (n.= (inc (/.size sample)) (/.size pushed)) + (n.= (++ (/.size sample)) (/.size pushed)) new_member_is_identified! (/.member? n.equivalence pushed non_member) @@ -99,7 +99,7 @@ (let [popped (/.next sample) size_decreases! - (n.= (dec (/.size sample)) + (n.= (-- (/.size sample)) (/.size popped)) popped_member_is_not_identified! diff --git a/stdlib/source/test/lux/data/collection/queue/priority.lux b/stdlib/source/test/lux/data/collection/queue/priority.lux index 4faaaf488..9be7c183f 100644 --- a/stdlib/source/test/lux/data/collection/queue/priority.lux +++ b/stdlib/source/test/lux/data/collection/queue/priority.lux @@ -64,14 +64,14 @@ (_.cover [/.end] (let [sample+ (/.end non_member_priority non_member sample)] (and (not (/.member? n.equivalence sample non_member)) - (n.= (inc (/.size sample)) + (n.= (++ (/.size sample)) (/.size sample+)) (/.member? n.equivalence sample+ non_member)))) (_.cover [/.next] (let [sample- (/.next sample)] (or (and (/.empty? sample) (/.empty? sample-)) - (n.= (dec (/.size sample)) + (n.= (-- (/.size sample)) (/.size sample-))))) (_.for [/.Priority] ($_ _.and diff --git a/stdlib/source/test/lux/data/collection/row.lux b/stdlib/source/test/lux/data/collection/row.lux index 2515f284f..8e8348617 100644 --- a/stdlib/source/test/lux/data/collection/row.lux +++ b/stdlib/source/test/lux/data/collection/row.lux @@ -81,7 +81,7 @@ (def: index_based Test (do {! random.monad} - [size (\ ! map (|>> (n.% 100) inc) random.nat)] + [size (\ ! map (|>> (n.% 100) ++) random.nat)] ($_ _.and (do ! [good_index (|> random.nat (\ ! map (n.% size))) @@ -108,9 +108,9 @@ (<| (try.else false) (do try.monad [sample (/.has good_index non_member sample) - sample (/.revised good_index inc sample) + sample (/.revised good_index ++ sample) actual (/.item good_index sample)] - (in (n.= (inc non_member) actual))))) + (in (n.= (++ non_member) actual))))) (_.cover [/.within_bounds?] (and (/.within_bounds? sample good_index) (not (/.within_bounds? sample bad_index)))) @@ -125,7 +125,7 @@ (exception.match? /.index_out_of_bounds error))))] (and (fails! (/.item bad_index sample)) (fails! (/.has bad_index non_member sample)) - (fails! (/.revised bad_index inc sample))))) + (fails! (/.revised bad_index ++ sample))))) )) ))) @@ -134,7 +134,7 @@ (<| (_.covering /._) (_.for [/.Row]) (do {! random.monad} - [size (\ ! map (|>> (n.% 100) inc) random.nat)] + [size (\ ! map (|>> (n.% 100) ++) random.nat)] ($_ _.and ..signatures ..whole @@ -158,28 +158,28 @@ (and (list.every? (/.member? n.equivalence sample) (/.list sample)) (not (/.member? n.equivalence sample non_member)))) - (_.cover [/.add] - (let [added (/.add non_member sample) + (_.cover [/.suffix] + (let [added (/.suffix non_member sample) size_increases! - (n.= (inc (/.size sample)) + (n.= (++ (/.size sample)) (/.size added)) is_a_member! (/.member? n.equivalence added non_member)] (and size_increases! is_a_member!))) - (_.cover [/.pop] + (_.cover [/.prefix] (if (/.empty? sample) - (/.empty? (/.pop sample)) + (/.empty? (/.prefix sample)) (let [expected_size! - (n.= (dec (/.size sample)) - (/.size (/.pop sample))) + (n.= (-- (/.size sample)) + (/.size (/.prefix sample))) symmetry! (|> sample - (/.add non_member) - /.pop + (/.suffix non_member) + /.prefix (/\= sample))] (and expected_size! symmetry!)))) diff --git a/stdlib/source/test/lux/data/collection/sequence.lux b/stdlib/source/test/lux/data/collection/sequence.lux index ebac1772b..fc67cf27d 100644 --- a/stdlib/source/test/lux/data/collection/sequence.lux +++ b/stdlib/source/test/lux/data/collection/sequence.lux @@ -46,7 +46,7 @@ (do {! random.monad} [repeated random.nat index (\ ! map (n.% 100) random.nat) - size (\ ! map (|>> (n.% 10) inc) random.nat) + size (\ ! map (|>> (n.% 10) ++) random.nat) offset (\ ! map (n.% 100) random.nat) cycle_start random.nat cycle_next (random.list size random.nat)] @@ -58,65 +58,65 @@ (_.cover [/.item] (n.= (n.+ offset index) - (/.item index (..iterations inc offset)))) + (/.item index (..iterations ++ offset)))) (_.cover [/.repeated] (n.= repeated (/.item index (/.repeated repeated)))) (_.cover [/.first] - (list\= (enum.range n.enum offset (dec (n.+ size offset))) - (/.first size (..iterations inc offset)))) + (list\= (enum.range n.enum offset (-- (n.+ size offset))) + (/.first size (..iterations ++ offset)))) (_.cover [/.after] - (list\= (enum.range n.enum offset (dec (n.+ size offset))) - (/.first size (/.after offset (..iterations inc 0))))) + (list\= (enum.range n.enum offset (-- (n.+ size offset))) + (/.first size (/.after offset (..iterations ++ 0))))) (_.cover [/.split_at] - (let [[drops takes] (/.split_at size (..iterations inc 0))] - (and (list\= (enum.range n.enum 0 (dec size)) + (let [[drops takes] (/.split_at size (..iterations ++ 0))] + (and (list\= (enum.range n.enum 0 (-- size)) drops) - (list\= (enum.range n.enum size (dec (n.* 2 size))) + (list\= (enum.range n.enum size (-- (n.* 2 size))) (/.first size takes))))) (_.cover [/.while] - (list\= (enum.range n.enum 0 (dec size)) - (/.while (n.< size) (..iterations inc 0)))) + (list\= (enum.range n.enum 0 (-- size)) + (/.while (n.< size) (..iterations ++ 0)))) (_.cover [/.until] - (list\= (enum.range n.enum offset (dec (n.+ size offset))) + (list\= (enum.range n.enum offset (-- (n.+ size offset))) (/.while (n.< (n.+ size offset)) - (/.until (n.< offset) (..iterations inc 0))))) + (/.until (n.< offset) (..iterations ++ 0))))) (_.cover [/.split_when] - (let [[drops takes] (/.split_when (n.= size) (..iterations inc 0))] - (and (list\= (enum.range n.enum 0 (dec size)) + (let [[drops takes] (/.split_when (n.= size) (..iterations ++ 0))] + (and (list\= (enum.range n.enum 0 (-- size)) drops) - (list\= (enum.range n.enum size (dec (n.* 2 size))) + (list\= (enum.range n.enum size (-- (n.* 2 size))) (/.while (n.< (n.* 2 size)) takes))))) (_.cover [/.head] (n.= offset - (/.head (..iterations inc offset)))) + (/.head (..iterations ++ offset)))) (_.cover [/.tail] - (list\= (enum.range n.enum (inc offset) (n.+ size offset)) - (/.first size (/.tail (..iterations inc offset))))) + (list\= (enum.range n.enum (++ offset) (n.+ size offset)) + (/.first size (/.tail (..iterations ++ offset))))) (_.cover [/.only] - (list\= (list\map (n.* 2) (enum.range n.enum 0 (dec size))) - (/.first size (/.only n.even? (..iterations inc 0))))) + (list\= (list\map (n.* 2) (enum.range n.enum 0 (-- size))) + (/.first size (/.only n.even? (..iterations ++ 0))))) (_.cover [/.partition] - (let [[evens odds] (/.partition n.even? (..iterations inc 0))] + (let [[evens odds] (/.partition n.even? (..iterations ++ 0))] (and (n.= (n.* 2 offset) (/.item offset evens)) - (n.= (inc (n.* 2 offset)) + (n.= (++ (n.* 2 offset)) (/.item offset odds))))) (_.cover [/.iterations] (let [(^open "/\.") /.functor (^open "list\.") (list.equivalence text.equivalence)] (list\= (/.first size - (/\map %.nat (..iterations inc offset))) + (/\map %.nat (..iterations ++ offset))) (/.first size - (/.iterations (function (_ n) [(inc n) (%.nat n)]) + (/.iterations (function (_ n) [(++ n) (%.nat n)]) offset))))) (_.cover [/.cycle] (let [cycle (list& cycle_start cycle_next)] - (list\= (list.joined (list.repeated size cycle)) + (list\= (list.together (list.repeated size cycle)) (/.first (n.* size (list.size cycle)) (/.cycle [cycle_start cycle_next]))))) (_.cover [/.^sequence&] - (let [(/.^sequence& first second third next) (..iterations inc offset)] + (let [(/.^sequence& first second third next) (..iterations ++ offset)] (and (n.= offset first) (n.= (n.+ 1 offset) second) (n.= (n.+ 2 offset) third)))) diff --git a/stdlib/source/test/lux/data/collection/set.lux b/stdlib/source/test/lux/data/collection/set.lux index e6dbd5c3d..66ecd0ca3 100644 --- a/stdlib/source/test/lux/data/collection/set.lux +++ b/stdlib/source/test/lux/data/collection/set.lux @@ -80,7 +80,7 @@ (/.member? (/.has non_memberL setL) non_memberL) size_increase! - (n.= (inc (/.size setL)) + (n.= (++ (/.size setL)) (/.size (/.has non_memberL setL)))] (and before_addition! after_addition!))) diff --git a/stdlib/source/test/lux/data/collection/set/multi.lux b/stdlib/source/test/lux/data/collection/set/multi.lux index 09c7c2cd5..4ca359ddb 100644 --- a/stdlib/source/test/lux/data/collection/set/multi.lux +++ b/stdlib/source/test/lux/data/collection/set/multi.lux @@ -23,7 +23,7 @@ (def: count (Random Nat) - (\ random.monad map (|>> (n.% 10) inc) random.nat)) + (\ random.monad map (|>> (n.% 10) ++) random.nat)) (def: .public (random size hash count element) (All [a] (-> Nat (Hash a) (Random Nat) (Random a) (Random (/.Set a)))) diff --git a/stdlib/source/test/lux/data/collection/set/ordered.lux b/stdlib/source/test/lux/data/collection/set/ordered.lux index 725c4b3c0..b753ac1af 100644 --- a/stdlib/source/test/lux/data/collection/set/ordered.lux +++ b/stdlib/source/test/lux/data/collection/set/ordered.lux @@ -31,7 +31,7 @@ _ (do random.monad - [partial (random (dec size) &order gen_value) + [partial (random (-- size) &order gen_value) value (random.only (|>> (/.member? partial) not) gen_value)] (in (/.has value partial))))) @@ -95,7 +95,7 @@ (let [setL+ (/.has non_memberL setL)] (and (not (/.member? setL non_memberL)) (/.member? setL+ non_memberL) - (n.= (inc (/.size setL)) + (n.= (++ (/.size setL)) (/.size setL+))))) (_.cover [/.lacks] (|> setL diff --git a/stdlib/source/test/lux/data/collection/tree/zipper.lux b/stdlib/source/test/lux/data/collection/tree/zipper.lux index a4e73fb03..2b20582e9 100644 --- a/stdlib/source/test/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/test/lux/data/collection/tree/zipper.lux @@ -188,9 +188,9 @@ (n.= expected))) (_.cover [/.update] (|> (/.zipper (tree.leaf expected)) - (/.update inc) + (/.update ++) /.value - (n.= (inc expected)))) + (n.= (++ expected)))) ..move (_.cover [/.end?] (or (/.end? (/.zipper sample)) diff --git a/stdlib/source/test/lux/data/color.lux b/stdlib/source/test/lux/data/color.lux index a4fc0911e..67158dc10 100644 --- a/stdlib/source/test/lux/data/color.lux +++ b/stdlib/source/test/lux/data/color.lux @@ -135,7 +135,7 @@ random.safe_frac) .let [eS +0.5] variations (\ ! map (|>> (n.% 3) (n.+ 2)) random.nat) - .let [max_spread (f./ (|> variations inc .int int.frac) + .let [max_spread (f./ (|> variations ++ .int int.frac) +1.0) min_spread (f./ +2.0 max_spread) spread_space (f.- min_spread max_spread)] @@ -206,8 +206,8 @@ (_.for [/.Alpha /.Pigment] ($_ _.and (_.cover [/.transparent /.opaque] - (and (r.= /.opaque (dec /.transparent)) - (r.= /.transparent (inc /.opaque)))) + (and (r.= /.opaque (-- /.transparent)) + (r.= /.transparent (++ /.opaque)))) (_.cover [/.translucent] (r.= /.transparent (r.+ /.translucent /.translucent))) )) diff --git a/stdlib/source/test/lux/data/color/named.lux b/stdlib/source/test/lux/data/color/named.lux index aaf1fcab8..4e400e99c 100644 --- a/stdlib/source/test/lux/data/color/named.lux +++ b/stdlib/source/test/lux/data/color/named.lux @@ -201,13 +201,13 @@ /.yellow_green]] )] (def: all_colors - (list.joined (`` (list (~~ (template [ ] - [((: (-> Any (List //.Color)) - (function (_ _) - (`` (list (~~ (template.spliced )))))) - 123)] - - )))))) + (list.together (`` (list (~~ (template [ ] + [((: (-> Any (List //.Color)) + (function (_ _) + (`` (list (~~ (template.spliced )))))) + 123)] + + )))))) (def: unique_colors (set.of_list //.hash ..all_colors)) diff --git a/stdlib/source/test/lux/data/format/tar.lux b/stdlib/source/test/lux/data/format/tar.lux index fe0083c95..9bed1f5ed 100644 --- a/stdlib/source/test/lux/data/format/tar.lux +++ b/stdlib/source/test/lux/data/format/tar.lux @@ -41,7 +41,7 @@ (_.for [/.Path] (do {! random.monad} [expected (random.ascii/lower /.path_size) - invalid (random.ascii/lower (inc /.path_size)) + invalid (random.ascii/lower (++ /.path_size)) not_ascii (random.text (random.char (unicode.set [unicode/block.katakana (list)])) /.path_size)] (`` ($_ _.and @@ -76,7 +76,7 @@ (_.for [/.Name] (do {! random.monad} [expected (random.ascii/lower /.name_size) - invalid (random.ascii/lower (inc /.name_size)) + invalid (random.ascii/lower (++ /.name_size)) not_ascii (random.text (random.char (unicode.set [unicode/block.katakana (list)])) /.name_size)] (`` ($_ _.and @@ -157,14 +157,14 @@ (def: entry Test (do {! random.monad} - [expected_path (random.ascii/lower (dec /.path_size)) + [expected_path (random.ascii/lower (-- /.path_size)) expected_moment (\ ! map (|>> (n.% 1,0,00,00,00,00,000) .int instant.of_millis) random.nat) chunk (random.ascii/lower chunk_size) chunks (\ ! map (n.% 100) random.nat) .let [content (|> chunk (list.repeated chunks) - text.joined + text.together (\ utf8.codec encode))]] (`` ($_ _.and (~~ (template [ ] @@ -317,7 +317,7 @@ (do {! random.monad} [path (random.ascii/lower /.path_size) expected (random.ascii/lower /.name_size) - invalid (random.ascii/lower (inc /.name_size)) + invalid (random.ascii/lower (++ /.name_size)) not_ascii (random.text (random.char (unicode.set [unicode/block.katakana (list)])) /.name_size)] (_.for [/.Ownership /.Owner /.ID] @@ -354,9 +354,9 @@ (in (case (row.list tar) (^ (list (#/.Normal [_ _ _ actual_ownership _]))) (and (text\= (/.from_name expected) - (/.from_name (get@ [#/.user #/.name] actual_ownership))) + (/.from_name (value@ [#/.user #/.name] actual_ownership))) (text\= (/.from_name /.anonymous) - (/.from_name (get@ [#/.group #/.name] actual_ownership)))) + (/.from_name (value@ [#/.group #/.name] actual_ownership)))) _ false))) @@ -378,13 +378,13 @@ (in (case (row.list tar) (^ (list (#/.Normal [_ _ _ actual_ownership _]))) (and (text\= (/.from_name /.anonymous) - (/.from_name (get@ [#/.user #/.name] actual_ownership))) + (/.from_name (value@ [#/.user #/.name] actual_ownership))) (n.= (/.from_small /.no_id) - (/.from_small (get@ [#/.user #/.id] actual_ownership))) + (/.from_small (value@ [#/.user #/.id] actual_ownership))) (text\= (/.from_name /.anonymous) - (/.from_name (get@ [#/.group #/.name] actual_ownership))) + (/.from_name (value@ [#/.group #/.name] actual_ownership))) (n.= (/.from_small /.no_id) - (/.from_small (get@ [#/.group #/.id] actual_ownership)))) + (/.from_small (value@ [#/.group #/.id] actual_ownership)))) _ false))) diff --git a/stdlib/source/test/lux/data/product.lux b/stdlib/source/test/lux/data/product.lux index 9d9b9e248..b779678af 100644 --- a/stdlib/source/test/lux/data/product.lux +++ b/stdlib/source/test/lux/data/product.lux @@ -40,8 +40,8 @@ (n.= expected (/.left [expected dummy]))) (<| (_.cover [/.right]) (n.= expected (/.right [dummy expected]))) - (<| (_.cover [/.fork]) - (let [[left right] ((/.fork (n.+ shift) (n.- shift)) expected)] + (<| (_.cover [/.forked]) + (let [[left right] ((/.forked (n.+ shift) (n.- shift)) expected)] (and (n.= (n.+ shift expected) left) (n.= (n.- shift expected) @@ -62,8 +62,8 @@ (<| (_.cover [/.curried]) (n.= (n.+ left right) ((/.curried (/.uncurried n.+)) left right))) - (<| (_.cover [/.apply]) - (let [[left' right'] (/.apply (n.+ shift) (n.- shift) [left right])] + (<| (_.cover [/.then]) + (let [[left' right'] (/.then (n.+ shift) (n.- shift) [left right])] (and (n.= (n.+ shift left) left') (n.= (n.- shift right) right')))))) )))) diff --git a/stdlib/source/test/lux/data/sum.lux b/stdlib/source/test/lux/data/sum.lux index ddb924273..61b9c43a1 100644 --- a/stdlib/source/test/lux/data/sum.lux +++ b/stdlib/source/test/lux/data/sum.lux @@ -60,14 +60,14 @@ (: (Or Nat Nat)) (/.either (n.+ shift) (n.- shift)) (n.= (n.- shift expected))))) - (_.cover [/.apply] + (_.cover [/.then] (and (|> (/.left expected) (: (Or Nat Nat)) - (/.apply (n.+ shift) (n.- shift)) + (/.then (n.+ shift) (n.- shift)) (case> (0 #0 actual) (n.= (n.+ shift expected) actual) _ false)) (|> (/.right expected) (: (Or Nat Nat)) - (/.apply (n.+ shift) (n.- shift)) + (/.then (n.+ shift) (n.- shift)) (case> (0 #1 actual) (n.= (n.- shift expected) actual) _ false)))) (do ! [size (\ ! map (n.% 5) random.nat) diff --git a/stdlib/source/test/lux/data/text.lux b/stdlib/source/test/lux/data/text.lux index aa012a5ae..51849d1af 100644 --- a/stdlib/source/test/lux/data/text.lux +++ b/stdlib/source/test/lux/data/text.lux @@ -57,7 +57,7 @@ left (random.unicode 1) right (random.unicode 1) .let [full (\ /.monoid compose inner outer) - fake_index (dec 0)]] + fake_index (-- 0)]] (`` ($_ _.and (~~ (template [ ] [(_.cover [ ] @@ -83,7 +83,7 @@ [inner (random.unicode 1) outer (random.only (|>> (\ /.equivalence = inner) not) (random.unicode 1)) - .let [fake_index (dec 0)]] + .let [fake_index (-- 0)]] ($_ _.and (_.cover [/.contains?] (let [full (\ /.monoid compose inner outer)] @@ -146,9 +146,9 @@ (\ /.equivalence = /.new_line /.line_feed)) ))) (do {! random.monad} - [size (\ ! map (|>> (n.% 10) inc) random.nat) + [size (\ ! map (|>> (n.% 10) ++) random.nat) characters (random.set /.hash size (random.ascii/alpha 1)) - .let [sample (|> characters set.list /.joined)] + .let [sample (|> characters set.list /.together)] expected (\ ! map (n.% size) random.nat)] (_.cover [/.char] (case (/.char expected sample) @@ -182,7 +182,7 @@ characters (random.set /.hash size (random.ascii/alpha 1)) separator (random.only (|>> (set.member? characters) not) (random.ascii/alpha 1)) - .let [with_no_separator (|> characters set.list /.joined)] + .let [with_no_separator (|> characters set.list /.together)] static (random.ascii/alpha 1) .let [dynamic (random.only (|>> (\ /.equivalence = static) not) (random.ascii/alpha 1))] @@ -192,9 +192,9 @@ lower (random.ascii/lower 1) upper (random.ascii/upper 1)] ($_ _.and - (_.cover [/.joined] + (_.cover [/.together] (n.= (set.size characters) - (/.size (/.joined (set.list characters))))) + (/.size (/.together (set.list characters))))) (_.cover [/.interposed /.all_split_by] (and (|> (set.list characters) (/.interposed separator) @@ -202,7 +202,7 @@ (set.of_list /.hash) (\ set.equivalence = characters)) (\ /.equivalence = - (/.joined (set.list characters)) + (/.together (set.list characters)) (/.interposed "" (set.list characters))))) (_.cover [/.replaced/1] (\ /.equivalence = @@ -285,7 +285,7 @@ sampleL (random.unicode sizeL) sampleR (random.unicode sizeR) middle (random.unicode 1) - .let [sample (/.joined (list sampleL sampleR)) + .let [sample (/.together (list sampleL sampleR)) (^open "/\.") /.equivalence]] ($_ _.and (_.cover [/.split_at] @@ -293,7 +293,7 @@ (case> (#.Right [_l _r]) (and (/\= sampleL _l) (/\= sampleR _r) - (/\= sample (/.joined (list _l _r)))) + (/\= sample (/.together (list _l _r)))) _ #0))) @@ -323,8 +323,8 @@ .let [part_gen (|> (random.text normal_char_gen sizeP) (random.only (|>> (/.contains? sep1) not)))] parts (random.list sizeL part_gen) - .let [sample1 (/.joined (list.interposed sep1 parts)) - sample2 (/.joined (list.interposed sep2 parts)) + .let [sample1 (/.together (list.interposed sep1 parts)) + sample2 (/.together (list.interposed sep2 parts)) (^open "/\.") /.equivalence]] (_.cover [/.replaced] (/\= sample2 diff --git a/stdlib/source/test/lux/data/text/buffer.lux b/stdlib/source/test/lux/data/text/buffer.lux index 393a20779..7d502d2fb 100644 --- a/stdlib/source/test/lux/data/text/buffer.lux +++ b/stdlib/source/test/lux/data/text/buffer.lux @@ -17,7 +17,7 @@ (def: part (Random Text) (do {! random.monad} - [size (\ ! map (|>> (n.% 10) inc) random.nat)] + [size (\ ! map (|>> (n.% 10) ++) random.nat)] (random.ascii/alpha size))) (def: .public test @@ -31,14 +31,14 @@ ($_ _.and (_.cover [/.empty] (n.= 0(/.size /.empty))) - (_.cover [/.size /.append] + (_.cover [/.size /.then] (n.= (text.size left) - (/.size (/.append left /.empty)))) + (/.size (/.then left /.empty)))) (_.cover [/.text] (text\= (format left mid right) (|> /.empty - (/.append left) - (/.append mid) - (/.append right) + (/.then left) + (/.then mid) + (/.then right) /.text))) )))) diff --git a/stdlib/source/test/lux/data/text/encoding.lux b/stdlib/source/test/lux/data/text/encoding.lux index 46dba6ded..432e98257 100644 --- a/stdlib/source/test/lux/data/text/encoding.lux +++ b/stdlib/source/test/lux/data/text/encoding.lux @@ -190,7 +190,7 @@ )] (def: all_encodings - (list.joined (list ))) + (list.together (list ))) (def: unique_encodings (list\fold (function (_ encoding set) diff --git a/stdlib/source/test/lux/data/text/escape.lux b/stdlib/source/test/lux/data/text/escape.lux index dcb562a3e..707a06996 100644 --- a/stdlib/source/test/lux/data/text/escape.lux +++ b/stdlib/source/test/lux/data/text/escape.lux @@ -44,15 +44,15 @@ (def: over_range (Random Char) - (..range (hex "FFFF") (inc (debug.private /.ascii_top)))) + (..range (hex "FFFF") (++ (debug.private /.ascii_top)))) (def: in_range (Random Char) - (..range (inc (debug.private /.ascii_top)) (debug.private /.ascii_bottom))) + (..range (++ (debug.private /.ascii_top)) (debug.private /.ascii_bottom))) (def: ascii_range (Random Char) - (..range (inc (debug.private /.ascii_top)) 0)) + (..range (++ (debug.private /.ascii_top)) 0)) (def: valid_sigils (Set Char) diff --git a/stdlib/source/test/lux/data/text/unicode/block.lux b/stdlib/source/test/lux/data/text/unicode/block.lux index db419c3dc..926a56446 100644 --- a/stdlib/source/test/lux/data/text/unicode/block.lux +++ b/stdlib/source/test/lux/data/text/unicode/block.lux @@ -157,7 +157,7 @@ [(def: Test (`` (_.cover [(~~ (template.spliced ))] - (let [all (list.joined (list )) + (let [all (list.together (list )) unique (set.of_list /.hash all)] (n.= (list.size all) (set.size unique))))))] @@ -173,7 +173,7 @@ [.let [top_start (hex "AC00") top_end (hex "D7AF") end_range (n.- top_start top_end)] - start (\ ! map (|>> (n.% top_start) inc) random.nat) + start (\ ! map (|>> (n.% top_start) ++) random.nat) end (\ ! map (|>> (n.% end_range) (n.+ top_start)) random.nat) .let [additional (n.- start end) sample (/.block start additional) @@ -199,12 +199,12 @@ (n.= end (/.end sample))) (_.cover [/.size] - (n.= (inc additional) + (n.= (++ additional) (/.size sample))) (_.cover [/.within?] (and (/.within? sample inside) - (not (/.within? sample (dec (/.start sample)))) - (not (/.within? sample (inc (/.end sample)))))) + (not (/.within? sample (-- (/.start sample)))) + (not (/.within? sample (++ (/.end sample)))))) (~~ (template [ ] [] diff --git a/stdlib/source/test/lux/data/text/unicode/set.lux b/stdlib/source/test/lux/data/text/unicode/set.lux index 84ebef798..b0be9c914 100644 --- a/stdlib/source/test/lux/data/text/unicode/set.lux +++ b/stdlib/source/test/lux/data/text/unicode/set.lux @@ -80,8 +80,8 @@ end (/.end )]] (_.cover [] (and (/.member? char) - (not (/.member? (dec start))) - (not (/.member? (inc end))))))] + (not (/.member? (-- start))) + (not (/.member? (++ end))))))] [/.ascii] [/.ascii/alpha] diff --git a/stdlib/source/test/lux/documentation.lux b/stdlib/source/test/lux/documentation.lux index 72417f5c5..6efd24021 100644 --- a/stdlib/source/test/lux/documentation.lux +++ b/stdlib/source/test/lux/documentation.lux @@ -54,19 +54,19 @@ (_.cover [/.default] (let [definition (`` (/.default (~~ (template.identifier [.._] [g!default]))))] (and (|> definition - (get@ #/.definition) + (value@ #/.definition) (text\= (template.text [g!default]))) (|> definition - (get@ #/.documentation) + (value@ #/.documentation) md.markdown (text\= "") not)))) (_.cover [/.documentation:] (and (|> ..documentation: - (get@ #/.definition) + (value@ #/.definition) (text\= (template.text [/.documentation:]))) (|> ..documentation: - (get@ #/.documentation) + (value@ #/.documentation) md.markdown (text.contains? 'definition_description')))) )) @@ -87,12 +87,12 @@ (/.documentation super)) (text.contains? (template.text ['super_description']) (/.documentation super)) - (text.contains? (md.markdown (get@ #/.documentation ..documentation:)) + (text.contains? (md.markdown (value@ #/.documentation ..documentation:)) (/.documentation super))))) )) (_.cover [/.unqualified_identifier] (`` (and (~~ (template [] - [(<| (text.contains? (get@ #exception.label /.unqualified_identifier)) + [(<| (text.contains? (value@ #exception.label /.unqualified_identifier)) macro_error )] diff --git a/stdlib/source/test/lux/ffi.jvm.lux b/stdlib/source/test/lux/ffi.jvm.lux index 55c812d72..41a794c4e 100644 --- a/stdlib/source/test/lux/ffi.jvm.lux +++ b/stdlib/source/test/lux/ffi.jvm.lux @@ -110,24 +110,24 @@ idx (|> random.nat (\ ! map (n.% size))) value (\ ! map (|>> (:as java/lang/Long)) random.int)] ($_ _.and - (_.cover [/.array /.array_length] + (_.cover [/.array /.length] (|> size (/.array java/lang/Long) - /.array_length + /.length (n.= size))) - (_.cover [/.array_write /.array_read] + (_.cover [/.write! /.read!] (|> (/.array java/lang/Long size) - (/.array_write idx value) - (/.array_read idx) + (/.write! idx value) + (/.read! idx) (:as Int) (i.= (:as Int value)))) (_.cover [/.cannot_convert_to_jvm_type] (let [array (:as (Array Nothing) (array.empty 1))] (|> array - /.array_length + /.length ..macro_error - (text.contains? (get@ #exception.label /.cannot_convert_to_jvm_type)))))))) + (text.contains? (value@ #exception.label /.cannot_convert_to_jvm_type)))))))) (def: for_miscellaneous Test @@ -198,7 +198,7 @@ [/.Character /.char character character\=] )) (_.cover [/.cannot_cast_to_non_object] - (text.contains? (get@ #exception.label /.cannot_cast_to_non_object) + (text.contains? (value@ #exception.label /.cannot_cast_to_non_object) (macro_error (/.:as boolean (: /.Boolean boolean))))) (_.cover [/.:as] (|> string diff --git a/stdlib/source/test/lux/ffi.old.lux b/stdlib/source/test/lux/ffi.old.lux index 9ca7d80b3..701828389 100644 --- a/stdlib/source/test/lux/ffi.old.lux +++ b/stdlib/source/test/lux/ffi.old.lux @@ -160,12 +160,12 @@ idx (|> random.nat (\ ! map (n.% size))) value random.int] ($_ _.and - (_.cover [/.array /.array_length] - (n.= size (/.array_length (/.array java/lang/Long size)))) - (_.cover [/.array_write /.array_read] + (_.cover [/.array /.length] + (n.= size (/.length (/.array java/lang/Long size)))) + (_.cover [/.write! /.read!] (|> (/.array java/lang/Long size) - (/.array_write idx value) - (/.array_read idx) + (/.write! idx value) + (/.read! idx) (i.= value))) ))) diff --git a/stdlib/source/test/lux/locale/language.lux b/stdlib/source/test/lux/locale/language.lux index 29389ae9f..e6ded5090 100644 --- a/stdlib/source/test/lux/locale/language.lux +++ b/stdlib/source/test/lux/locale/language.lux @@ -189,7 +189,7 @@ (List Bundle) [Nat (Set a)])) (list\fold (function (_ bundle [amount set]) - [(n.+ amount (get@ #amount bundle)) + [(n.+ amount (value@ #amount bundle)) (set.union set (lens bundle))]) [0 (set.empty hash)] territories)) @@ -198,11 +198,11 @@ Test (|> ..languages list.reversed - (list\map (get@ #test)) + (list\map (value@ #test)) (list\fold _.and (`` ($_ _.and (~~ (template [ ] - [(let [[amount set] (..aggregate (get@ ) ..languages)] + [(let [[amount set] (..aggregate (value@ ) ..languages)] (_.cover [] (n.= amount (set.size set))))] @@ -278,8 +278,8 @@ (def: .public random (Random /.Language) (let [options (|> ..languages - (list\map (|>> (get@ #languages) set.list)) - list.joined)] + (list\map (|>> (value@ #languages) set.list)) + list.together)] (do {! random.monad} [choice (\ ! map (n.% (list.size options)) random.nat)] diff --git a/stdlib/source/test/lux/locale/territory.lux b/stdlib/source/test/lux/locale/territory.lux index fa7aff326..d25308c49 100644 --- a/stdlib/source/test/lux/locale/territory.lux +++ b/stdlib/source/test/lux/locale/territory.lux @@ -144,7 +144,7 @@ (List Bundle) [Nat (Set a)])) (list\fold (function (_ bundle [amount set]) - [(n.+ amount (get@ #amount bundle)) + [(n.+ amount (value@ #amount bundle)) (set.union set (lens bundle))]) [0 (set.empty hash)] territories)) @@ -153,11 +153,11 @@ Test (|> ..territories list.reversed - (list\map (get@ #test)) + (list\map (value@ #test)) (list\fold _.and (`` ($_ _.and (~~ (template [ ] - [(let [[amount set] (..aggregate (get@ ) ..territories)] + [(let [[amount set] (..aggregate (value@ ) ..territories)] (_.cover [] (n.= amount (set.size set))))] @@ -204,8 +204,8 @@ (def: .public random (Random /.Territory) (let [options (|> ..territories - (list\map (|>> (get@ #territories) set.list)) - list.joined)] + (list\map (|>> (value@ #territories) set.list)) + list.together)] (do {! random.monad} [choice (\ ! map (n.% (list.size options)) random.nat)] diff --git a/stdlib/source/test/lux/macro/local.lux b/stdlib/source/test/lux/macro/local.lux index 1ab20df9a..c097f7676 100644 --- a/stdlib/source/test/lux/macro/local.lux +++ b/stdlib/source/test/lux/macro/local.lux @@ -52,9 +52,9 @@ [module short] (meta.normal name) _ (if pre_remove (let [remove_macro! (: (-> .Module .Module) - (update@ #.definitions (plist.lacks short)))] + (revised@ #.definitions (plist.lacks short)))] (function (_ lux) - (#try.Success [(update@ #.modules (plist.revised module remove_macro!) lux) + (#try.Success [(revised@ #.modules (plist.revised module remove_macro!) lux) []]))) (in []))] (let [pre_expansion (` (let [(~ g!output) (~ body)] diff --git a/stdlib/source/test/lux/macro/syntax/check.lux b/stdlib/source/test/lux/macro/syntax/check.lux index f9cbab99e..c2bfd9896 100644 --- a/stdlib/source/test/lux/macro/syntax/check.lux +++ b/stdlib/source/test/lux/macro/syntax/check.lux @@ -44,5 +44,5 @@ false (#try.Success check) - (and (code\= type (get@ #/.type check)) - (code\= value (get@ #/.value check))))))))) + (and (code\= type (value@ #/.type check)) + (code\= value (value@ #/.value check))))))))) diff --git a/stdlib/source/test/lux/macro/syntax/definition.lux b/stdlib/source/test/lux/macro/syntax/definition.lux index ae7d5d3e5..11074fbc7 100644 --- a/stdlib/source/test/lux/macro/syntax/definition.lux +++ b/stdlib/source/test/lux/macro/syntax/definition.lux @@ -76,7 +76,7 @@ (#try.Success actual) (\ /.equivalence = expected actual))) (_.cover [/.typed] - (let [expected (set@ #/.value (#.Left [type untyped_value]) expected)] + (let [expected (with@ #/.value (#.Left [type untyped_value]) expected)] (case (.result (/.typed compiler) (list (/.format expected))) (#try.Failure error) @@ -85,7 +85,7 @@ (#try.Success actual) (\ /.equivalence = expected actual)))) (_.cover [/.lacks_type!] - (let [expected (set@ #/.value (#.Right untyped_value) expected)] + (let [expected (with@ #/.value (#.Right untyped_value) expected)] (case (.result (/.typed compiler) (list (/.format expected))) (#try.Failure error) diff --git a/stdlib/source/test/lux/math.lux b/stdlib/source/test/lux/math.lux index f1bbc7fa6..8aeb528f5 100644 --- a/stdlib/source/test/lux/math.lux +++ b/stdlib/source/test/lux/math.lux @@ -92,7 +92,7 @@ (do {! random.monad} [.let [~= (f.approximately? ..margin_of_error)] sample (\ ! map (f.* +10.0) random.safe_frac) - power (\ ! map (|>> (n.% 10) inc n.frac) random.nat)] + power (\ ! map (|>> (n.% 10) ++ n.frac) random.nat)] ($_ _.and (_.cover [/.exp /.log] (|> sample /.exp /.log (f.approximately? +0.000000000000001 sample))) @@ -160,7 +160,7 @@ (~= (f.opposite tau/4) (/.atan/2 +0.0 (f.opposite (f.abs y)))) (f.not_a_number? (/.atan/2 +0.0 +0.0)))))) (do {! random.monad} - [of (\ ! map (|>> (n.% 10) inc) random.nat)] + [of (\ ! map (|>> (n.% 10) ++) random.nat)] (_.cover [/.factorial] (and (n.= 1 (/.factorial 0)) (|> (/.factorial of) (n.% of) (n.= 0))))) diff --git a/stdlib/source/test/lux/math/logic/continuous.lux b/stdlib/source/test/lux/math/logic/continuous.lux index a49e5c7d8..cd168fc4c 100644 --- a/stdlib/source/test/lux/math/logic/continuous.lux +++ b/stdlib/source/test/lux/math/logic/continuous.lux @@ -31,10 +31,10 @@ (_.cover [/.true /.false] (let [true=max! - (r.= /.false (inc /.true)) + (r.= /.false (++ /.true)) false=min! - (r.= /.true (dec /.false))] + (r.= /.true (-- /.false))] (and true=max! false=min!))) (_.cover [/.or] diff --git a/stdlib/source/test/lux/math/modulus.lux b/stdlib/source/test/lux/math/modulus.lux index f1e731975..ae3bbb8e1 100644 --- a/stdlib/source/test/lux/math/modulus.lux +++ b/stdlib/source/test/lux/math/modulus.lux @@ -63,6 +63,6 @@ (/.literal )))) (_.cover [/.congruent?] (and (/.congruent? modulus dividend dividend) - (or (not (/.congruent? modulus dividend (inc dividend))) + (or (not (/.congruent? modulus dividend (++ dividend))) (i.= +1 (/.divisor modulus))))) )))) diff --git a/stdlib/source/test/lux/math/number/complex.lux b/stdlib/source/test/lux/math/number/complex.lux index 77cafc155..70706538d 100644 --- a/stdlib/source/test/lux/math/number/complex.lux +++ b/stdlib/source/test/lux/math/number/complex.lux @@ -43,8 +43,8 @@ (def: angle (Random /.Complex) (\ random.monad map - (|>> (update@ #/.real (f.% +1.0)) - (update@ #/.imaginary (f.% +1.0))) + (|>> (revised@ #/.real (f.% +1.0)) + (revised@ #/.imaginary (f.% +1.0))) ..random)) (def: construction @@ -55,11 +55,11 @@ ($_ _.and (_.cover [/.complex] (and (let [r+i (/.complex real imaginary)] - (and (f.= real (get@ #/.real r+i)) - (f.= imaginary (get@ #/.imaginary r+i)))) + (and (f.= real (value@ #/.real r+i)) + (f.= imaginary (value@ #/.imaginary r+i)))) (let [r+i (/.complex real)] - (and (f.= real (get@ #/.real r+i)) - (f.= +0.0 (get@ #/.imaginary r+i)))))) + (and (f.= real (value@ #/.real r+i)) + (f.= +0.0 (value@ #/.imaginary r+i)))))) (_.cover [/.approximately?] (/.approximately? ..margin_of_error (/.complex real imaginary) @@ -135,18 +135,18 @@ (_.cover [/.+] (let [z (/.+ y x)] (and (/.= z - (/.complex (f.+ (get@ #/.real y) - (get@ #/.real x)) - (f.+ (get@ #/.imaginary y) - (get@ #/.imaginary x))))))) + (/.complex (f.+ (value@ #/.real y) + (value@ #/.real x)) + (f.+ (value@ #/.imaginary y) + (value@ #/.imaginary x))))))) (_.cover [/.-] (let [normal! (let [z (/.- y x)] (and (/.= z - (/.complex (f.- (get@ #/.real y) - (get@ #/.real x)) - (f.- (get@ #/.imaginary y) - (get@ #/.imaginary x)))))) + (/.complex (f.- (value@ #/.real y) + (value@ #/.real x)) + (f.- (value@ #/.imaginary y) + (value@ #/.imaginary x)))))) inverse! (and (|> x (/.+ y) (/.- y) (/.approximately? ..margin_of_error x)) @@ -161,8 +161,8 @@ (let [rem (/.% y x) quotient (|> x (/.- rem) (/./ y)) floored (|> quotient - (update@ #/.real math.floor) - (update@ #/.imaginary math.floor))] + (revised@ #/.real math.floor) + (revised@ #/.imaginary math.floor))] (/.approximately? +0.000000000001 x (|> quotient (/.* y) (/.+ rem))))) @@ -175,10 +175,10 @@ ($_ _.and (_.cover [/.conjugate] (let [cx (/.conjugate x)] - (and (f.= (get@ #/.real x) - (get@ #/.real cx)) - (f.= (f.opposite (get@ #/.imaginary x)) - (get@ #/.imaginary cx))))) + (and (f.= (value@ #/.real x) + (value@ #/.real cx)) + (f.= (f.opposite (value@ #/.imaginary x)) + (value@ #/.imaginary cx))))) (_.cover [/.reciprocal] (let [reciprocal! (|> x (/.* (/.reciprocal x)) (/.approximately? ..margin_of_error /.+one)) diff --git a/stdlib/source/test/lux/math/number/i16.lux b/stdlib/source/test/lux/math/number/i16.lux index f82250048..807a58886 100644 --- a/stdlib/source/test/lux/math/number/i16.lux +++ b/stdlib/source/test/lux/math/number/i16.lux @@ -23,10 +23,10 @@ (<| (_.covering /._) (_.for [/.I16]) (do {! random.monad} - [.let [limit (|> (dec /.width) + [.let [limit (|> (-- /.width) //i64.mask .int - inc)] + ++)] expected (\ ! map (i.% limit) random.int)] ($_ _.and (_.for [/.equivalence] diff --git a/stdlib/source/test/lux/math/number/i32.lux b/stdlib/source/test/lux/math/number/i32.lux index a4c503bf7..06b2458e9 100644 --- a/stdlib/source/test/lux/math/number/i32.lux +++ b/stdlib/source/test/lux/math/number/i32.lux @@ -23,10 +23,10 @@ (<| (_.covering /._) (_.for [/.I32]) (do {! random.monad} - [.let [limit (|> (dec /.width) + [.let [limit (|> (-- /.width) //i64.mask .int - inc)] + ++)] expected (\ ! map (i.% limit) random.int)] ($_ _.and (_.for [/.equivalence] diff --git a/stdlib/source/test/lux/math/number/i64.lux b/stdlib/source/test/lux/math/number/i64.lux index d8e47745b..ac82addce 100644 --- a/stdlib/source/test/lux/math/number/i64.lux +++ b/stdlib/source/test/lux/math/number/i64.lux @@ -48,7 +48,7 @@ [pattern random.nat] ($_ _.and (do ! - [idx (\ ! map (|>> (n.% (dec /.width)) inc) random.nat)] + [idx (\ ! map (|>> (n.% (-- /.width)) ++) random.nat)] (_.cover [/.left_shifted /.right_shifted] (let [nullity! (and (\= pattern (/.left_shifted 0 pattern)) @@ -85,7 +85,7 @@ idempotency! (\= (/.and mask pattern) (/.and mask (/.and mask pattern))) - limit (inc (.nat mask)) + limit (++ (.nat mask)) limit! (if (n.< limit pattern) (\= pattern (/.and mask pattern)) (n.< limit (/.and mask pattern))) @@ -130,10 +130,10 @@ (#.Some sub) (do {! random.monad} - [.let [limit (|> (dec (\ sub width)) + [.let [limit (|> (-- (\ sub width)) /.mask .int - inc)] + ++)] expected (\ ! map (i.% limit) random.int) .let [random (: (All [size] (-> (-> I64 (I64 size)) (Random (I64 size)))) @@ -199,8 +199,8 @@ (_.cover [/.ones] (let [zero&one! (if (/.one? idx pattern) - (n.= (dec (/.ones pattern)) (/.ones (/.zero idx pattern))) - (n.= (inc (/.ones pattern)) (/.ones (/.one idx pattern)))) + (n.= (-- (/.ones pattern)) (/.ones (/.zero idx pattern))) + (n.= (++ (/.ones pattern)) (/.ones (/.one idx pattern)))) complementarity! (n.= /.width diff --git a/stdlib/source/test/lux/math/number/i8.lux b/stdlib/source/test/lux/math/number/i8.lux index 2764f93ec..7d753733d 100644 --- a/stdlib/source/test/lux/math/number/i8.lux +++ b/stdlib/source/test/lux/math/number/i8.lux @@ -23,10 +23,10 @@ (<| (_.covering /._) (_.for [/.I8]) (do {! random.monad} - [.let [limit (|> (dec /.width) + [.let [limit (|> (-- /.width) //i64.mask .int - inc)] + ++)] expected (\ ! map (i.% limit) random.int)] ($_ _.and (_.for [/.equivalence] diff --git a/stdlib/source/test/lux/math/number/int.lux b/stdlib/source/test/lux/math/number/int.lux index 6fba4351a..3c7cb47be 100644 --- a/stdlib/source/test/lux/math/number/int.lux +++ b/stdlib/source/test/lux/math/number/int.lux @@ -192,7 +192,7 @@ idempotency! (/.= pattern (/.right_shifted i64.width pattern)) - sign_mask (i64.left_shifted (dec i64.width) 1) + sign_mask (i64.left_shifted (-- i64.width) 1) mantissa_mask (i64.not sign_mask) sign_preservation! diff --git a/stdlib/source/test/lux/math/number/nat.lux b/stdlib/source/test/lux/math/number/nat.lux index d6e64603e..bf4a7eb40 100644 --- a/stdlib/source/test/lux/math/number/nat.lux +++ b/stdlib/source/test/lux/math/number/nat.lux @@ -104,7 +104,7 @@ (/.= rem (/.% left right))))) )) (do {! random.monad} - [.let [random (\ ! map (|>> (/.% 1,000) inc) random.nat)] + [.let [random (\ ! map (|>> (/.% 1,000) ++) random.nat)] left random right random] ($_ _.and diff --git a/stdlib/source/test/lux/math/number/rev.lux b/stdlib/source/test/lux/math/number/rev.lux index b0d857464..fdb68b72c 100644 --- a/stdlib/source/test/lux/math/number/rev.lux +++ b/stdlib/source/test/lux/math/number/rev.lux @@ -99,7 +99,7 @@ divisor/0 divisor divisor/1 (random.only (|>> (/.= divisor/0) not) divisor) - scale (\ ! map (|>> (n.% 10) inc) + scale (\ ! map (|>> (n.% 10) ++) random.nat)] ($_ _.and (_.cover [/./] diff --git a/stdlib/source/test/lux/meta.lux b/stdlib/source/test/lux/meta.lux index 5c84f9c38..a56457c9c 100644 --- a/stdlib/source/test/lux/meta.lux +++ b/stdlib/source/test/lux/meta.lux @@ -320,7 +320,7 @@ (/.result expected_lux) (!expect (^multi (#try.Success [actual_pre actual_post]) (and (n.= expected_seed actual_pre) - (n.= (inc expected_seed) actual_post)))))) + (n.= (++ expected_seed) actual_post)))))) (_.cover [/.location] (|> /.location (/.result expected_lux) diff --git a/stdlib/source/test/lux/target/jvm.lux b/stdlib/source/test/lux/target/jvm.lux index ae4685790..2a21207d4 100644 --- a/stdlib/source/test/lux/target/jvm.lux +++ b/stdlib/source/test/lux/target/jvm.lux @@ -1019,13 +1019,13 @@ random.nat)] dimensions size sizesH size - sizesT (random.list (dec dimensions) size) + sizesT (random.list (-- dimensions) size) .let [type (loop [dimensions dimensions type (: (Type Object) ..$Object)] (case dimensions 0 type - _ (recur (dec dimensions) (/type.array type))))]] + _ (recur (-- dimensions) (/type.array type))))]] (<| (_.lifted "MULTIANEWARRAY") (..bytecode (|>> (:as Nat) (n.= sizesH))) (do {! /.monad} @@ -1051,13 +1051,13 @@ (-> (Primitive a) (Primitive z) (Bytecode Any) (-> a z) (-> z Any Bit) (Random Bit))) (function (_ from to instruction convert test) (do random.monad - [input (get@ #random from) + [input (value@ #random from) .let [expected (convert input)]] (..bytecode (test expected) (do /.monad - [_ ((get@ #literal from) input) + [_ ((value@ #literal from) input) _ instruction] - (get@ #wrap to)))))) + (value@ #wrap to)))))) int::= (!::= java/lang/Integer "jvm ieq" "jvm int =") long::= (!::= java/lang/Long "jvm leq" "jvm long =") float::= (!::= java/lang/Float "jvm feq" "jvm float =") @@ -1321,10 +1321,10 @@ (do random.monad [class_name ..class_name primitive_method_name (random.ascii/upper 10) - .let [primitive_method_type (/type.method [(list) (list) (get@ #unboxed primitive) (list)])] + .let [primitive_method_type (/type.method [(list) (list) (value@ #unboxed primitive) (list)])] object_method_name (|> (random.ascii/upper 10) (random.only (|>> (text\= primitive_method_name) not))) - expected (get@ #random primitive) + expected (value@ #random primitive) .let [$Self (/type.class class_name (list))]] (in (case (do try.monad [class (/class.class /version.v6_0 /class.public @@ -1337,11 +1337,11 @@ primitive_method_type (list) (#.Some (do /.monad - [_ ((get@ #literal primitive) expected)] + [_ ((value@ #literal primitive) expected)] return))) (/method.method ..method_modifier object_method_name - (/type.method [(list) (list) (get@ #boxed primitive) (list)]) + (/type.method [(list) (list) (value@ #boxed primitive) (list)]) (list) (#.Some (do /.monad [_ (/.invokestatic $Self primitive_method_name primitive_method_type) @@ -1351,7 +1351,7 @@ (#.Some substitute) (substitute expected)) - _ (get@ #wrap primitive)] + _ (value@ #wrap primitive)] /.areturn)))) (row.row)) .let [bytecode (format.result /class.writer class) diff --git a/stdlib/source/test/lux/test.lux b/stdlib/source/test/lux/test.lux index eef7b91e7..e51623e28 100644 --- a/stdlib/source/test/lux/test.lux +++ b/stdlib/source/test/lux/test.lux @@ -25,8 +25,8 @@ (-> Text Text Nat Nat [/.Tally Text] Bit) (and (text.contains? expected_message/0 message) (text.contains? expected_message/1 message) - (n.= successes (get@ #/.successes tally)) - (n.= failures (get@ #/.failures tally)))) + (n.= successes (value@ #/.successes tally)) + (n.= failures (value@ #/.failures tally)))) (def: assertion /.Test @@ -41,10 +41,10 @@ (/.cover' [/.assertion /.Tally] (and (text.ends_with? expected_message/0 success_message) (text.ends_with? expected_message/0 failure_message) - (and (n.= 1 (get@ #/.successes success_tally)) - (n.= 0 (get@ #/.failures success_tally))) - (and (n.= 0 (get@ #/.successes failure_tally)) - (n.= 1 (get@ #/.failures failure_tally))))))) + (and (n.= 1 (value@ #/.successes success_tally)) + (n.= 0 (value@ #/.failures success_tally))) + (and (n.= 0 (value@ #/.successes failure_tally)) + (n.= 1 (value@ #/.failures failure_tally))))))) (in (do async.monad [tt (/.and' (/.assertion expected_message/0 true) (/.assertion expected_message/1 true)) @@ -82,10 +82,10 @@ [[pre_tally pre_message] pre [post_tally post_message] post] (/.cover' [/.seed] - (and (and (n.= 1 (get@ #/.successes pre_tally)) - (n.= 0 (get@ #/.failures pre_tally))) - (and (n.= 1 (get@ #/.successes post_tally)) - (n.= 0 (get@ #/.failures post_tally))))))))) + (and (and (n.= 1 (value@ #/.successes pre_tally)) + (n.= 0 (value@ #/.failures pre_tally))) + (and (n.= 1 (value@ #/.successes post_tally)) + (n.= 0 (value@ #/.failures post_tally))))))))) (def: times /.Test @@ -95,32 +95,32 @@ (in (do async.monad [[tally error] times_assertion] (/.cover' [/.must_try_test_at_least_once] - (and (text.contains? (get@ #exception.label /.must_try_test_at_least_once) error) - (n.= 0 (get@ #/.successes tally)) - (n.= 1 (get@ #/.failures tally))))))) + (and (text.contains? (value@ #exception.label /.must_try_test_at_least_once) error) + (n.= 0 (value@ #/.successes tally)) + (n.= 1 (value@ #/.failures tally))))))) (do {! random.monad} - [expected (\ ! map (|>> (n.% 10) inc) random.nat) + [expected (\ ! map (|>> (n.% 10) ++) random.nat) .let [counter (: (Atom Nat) (atom.atom 0))] times_assertion (<| (/.times expected) (do ! [_ (in []) - .let [_ (io.run! (atom.update! inc counter))]] + .let [_ (io.run! (atom.update! ++ counter))]] (/.test "" true)))] (in (do async.monad [[tally error] times_assertion actual (async.future (atom.read! counter))] (/.cover' [/.times] (and (n.= expected actual) - (n.= 1 (get@ #/.successes tally)) - (n.= 0 (get@ #/.failures tally))))))) + (n.= 1 (value@ #/.successes tally)) + (n.= 0 (value@ #/.failures tally))))))) )) (def: in_parallel /.Test ($_ /.and (do {! random.monad} - [expected (\ ! map (|>> (n.% 10) inc) random.nat) + [expected (\ ! map (|>> (n.% 10) ++) random.nat) .let [counter (: (Atom Nat) (atom.atom 0))] assertion (<| /.in_parallel @@ -128,17 +128,17 @@ (: /.Test) (do ! [_ (in []) - .let [_ (io.run! (atom.update! inc counter))]] + .let [_ (io.run! (atom.update! ++ counter))]] (/.test "" true)))] (in (do async.monad [[tally error] assertion actual (async.future (atom.read! counter))] (/.cover' [/.in_parallel] (and (n.= expected actual) - (n.= expected (get@ #/.successes tally)) - (n.= 0 (get@ #/.failures tally))))))) + (n.= expected (value@ #/.successes tally)) + (n.= 0 (value@ #/.failures tally))))))) (do {! random.monad} - [expected (\ ! map (|>> (n.% 10) inc) random.nat) + [expected (\ ! map (|>> (n.% 10) ++) random.nat) .let [counter (: (Atom Nat) (atom.atom 0))] assertion (<| /.in_parallel @@ -147,16 +147,16 @@ (do ! [_ (in []) .let [_ (undefined) - _ (io.run! (atom.update! inc counter))]] + _ (io.run! (atom.update! ++ counter))]] (/.test "" true)))] (in (do async.monad [[tally error] assertion actual (async.future (atom.read! counter))] (/.cover' [/.error_during_execution] - (let [correct_error! (text.contains? (get@ #exception.label /.error_during_execution) error) + (let [correct_error! (text.contains? (value@ #exception.label /.error_during_execution) error) no_complete_run! (n.= 0 actual) - no_successes! (n.= 0 (get@ #/.successes tally)) - ran_all_tests! (n.= expected (get@ #/.failures tally))] + no_successes! (n.= 0 (value@ #/.successes tally)) + ran_all_tests! (n.= expected (value@ #/.failures tally))] (and correct_error! no_complete_run! no_successes! @@ -176,10 +176,10 @@ [[not_covering _] not_covering [covering _] covering] (/.cover' [/.covering] - (and (and (set.empty? (get@ #/.expected_coverage not_covering)) - (set.empty? (get@ #/.actual_coverage not_covering))) - (and (not (set.empty? (get@ #/.expected_coverage covering))) - (set.empty? (get@ #/.actual_coverage covering)))))))) + (and (and (set.empty? (value@ #/.expected_coverage not_covering)) + (set.empty? (value@ #/.actual_coverage not_covering))) + (and (not (set.empty? (value@ #/.expected_coverage covering))) + (set.empty? (value@ #/.actual_coverage covering)))))))) (do random.monad [not_covering (/.covering .._ (/.test "" true)) covering (/.covering .._ (/.cover [..dummy_target] true))] @@ -187,10 +187,10 @@ [[not_covering _] not_covering [covering _] covering] (/.cover' [/.cover] - (and (and (not (set.empty? (get@ #/.expected_coverage not_covering))) - (not (set.member? (get@ #/.actual_coverage not_covering) (name_of ..dummy_target)))) - (and (not (set.empty? (get@ #/.expected_coverage covering))) - (set.member? (get@ #/.actual_coverage covering) (name_of ..dummy_target)))))))) + (and (and (not (set.empty? (value@ #/.expected_coverage not_covering))) + (not (set.member? (value@ #/.actual_coverage not_covering) (name_of ..dummy_target)))) + (and (not (set.empty? (value@ #/.expected_coverage covering))) + (set.member? (value@ #/.actual_coverage covering) (name_of ..dummy_target)))))))) (do random.monad [not_covering (/.covering .._ (/.test "" true)) covering (/.covering .._ (in (/.cover' [..dummy_target] true)))] @@ -198,10 +198,10 @@ [[not_covering _] not_covering [covering _] covering] (/.cover' [/.cover'] - (and (and (not (set.empty? (get@ #/.expected_coverage not_covering))) - (not (set.member? (get@ #/.actual_coverage not_covering) (name_of ..dummy_target)))) - (and (not (set.empty? (get@ #/.expected_coverage covering))) - (set.member? (get@ #/.actual_coverage covering) (name_of ..dummy_target)))))))) + (and (and (not (set.empty? (value@ #/.expected_coverage not_covering))) + (not (set.member? (value@ #/.actual_coverage not_covering) (name_of ..dummy_target)))) + (and (not (set.empty? (value@ #/.expected_coverage covering))) + (set.member? (value@ #/.actual_coverage covering) (name_of ..dummy_target)))))))) (do random.monad [not_covering (/.covering .._ (/.test "" true)) covering (/.covering .._ (/.for [..dummy_target] (/.test "" true)))] @@ -209,10 +209,10 @@ [[not_covering _] not_covering [covering _] covering] (/.cover' [/.for] - (and (and (not (set.empty? (get@ #/.expected_coverage not_covering))) - (not (set.member? (get@ #/.actual_coverage not_covering) (name_of ..dummy_target)))) - (and (not (set.empty? (get@ #/.expected_coverage covering))) - (set.member? (get@ #/.actual_coverage covering) (name_of ..dummy_target)))))))) + (and (and (not (set.empty? (value@ #/.expected_coverage not_covering))) + (not (set.member? (value@ #/.actual_coverage not_covering) (name_of ..dummy_target)))) + (and (not (set.empty? (value@ #/.expected_coverage covering))) + (set.member? (value@ #/.actual_coverage covering) (name_of ..dummy_target)))))))) )) (def: .public test @@ -239,10 +239,10 @@ (/.cover' [/.test] (and (text.ends_with? expected_message/0 success_message) (text.ends_with? expected_message/0 failure_message) - (and (n.= 1 (get@ #/.successes success_tally)) - (n.= 0 (get@ #/.failures success_tally))) - (and (n.= 0 (get@ #/.successes failure_tally)) - (n.= 1 (get@ #/.failures failure_tally)))))))) + (and (n.= 1 (value@ #/.successes success_tally)) + (n.= 0 (value@ #/.failures success_tally))) + (and (n.= 0 (value@ #/.successes failure_tally)) + (n.= 1 (value@ #/.failures failure_tally)))))))) (do ! [tt (/.and (/.test expected_message/0 true) (/.test expected_message/1 true)) @@ -273,18 +273,18 @@ (text.contains? expected_message/0 success_message)) (and (text.contains? expected_context failure_message) (text.contains? expected_message/0 failure_message)) - (and (n.= 1 (get@ #/.successes success_tally)) - (n.= 0 (get@ #/.failures success_tally))) - (and (n.= 0 (get@ #/.successes failure_tally)) - (n.= 1 (get@ #/.failures failure_tally)))))))) + (and (n.= 1 (value@ #/.successes success_tally)) + (n.= 0 (value@ #/.failures success_tally))) + (and (n.= 0 (value@ #/.successes failure_tally)) + (n.= 1 (value@ #/.failures failure_tally)))))))) (do ! [failure_assertion (/.failure expected_message/0)] (in (do async.monad [[failure_tally failure_message] failure_assertion] (/.cover' [/.failure] (and (text.contains? expected_message/0 failure_message) - (and (n.= 0 (get@ #/.successes failure_tally)) - (n.= 1 (get@ #/.failures failure_tally)))))))) + (and (n.= 0 (value@ #/.successes failure_tally)) + (n.= 1 (value@ #/.failures failure_tally)))))))) (do ! [success_assertion (/.lifted expected_message/0 (in true)) failure_assertion (/.lifted expected_message/0 (in false))] @@ -294,10 +294,10 @@ (/.cover' [/.lifted] (and (text.contains? expected_message/0 success_message) (text.contains? expected_message/0 failure_message) - (and (n.= 1 (get@ #/.successes success_tally)) - (n.= 0 (get@ #/.failures success_tally))) - (and (n.= 0 (get@ #/.successes failure_tally)) - (n.= 1 (get@ #/.failures failure_tally)))))))) + (and (n.= 1 (value@ #/.successes success_tally)) + (n.= 0 (value@ #/.failures success_tally))) + (and (n.= 0 (value@ #/.successes failure_tally)) + (n.= 1 (value@ #/.failures failure_tally)))))))) ..times ..in_parallel ..coverage diff --git a/stdlib/source/test/lux/time/date.lux b/stdlib/source/test/lux/time/date.lux index 872e7f2ce..70bb0a93e 100644 --- a/stdlib/source/test/lux/time/date.lux +++ b/stdlib/source/test/lux/time/date.lux @@ -77,7 +77,7 @@ (try\map (\ /.equivalence = expected)) (try.else false)))) (do {! random.monad} - [year (\ ! map (|>> (n.% 10,000) inc) + [year (\ ! map (|>> (n.% 10,000) ++) random.nat) month (\ ! map (|>> (n.% 10) (n.+ 13)) random.nat) diff --git a/stdlib/source/test/lux/time/month.lux b/stdlib/source/test/lux/time/month.lux index 18d56c088..77a0a9702 100644 --- a/stdlib/source/test/lux/time/month.lux +++ b/stdlib/source/test/lux/time/month.lux @@ -31,7 +31,7 @@ (Random /.Month) (let [december (/.number #/.December)] (|> random.nat - (\ random.monad map (|>> (n.% december) inc)) + (\ random.monad map (|>> (n.% december) ++)) (random.one (|>> /.by_number try.maybe))))) (def: .public test diff --git a/stdlib/source/test/lux/time/year.lux b/stdlib/source/test/lux/time/year.lux index 513b1b92d..b43fb99eb 100644 --- a/stdlib/source/test/lux/time/year.lux +++ b/stdlib/source/test/lux/time/year.lux @@ -91,7 +91,7 @@ (and (i.= +1 (/.leaps leap)) (i.= (.int (n./ /.leap /.century)) (/.leaps century)) - (i.= (inc (i.* +4 (dec (/.leaps century)))) + (i.= (++ (i.* +4 (-- (/.leaps century)))) (/.leaps era)))) )) ))) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux index aa4443cdb..92acc8672 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux @@ -179,7 +179,7 @@ (_.test "Can analyse exhaustive pattern-matching." (|> (analyse_pm exhaustive_branchesC) _structure.check_succeeds)) - (let [non_exhaustive_branchesC (list.first (dec (list.size exhaustive_branchesC)) + (let [non_exhaustive_branchesC (list.first (-- (list.size exhaustive_branchesC)) exhaustive_branchesC)] (_.test "Will reject non-exhaustive pattern-matching." (|> (analyse_pm non_exhaustive_branchesC) @@ -188,7 +188,7 @@ [redundant_patterns (exhaustive_branches false variantTC inputC) redundancy_idx (|> r.nat (\ ! map (n.% (list.size redundant_patterns)))) .let [redundant_branchesC (<| (list!map (branch outputC)) - list.joined + list.together (list (list.first redundancy_idx redundant_patterns) (list (maybe.trusted (list.item redundancy_idx redundant_patterns))) (list.after redundancy_idx redundant_patterns)))]] @@ -199,10 +199,10 @@ [[heterogeneousT heterogeneousC] (r.only (|>> product.left (check.subsumes? outputT) not) _primitive.primitive) heterogeneous_idx (|> r.nat (\ ! map (n.% (list.size exhaustive_patterns)))) - .let [heterogeneous_branchesC (list.joined (list (list.first heterogeneous_idx exhaustive_branchesC) - (list (let [[_pattern _body] (maybe.trusted (list.item heterogeneous_idx exhaustive_branchesC))] - [_pattern heterogeneousC])) - (list.after (inc heterogeneous_idx) exhaustive_branchesC)))]] + .let [heterogeneous_branchesC (list.together (list (list.first heterogeneous_idx exhaustive_branchesC) + (list (let [[_pattern _body] (maybe.trusted (list.item heterogeneous_idx exhaustive_branchesC))] + [_pattern heterogeneousC])) + (list.after (++ heterogeneous_idx) exhaustive_branchesC)))]] (_.test "Will reject pattern-matching if the bodies of the branches do not all have the same type." (|> (analyse_pm heterogeneous_branchesC) _structure.check_fails))) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/function.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/function.lux index 42b1e366c..b0feacead 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/function.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/function.lux @@ -92,12 +92,12 @@ partialT (type.function (list.after partial_args inputsT) outputT) varT (#.Parameter 1) polyT (<| (type.univ_q 1) - (type.function (list.joined (list (list.first var_idx inputsT) - (list varT) - (list.after (inc var_idx) inputsT)))) + (type.function (list.together (list (list.first var_idx inputsT) + (list varT) + (list.after (++ var_idx) inputsT)))) varT) poly_inputT (maybe.trusted (list.item var_idx inputsT)) - partial_poly_inputsT (list.after (inc var_idx) inputsT) + partial_poly_inputsT (list.after (++ var_idx) inputsT) partial_polyT1 (<| (type.function partial_poly_inputsT) poly_inputT) partial_polyT2 (<| (type.univ_q 1) @@ -116,8 +116,8 @@ (|> (/.apply _primitive.phase inputsC polyT dummy_function archive.empty (' [])) (check_apply poly_inputT full_args))) (_.test "Polymorphic partial application propagates found type-vars." - (|> (/.apply _primitive.phase (list.first (inc var_idx) inputsC) polyT dummy_function archive.empty (' [])) - (check_apply partial_polyT1 (inc var_idx)))) + (|> (/.apply _primitive.phase (list.first (++ var_idx) inputsC) polyT dummy_function archive.empty (' [])) + (check_apply partial_polyT1 (++ var_idx)))) (_.test "Polymorphic partial application preserves quantification for type-vars." (|> (/.apply _primitive.phase (list.first var_idx inputsC) polyT dummy_function archive.empty (' [])) (check_apply partial_polyT2 var_idx))) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/structure.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/structure.lux index d27b85baf..1b8939368 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/structure.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/structure.lux @@ -1,6 +1,7 @@ (.module: [lux #* - [abstract ["." monad (#+ do)]] + [abstract + ["." monad (#+ do)]] [data ["%" text/format (#+ format)] ["." name]] @@ -54,12 +55,12 @@ (def: (check_sum' tag size variant) (-> Tag Nat (Variant Analysis) Bit) - (let [expected//right? (n.= (dec size) tag) + (let [expected//right? (n.= (-- size) tag) expected//lefts (if expected//right? - (dec tag) + (-- tag) tag) - actual//right? (get@ #////analysis.right? variant) - actual//lefts (get@ #////analysis.lefts variant)] + actual//right? (value@ #////analysis.right? variant) + actual//lefts (value@ #////analysis.lefts variant)] (and (n.= expected//lefts actual//lefts) (bit\= expected//right? @@ -121,14 +122,14 @@ [size (|> r.nat (\ ! map (|>> (n.% 10) (n.max 2)))) choice (|> r.nat (\ ! map (n.% size))) primitives (r.list size _primitive.primitive) - +choice (|> r.nat (\ ! map (n.% (inc size)))) + +choice (|> r.nat (\ ! map (n.% (++ size)))) [_ +valueC] _primitive.primitive .let [variantT (type.variant (list\map product.left primitives)) [valueT valueC] (maybe.trusted (list.item choice primitives)) - +size (inc size) - +primitives (list.joined (list (list.first choice primitives) - (list [(#.Parameter 1) +valueC]) - (list.after choice primitives))) + +size (++ size) + +primitives (list.together (list (list.first choice primitives) + (list [(#.Parameter 1) +valueC]) + (list.after choice primitives))) [+valueT +valueC] (maybe.trusted (list.item +choice +primitives)) +variantT (type.variant (list\map product.left +primitives))]] (<| (_.context (%.name (name_of /.sum))) @@ -176,9 +177,9 @@ [_ +valueC] _primitive.primitive .let [tupleT (type.tuple (list\map product.left primitives)) [singletonT singletonC] (|> primitives (list.item choice) maybe.trusted) - +primitives (list.joined (list (list.first choice primitives) - (list [(#.Parameter 1) +valueC]) - (list.after choice primitives))) + +primitives (list.together (list (list.first choice primitives) + (list [(#.Parameter 1) +valueC]) + (list.after choice primitives))) +tupleT (type.tuple (list\map product.left +primitives))]] (<| (_.context (%.name (name_of /.product))) ($_ _.and @@ -243,9 +244,9 @@ [choiceT choiceC] (maybe.trusted (list.item choice primitives)) [other_choiceT other_choiceC] (maybe.trusted (list.item other_choice primitives)) monoT (type.variant primitivesT) - polyT (|> (type.variant (list.joined (list (list.first choice primitivesT) - (list varT) - (list.after (inc choice) primitivesT)))) + polyT (|> (type.variant (list.together (list (list.first choice primitivesT) + (list varT) + (list.after (++ choice) primitivesT)))) (type.univ_q 1)) choice_tag (maybe.trusted (list.item choice tags)) other_choice_tag (maybe.trusted (list.item other_choice tags))]] @@ -288,9 +289,9 @@ primitivesC (list\map product.right primitives) monoT (#.Named [module_name type_name] (type.tuple primitivesT)) recordC (list.zipped/2 tagsC primitivesC) - polyT (|> (type.tuple (list.joined (list (list.first choice primitivesT) - (list varT) - (list.after (inc choice) primitivesT)))) + polyT (|> (type.tuple (list.together (list (list.first choice primitivesT) + (list varT) + (list.after (++ choice) primitivesT)))) (type.univ_q 1) (#.Named [module_name type_name]))]] (<| (_.context (%.name (name_of /.record))) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/case.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/case.lux index 224349569..b634c0115 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/case.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/case.lux @@ -119,7 +119,7 @@ (def: random_path (Random (analysis.Tuple synthesis.Member)) (do {! random.monad} - [size_1 (|> random.nat (\ ! map (|>> (n.% 10) inc)))] + [size_1 (|> random.nat (\ ! map (|>> (n.% 10) ++)))] (random.list size_1 ..random_member))) (def: (get_pattern path) @@ -136,7 +136,7 @@ (#.Right lefts) (analysis.pattern/tuple - (list\compose (list.repeated (inc lefts) (analysis.pattern/unit)) + (list\compose (list.repeated (++ lefts) (analysis.pattern/unit)) (list inner))))) (#analysis.Bind @member) (list.reversed path)) @@ -290,7 +290,7 @@ branch (: (-> Nat Bit Text Frac Branch) (function (_ lefts right? value body) {#analysis.when (if right? - (analysis.pattern/tuple (list\compose (list.repeated (inc lefts) (analysis.pattern/unit)) + (analysis.pattern/tuple (list\compose (list.repeated (++ lefts) (analysis.pattern/unit)) (list (analysis.pattern/text value)))) (analysis.pattern/tuple ($_ list\compose (list.repeated lefts (analysis.pattern/unit)) @@ -299,7 +299,7 @@ #analysis.then (analysis.frac body)}))]] (in [(list\fold (function (_ left right) (#synthesis.Alt left right)) - (path (inc mid_size) true value/last body/last) + (path (++ mid_size) true value/last body/last) (|> (list.zipped/2 value/mid body/mid) (#.Item [value/first body/first]) list.enumeration @@ -310,8 +310,8 @@ (list\compose (|> (list.zipped/2 value/mid body/mid) list.enumeration (list\map (function (_ [lefts' [value body]]) - (branch (inc lefts') false value body)))) - (list (branch (inc mid_size) true value/last body/last)))]]))) + (branch (++ lefts') false value body)))) + (list (branch (++ mid_size) true value/last body/last)))]]))) (def: random_complex ($_ random.either diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/function.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/function.lux index 692a2fab9..a25bd787c 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/function.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/function.lux @@ -146,7 +146,7 @@ (def: (random_variable arity output?) (-> Arity Scenario) (do {! random.monad} - [register (\ ! map (|>> (n.% arity) inc) random.nat)] + [register (\ ! map (|>> (n.% arity) ++) random.nat)] (in [(not (n.= 0 register)) (synthesis.variable/local register) (if (n.= arity register) @@ -194,20 +194,20 @@ (synthesis.path/then expected_output)) (synthesis.path/seq (synthesis.path/text text_test) (synthesis.path/then expected_output)) - (synthesis.path/seq (synthesis.path/bind (inc arity)) + (synthesis.path/seq (synthesis.path/bind (++ arity)) (synthesis.path/then expected_output)) ($_ synthesis.path/seq (synthesis.path/side side|member) - (synthesis.path/bind (inc arity)) + (synthesis.path/bind (++ arity)) (synthesis.path/then expected_output)) (if right? ($_ synthesis.path/seq (synthesis.path/member side|member) - (synthesis.path/bind (inc arity)) + (synthesis.path/bind (++ arity)) (synthesis.path/then expected_output)) ($_ synthesis.path/seq (synthesis.path/member side|member) - (synthesis.path/bind (inc arity)) + (synthesis.path/bind (++ arity)) synthesis.path/pop (synthesis.path/then expected_output))))]) (#analysis.Case actual_input @@ -243,7 +243,7 @@ (in [(and loop?_input loop?_output) (synthesis.branch/let [expected_input - (inc arity) + (++ arity) expected_output]) (#analysis.Case actual_input [{#analysis.when (#analysis.Bind 2) @@ -323,7 +323,7 @@ true (list\map product.left resets)) (synthesis.loop/scope - {#synthesis.start (inc arity) + {#synthesis.start (++ arity) #synthesis.inits (list\map (|>> product.right product.left) resets) #synthesis.iteration expected_output}) (analysis.apply [(..n_abstraction arity actual_output) @@ -342,7 +342,7 @@ Scenario (do {! random.monad} [[loop?_output expected_output actual_output] (..random_nat output?) - arity (|> random.nat (\ ! map (|>> (n.% 5) inc))) + arity (|> random.nat (\ ! map (|>> (n.% 5) ++))) .let [environment ($_ list\compose (list\map (|>> #variable.Foreign) (list.indices arity)) @@ -362,7 +362,7 @@ (-> Scenario Scenario) (do {! random.monad} [[loop?_abstraction expected_abstraction actual_abstraction] (..random_nat output?) - arity (|> random.nat (\ ! map (|>> (n.% 5) inc))) + arity (|> random.nat (\ ! map (|>> (n.% 5) ++))) inputs (random.list arity (random_value false))] (in [(list\fold (function (_ new old) (and new old)) @@ -418,7 +418,7 @@ (def: random_abstraction (Random [Synthesis Analysis]) (do {! random.monad} - [arity (|> random.nat (\ ! map (|>> (n.% 5) inc))) + [arity (|> random.nat (\ ! map (|>> (n.% 5) ++))) [loop? expected_body actual_body] (random_body arity true)] (in [(..n_function loop? arity expected_body) (..n_abstraction arity actual_body)]))) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/loop.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/loop.lux index 9aa7bdfe9..41dff47e9 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/loop.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/loop.lux @@ -55,7 +55,7 @@ (def: (variable offset arity next) (Scenario Variable) (let [local (do {! random.monad} - [register (\ ! map (|>> (n.% arity) inc) random.nat)] + [register (\ ! map (|>> (n.% arity) ++) random.nat)] (in [next [(#variable.Local (/.register_optimization offset register)) (#variable.Local register)]]))] @@ -139,7 +139,7 @@ [//.path/side] [//.path/member] )) - (random\in [(inc next) + (random\in [(++ next) [(//.path/bind (/.register_optimization offset next)) (//.path/bind next)]]) )))) @@ -182,7 +182,7 @@ ($_ random.either (do {! random.monad} [[next [recordE recordA]] (..reference offset arity next) - path_length (\ ! map (|>> (n.% 5) inc) random.nat) + path_length (\ ! map (|>> (n.% 5) ++) random.nat) path (random.list path_length random_member)] (in [next [(//.branch/get [path recordE]) @@ -267,7 +267,7 @@ ($_ _.and (do {! random.monad} [expected_offset (\ ! map (|>> (n.% 5) (n.+ 2)) random.nat) - arity (\ ! map (|>> (n.% 5) inc) random.nat) + arity (\ ! map (|>> (n.% 5) ++) random.nat) expected_inits (|> random.nat (\ ! map (|>> .i64 //.i64)) (random.list arity)) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/structure.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/structure.lux index a7fa786fb..014a77ac2 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/structure.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/structure.lux @@ -1,6 +1,7 @@ (.module: [lux #* - [abstract ["." monad (#+ do)]] + [abstract + ["." monad (#+ do)]] [data ["%" text/format (#+ format)] ["." name]] @@ -37,9 +38,9 @@ (do {! r.monad} [size (|> r.nat (\ ! map (|>> (n.% 10) (n.+ 2)))) tagA (|> r.nat (\ ! map (n.% size))) - .let [right? (n.= (dec size) tagA) + .let [right? (n.= (-- size) tagA) lefts (if right? - (dec tagA) + (-- tagA) tagA)] memberA //primitive.primitive] (_.test "Can synthesize variants." @@ -47,9 +48,9 @@ (//.phase archive.empty) (phase.result [///bundle.empty ////synthesis.init]) (case> (^ (#try.Success (////synthesis.variant [leftsS right?S valueS]))) - (let [tagS (if right?S (inc leftsS) leftsS)] + (let [tagS (if right?S (++ leftsS) leftsS)] (and (n.= tagA tagS) - (|> tagS (n.= (dec size)) (bit\= right?S)) + (|> tagS (n.= (-- size)) (bit\= right?S)) (//primitive.corresponds? memberA valueS))) _ diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/variable.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/variable.lux index 2678f8f77..10a6ca270 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/variable.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/variable.lux @@ -70,9 +70,9 @@ (do ! [let? random.bit [expected_input actual_input] (..primitive_scenario context) - .let [fake_register (n.+ (get@ #redundants context) - (dictionary.size (get@ #necessary context)))] - [expected_output actual_output] (scenario (update@ #redundants inc context))] + .let [fake_register (n.+ (value@ #redundants context) + (dictionary.size (value@ #necessary context)))] + [expected_output actual_output] (scenario (revised@ #redundants ++ context))] (in [(synthesis.branch/case [expected_input (#synthesis.Seq #synthesis.Pop (#synthesis.Then expected_output))]) @@ -95,7 +95,7 @@ (def: (tuple_scenario context) (Scenario Synthesis) - (let [registers (dictionary.entries (get@ #necessary context))] + (let [registers (dictionary.entries (value@ #necessary context))] (\ random.monad in [(synthesis.tuple (list\map (|>> product.left synthesis.variable/local) registers)) (synthesis.tuple (list\map (|>> product.right synthesis.variable/local) registers))]))) @@ -110,10 +110,10 @@ (do random.monad [_ (in []) [expected_input actual_input] (scenario context) - .let [real_register (dictionary.size (get@ #necessary context)) - fake_register (n.+ (get@ #redundants context) - (dictionary.size (get@ #necessary context)))] - [expected_output actual_output] (scenario (update@ #necessary (dictionary.has real_register fake_register) context))] + .let [real_register (dictionary.size (value@ #necessary context)) + fake_register (n.+ (value@ #redundants context) + (dictionary.size (value@ #necessary context)))] + [expected_output actual_output] (scenario (revised@ #necessary (dictionary.has real_register fake_register) context))] (in [(synthesis.branch/let [expected_input real_register expected_output]) (synthesis.branch/let [actual_input fake_register actual_output])]))) @@ -143,7 +143,7 @@ (def: (get_scenario scenario context) (-> (Scenario Synthesis) (Scenario Synthesis)) (do {! random.monad} - [length (\ ! map (|>> (n.% 5) inc) random.nat) + [length (\ ! map (|>> (n.% 5) ++) random.nat) path (random.list length ..random_member) [expected_record actual_record] (scenario context)] (in [(synthesis.branch/get [path expected_record]) @@ -166,10 +166,10 @@ (#synthesis.Then actual_then))])) (do {! random.monad} [_ (in []) - .let [real_register (dictionary.size (get@ #necessary context)) - fake_register (n.+ (get@ #redundants context) - (dictionary.size (get@ #necessary context)))] - [expected_then actual_then] (scenario (update@ #necessary (dictionary.has real_register fake_register) context))] + .let [real_register (dictionary.size (value@ #necessary context)) + fake_register (n.+ (value@ #redundants context) + (dictionary.size (value@ #necessary context)))] + [expected_then actual_then] (scenario (revised@ #necessary (dictionary.has real_register fake_register) context))] (in [(#synthesis.Seq (#synthesis.Bind real_register) (#synthesis.Seq #synthesis.Pop (#synthesis.Then expected_then))) @@ -238,19 +238,19 @@ (-> (Scenario Synthesis) (Scenario Synthesis)) (do {! random.monad} [_ (in []) - .let [real_start (dictionary.size (get@ #necessary context)) - fake_start (n.+ (get@ #redundants context) + .let [real_start (dictionary.size (value@ #necessary context)) + fake_start (n.+ (value@ #redundants context) real_start)] inits (random.list ..scope_arity (scenario context)) - [expected_iteration actual_iteration] (scenario (update@ #necessary - (function (_ necessary) - (list\fold (function (_ [idx _] context) - (dictionary.has (n.+ real_start idx) - (n.+ fake_start idx) - context)) - necessary - (list.enumeration inits))) - context))] + [expected_iteration actual_iteration] (scenario (revised@ #necessary + (function (_ necessary) + (list\fold (function (_ [idx _] context) + (dictionary.has (n.+ real_start idx) + (n.+ fake_start idx) + context)) + necessary + (list.enumeration inits))) + context))] (in [(synthesis.loop/scope [real_start (list\map product.left inits) expected_iteration]) (synthesis.loop/scope [fake_start (list\map product.right inits) actual_iteration])]))) @@ -273,7 +273,7 @@ (-> (Scenario Synthesis) (Scenario Synthesis)) (do {! random.monad} [_ (in []) - .let [registers (dictionary.entries (get@ #necessary context)) + .let [registers (dictionary.entries (value@ #necessary context)) expected_environment (list\map (|>> product.left #variable.Local) registers) actual_environment (list\map (|>> product.right #variable.Local) registers)] [expected_body actual_body] (..primitive_scenario context)] diff --git a/stdlib/source/test/lux/type.lux b/stdlib/source/test/lux/type.lux index 8c135b590..65920eca9 100644 --- a/stdlib/source/test/lux/type.lux +++ b/stdlib/source/test/lux/type.lux @@ -45,27 +45,32 @@ (Random Name) (random.and ..short ..short)) -(def: .public (random parameters) +(def: (random' parameters) (-> Nat (Random Type)) (random.rec (function (_ recur) (let [pairG (random.and recur recur) - quantifiedG (random.and (random\in (list)) recur) un_parameterized (: (Random Type) ($_ random.either - (random\map (|>> #.Primitive) (random.and ..short (random\in (list)))) + (random\map (|>> #.Primitive) (random.and ..short (random.list 0 recur))) + (random\map (|>> #.Primitive) (random.and ..short (random.list 1 recur))) + (random\map (|>> #.Primitive) (random.and ..short (random.list 2 recur))) (random\map (|>> #.Sum) pairG) (random\map (|>> #.Product) pairG) (random\map (|>> #.Function) pairG) - (random\map (|>> #.UnivQ) quantifiedG) - (random\map (|>> #.ExQ) quantifiedG) - (random\map (|>> #.Apply) pairG) - (random\map (|>> #.Named) (random.and ..name recur)) ))] (case parameters 0 un_parameterized - _ (random.either un_parameterized - (random\map (|>> (n.% parameters) #.Parameter) random.nat))))))) + _ (|> random.nat + (random\map (|>> (n.% parameters) #.Parameter)) + (random.either un_parameterized))))))) + +(def: .public (random parameters) + (-> Nat (Random Type)) + ($_ random.either + (random\map (/.univ_q parameters) (random' parameters)) + (random\map (/.ex_q parameters) (random' parameters)) + )) (def: .public test Test @@ -98,7 +103,7 @@ _ #1))) (list.repeated size) - (monad.seq !)) + (monad.all !)) .let [(^open "/\.") /.equivalence (^open "list\.") (list.equivalence /.equivalence)]] (`` ($_ _.and @@ -123,7 +128,7 @@ (case> #.None #1 _ #0)))) (do {! random.monad} [size (|> random.nat (\ ! map (n.% 3))) - members (monad.seq ! (list.repeated size (..random 0))) + members (monad.all ! (list.repeated size (..random 0))) extra (|> (..random 0) (random.only (function (_ type) (case type @@ -144,7 +149,7 @@ (n.= (list.size members) (list.size tparams)))) )) (do {! random.monad} - [size (|> random.nat (\ ! map (|>> (n.% 3) inc))) + [size (|> random.nat (\ ! map (|>> (n.% 3) ++))) body_type (|> (..random 0) (random.only (function (_ type) (case type @@ -170,7 +175,7 @@ (|> body_type (/.ex_q size) /.quantified?))) ))) (do {! random.monad} - [depth (|> random.nat (\ ! map (|>> (n.% 3) inc))) + [depth (|> random.nat (\ ! map (|>> (n.% 3) ++))) element_type (|> (..random 0) (random.only (function (_ type) (case type diff --git a/stdlib/source/test/lux/type/abstract.lux b/stdlib/source/test/lux/type/abstract.lux index 6275647d0..f8fe3c6a3 100644 --- a/stdlib/source/test/lux/type/abstract.lux +++ b/stdlib/source/test/lux/type/abstract.lux @@ -28,7 +28,7 @@ [(syntax: ( []) (do meta.monad [frame ] - (in (list (code.text (get@ #/.name frame))))))] + (in (list (code.text (value@ #/.name frame))))))] [current /.current] [specific (/.specific (template.text [g!Foo]))] diff --git a/stdlib/source/test/lux/type/check.lux b/stdlib/source/test/lux/type/check.lux index 1875d4fc8..d148e9fdc 100644 --- a/stdlib/source/test/lux/type/check.lux +++ b/stdlib/source/test/lux/type/check.lux @@ -43,7 +43,7 @@ (random.rec (function (_ recur) (let [pairG (random.and recur recur) - quantifiedG (random.and (random\in (list)) (type' (inc num_vars))) + quantifiedG (random.and (random\in (list)) (type' (++ num_vars))) random_pair (random.either (random.either (random\map (|>> #.Sum) pairG) (random\map (|>> #.Product) pairG)) (random.either (random\map (|>> #.Function) pairG) @@ -52,7 +52,7 @@ (random\map (|>> #.Ex) random.nat))] (case num_vars 0 random_id - _ (random.either (random\map (|>> (n.% num_vars) (n.* 2) inc #.Parameter) random.nat) + _ (random.either (random\map (|>> (n.% num_vars) (n.* 2) ++ #.Parameter) random.nat) random_id))) random_quantified (random.either (random\map (|>> #.UnivQ) quantifiedG) (random\map (|>> #.ExQ) quantifiedG))] @@ -220,10 +220,10 @@ (do random.monad [nominal (random.ascii/upper 10) .let [expected (#.Primitive nominal (list))]] - (_.cover [/.read] + (_.cover [/.read'] (and (|> (do /.monad [[var_id var_type] /.var] - (/.read var_id)) + (/.read' var_id)) (/.result /.fresh_context) (case> (#try.Success #.None) true _ false)) @@ -231,14 +231,14 @@ [[var_id var/0] /.var [_ var/1] /.var _ (/.check var/0 var/1)] - (/.read var_id)) + (/.read' var_id)) (/.result /.fresh_context) (case> (#try.Success #.None) true _ false)) (|> (do /.monad [[var_id var_type] /.var _ (/.bind expected var_id)] - (/.read var_id)) + (/.read' var_id)) (/.result /.fresh_context) (case> (#try.Success (#.Some actual)) (same? expected actual) @@ -248,12 +248,12 @@ (do random.monad [nominal (random.ascii/upper 10) .let [expected (#.Primitive nominal (list))]] - (_.cover [/.read!] + (_.cover [/.read] (case (/.result /.fresh_context (do /.monad [[var_id var_type] /.var _ (/.bind expected var_id)] - (/.read! var_id))) + (/.read var_id))) (#try.Success actual) (same? expected actual) @@ -266,7 +266,7 @@ (case (/.result /.fresh_context (do /.monad [[var_id var_type] /.var] - (/.read! var_id))) + (/.read var_id))) (#try.Failure error) (exception.match? /.unbound_type_var error) @@ -278,9 +278,9 @@ Test ($_ _.and (_.cover [/.fresh_context] - (and (n.= 0 (get@ #.var_counter /.fresh_context)) - (n.= 0 (get@ #.ex_counter /.fresh_context)) - (list.empty? (get@ #.var_bindings /.fresh_context)))) + (and (n.= 0 (value@ #.var_counter /.fresh_context)) + (n.= 0 (value@ #.ex_counter /.fresh_context)) + (list.empty? (value@ #.var_bindings /.fresh_context)))) (_.cover [/.context] (and (case (/.result /.fresh_context /.context) (#try.Success actual) @@ -293,9 +293,9 @@ [_ /.var] /.context)) (#try.Success actual) - (and (n.= 1 (get@ #.var_counter actual)) - (n.= 0 (get@ #.ex_counter actual)) - (n.= 1 (list.size (get@ #.var_bindings actual)))) + (and (n.= 1 (value@ #.var_counter actual)) + (n.= 0 (value@ #.ex_counter actual)) + (n.= 1 (list.size (value@ #.var_bindings actual)))) (#try.Failure error) false))) @@ -305,9 +305,9 @@ [_ /.existential] /.context)) (#try.Success actual) - (and (n.= 0 (get@ #.var_counter actual)) - (n.= 1 (get@ #.ex_counter actual)) - (n.= 0 (list.size (get@ #.var_bindings actual)))) + (and (n.= 0 (value@ #.var_counter actual)) + (n.= 1 (value@ #.ex_counter actual)) + (n.= 0 (list.size (value@ #.var_bindings actual)))) (#try.Failure error) false)) @@ -703,7 +703,7 @@ (-> Nat (Random Type)) (do random.monad [primitive (random.ascii/upper 3) - parameters (random.list parameters (primitive_type (dec parameters)))] + parameters (random.list parameters (primitive_type (-- parameters)))] (in (#.Primitive primitive parameters)))) (def: clean_type diff --git a/stdlib/source/test/lux/type/implicit.lux b/stdlib/source/test/lux/type/implicit.lux index d032f19c5..f50bd57e7 100644 --- a/stdlib/source/test/lux/type/implicit.lux +++ b/stdlib/source/test/lux/type/implicit.lux @@ -39,8 +39,8 @@ (let [(^open "list\.") (list.equivalence n.equivalence)] (and (bit\= (\ n.equivalence = left right) (/.\\ = left right)) - (list\= (\ list.functor map inc (enum.range n.enum start end)) - (/.\\ map inc (enum.range n.enum start end))))) + (list\= (\ list.functor map ++ (enum.range n.enum start end)) + (/.\\ map ++ (enum.range n.enum start end))))) second_order! (/.\\ = diff --git a/stdlib/source/test/lux/type/refinement.lux b/stdlib/source/test/lux/type/refinement.lux index cf69e9243..5942e2a84 100644 --- a/stdlib/source/test/lux/type/refinement.lux +++ b/stdlib/source/test/lux/type/refinement.lux @@ -32,7 +32,7 @@ modulus (\ ! map (|>> (n.% 10) (n.+ 2)) random.nat) .let [predicate (: (Predicate Nat) (|>> (n.% modulus) (n.= 0)))] - total_raws (\ ! map (|>> (n.% 20) inc) random.nat) + total_raws (\ ! map (|>> (n.% 20) ++) random.nat) raws (random.list total_raws random.nat)] ($_ _.and (_.for [/.Refiner] @@ -60,9 +60,9 @@ (maybe\map (|>> /.value (n.= (n.+ modulus modulus)))) (maybe.else false)) (|> (/.refiner predicate modulus) - (maybe\map (/.lifted (n.+ (inc modulus)))) + (maybe\map (/.lifted (n.+ (++ modulus)))) maybe\join - (maybe\map (|>> /.value (n.= (n.+ modulus (inc modulus))))) + (maybe\map (|>> /.value (n.= (n.+ modulus (++ modulus))))) (maybe.else false) not))) (_.cover [/.only] diff --git a/stdlib/source/test/lux/world/file/watch.lux b/stdlib/source/test/lux/world/file/watch.lux index 0bbff685f..0e7369716 100644 --- a/stdlib/source/test/lux/world/file/watch.lux +++ b/stdlib/source/test/lux/world/file/watch.lux @@ -118,7 +118,7 @@ (def: (after_modification! fs watcher data expected_path) (-> (//.System Async) (/.Watcher Async) Binary //.Path (Async (Try Bit))) (do (try.with async.monad) - [_ (async.delayed 1 (#try.Success "Delay to make sure the over_write time-stamp always changes.")) + [_ (async.after 1 (#try.Success "Delay to make sure the over_write time-stamp always changes.")) _ (\ fs write data expected_path) poll/2 (\ watcher poll []) poll/2' (\ watcher poll [])] diff --git a/stdlib/source/test/lux/world/input/keyboard.lux b/stdlib/source/test/lux/world/input/keyboard.lux index 67ce892fe..865a66a9d 100644 --- a/stdlib/source/test/lux/world/input/keyboard.lux +++ b/stdlib/source/test/lux/world/input/keyboard.lux @@ -112,13 +112,13 @@ /.f24]])] (def: listing (List /.Key) - (list.joined (`` (list (~~ (template [ ] - [((: (-> Any (List /.Key)) - (function (_ _) - (`` (list (~~ (template.spliced )))))) - [])] - - )))))) + (list.together (`` (list (~~ (template [ ] + [((: (-> Any (List /.Key)) + (function (_ _) + (`` (list (~~ (template.spliced )))))) + [])] + + )))))) (def: catalogue (Set /.Key) @@ -160,8 +160,8 @@ [key ..random .let [sample ( key)]] (_.cover [] - (and (bit\= (get@ #/.pressed? sample)) - (n.= key (get@ #/.input sample)))))] + (and (bit\= (value@ #/.pressed? sample)) + (n.= key (value@ #/.input sample)))))] [#0 /.release] [#1 /.press] diff --git a/stdlib/source/test/lux/world/net/http/client.lux b/stdlib/source/test/lux/world/net/http/client.lux index 24ece9d1e..c9b3f12c9 100644 --- a/stdlib/source/test/lux/world/net/http/client.lux +++ b/stdlib/source/test/lux/world/net/http/client.lux @@ -70,7 +70,7 @@ (|> ( "" //.empty #.None mock) (do> try.monad [io.run!] - [product.right (get@ #//.body) (function.apply #.None) io.run!] + [product.right (value@ #//.body) (function.on #.None) io.run!] [product.right (\ utf8.codec decode)] [(\ nat.decimal decode)] [(nat.= ) in]) diff --git a/stdlib/source/test/lux/world/net/http/status.lux b/stdlib/source/test/lux/world/net/http/status.lux index 84cbd6355..c93f5b083 100644 --- a/stdlib/source/test/lux/world/net/http/status.lux +++ b/stdlib/source/test/lux/world/net/http/status.lux @@ -84,13 +84,13 @@ /.network_authentication_required]])] (def: all (List //.Status) - (list.joined (`` (list (~~ (template [ ] - [((: (-> Any (List //.Status)) - (function (_ _) - (`` (list (~~ (template.spliced )))))) - 123)] - - )))))) + (list.together (`` (list (~~ (template [ ] + [((: (-> Any (List //.Status)) + (function (_ _) + (`` (list (~~ (template.spliced )))))) + 123)] + + )))))) (def: unique (Set //.Status) diff --git a/stdlib/source/test/lux/world/program.lux b/stdlib/source/test/lux/world/program.lux index 879d1f60f..6f5784daf 100644 --- a/stdlib/source/test/lux/world/program.lux +++ b/stdlib/source/test/lux/world/program.lux @@ -42,7 +42,7 @@ Test (<| (_.covering /._) (do {! random.monad} - [env_size (\ ! map (|>> (n.% 10) inc) random.nat) + [env_size (\ ! map (|>> (n.% 10) ++) random.nat) environment (..environment env_size) home ..path directory ..path -- cgit v1.2.3