From cd71a864ad5be13ed6ec6d046e0a2cb1087bdf94 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Fri, 10 Sep 2021 01:21:23 -0400 Subject: Migrated variants to the new syntax. --- .../bookmark/security/capability_based.md | 1 + licentia/source/program/licentia.lux | 4 +- licentia/source/program/licentia/output.lux | 8 +- licentia/source/test/licentia.lux | 8 +- lux-bootstrapper/src/lux/analyser.clj | 33 +- lux-bootstrapper/src/lux/analyser/case.clj | 4 +- lux-cl/source/program.lux | 26 +- lux-js/source/program.lux | 108 +- lux-jvm/source/luxc/lang/directive/jvm.lux | 290 +-- lux-jvm/source/luxc/lang/host/jvm/def.lux | 4 +- lux-jvm/source/luxc/lang/host/jvm/inst.lux | 10 +- lux-jvm/source/luxc/lang/synthesis/variable.lux | 32 +- lux-jvm/source/luxc/lang/translation/jvm.lux | 12 +- lux-jvm/source/luxc/lang/translation/jvm/case.lux | 20 +- .../source/luxc/lang/translation/jvm/common.lux | 40 +- .../luxc/lang/translation/jvm/expression.lux | 2 +- .../luxc/lang/translation/jvm/extension/common.lux | 4 +- .../luxc/lang/translation/jvm/extension/host.lux | 88 +- .../source/luxc/lang/translation/jvm/function.lux | 4 +- .../source/luxc/lang/translation/jvm/reference.lux | 4 +- lux-jvm/source/program.lux | 88 +- lux-jvm/test/test/luxc/lang/analysis/host.jvm.lux | 46 +- lux-jvm/test/test/luxc/lang/synthesis/loop.lux | 24 +- .../test/test/luxc/lang/synthesis/procedure.lux | 2 +- lux-jvm/test/test/luxc/lang/translation/js.lux | 28 +- lux-jvm/test/test/luxc/lang/translation/jvm.lux | 104 +- lux-lua/source/program.lux | 54 +- lux-php/source/program.lux | 42 +- lux-python/source/program.lux | 56 +- lux-r/source/luxc/lang/synthesis/variable.lux | 101 - lux-r/source/program.lux | 44 +- lux-ruby/source/program.lux | 62 +- lux-scheme/source/program.lux | 40 +- stdlib/source/documentation/lux.lux | 76 +- .../lux/control/concurrency/actor.lux | 8 +- stdlib/source/documentation/lux/control/maybe.lux | 2 +- stdlib/source/documentation/lux/control/try.lux | 4 +- .../documentation/lux/data/collection/array.lux | 2 +- stdlib/source/documentation/lux/ffi.jvm.lux | 4 +- stdlib/source/documentation/lux/ffi.old.lux | 4 +- stdlib/source/library/lux.lux | 2308 ++++++++++---------- stdlib/source/library/lux/abstract/comonad.lux | 26 +- stdlib/source/library/lux/abstract/enum.lux | 6 +- stdlib/source/library/lux/abstract/functor.lux | 8 +- stdlib/source/library/lux/abstract/monad.lux | 50 +- stdlib/source/library/lux/abstract/monad/free.lux | 44 +- .../source/library/lux/abstract/monad/indexed.lux | 10 +- .../source/library/lux/control/concatenative.lux | 8 +- .../library/lux/control/concurrency/actor.lux | 34 +- .../library/lux/control/concurrency/async.lux | 12 +- .../source/library/lux/control/concurrency/frp.lux | 56 +- .../library/lux/control/concurrency/semaphore.lux | 4 +- .../source/library/lux/control/concurrency/stm.lux | 26 +- .../library/lux/control/concurrency/thread.lux | 8 +- stdlib/source/library/lux/control/exception.lux | 32 +- .../source/library/lux/control/function/memo.lux | 2 +- .../source/library/lux/control/function/mutual.lux | 4 +- stdlib/source/library/lux/control/lazy.lux | 4 +- stdlib/source/library/lux/control/maybe.lux | 42 +- stdlib/source/library/lux/control/parser.lux | 138 +- .../source/library/lux/control/parser/analysis.lux | 30 +- .../source/library/lux/control/parser/binary.lux | 26 +- stdlib/source/library/lux/control/parser/cli.lux | 34 +- stdlib/source/library/lux/control/parser/code.lux | 76 +- .../library/lux/control/parser/environment.lux | 4 +- stdlib/source/library/lux/control/parser/json.lux | 48 +- .../library/lux/control/parser/synthesis.lux | 30 +- stdlib/source/library/lux/control/parser/text.lux | 62 +- stdlib/source/library/lux/control/parser/tree.lux | 6 +- stdlib/source/library/lux/control/parser/type.lux | 72 +- stdlib/source/library/lux/control/parser/xml.lux | 48 +- stdlib/source/library/lux/control/pipe.lux | 2 +- stdlib/source/library/lux/control/region.lux | 48 +- stdlib/source/library/lux/control/remember.lux | 10 +- stdlib/source/library/lux/control/try.lux | 72 +- stdlib/source/library/lux/control/writer.lux | 6 +- stdlib/source/library/lux/data/binary.lux | 38 +- stdlib/source/library/lux/data/bit.lux | 6 +- .../source/library/lux/data/collection/array.lux | 46 +- .../library/lux/data/collection/dictionary.lux | 196 +- .../lux/data/collection/dictionary/ordered.lux | 204 +- .../lux/data/collection/dictionary/plist.lux | 28 +- stdlib/source/library/lux/data/collection/list.lux | 164 +- .../source/library/lux/data/collection/queue.lux | 2 +- .../library/lux/data/collection/queue/priority.lux | 36 +- stdlib/source/library/lux/data/collection/row.lux | 90 +- .../library/lux/data/collection/sequence.lux | 4 +- .../library/lux/data/collection/set/multi.lux | 2 +- .../source/library/lux/data/collection/stack.lux | 10 +- stdlib/source/library/lux/data/collection/tree.lux | 2 +- .../library/lux/data/collection/tree/finger.lux | 24 +- .../library/lux/data/collection/tree/zipper.lux | 88 +- stdlib/source/library/lux/data/format/binary.lux | 6 +- stdlib/source/library/lux/data/format/css.lux | 4 +- .../source/library/lux/data/format/css/value.lux | 6 +- stdlib/source/library/lux/data/format/html.lux | 34 +- stdlib/source/library/lux/data/format/json.lux | 76 +- stdlib/source/library/lux/data/format/markdown.lux | 4 +- stdlib/source/library/lux/data/format/tar.lux | 24 +- stdlib/source/library/lux/data/format/xml.lux | 26 +- stdlib/source/library/lux/data/name.lux | 6 +- stdlib/source/library/lux/data/sum.lux | 30 +- stdlib/source/library/lux/data/text.lux | 26 +- .../source/library/lux/data/text/encoding/utf8.lux | 4 +- stdlib/source/library/lux/data/text/escape.lux | 16 +- stdlib/source/library/lux/data/text/format.lux | 4 +- stdlib/source/library/lux/data/text/regex.lux | 48 +- .../source/library/lux/data/text/unicode/set.lux | 4 +- stdlib/source/library/lux/debug.lux | 40 +- stdlib/source/library/lux/documentation.lux | 86 +- stdlib/source/library/lux/extension.lux | 4 +- stdlib/source/library/lux/ffi.js.lux | 40 +- stdlib/source/library/lux/ffi.jvm.lux | 180 +- stdlib/source/library/lux/ffi.lua.lux | 34 +- stdlib/source/library/lux/ffi.old.lux | 234 +- stdlib/source/library/lux/ffi.php.lux | 36 +- stdlib/source/library/lux/ffi.py.lux | 34 +- stdlib/source/library/lux/ffi.rb.lux | 38 +- stdlib/source/library/lux/ffi.scm.lux | 16 +- stdlib/source/library/lux/macro.lux | 30 +- stdlib/source/library/lux/macro/code.lux | 42 +- stdlib/source/library/lux/macro/local.lux | 28 +- stdlib/source/library/lux/macro/syntax.lux | 26 +- .../source/library/lux/macro/syntax/definition.lux | 8 +- stdlib/source/library/lux/macro/syntax/export.lux | 6 +- stdlib/source/library/lux/macro/template.lux | 20 +- stdlib/source/library/lux/math/infix.lux | 18 +- stdlib/source/library/lux/math/modular.lux | 6 +- stdlib/source/library/lux/math/modulus.lux | 2 +- stdlib/source/library/lux/math/number.lux | 32 +- stdlib/source/library/lux/math/number/frac.lux | 22 +- stdlib/source/library/lux/math/number/i64.lux | 4 +- stdlib/source/library/lux/math/number/int.lux | 4 +- stdlib/source/library/lux/math/number/nat.lux | 58 +- stdlib/source/library/lux/math/number/ratio.lux | 6 +- stdlib/source/library/lux/math/number/rev.lux | 20 +- stdlib/source/library/lux/math/random.lux | 40 +- stdlib/source/library/lux/meta.lux | 252 +-- stdlib/source/library/lux/meta/location.lux | 10 +- stdlib/source/library/lux/program.lux | 12 +- stdlib/source/library/lux/target/common_lisp.lux | 6 +- stdlib/source/library/lux/target/js.lux | 2 +- stdlib/source/library/lux/target/jvm.lux | 162 +- stdlib/source/library/lux/target/jvm/attribute.lux | 18 +- stdlib/source/library/lux/target/jvm/bytecode.lux | 60 +- .../lux/target/jvm/bytecode/environment.lux | 16 +- .../lux/target/jvm/bytecode/instruction.lux | 6 +- stdlib/source/library/lux/target/jvm/constant.lux | 28 +- .../library/lux/target/jvm/constant/pool.lux | 12 +- .../library/lux/target/jvm/encoding/signed.lux | 2 +- .../library/lux/target/jvm/encoding/unsigned.lux | 4 +- stdlib/source/library/lux/target/jvm/loader.lux | 8 +- stdlib/source/library/lux/target/jvm/method.lux | 8 +- .../source/library/lux/target/jvm/reflection.lux | 56 +- stdlib/source/library/lux/target/jvm/type/lux.lux | 16 +- stdlib/source/library/lux/target/python.lux | 4 +- stdlib/source/library/lux/target/ruby.lux | 2 +- stdlib/source/library/lux/target/scheme.lux | 14 +- stdlib/source/library/lux/test.lux | 8 +- stdlib/source/library/lux/time.lux | 2 +- stdlib/source/library/lux/time/date.lux | 4 +- stdlib/source/library/lux/time/day.lux | 4 +- stdlib/source/library/lux/time/duration.lux | 4 +- stdlib/source/library/lux/time/month.lux | 4 +- stdlib/source/library/lux/time/year.lux | 6 +- .../library/lux/tool/compiler/default/init.lux | 34 +- .../library/lux/tool/compiler/default/platform.lux | 48 +- .../lux/tool/compiler/language/lux/analysis.lux | 209 +- .../tool/compiler/language/lux/analysis/macro.lux | 6 +- .../lux/tool/compiler/language/lux/directive.lux | 2 +- .../lux/tool/compiler/language/lux/generation.lux | 70 +- .../tool/compiler/language/lux/phase/analysis.lux | 36 +- .../compiler/language/lux/phase/analysis/case.lux | 100 +- .../language/lux/phase/analysis/case/coverage.lux | 112 +- .../language/lux/phase/analysis/function.lux | 20 +- .../language/lux/phase/analysis/inference.lux | 79 +- .../language/lux/phase/analysis/module.lux | 60 +- .../language/lux/phase/analysis/primitive.lux | 4 +- .../language/lux/phase/analysis/reference.lux | 16 +- .../compiler/language/lux/phase/analysis/scope.lux | 70 +- .../language/lux/phase/analysis/structure.lux | 82 +- .../compiler/language/lux/phase/analysis/type.lux | 10 +- .../tool/compiler/language/lux/phase/directive.lux | 16 +- .../tool/compiler/language/lux/phase/extension.lux | 34 +- .../language/lux/phase/extension/analysis/js.lux | 30 +- .../language/lux/phase/extension/analysis/jvm.lux | 268 +-- .../language/lux/phase/extension/analysis/lua.lux | 32 +- .../language/lux/phase/extension/analysis/lux.lux | 22 +- .../language/lux/phase/extension/analysis/php.lux | 26 +- .../lux/phase/extension/analysis/python.lux | 30 +- .../language/lux/phase/extension/analysis/ruby.lux | 24 +- .../lux/phase/extension/analysis/scheme.lux | 14 +- .../language/lux/phase/extension/directive/jvm.lux | 28 +- .../language/lux/phase/extension/directive/lux.lux | 38 +- .../extension/generation/common_lisp/common.lux | 4 +- .../lux/phase/extension/generation/js/common.lux | 18 +- .../lux/phase/extension/generation/jvm/common.lux | 4 +- .../lux/phase/extension/generation/jvm/host.lux | 52 +- .../lux/phase/extension/generation/lua/common.lux | 14 +- .../lux/phase/extension/generation/php/common.lux | 4 +- .../phase/extension/generation/python/common.lux | 22 +- .../lux/phase/extension/generation/r/common.lux | 4 +- .../lux/phase/extension/generation/ruby/common.lux | 14 +- .../phase/extension/generation/scheme/common.lux | 4 +- .../language/lux/phase/generation/common_lisp.lux | 4 +- .../lux/phase/generation/common_lisp/case.lux | 14 +- .../lux/phase/generation/common_lisp/runtime.lux | 4 +- .../lux/phase/generation/common_lisp/structure.lux | 2 +- .../compiler/language/lux/phase/generation/js.lux | 4 +- .../language/lux/phase/generation/js/case.lux | 36 +- .../language/lux/phase/generation/js/runtime.lux | 4 +- .../language/lux/phase/generation/js/structure.lux | 2 +- .../compiler/language/lux/phase/generation/jvm.lux | 8 +- .../language/lux/phase/generation/jvm/case.lux | 12 +- .../language/lux/phase/generation/jvm/debug.lux | 4 +- .../phase/generation/jvm/function/method/apply.lux | 8 +- .../jvm/function/method/implementation.lux | 4 +- .../phase/generation/jvm/function/method/init.lux | 4 +- .../phase/generation/jvm/function/method/new.lux | 4 +- .../phase/generation/jvm/function/method/reset.lux | 4 +- .../language/lux/phase/generation/jvm/host.lux | 16 +- .../lux/phase/generation/jvm/primitive.lux | 8 +- .../language/lux/phase/generation/jvm/program.lux | 4 +- .../lux/phase/generation/jvm/reference.lux | 4 +- .../language/lux/phase/generation/jvm/runtime.lux | 56 +- .../lux/phase/generation/jvm/structure.lux | 10 +- .../compiler/language/lux/phase/generation/lua.lux | 4 +- .../language/lux/phase/generation/lua/case.lux | 16 +- .../language/lux/phase/generation/lua/runtime.lux | 4 +- .../lux/phase/generation/lua/structure.lux | 2 +- .../compiler/language/lux/phase/generation/php.lux | 4 +- .../language/lux/phase/generation/php/case.lux | 16 +- .../language/lux/phase/generation/php/runtime.lux | 4 +- .../lux/phase/generation/php/structure.lux | 2 +- .../language/lux/phase/generation/python.lux | 4 +- .../language/lux/phase/generation/python/case.lux | 28 +- .../lux/phase/generation/python/runtime.lux | 6 +- .../lux/phase/generation/python/structure.lux | 2 +- .../compiler/language/lux/phase/generation/r.lux | 4 +- .../language/lux/phase/generation/r/case.lux | 18 +- .../lux/phase/generation/r/procedure/common.lux | 4 +- .../lux/phase/generation/r/procedure/host.lux | 4 +- .../language/lux/phase/generation/r/runtime.lux | 8 +- .../language/lux/phase/generation/r/structure.lux | 2 +- .../language/lux/phase/generation/reference.lux | 8 +- .../language/lux/phase/generation/ruby.lux | 4 +- .../language/lux/phase/generation/ruby/case.lux | 30 +- .../lux/phase/generation/ruby/function.lux | 2 +- .../language/lux/phase/generation/ruby/runtime.lux | 4 +- .../lux/phase/generation/ruby/structure.lux | 2 +- .../language/lux/phase/generation/scheme.lux | 4 +- .../language/lux/phase/generation/scheme/case.lux | 12 +- .../lux/phase/generation/scheme/function.lux | 4 +- .../lux/phase/generation/scheme/runtime.lux | 4 +- .../lux/phase/generation/scheme/structure.lux | 2 +- .../tool/compiler/language/lux/phase/synthesis.lux | 38 +- .../compiler/language/lux/phase/synthesis/case.lux | 166 +- .../language/lux/phase/synthesis/function.lux | 76 +- .../compiler/language/lux/phase/synthesis/loop.lux | 60 +- .../language/lux/phase/synthesis/variable.lux | 266 +-- .../lux/tool/compiler/language/lux/program.lux | 2 +- .../lux/tool/compiler/language/lux/syntax.lux | 82 +- .../lux/tool/compiler/language/lux/synthesis.lux | 274 +-- .../library/lux/tool/compiler/meta/archive.lux | 40 +- .../lux/tool/compiler/meta/archive/artifact.lux | 22 +- .../lux/tool/compiler/meta/archive/document.lux | 4 +- .../lux/tool/compiler/meta/cache/dependency.lux | 4 +- .../library/lux/tool/compiler/meta/io/archive.lux | 54 +- .../library/lux/tool/compiler/meta/io/context.lux | 24 +- .../lux/tool/compiler/meta/packager/jvm.lux | 14 +- .../lux/tool/compiler/meta/packager/scheme.lux | 2 +- stdlib/source/library/lux/tool/compiler/phase.lux | 6 +- .../source/library/lux/tool/compiler/reference.lux | 16 +- .../lux/tool/compiler/reference/variable.lux | 14 +- stdlib/source/library/lux/tool/interpreter.lux | 12 +- stdlib/source/library/lux/type.lux | 132 +- stdlib/source/library/lux/type/abstract.lux | 82 +- stdlib/source/library/lux/type/check.lux | 282 +-- stdlib/source/library/lux/type/dynamic.lux | 2 +- stdlib/source/library/lux/type/implicit.lux | 54 +- stdlib/source/library/lux/type/poly.lux | 36 +- stdlib/source/library/lux/type/refinement.lux | 22 +- stdlib/source/library/lux/type/resource.lux | 2 +- stdlib/source/library/lux/world/console.lux | 26 +- stdlib/source/library/lux/world/db/jdbc/input.lux | 4 +- stdlib/source/library/lux/world/db/jdbc/output.lux | 64 +- stdlib/source/library/lux/world/file.lux | 170 +- stdlib/source/library/lux/world/file/watch.lux | 36 +- .../source/library/lux/world/net/http/client.lux | 14 +- .../source/library/lux/world/net/http/request.lux | 20 +- stdlib/source/library/lux/world/program.lux | 46 +- stdlib/source/library/lux/world/shell.lux | 26 +- stdlib/source/poly/lux/data/format/json.lux | 6 +- stdlib/source/program/aedifex.lux | 30 +- .../source/program/aedifex/artifact/snapshot.lux | 12 +- .../program/aedifex/artifact/snapshot/build.lux | 2 +- .../program/aedifex/artifact/snapshot/stamp.lux | 4 +- .../program/aedifex/artifact/snapshot/version.lux | 4 +- .../aedifex/artifact/snapshot/version/value.lux | 2 +- .../source/program/aedifex/artifact/time/date.lux | 2 +- .../source/program/aedifex/artifact/versioning.lux | 6 +- stdlib/source/program/aedifex/cli.lux | 8 +- stdlib/source/program/aedifex/command/auto.lux | 4 +- stdlib/source/program/aedifex/command/build.lux | 48 +- stdlib/source/program/aedifex/command/deploy.lux | 2 +- stdlib/source/program/aedifex/command/deps.lux | 2 +- stdlib/source/program/aedifex/command/install.lux | 4 +- stdlib/source/program/aedifex/command/test.lux | 4 +- .../program/aedifex/dependency/deployment.lux | 20 +- .../program/aedifex/dependency/resolution.lux | 42 +- .../source/program/aedifex/dependency/status.lux | 10 +- stdlib/source/program/aedifex/format.lux | 4 +- stdlib/source/program/aedifex/hash.lux | 4 +- stdlib/source/program/aedifex/input.lux | 8 +- .../source/program/aedifex/metadata/artifact.lux | 28 +- .../source/program/aedifex/metadata/snapshot.lux | 22 +- stdlib/source/program/aedifex/package.lux | 12 +- stdlib/source/program/aedifex/parser.lux | 2 +- stdlib/source/program/aedifex/pom.lux | 48 +- stdlib/source/program/aedifex/project.lux | 4 +- stdlib/source/program/aedifex/repository.lux | 16 +- stdlib/source/program/aedifex/repository/local.lux | 2 +- .../source/program/aedifex/repository/origin.lux | 4 +- .../source/program/aedifex/repository/remote.lux | 8 +- stdlib/source/program/compositor.lux | 18 +- stdlib/source/program/compositor/cli.lux | 12 +- stdlib/source/program/compositor/export.lux | 4 +- stdlib/source/program/compositor/import.lux | 4 +- stdlib/source/specification/aedifex/repository.lux | 4 +- stdlib/source/specification/compositor.lux | 4 +- .../specification/compositor/analysis/type.lux | 16 +- .../specification/compositor/generation/case.lux | 32 +- .../specification/compositor/generation/common.lux | 160 +- .../compositor/generation/primitive.lux | 4 +- .../compositor/generation/reference.lux | 8 +- .../compositor/generation/structure.lux | 10 +- stdlib/source/specification/lux/abstract/codec.lux | 4 +- stdlib/source/specification/lux/world/console.lux | 6 +- stdlib/source/specification/lux/world/file.lux | 36 +- stdlib/source/specification/lux/world/shell.lux | 10 +- .../aedifex/artifact/snapshot/version/value.lux | 2 +- stdlib/source/test/aedifex/artifact/time/date.lux | 4 +- stdlib/source/test/aedifex/cache.lux | 10 +- stdlib/source/test/aedifex/cli.lux | 14 +- stdlib/source/test/aedifex/command/auto.lux | 12 +- stdlib/source/test/aedifex/command/build.lux | 46 +- stdlib/source/test/aedifex/command/deps.lux | 8 +- stdlib/source/test/aedifex/command/install.lux | 2 +- stdlib/source/test/aedifex/command/pom.lux | 6 +- stdlib/source/test/aedifex/command/test.lux | 12 +- stdlib/source/test/aedifex/command/version.lux | 4 +- .../source/test/aedifex/dependency/deployment.lux | 4 +- .../source/test/aedifex/dependency/resolution.lux | 108 +- stdlib/source/test/aedifex/dependency/status.lux | 2 +- stdlib/source/test/aedifex/hash.lux | 12 +- stdlib/source/test/aedifex/metadata/artifact.lux | 8 +- stdlib/source/test/aedifex/metadata/snapshot.lux | 8 +- stdlib/source/test/aedifex/package.lux | 18 +- stdlib/source/test/aedifex/parser.lux | 4 +- stdlib/source/test/aedifex/pom.lux | 10 +- stdlib/source/test/aedifex/project.lux | 8 +- stdlib/source/test/aedifex/repository.lux | 6 +- stdlib/source/test/aedifex/repository/local.lux | 4 +- stdlib/source/test/aedifex/repository/remote.lux | 16 +- stdlib/source/test/lux.lux | 62 +- stdlib/source/test/lux/abstract/apply.lux | 6 +- stdlib/source/test/lux/abstract/codec.lux | 4 +- stdlib/source/test/lux/abstract/enum.lux | 2 +- stdlib/source/test/lux/abstract/equivalence.lux | 2 +- stdlib/source/test/lux/abstract/functor.lux | 16 +- stdlib/source/test/lux/abstract/monad/free.lux | 6 +- stdlib/source/test/lux/abstract/predicate.lux | 2 +- stdlib/source/test/lux/control/concatenative.lux | 2 +- .../source/test/lux/control/concurrency/actor.lux | 30 +- .../source/test/lux/control/concurrency/async.lux | 10 +- stdlib/source/test/lux/control/concurrency/frp.lux | 24 +- .../test/lux/control/concurrency/semaphore.lux | 10 +- stdlib/source/test/lux/control/continuation.lux | 4 +- stdlib/source/test/lux/control/exception.lux | 32 +- .../source/test/lux/control/function/contract.lux | 8 +- stdlib/source/test/lux/control/maybe.lux | 12 +- stdlib/source/test/lux/control/parser.lux | 22 +- stdlib/source/test/lux/control/parser/analysis.lux | 34 +- stdlib/source/test/lux/control/parser/binary.lux | 42 +- stdlib/source/test/lux/control/parser/cli.lux | 22 +- stdlib/source/test/lux/control/parser/code.lux | 26 +- .../source/test/lux/control/parser/environment.lux | 4 +- stdlib/source/test/lux/control/parser/json.lux | 68 +- .../source/test/lux/control/parser/synthesis.lux | 34 +- stdlib/source/test/lux/control/parser/text.lux | 32 +- stdlib/source/test/lux/control/parser/tree.lux | 10 +- stdlib/source/test/lux/control/parser/type.lux | 80 +- stdlib/source/test/lux/control/parser/xml.lux | 66 +- stdlib/source/test/lux/control/region.lux | 18 +- stdlib/source/test/lux/control/remember.lux | 30 +- stdlib/source/test/lux/control/try.lux | 18 +- stdlib/source/test/lux/data/binary.lux | 18 +- stdlib/source/test/lux/data/collection/array.lux | 16 +- .../source/test/lux/data/collection/dictionary.lux | 26 +- .../lux/data/collection/dictionary/ordered.lux | 6 +- stdlib/source/test/lux/data/collection/list.lux | 14 +- 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 | 8 +- .../test/lux/data/collection/set/ordered.lux | 2 +- stdlib/source/test/lux/data/collection/stack.lux | 6 +- .../test/lux/data/collection/tree/finger.lux | 10 +- stdlib/source/test/lux/data/format/json.lux | 34 +- stdlib/source/test/lux/data/format/tar.lux | 86 +- stdlib/source/test/lux/data/sum.lux | 12 +- stdlib/source/test/lux/data/text.lux | 10 +- stdlib/source/test/lux/data/text/escape.lux | 20 +- stdlib/source/test/lux/data/text/format.lux | 2 +- stdlib/source/test/lux/data/text/regex.lux | 26 +- stdlib/source/test/lux/debug.lux | 18 +- stdlib/source/test/lux/documentation.lux | 8 +- stdlib/source/test/lux/extension.lux | 12 +- stdlib/source/test/lux/ffi.jvm.lux | 40 +- stdlib/source/test/lux/ffi.lua.lux | 2 +- stdlib/source/test/lux/ffi.old.lux | 10 +- stdlib/source/test/lux/locale.lux | 14 +- stdlib/source/test/lux/macro.lux | 12 +- stdlib/source/test/lux/macro/code.lux | 20 +- stdlib/source/test/lux/macro/local.lux | 14 +- stdlib/source/test/lux/macro/syntax/check.lux | 4 +- .../source/test/lux/macro/syntax/declaration.lux | 4 +- stdlib/source/test/lux/macro/syntax/definition.lux | 16 +- stdlib/source/test/lux/macro/syntax/export.lux | 2 +- stdlib/source/test/lux/macro/syntax/input.lux | 4 +- stdlib/source/test/lux/macro/template.lux | 8 +- stdlib/source/test/lux/math/logic/fuzzy.lux | 4 +- stdlib/source/test/lux/math/modular.lux | 10 +- stdlib/source/test/lux/math/modulus.lux | 8 +- stdlib/source/test/lux/math/number.lux | 12 +- stdlib/source/test/lux/math/number/i64.lux | 2 +- stdlib/source/test/lux/math/number/ratio.lux | 4 +- stdlib/source/test/lux/meta.lux | 204 +- stdlib/source/test/lux/program.lux | 4 +- stdlib/source/test/lux/static.lux | 8 +- stdlib/source/test/lux/target/jvm.lux | 58 +- stdlib/source/test/lux/time.lux | 16 +- stdlib/source/test/lux/time/date.lux | 8 +- stdlib/source/test/lux/time/day.lux | 8 +- stdlib/source/test/lux/time/instant.lux | 4 +- stdlib/source/test/lux/time/month.lux | 8 +- stdlib/source/test/lux/time/year.lux | 12 +- .../compiler/language/lux/phase/analysis/case.lux | 30 +- .../language/lux/phase/analysis/function.lux | 10 +- .../language/lux/phase/analysis/primitive.lux | 16 +- .../language/lux/phase/analysis/reference.lux | 12 +- .../language/lux/phase/analysis/structure.lux | 30 +- .../language/lux/phase/extension/analysis/lux.lux | 4 +- .../compiler/language/lux/phase/synthesis/case.lux | 70 +- .../language/lux/phase/synthesis/function.lux | 134 +- .../compiler/language/lux/phase/synthesis/loop.lux | 16 +- .../language/lux/phase/synthesis/primitive.lux | 10 +- .../language/lux/phase/synthesis/structure.lux | 4 +- .../language/lux/phase/synthesis/variable.lux | 64 +- .../test/lux/tool/compiler/language/lux/syntax.lux | 16 +- stdlib/source/test/lux/type.lux | 16 +- stdlib/source/test/lux/type/abstract.lux | 6 +- stdlib/source/test/lux/type/check.lux | 231 +- stdlib/source/test/lux/type/dynamic.lux | 12 +- stdlib/source/test/lux/type/poly/equivalence.lux | 10 +- stdlib/source/test/lux/type/poly/json.lux | 10 +- stdlib/source/test/lux/type/refinement.lux | 2 +- stdlib/source/test/lux/type/resource.lux | 8 +- stdlib/source/test/lux/world/console.lux | 4 +- stdlib/source/test/lux/world/file/watch.lux | 14 +- stdlib/source/test/lux/world/net/http/client.lux | 6 +- stdlib/source/test/lux/world/program.lux | 4 +- stdlib/source/test/lux/world/shell.lux | 34 +- 472 files changed, 7824 insertions(+), 7852 deletions(-) delete mode 100644 lux-r/source/luxc/lang/synthesis/variable.lux diff --git a/documentation/bookmark/security/capability_based.md b/documentation/bookmark/security/capability_based.md index 06e79850b..26f24c0e0 100644 --- a/documentation/bookmark/security/capability_based.md +++ b/documentation/bookmark/security/capability_based.md @@ -1,4 +1,5 @@ # Reference +1. [Introducing cap-std, a capability-based version of the Rust standard library](https://blog.sunfishcode.online/introducing-cap-std/) 1. [Introduction To Capability Based Security](http://www.skyhunter.com/marcs/capabilityIntro/index.html) diff --git a/licentia/source/program/licentia.lux b/licentia/source/program/licentia.lux index 058f762c7..21ba1bbfd 100644 --- a/licentia/source/program/licentia.lux +++ b/licentia/source/program/licentia.lux @@ -76,8 +76,8 @@ (\ ! each /output.license))))] (\ file.default write (\ utf8.codec encoded document) output)))] (wrap (debug.log! (case ?done - (#try.Success _) + {#try.Success _} (success_message output) - (#try.Failure message) + {#try.Failure message} message))))) diff --git a/licentia/source/program/licentia/output.lux b/licentia/source/program/licentia/output.lux index c271f3005..3429df952 100644 --- a/licentia/source/program/licentia/output.lux +++ b/licentia/source/program/licentia/output.lux @@ -167,7 +167,7 @@ (def: .public (extension value) (-> Extension Text) (let [[show? document] (case (value@ #license.notification_period value) - (#.Some period) + {#.Some period} [true (extension.notification_requirement period)] #.None @@ -195,14 +195,14 @@ (-> Attribution Text) (let [copyright_notice (format "Attribution Copyright Notice: " (value@ #license.copyright_notice value)) phrase (case (value@ #license.phrase value) - (#.Some phrase) + {#.Some phrase} (format text.new_line "Attribution Phrase: " phrase text.new_line) #.None "") url (format text.new_line "Attribution URL: " (value@ #license.url value)) image (case (value@ #license.image value) - (#.Some image) + {#.Some image} (format text.new_line "Attribution Image: " image) #.None @@ -258,7 +258,7 @@ (maybe\each ..identification) (maybe.default "")) identified? (case (value@ #license.identification value) - (#.Some _) + {#.Some _} true #.None diff --git a/licentia/source/test/licentia.lux b/licentia/source/test/licentia.lux index 4940b31eb..7caf5301c 100644 --- a/licentia/source/test/licentia.lux +++ b/licentia/source/test/licentia.lux @@ -229,7 +229,7 @@ (present? extension.distinctness_requirement))) (_.test "The community must be notified of new extensions." (case (value@ #license.notification_period extension) - (#.Some period) + {#.Some period} (present? (extension.notification_requirement period)) #.None @@ -298,7 +298,7 @@ (_.test "Identification is present (if the license is identified)." (case (value@ #license.identification license) - (#.Some identification) + {#.Some identification} (and (present? (output.identification identification)) (present? miscellaneous.new_versions)) @@ -308,7 +308,7 @@ (_.test "Black-lists (if wanted by licensor) are explicitly enumerated and justified." (list.every? (function (_ black_list) (let [black_list_is_justified? (case (value@ #license.justification black_list) - (#.Some justification) + {#.Some justification} (present? justification) #.None @@ -348,7 +348,7 @@ (..about_extension present? (value@ #license.extension license)) (case (value@ #license.attribution license) - (#.Some attribution) + {#.Some attribution} (..about_attribution present? attribution) #.None diff --git a/lux-bootstrapper/src/lux/analyser.clj b/lux-bootstrapper/src/lux/analyser.clj index f837d8cee..ce571cae8 100644 --- a/lux-bootstrapper/src/lux/analyser.clj +++ b/lux-bootstrapper/src/lux/analyser.clj @@ -86,14 +86,28 @@ (|do [_ (&type/check exo-type &type/Text)] (return (&/|list (&&/|meta exo-type location (&&/$text ?value))))) - (&/$Tuple ?elems) - (&/with-analysis-meta location exo-type - (&&lux/analyse-record analyse exo-type ?elems)) - (&/$Tag ?ident) (&/with-analysis-meta location exo-type (analyse-variant+ analyse exo-type ?ident &/$End)) + (&/$Variant (&/$Item [command-meta command] parameters)) + (|case command + (&/$Nat idx) + (|let [(&/$Item [_ (&/$Bit ?right)] parameters*) parameters] + (&/with-analysis-meta location exo-type + (&&lux/analyse-variant analyse (&/$Right exo-type) (if ?right (inc idx) idx) ?right parameters*))) + + (&/$Tag ?ident) + (&/with-analysis-meta location exo-type + (analyse-variant+ analyse exo-type ?ident parameters)) + + _ + (&/fail-with-loc (str "[Analyser Error] Unknown syntax: " (&/show-ast (&/T [(&/T ["" -1 -1]) token]))))) + + (&/$Tuple ?elems) + (&/with-analysis-meta location exo-type + (&&lux/analyse-record analyse exo-type ?elems)) + (&/$Identifier ?ident) (&/with-analysis-meta location exo-type (&&lux/analyse-identifier analyse exo-type ?ident)) @@ -146,7 +160,7 @@ )) parameters] (&/with-location location (|case ?labels - [_ (&/$Form ?tags)] + [_ (&/$Variant ?tags)] (&&lux/analyse-def-type-tagged analyse optimize eval! compile-def ?name ?value false ?tags exported?) [_ (&/$Tuple ?slots)] @@ -176,15 +190,6 @@ :else (&&common/analyse-proc analyse exo-type ?procedure parameters)))) - - (&/$Nat idx) - (|let [(&/$Item [_ (&/$Bit ?right)] parameters*) parameters] - (&/with-analysis-meta location exo-type - (&&lux/analyse-variant analyse (&/$Right exo-type) (if ?right (inc idx) idx) ?right parameters*))) - - (&/$Tag ?ident) - (&/with-analysis-meta location exo-type - (analyse-variant+ analyse exo-type ?ident parameters)) ;; Pattern-matching syntax. (&/$Variant ?pattern-matching) diff --git a/lux-bootstrapper/src/lux/analyser/case.clj b/lux-bootstrapper/src/lux/analyser/case.clj index 49d781c3b..5d2bb020a 100644 --- a/lux-bootstrapper/src/lux/analyser/case.clj +++ b/lux-bootstrapper/src/lux/analyser/case.clj @@ -358,7 +358,7 @@ [=test =kont] (analyse-pattern &/$None case-type unit-tuple kont)] (return (&/T [($VariantTestAC (&/T [idx (&/|length group) =test])) =kont]))) - (&/$Form (&/$Item [_ (&/$Nat idx)] (&/$Item [_ (&/$Bit right?)] ?values))) + (&/$Variant (&/$Item [_ (&/$Nat idx)] (&/$Item [_ (&/$Bit right?)] ?values))) (let [idx (if right? (inc idx) idx)] (|do [value-type* (adjust-type value-type) case-type (&type/sum-at idx value-type*) @@ -369,7 +369,7 @@ (analyse-pattern &/$None case-type (&/T [(&/T ["" -1 -1]) (&/$Tuple ?values)]) kont))] (return (&/T [($VariantTestAC (&/T [idx (&/|length (&type/flatten-sum value-type*)) =test])) =kont])))) - (&/$Form (&/$Item [_ (&/$Tag ?ident)] ?values)) + (&/$Variant (&/$Item [_ (&/$Tag ?ident)] ?values)) (|do [[=module =name] (&&/resolved-ident ?ident) must-infer? (&type/unknown? value-type) [_exported? variant-type** group idx] (&module/find-tag =module (str "#" =name)) diff --git a/lux-cl/source/program.lux b/lux-cl/source/program.lux index cf4ff1036..ef9c02b0e 100644 --- a/lux-cl/source/program.lux +++ b/lux-cl/source/program.lux @@ -169,7 +169,7 @@ (let [sub_value (:as java/lang/Object sub_value)] (`` (<| (~~ (template [ ] [(case (ffi.check sub_value) - (#.Some sub_value) + {#.Some sub_value} (`` (|> sub_value (~~ (template.splice )))) #.None)] @@ -204,7 +204,7 @@ org/armedbear/lisp/LispObject (case (array.read! (|> idx java/lang/Integer::longValue (:as Nat)) (:as (Array java/lang/Object) value)) - (#.Some sub) + {#.Some sub} (to_sub sub) #.None @@ -224,7 +224,7 @@ value (read (org/armedbear/lisp/LispObject::NTH +2 host_object))] (wrap [(java/lang/Long::intValue (:as java/lang/Long tag)) (case (ffi.check org/armedbear/lisp/Nil (org/armedbear/lisp/LispObject::NTH +1 host_object)) - (#.Some _) + {#.Some _} (: Any (ffi.null)) _ @@ -239,18 +239,18 @@ (if (n.< size idx) ... TODO: Start using "SVREF" instead of "elt" ASAP (case (read (org/armedbear/lisp/LispObject::elt (.int idx) host_object)) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success member) + {#try.Success member} (recur (++ idx) (array.write! idx (:as Any member) output))) - (#try.Success output))))) + {#try.Success output})))) (def: (read host_object) (Reader org/armedbear/lisp/LispObject) (`` (<| (~~ (template [ ] [(case (ffi.check host_object) - (#.Some host_object) + {#.Some host_object} (`` (|> host_object (~~ (template.splice )))) #.None)] @@ -261,13 +261,13 @@ [org/armedbear/lisp/SimpleString [org/armedbear/lisp/SimpleString::getStringValue #try.Success]] [org/armedbear/lisp/Cons [(read_variant read)]] [org/armedbear/lisp/SimpleVector [(read_tuple read)]] - [org/armedbear/lisp/Nil [(new> (#try.Success false) [])]] + [org/armedbear/lisp/Nil [(new> {#try.Success false} [])]] [org/armedbear/lisp/Closure [#try.Success]] [program/LuxADT [program/LuxADT::getValue #try.Success]])) (case (ffi.check org/armedbear/lisp/Symbol host_object) - (#.Some host_object) + {#.Some host_object} (if (same? (org/armedbear/lisp/Symbol::T) host_object) - (#try.Success true) + {#try.Success true} (exception.throw ..unknown_kind_of_object (:as java/lang/Object host_object))) #.None) @@ -289,7 +289,7 @@ (def: (expander macro inputs lux) Expander (case (ensure_macro macro) - (#.Some macro) + {#.Some macro} (call_macro inputs lux macro) #.None @@ -381,7 +381,7 @@ (:as Try) (exec ("lux io log" "TODO: Extender") - (#try.Failure "TODO: Extender")))) + {#try.Failure "TODO: Extender"}))) @.common_lisp (def: (extender handler) diff --git a/lux-js/source/program.lux b/lux-js/source/program.lux index 1e36e2906..8f81cd72f 100644 --- a/lux-js/source/program.lux +++ b/lux-js/source/program.lux @@ -69,7 +69,7 @@ (exception: (null_has_no_lux_representation [code (Maybe _.Expression)]) (case code - (#.Some code) + {#.Some code} (_.code code) #.None @@ -160,7 +160,7 @@ (-> Int org/openjdk/nashorn/api/scripting/JSObject) (ffi.object [] org/openjdk/nashorn/api/scripting/AbstractJSObject [program/IntValue] [] -... Methods + ... Methods (program/IntValue [] (getValue self []) java/lang/Object (:as java/lang/Object value)) @@ -214,18 +214,18 @@ (let [js_object (: (-> java/lang/Object org/openjdk/nashorn/api/scripting/JSObject) (function (_ sub_value) (<| (case (ffi.check [java/lang/Object] sub_value) - (#.Some sub_value) + {#.Some sub_value} (|> sub_value (:as (Array java/lang/Object)) js_structure) #.None) (case (ffi.check java/lang/Long sub_value) - (#.Some sub_value) + {#.Some sub_value} (|> sub_value (:as Int) js_int) #.None) -... else + ... else (:as org/openjdk/nashorn/api/scripting/JSObject sub_value))))] (ffi.object [] org/openjdk/nashorn/api/scripting/AbstractJSObject [program/StructureValue] [] -... Methods + ... Methods (program/StructureValue [] (getValue self []) java/lang/Object (:as (Array java/lang/Object) value)) @@ -252,7 +252,7 @@ (^ (static runtime.variant_flag_field)) (case (array.read! 1 value) - (#.Some set!) + {#.Some set!} set! _ @@ -280,7 +280,7 @@ ["Class" (java/lang/Object::toString (java/lang/Object::getClass object))] ["Object" (java/lang/Object::toString object)] ["Keys" (case (ffi.check org/openjdk/nashorn/api/scripting/ScriptObjectMirror object) - (#.Some object) + {#.Some object} (|> object (org/openjdk/nashorn/api/scripting/ScriptObjectMirror::getOwnKeys true) (:as (Array Text)) @@ -295,17 +295,17 @@ (Maybe Int)) (case [(org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.i64_high_field] js_object) (org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.i64_low_field] js_object)] - (^multi [(#.Some high) (#.Some low)] + (^multi [{#.Some high} {#.Some low}] [[(ffi.check java/lang/Number high) (ffi.check java/lang/Number low)] - [(#.Some high) (#.Some low)]] + [{#.Some high} {#.Some low}]] [[(java/lang/Number::longValue high) (java/lang/Number::longValue low)] [high low]]) - (#.Some (.int (n.+ (|> high .nat (i64.left_shifted 32)) + {#.Some (.int (n.+ (|> high .nat (i64.left_shifted 32)) (if (i.< +0 (.int low)) (|> low .nat (i64.left_shifted 32) (i64.right_shifted 32)) - (.nat low))))) + (.nat low))))} _ #.None)) @@ -317,14 +317,14 @@ (case [(org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.variant_tag_field] js_object) (org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.variant_flag_field] js_object) (org/openjdk/nashorn/api/scripting/JSObject::getMember [runtime.variant_value_field] js_object)] - (^multi [(#.Some tag) ?flag (#.Some value)] + (^multi [{#.Some tag} ?flag {#.Some value}] [(ffi.check java/lang/Number tag) - (#.Some tag)] + {#.Some tag}] [(lux_object value) - (#try.Success value)]) - (#.Some [(java/lang/Number::intValue (:as java/lang/Number tag)) + {#try.Success value}]) + {#.Some [(java/lang/Number::intValue (:as java/lang/Number tag)) (maybe.else (ffi.null) ?flag) - value]) + value]} _ #.None)) @@ -340,22 +340,22 @@ (array.empty num_keys))] (if (n.< num_keys idx) (case (org/openjdk/nashorn/api/scripting/JSObject::getMember (%.nat idx) js_object) - (#.Some member) + {#.Some member} (case (ffi.check org/openjdk/nashorn/internal/runtime/Undefined member) - (#.Some _) + {#.Some _} (recur (++ idx) output) #.None (case (lux_object member) - (#try.Success parsed_member) + {#try.Success parsed_member} (recur (++ idx) (array.write! idx (:as java/lang/Object parsed_member) output)) - (#try.Failure error) + {#try.Failure error} #.None)) #.None (recur (++ idx) output)) - (#.Some output)))) + {#.Some output}))) #.None)) (def: (lux_object js_object) @@ -363,51 +363,51 @@ (`` (<| (if (ffi.null? js_object) (exception.except ..null_has_no_lux_representation [#.None])) (case (ffi.check org/openjdk/nashorn/internal/runtime/Undefined js_object) - (#.Some _) + {#.Some _} (exception.except ..undefined_has_no_lux_representation []) #.None) (~~ (template [] [(case (ffi.check js_object) - (#.Some js_object) - (#try.Success js_object) + {#.Some js_object} + {#try.Success js_object} #.None)] [java/lang/Boolean] [java/lang/String])) (~~ (template [ ] [(case (ffi.check js_object) - (#.Some js_object) - (#try.Success ( js_object)) + {#.Some js_object} + {#try.Success ( js_object)} #.None)] [java/lang/Number java/lang/Number::doubleValue] [program/StructureValue program/StructureValue::getValue] [program/IntValue program/IntValue::getValue])) (case (ffi.check org/openjdk/nashorn/api/scripting/ScriptObjectMirror js_object) - (#.Some js_object) + {#.Some js_object} (case (check_int js_object) - (#.Some value) - (#try.Success value) + {#.Some value} + {#try.Success value} #.None (case (check_variant lux_object js_object) - (#.Some value) - (#try.Success value) + {#.Some value} + {#try.Success value} #.None (case (check_tuple lux_object js_object) - (#.Some value) - (#try.Success value) + {#.Some value} + {#try.Success value} #.None (if (org/openjdk/nashorn/api/scripting/JSObject::isFunction js_object) - (#try.Success js_object) -... (exception.except ..unknown_kind_of_host_object [(:as java/lang/Object js_object)]) - (#try.Success js_object) + {#try.Success js_object} + ... (exception.except ..unknown_kind_of_host_object [(:as java/lang/Object js_object)]) + {#try.Success js_object} )))) #.None) -... else -... (exception.except ..unknown_kind_of_host_object [(:as java/lang/Object js_object)]) - (#try.Success js_object) + ... else + ... (exception.except ..unknown_kind_of_host_object [(:as java/lang/Object js_object)]) + {#try.Success js_object} ))) (def: (ensure_function function) @@ -417,7 +417,7 @@ (:as java/lang/Object) (ffi.check org/openjdk/nashorn/api/scripting/JSObject))] (if (org/openjdk/nashorn/api/scripting/JSObject::isFunction function) - (#.Some function) + {#.Some function} #.None))) ) @@ -444,16 +444,16 @@ (def: (expander macro inputs lux) Expander (case (..ensure_function macro) - (#.Some macro) + {#.Some macro} (case (call_macro inputs lux macro) - (#try.Success output) + {#try.Success output} (|> output (:as java/lang/Object) lux_object (:as (Try (Try [Lux (List Code)])))) - (#try.Failure error) - (#try.Failure error)) + {#try.Failure error} + {#try.Failure error}) #.None (exception.except ..cannot_apply_a_non_function (:as java/lang/Object macro)))) @@ -462,7 +462,7 @@ @.js (def: (expander macro inputs lux) Expander - (#try.Success ((:as Macro' macro) inputs lux))) + {#try.Success ((:as Macro' macro) inputs lux)}) ]) (for [@.old @@ -471,11 +471,11 @@ (do try.monad [?output (javax/script/ScriptEngine::eval (_.code input) interpreter)] (case ?output - (#.Some output) + {#.Some output} (..lux_object output) #.None - (exception.except ..null_has_no_lux_representation [(#.Some input)])))) + (exception.except ..null_has_no_lux_representation [{#.Some input}])))) (def: (execute! interpreter input) (-> javax/script/ScriptEngine _.Statement (Try Any)) @@ -519,24 +519,24 @@ @.js (as_is (def: (eval code) (-> Text (Try (Maybe Any))) -... Note: I have to call "eval" this way -... in order to avoid a quirk of calling eval in Node -... when the code is running under "use strict";. + ... Note: I have to call "eval" this way + ... in order to avoid a quirk of calling eval in Node + ... when the code is running under "use strict";. (try (let [return ("js apply" (function.identity ("js constant" "eval")) code)] (if ("js object null?" return) #.None - (#.Some return))))) + {#.Some return})))) (def: (evaluate! alias input) (-> Context _.Expression (Try Any)) (do try.monad [?output (..eval (_.code input))] (case ?output - (#.Some output) + {#.Some output} (in output) #.None - (exception.except ..null_has_no_lux_representation [(#.Some input)])))) + (exception.except ..null_has_no_lux_representation [{#.Some input}])))) (def: (execute! input) (-> _.Statement (Try Any)) diff --git a/lux-jvm/source/luxc/lang/directive/jvm.lux b/lux-jvm/source/luxc/lang/directive/jvm.lux index b41e0b75f..b81a10c69 100644 --- a/lux-jvm/source/luxc/lang/directive/jvm.lux +++ b/lux-jvm/source/luxc/lang/directive/jvm.lux @@ -72,19 +72,19 @@ (def: (literal literal) (-> /.Literal Inst) (case literal - (#/.Boolean value) (_.boolean value) - (#/.Int value) (_.int value) - (#/.Long value) (_.long value) - (#/.Double value) (_.double value) - (#/.Char value) (_.char value) - (#/.String value) (_.string value))) + {#/.Boolean value} (_.boolean value) + {#/.Int value} (_.int value) + {#/.Long value} (_.long value) + {#/.Double value} (_.double value) + {#/.Char value} (_.char value) + {#/.String value} (_.string value))) (def: (constant instruction) (-> /.Constant Inst) (case instruction - (#/.BIPUSH constant) (_.BIPUSH constant) + {#/.BIPUSH constant} (_.BIPUSH constant) - (#/.SIPUSH constant) (_.SIPUSH constant) + {#/.SIPUSH constant} (_.SIPUSH constant) #/.ICONST_M1 _.ICONST_M1 #/.ICONST_0 _.ICONST_0 @@ -106,7 +106,7 @@ #/.ACONST_NULL _.NULL - (#/.LDC literal) + {#/.LDC literal} (..literal literal) )) @@ -153,16 +153,16 @@ (def: (arithmetic instruction) (-> /.Arithmetic Inst) (case instruction - (#/.Int_Arithmetic int_arithmetic) + {#/.Int_Arithmetic int_arithmetic} (..int_arithmetic int_arithmetic) - (#/.Long_Arithmetic long_arithmetic) + {#/.Long_Arithmetic long_arithmetic} (..long_arithmetic long_arithmetic) - (#/.Float_Arithmetic float_arithmetic) + {#/.Float_Arithmetic float_arithmetic} (..float_arithmetic float_arithmetic) - (#/.Double_Arithmetic double_arithmetic) + {#/.Double_Arithmetic double_arithmetic} (..double_arithmetic double_arithmetic))) (def: (int_bitwise instruction) @@ -188,10 +188,10 @@ (def: (bitwise instruction) (-> /.Bitwise Inst) (case instruction - (#/.Int_Bitwise int_bitwise) + {#/.Int_Bitwise int_bitwise} (..int_bitwise int_bitwise) - (#/.Long_Bitwise long_bitwise) + {#/.Long_Bitwise long_bitwise} (..long_bitwise long_bitwise))) (def: (conversion instruction) @@ -221,8 +221,8 @@ (case instruction #/.ARRAYLENGTH _.ARRAYLENGTH - (#/.NEWARRAY type) (_.NEWARRAY type) - (#/.ANEWARRAY type) (_.ANEWARRAY type) + {#/.NEWARRAY type} (_.NEWARRAY type) + {#/.ANEWARRAY type} (_.ANEWARRAY type) #/.BALOAD _.BALOAD #/.BASTORE _.BASTORE @@ -252,20 +252,20 @@ (-> /.Object Inst) (case instruction (^template [ ] - [( class field_name field_type) + [{ class field_name field_type} ( class field_name field_type)]) ([#/.GETSTATIC _.GETSTATIC] [#/.PUTSTATIC _.PUTSTATIC] [#/.GETFIELD _.GETFIELD] [#/.PUTFIELD _.PUTFIELD]) - (#/.NEW type) (_.NEW type) + {#/.NEW type} (_.NEW type) - (#/.INSTANCEOF type) (_.INSTANCEOF type) - (#/.CHECKCAST type) (_.CHECKCAST type) + {#/.INSTANCEOF type} (_.INSTANCEOF type) + {#/.CHECKCAST type} (_.CHECKCAST type) (^template [ ] - [( class method_name method_type) + [{ class method_name method_type} ( class method_name method_type)]) ([#/.INVOKEINTERFACE _.INVOKEINTERFACE] [#/.INVOKESPECIAL _.INVOKESPECIAL] @@ -276,42 +276,42 @@ (def: (local_int instruction) (-> /.Local_Int Inst) (case instruction - (#/.ILOAD register) (_.ILOAD register) - (#/.ISTORE register) (_.ISTORE register))) + {#/.ILOAD register} (_.ILOAD register) + {#/.ISTORE register} (_.ISTORE register))) (def: (local_long instruction) (-> /.Local_Long Inst) (case instruction - (#/.LLOAD register) (_.LLOAD register) - (#/.LSTORE register) (_.LSTORE register))) + {#/.LLOAD register} (_.LLOAD register) + {#/.LSTORE register} (_.LSTORE register))) (def: (local_float instruction) (-> /.Local_Float Inst) (case instruction - (#/.FLOAD register) (_.FLOAD register) - (#/.FSTORE register) (_.FSTORE register))) + {#/.FLOAD register} (_.FLOAD register) + {#/.FSTORE register} (_.FSTORE register))) (def: (local_double instruction) (-> /.Local_Double Inst) (case instruction - (#/.DLOAD register) (_.DLOAD register) - (#/.DSTORE register) (_.DSTORE register))) + {#/.DLOAD register} (_.DLOAD register) + {#/.DSTORE register} (_.DSTORE register))) (def: (local_object instruction) (-> /.Local_Object Inst) (case instruction - (#/.ALOAD register) (_.ALOAD register) - (#/.ASTORE register) (_.ASTORE register))) + {#/.ALOAD register} (_.ALOAD register) + {#/.ASTORE register} (_.ASTORE register))) (def: (local instruction) (-> /.Local Inst) (case instruction - (#/.Local_Int instruction) (..local_int instruction) - (#/.IINC register) (_.IINC register) - (#/.Local_Long instruction) (..local_long instruction) - (#/.Local_Float instruction) (..local_float instruction) - (#/.Local_Double instruction) (..local_double instruction) - (#/.Local_Object instruction) (..local_object instruction))) + {#/.Local_Int instruction} (..local_int instruction) + {#/.IINC register} (_.IINC register) + {#/.Local_Long instruction} (..local_long instruction) + {#/.Local_Float instruction} (..local_float instruction) + {#/.Local_Double instruction} (..local_double instruction) + {#/.Local_Object instruction} (..local_object instruction))) (def: (stack instruction) (-> /.Stack Inst) @@ -340,34 +340,34 @@ (def: (branching instruction) (-> (/.Branching org/objectweb/asm/Label) Inst) (case instruction - (#/.IF_ICMPEQ label) (_.IF_ICMPEQ label) - (#/.IF_ICMPGE label) (_.IF_ICMPGE label) - (#/.IF_ICMPGT label) (_.IF_ICMPGT label) - (#/.IF_ICMPLE label) (_.IF_ICMPLE label) - (#/.IF_ICMPLT label) (_.IF_ICMPLT label) - (#/.IF_ICMPNE label) (_.IF_ICMPNE label) - (#/.IFEQ label) (_.IFEQ label) - (#/.IFGE label) (_.IFGE label) - (#/.IFGT label) (_.IFGT label) - (#/.IFLE label) (_.IFLE label) - (#/.IFLT label) (_.IFLT label) - (#/.IFNE label) (_.IFNE label) - - (#/.TABLESWITCH min max default labels) + {#/.IF_ICMPEQ label} (_.IF_ICMPEQ label) + {#/.IF_ICMPGE label} (_.IF_ICMPGE label) + {#/.IF_ICMPGT label} (_.IF_ICMPGT label) + {#/.IF_ICMPLE label} (_.IF_ICMPLE label) + {#/.IF_ICMPLT label} (_.IF_ICMPLT label) + {#/.IF_ICMPNE label} (_.IF_ICMPNE label) + {#/.IFEQ label} (_.IFEQ label) + {#/.IFGE label} (_.IFGE label) + {#/.IFGT label} (_.IFGT label) + {#/.IFLE label} (_.IFLE label) + {#/.IFLT label} (_.IFLT label) + {#/.IFNE label} (_.IFNE label) + + {#/.TABLESWITCH min max default labels} (_.TABLESWITCH min max default labels) - (#/.LOOKUPSWITCH default keys+labels) + {#/.LOOKUPSWITCH default keys+labels} (_.LOOKUPSWITCH default keys+labels) - (#/.IF_ACMPEQ label) (_.IF_ACMPEQ label) - (#/.IF_ACMPNE label) (_.IF_ACMPNE label) - (#/.IFNONNULL label) (_.IFNONNULL label) - (#/.IFNULL label) (_.IFNULL label))) + {#/.IF_ACMPEQ label} (_.IF_ACMPEQ label) + {#/.IF_ACMPNE label} (_.IF_ACMPNE label) + {#/.IFNONNULL label} (_.IFNONNULL label) + {#/.IFNULL label} (_.IFNULL label))) (def: (exception instruction) (-> (/.Exception org/objectweb/asm/Label) Inst) (case instruction - (#/.Try start end handler exception) (_.try start end handler exception) + {#/.Try start end handler exception} (_.try start end handler exception) #/.ATHROW _.ATHROW)) (def: (concurrency instruction) @@ -389,27 +389,27 @@ (def: (control instruction) (-> (/.Control org/objectweb/asm/Label) Inst) (case instruction - (#/.GOTO label) (_.GOTO label) - (#/.Branching instruction) (..branching instruction) - (#/.Exception instruction) (..exception instruction) - (#/.Concurrency instruction) (..concurrency instruction) - (#/.Return instruction) (..return instruction))) + {#/.GOTO label} (_.GOTO label) + {#/.Branching instruction} (..branching instruction) + {#/.Exception instruction} (..exception instruction) + {#/.Concurrency instruction} (..concurrency instruction) + {#/.Return instruction} (..return instruction))) (def: (instruction instruction) (-> (/.Instruction Inst org/objectweb/asm/Label) Inst) (case instruction #/.NOP _.NOP - (#/.Constant instruction) (..constant instruction) - (#/.Arithmetic instruction) (..arithmetic instruction) - (#/.Bitwise instruction) (..bitwise instruction) - (#/.Conversion instruction) (..conversion instruction) - (#/.Array instruction) (..array instruction) - (#/.Object instruction) (..object instruction) - (#/.Local instruction) (..local instruction) - (#/.Stack instruction) (..stack instruction) - (#/.Comparison instruction) (..comparison instruction) - (#/.Control instruction) (..control instruction) - (#/.Embedded embedded) embedded)) + {#/.Constant instruction} (..constant instruction) + {#/.Arithmetic instruction} (..arithmetic instruction) + {#/.Bitwise instruction} (..bitwise instruction) + {#/.Conversion instruction} (..conversion instruction) + {#/.Array instruction} (..array instruction) + {#/.Object instruction} (..object instruction) + {#/.Local instruction} (..local instruction) + {#/.Stack instruction} (..stack instruction) + {#/.Comparison instruction} (..comparison instruction) + {#/.Control instruction} (..control instruction) + {#/.Embedded embedded} embedded)) (type: Mapping (Dictionary /.Label org/objectweb/asm/Label)) @@ -421,7 +421,7 @@ (def: (relabel [mapping label]) (Re_labeler Identity) (case (dictionary.value label mapping) - (#.Some label) + {#.Some label} [mapping label] #.None @@ -432,39 +432,39 @@ (Re_labeler /.Branching) (case instruction (^template [] - [( label) + [{ label} (let [[mapping label] (..relabel [mapping label])] - [mapping ( label)])]) + [mapping { label}])]) ([#/.IF_ICMPEQ] [#/.IF_ICMPGE] [#/.IF_ICMPGT] [#/.IF_ICMPLE] [#/.IF_ICMPLT] [#/.IF_ICMPNE] [#/.IFEQ] [#/.IFNE] [#/.IFGE] [#/.IFGT] [#/.IFLE] [#/.IFLT] [#/.IF_ACMPEQ] [#/.IF_ACMPNE] [#/.IFNONNULL] [#/.IFNULL]) - (#/.TABLESWITCH min max default labels) + {#/.TABLESWITCH min max default labels} (let [[mapping default] (..relabel [mapping default]) [mapping labels] (list\mix (function (_ input [mapping output]) (let [[mapping input] (..relabel [mapping input])] [mapping (list& input output)])) [mapping (list)] labels)] - [mapping (#/.TABLESWITCH min max default (list.reversed labels))]) + [mapping {#/.TABLESWITCH min max default (list.reversed labels)}]) - (#/.LOOKUPSWITCH default keys+labels) + {#/.LOOKUPSWITCH default keys+labels} (let [[mapping default] (..relabel [mapping default]) [mapping keys+labels] (list\mix (function (_ [expected input] [mapping output]) (let [[mapping input] (..relabel [mapping input])] [mapping (list& [expected input] output)])) [mapping (list)] keys+labels)] - [mapping (#/.LOOKUPSWITCH default (list.reversed keys+labels))]) + [mapping {#/.LOOKUPSWITCH default (list.reversed keys+labels)}]) )) (def: (relabel_exception [mapping instruction]) (Re_labeler /.Exception) (case instruction - (#/.Try start end handler exception) + {#/.Try start end handler exception} (let [[mapping start] (..relabel [mapping start]) [mapping end] (..relabel [mapping end]) [mapping handler] (..relabel [mapping handler])] - [mapping (#/.Try start end handler exception)]) + [mapping {#/.Try start end handler exception}]) #/.ATHROW [mapping #/.ATHROW] @@ -474,31 +474,31 @@ (Re_labeler /.Control) (case instruction (^template [ ] - [( instruction) + [{ instruction} (let [[mapping instruction] ( [mapping instruction])] - [mapping ( instruction)])]) + [mapping { instruction}])]) ([#/.GOTO ..relabel] [#/.Branching ..relabel_branching] [#/.Exception ..relabel_exception]) (^template [] - [( instruction) - [mapping ( instruction)]]) + [{ instruction} + [mapping { instruction}]]) ([#/.Concurrency] [#/.Return]) )) (def: (relabel_instruction [mapping instruction]) (Re_labeler (/.Instruction Inst)) (case instruction - (#/.Embedded embedded) - [mapping (#/.Embedded embedded)] + {#/.Embedded embedded} + [mapping {#/.Embedded embedded}] #/.NOP [mapping #/.NOP] (^template [] - [( instruction) - [mapping ( instruction)]]) + [{ instruction} + [mapping { instruction}]]) ([#/.Constant] [#/.Arithmetic] [#/.Bitwise] @@ -509,9 +509,9 @@ [#/.Stack] [#/.Comparison]) - (#/.Control instruction) + {#/.Control instruction} (let [[mapping instruction] (..relabel_control [mapping instruction])] - [mapping (#/.Control instruction)]))) + [mapping {#/.Control instruction}]))) (def: (relabel_bytecode [mapping bytecode]) (Re_labeler (/.Bytecode Inst)) @@ -587,10 +587,10 @@ ..Handler)) (function (_ extension_name phase archive input) (case (.result parser input) - (#try.Success input') + {#try.Success input'} (handler extension_name phase archive input') - (#try.Failure error) + {#try.Failure error} (phase.except extension.invalid_syntax [extension_name %.code input])))) (type: Declaration @@ -716,11 +716,11 @@ (type: (Method a) (Variant - (#Constructor (Constructor a)) - (#Override (Override a)) - (#Virtual (Virtual a)) - (#Static (Static a)) - (#Abstract Abstract))) + {#Constructor (Constructor a)} + {#Override (Override a)} + {#Virtual (Virtual a)} + {#Static (Static a)} + {#Abstract Abstract})) (def: constructor (Parser (Constructor Code)) @@ -843,10 +843,10 @@ (def: (header_value valueT) (-> (Type Value) Inst) (case (/type.primitive? valueT) - (#.Left classT) + {#.Left classT} _.NULL - (#.Right primitiveT) + {#.Right primitiveT} (cond (or (\ /type.equivalence = /type.boolean primitiveT) (\ /type.equivalence = /type.byte primitiveT) (\ /type.equivalence = /type.short primitiveT) @@ -866,16 +866,16 @@ (def: (header_return returnT) (-> (Type Return) Inst) (case (/type.void? returnT) - (#.Right returnT) + {#.Right returnT} _.RETURN - (#.Left valueT) + {#.Left valueT} (case (/type.primitive? valueT) - (#.Left classT) + {#.Left classT} (|>> (header_value classT) _.ARETURN) - (#.Right primitiveT) + {#.Right primitiveT} (cond (or (\ /type.equivalence = /type.boolean primitiveT) (\ /type.equivalence = /type.byte primitiveT) (\ /type.equivalence = /type.short primitiveT) @@ -911,9 +911,9 @@ (def: (method_header super_class method) (-> (Type Class) (Method Code) jvm.Def) (case method - (#Constructor [privacy strict_floating_point? annotations variables exceptions + {#Constructor [privacy strict_floating_point? annotations variables exceptions self arguments constructor_arguments - body]) + body]} (let [[super_name super_vars] (parser.read_class super_class) init_constructor_arguments (|> constructor_arguments (list\each (|>> product.left ..header_value)) @@ -933,9 +933,9 @@ (_.INVOKESPECIAL super_class ..constructor_name super_constructorT) _.RETURN))) - (#Override [[parent_name parent_variables] name strict_floating_point? annotations variables + {#Override [[parent_name parent_variables] name strict_floating_point? annotations variables self arguments return exceptions - body]) + body]} (def.method #jvm.Public (if strict_floating_point? jvm.strictM @@ -944,9 +944,9 @@ (/type.method [variables (list\each product.right arguments) return exceptions]) (..header_return return)) - (#Virtual [name privacy final? strict_floating_point? annotations variables + {#Virtual [name privacy final? strict_floating_point? annotations variables self arguments return exceptions - body]) + body]} (def.method (..visibility privacy) (|> jvm.noneM (jvm.++M (if strict_floating_point? @@ -959,9 +959,9 @@ (/type.method [variables (list\each product.right arguments) return exceptions]) (..header_return return)) - (#Static [name privacy strict_floating_point? annotations variables + {#Static [name privacy strict_floating_point? annotations variables arguments return exceptions - body]) + body]} (def.method (..visibility privacy) (|> jvm.staticM (jvm.++M (if strict_floating_point? @@ -971,7 +971,7 @@ (/type.method [variables (list\each product.right arguments) return exceptions]) (..header_return return)) - (#Abstract method) + {#Abstract method} (..abstract_method_generation method) )) @@ -1033,7 +1033,7 @@ arguments) returnT (//A.boxed_reflection_return mapping /type.void) [_scope bodyA] (|> arguments' - (#.Item [self selfT]) + {#.Item [self selfT]} list.reversed (list\mix scopeA.with_local (analyse archive bodyC)) (typeA.with_type returnT) @@ -1063,7 +1063,7 @@ arguments) returnT (//A.boxed_reflection_return mapping returnJ) [_scope bodyA] (|> arguments' - (#.Item [self selfT]) + {#.Item [self selfT]} list.reversed (list\mix scopeA.with_local (analyse archive bodyC)) (typeA.with_type returnT) @@ -1091,7 +1091,7 @@ arguments) returnT (//A.boxed_reflection_return mapping returnJ) [_scope bodyA] (|> arguments' - (#.Item [self selfT]) + {#.Item [self selfT]} list.reversed (list\mix scopeA.with_local (analyse archive bodyC)) (typeA.with_type returnT) @@ -1128,24 +1128,24 @@ (def: (method_analysis archive declaration supers method) (-> Archive Declaration (List (Type Class)) (Method Code) (Operation (Method Analysis))) (case method - (#Constructor method) + {#Constructor method} (\ phase.monad each (|>> #Constructor) (constructor_method_analysis archive declaration method)) - (#Override method) + {#Override method} (\ phase.monad each (|>> #Override) (override_method_analysis archive declaration supers method)) - (#Virtual method) + {#Virtual method} (\ phase.monad each (|>> #Virtual) (virtual_method_analysis archive declaration method)) - (#Static method) + {#Static method} (\ phase.monad each (|>> #Static) (static_method_analysis archive method)) - (#Abstract method) - (\ phase.monad in (#Abstract method)) + {#Abstract method} + (\ phase.monad in {#Abstract method}) )) (template: (method_body ) @@ -1168,7 +1168,7 @@ (\ ! each (|>> [typeJ]) (synthesise archive termA))) constructor_argumentsA) - bodyS (synthesise archive (#analysis.Function (list) (//A.hide_method_body (list.size arguments) bodyA)))] + bodyS (synthesise archive {#analysis.Function (list) (//A.hide_method_body (list.size arguments) bodyA)})] (in [privacy strict_floating_point? annotations method_tvars exceptions self arguments constructor_argumentsS (case bodyS @@ -1187,7 +1187,7 @@ synthesise directive.synthesis] (directive.lifted_synthesis (do ! - [bodyS (synthesise archive (#analysis.Function (list) (//A.hide_method_body (list.size arguments) bodyA)))] + [bodyS (synthesise archive {#analysis.Function (list) (//A.hide_method_body (list.size arguments) bodyA)})] (in [[super_name super_tvars] method_name strict_floating_point? annotations method_tvars self arguments returnJ exceptionsJ (case bodyS @@ -1206,7 +1206,7 @@ synthesise directive.synthesis] (directive.lifted_synthesis (do ! - [bodyS (synthesise archive (#analysis.Function (list) (//A.hide_method_body (list.size arguments) bodyA)))] + [bodyS (synthesise archive {#analysis.Function (list) (//A.hide_method_body (list.size arguments) bodyA)})] (in [name privacy final? strict_floating_point? annotations method_tvars self arguments returnJ exceptionsJ (case bodyS @@ -1225,7 +1225,7 @@ synthesise directive.synthesis] (directive.lifted_synthesis (do ! - [bodyS (synthesise archive (#analysis.Function (list) (//A.hide_method_body (list.size arguments) bodyA)))] + [bodyS (synthesise archive {#analysis.Function (list) (//A.hide_method_body (list.size arguments) bodyA)})] (in [name privacy strict_floating_point? annotations method_tvars arguments returnJ exceptionsJ (case bodyS @@ -1238,24 +1238,24 @@ (def: (method_synthesis archive method) (-> Archive (Method Analysis) (Operation (Method Synthesis))) (case method - (#Constructor method) + {#Constructor method} (\ phase.monad each (|>> #Constructor) (constructor_method_synthesis archive method)) - (#Override method) + {#Override method} (\ phase.monad each (|>> #Override) (override_method_synthesis archive method)) - (#Virtual method) + {#Virtual method} (\ phase.monad each (|>> #Virtual) (virtual_method_synthesis archive method)) - (#Static method) + {#Static method} (\ phase.monad each (|>> #Static) (static_method_synthesis archive method)) - (#Abstract method) - (\ phase.monad in (#Abstract method)) + {#Abstract method} + (\ phase.monad in {#Abstract method}) )) (def: (constructor_method_generation archive super_class method) @@ -1363,19 +1363,19 @@ (def: (method_generation archive super_class method) (-> Archive (Type Class) (Method Synthesis) (Operation jvm.Def)) (case method - (#Constructor method) + {#Constructor method} (..constructor_method_generation archive super_class method) - (#Override method) + {#Override method} (..override_method_generation archive method) - (#Virtual method) + {#Virtual method} (..virtual_method_generation archive method) - (#Static method) + {#Static method} (..static_method_generation archive method) - (#Abstract method) + {#Abstract method} (\ phase.monad in (..abstract_method_generation method)) )) @@ -1384,13 +1384,13 @@ (def: (convert_overriden_method method) (-> (Method Code) (Maybe (//A.Overriden_Method Code))) (case method - (#Override [[parent_name parent_variables] method_name strict_floating_point? annotations variables + {#Override [[parent_name parent_variables] method_name strict_floating_point? annotations variables self arguments return exceptions - body]) - (#.Some [(/type.class parent_name parent_variables) method_name + body]} + {#.Some [(/type.class parent_name parent_variables) method_name strict_floating_point? (list) variables self arguments return exceptions - body]) + body]} _ #.None)) @@ -1445,7 +1445,7 @@ (do ! [artifact_id (generation.learn_custom class_name) _ (generation.execute! directive) - _ (generation.save! artifact_id (#.Some class_name) directive) + _ (generation.save! artifact_id {#.Some class_name} directive) _ (generation.log! (format "JVM Class " (%.text class_name)))] (in directive.no_requirements)))))])) @@ -1472,7 +1472,7 @@ (do ! [artifact_id (generation.learn_custom class_name) _ (generation.execute! directive) - _ (generation.save! artifact_id (#.Some class_name) directive) + _ (generation.save! artifact_id {#.Some class_name} directive) _ (generation.log! (format "JVM Interface " (%.text class_name)))] (in directive.no_requirements)))))])) diff --git a/lux-jvm/source/luxc/lang/host/jvm/def.lux b/lux-jvm/source/luxc/lang/host/jvm/def.lux index 36aed2d61..ecafc00d2 100644 --- a/lux-jvm/source/luxc/lang/host/jvm/def.lux +++ b/lux-jvm/source/luxc/lang/host/jvm/def.lux @@ -296,8 +296,8 @@ #.End function.identity - (#.Item singleton #.End) + {#.Item singleton #.End} singleton - (#.Item head tail) + {#.Item head tail} (function.composite (fuse tail) head))) diff --git a/lux-jvm/source/luxc/lang/host/jvm/inst.lux b/lux-jvm/source/luxc/lang/host/jvm/inst.lux index 2255774f8..bbeffb023 100644 --- a/lux-jvm/source/luxc/lang/host/jvm/inst.lux +++ b/lux-jvm/source/luxc/lang/host/jvm/inst.lux @@ -152,7 +152,7 @@ (def: .public make_label (All (_ s) (Operation s org/objectweb/asm/Label)) (function (_ state) - (#try.Success [state (org/objectweb/asm/Label::new)]))) + {#try.Success [state (org/objectweb/asm/Label::new)]})) (def: .public (with_label action) (All (_ a) (-> (-> org/objectweb/asm/Label a) a)) @@ -414,10 +414,10 @@ (def: .public (array elementT) (-> (Type Value) Inst) (case (type.primitive? elementT) - (#.Left elementT) + {#.Left elementT} (ANEWARRAY elementT) - (#.Right elementT) + {#.Right elementT} (NEWARRAY elementT))) (template [ ] @@ -462,8 +462,8 @@ #.End function.identity - (#.Item singleton #.End) + {#.Item singleton #.End} singleton - (#.Item head tail) + {#.Item head tail} (function.composite (fuse tail) head))) diff --git a/lux-jvm/source/luxc/lang/synthesis/variable.lux b/lux-jvm/source/luxc/lang/synthesis/variable.lux index 12594e154..685eaae92 100644 --- a/lux-jvm/source/luxc/lang/synthesis/variable.lux +++ b/lux-jvm/source/luxc/lang/synthesis/variable.lux @@ -11,10 +11,10 @@ (def: (bound-vars path) (-> ls.Path (List Variable)) (case path - (#ls.BindP register) + {#ls.BindP register} (list (.int register)) - (^or (#ls.SeqP pre post) (#ls.AltP pre post)) + (^or {#ls.SeqP pre post} {#ls.AltP pre post}) (list/composite (bound-vars pre) (bound-vars post)) _ @@ -23,13 +23,13 @@ (def: (path-bodies path) (-> ls.Path (List ls.Synthesis)) (case path - (#ls.ExecP body) + {#ls.ExecP body} (list body) - (#ls.SeqP pre post) + {#ls.SeqP pre post} (path-bodies post) - (#ls.AltP pre post) + {#ls.AltP pre post} (list/composite (path-bodies pre) (path-bodies post)) _ @@ -49,40 +49,40 @@ (let [tracker (loop [exprS exprS tracker (list/mix s.has init-tracker bound)] (case exprS - (#ls.Variable var) + {#ls.Variable var} (if (non-arg? current-arity var) (s.lacks var tracker) tracker) - (#ls.Variant tag last? memberS) + {#ls.Variant tag last? memberS} (recur memberS tracker) - (#ls.Tuple membersS) + {#ls.Tuple membersS} (list/mix recur tracker membersS) - (#ls.Call funcS argsS) + {#ls.Call funcS argsS} (list/mix recur (recur funcS tracker) argsS) - (^or (#ls.Recur argsS) - (#ls.Procedure name argsS)) + (^or {#ls.Recur argsS} + {#ls.Procedure name argsS}) (list/mix recur tracker argsS) - (#ls.Let offset inputS outputS) + {#ls.Let offset inputS outputS} (|> tracker (recur inputS) (recur outputS)) - (#ls.If testS thenS elseS) + {#ls.If testS thenS elseS} (|> tracker (recur testS) (recur thenS) (recur elseS)) - (#ls.Loop offset initsS bodyS) + {#ls.Loop offset initsS bodyS} (recur bodyS (list/mix recur tracker initsS)) - (#ls.Case inputS outputPS) + {#ls.Case inputS outputPS} (let [tracker' (list/mix s.has (recur inputS tracker) (bound-vars outputPS))] (list/mix recur tracker' (path-bodies outputPS))) - (#ls.Function arity env bodyS) + {#ls.Function arity env bodyS} (list/mix s.lacks tracker env) _ diff --git a/lux-jvm/source/luxc/lang/translation/jvm.lux b/lux-jvm/source/luxc/lang/translation/jvm.lux index db7b5b3fa..6a641f0ee 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm.lux @@ -83,20 +83,20 @@ (def: (class_value class_name class) (-> Text (java/lang/Class java/lang/Object) (Try Any)) (case (java/lang/Class::getField ..value_field class) - (#try.Success field) + {#try.Success field} (case (java/lang/reflect/Field::get #.None field) - (#try.Success ?value) + {#try.Success ?value} (case ?value - (#.Some value) - (#try.Success value) + {#.Some value} + {#try.Success value} #.None (exception.except ..invalid_value class_name)) - (#try.Failure error) + {#try.Failure error} (exception.except ..cannot_load [class_name error])) - (#try.Failure error) + {#try.Failure error} (exception.except ..invalid_field [class_name ..value_field error]))) (def: class_path_separator ".") diff --git a/lux-jvm/source/luxc/lang/translation/jvm/case.lux b/lux-jvm/source/luxc/lang/translation/jvm/case.lux index a6d0a725f..0959130a3 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/case.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/case.lux @@ -106,15 +106,15 @@ #synthesis.Pop (operation@in ..popI) - (#synthesis.Bind register) + {#synthesis.Bind register} (operation@in (|>> peekI (_.ASTORE register))) - (#synthesis.Bit_Fork when thenP elseP) + {#synthesis.Bit_Fork when thenP elseP} (do phase.monad [thenG (path' stack_depth @else @end phase archive thenP) elseG (.case elseP - (#.Some elseP) + {#.Some elseP} (path' stack_depth @else @end phase archive elseP) #.None @@ -129,7 +129,7 @@ elseG)))) (^template [ ] - [( cons) + [{ cons} (do [@ phase.monad] [forkG (: (Operation Inst) (monad.mix @ (function (_ [test thenP] elseG) @@ -146,7 +146,7 @@ elseG))))) (|>> (_.GOTO @else)) - (#.Item cons)))] + {#.Item cons}))] (in (|>> peekI forkG)))]) @@ -156,7 +156,7 @@ (_.INVOKEVIRTUAL (type.class "java.lang.Object" (list)) "equals" ..equalsJT) _.IFEQ]) - (#synthesis.Then bodyS) + {#synthesis.Then bodyS} (do phase.monad [bodyI (phase archive bodyS)] (in (|>> (pop_altI stack_depth) @@ -202,14 +202,14 @@ ([synthesis.member/left ..left_projection] [synthesis.member/right ..right_projection]) - (#synthesis.Seq leftP rightP) + {#synthesis.Seq leftP rightP} (do phase.monad [leftI (path' stack_depth @else @end phase archive leftP) rightI (path' stack_depth @else @end phase archive rightP)] (in (|>> leftI rightI))) - (#synthesis.Alt leftP rightP) + {#synthesis.Alt leftP rightP} (do phase.monad [@alt_else _.make_label leftI (path' (++ stack_depth) @alt_else @end phase archive leftP) @@ -268,10 +268,10 @@ [recordG (phase archive recordS)] (in (list@mix (function (_ step so_far) (.let [next (.case step - (#.Left lefts) + {#.Left lefts} (..left_projection lefts) - (#.Right lefts) + {#.Right lefts} (..right_projection lefts))] (|>> so_far next))) recordG diff --git a/lux-jvm/source/luxc/lang/translation/jvm/common.lux b/lux-jvm/source/luxc/lang/translation/jvm/common.lux index 8db12bd7e..2dade7a97 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/common.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/common.lux @@ -32,21 +32,21 @@ ... (All (_ a) (-> (Meta a) (Meta [Artifacts a]))) ... (function (_ state) ... (case (action (revised@ #.host -... (|>> (:coerce Host) -... (with@ #artifacts (dictionary.new text.hash)) -... (:coerce Nothing)) -... state)) -... (#try.Success [state' output]) -... (#try.Success [(revised@ #.host -... (|>> (:coerce Host) -... (with@ #artifacts (|> (value@ #.host state) (:coerce Host) (value@ #artifacts))) -... (:coerce Nothing)) -... state') -... [(|> state' (value@ #.host) (:coerce Host) (value@ #artifacts)) -... output]]) +... (|>> (:coerce Host) +... (with@ #artifacts (dictionary.new text.hash)) +... (:coerce Nothing)) +... state)) +... {#try.Success [state' output]} +... {#try.Success [(revised@ #.host +... (|>> (:coerce Host) +... (with@ #artifacts (|> (value@ #.host state) (:coerce Host) (value@ #artifacts))) +... (:coerce Nothing)) +... state') +... [(|> state' (value@ #.host) (:coerce Host) (value@ #artifacts)) +... output]]} -... (#try.Failure error) -... (#try.Failure error)))) +... {#try.Failure error} +... {#try.Failure error}))) ... (def: .public (load-definition state) ... (-> Lux (-> Name Binary (Try Any))) @@ -60,14 +60,14 @@ ... (case (do try.monad ... [field (Class::getField [..value-field] class)] ... (Field::get [#.None] field)) -... (#try.Success (#.Some def-value)) +... {#try.Success {#.Some def-value}} ... (wrap def-value) -... (#try.Success #.None) +... {#try.Success #.None} ... (phase.throw invalid-definition-value (%name def-name)) -... (#try.Failure error) +... {#try.Failure error} ... (phase.throw cannot-load-definition -... (format "Definition: " (%name def-name) "\n" -... "Error:\n" -... error)))))))) +... (format "Definition: " (%name def-name) "\n" +... "Error:\n" +... error)))))))) diff --git a/lux-jvm/source/luxc/lang/translation/jvm/expression.lux b/lux-jvm/source/luxc/lang/translation/jvm/expression.lux index 087ebfaff..a460ad96b 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/expression.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/expression.lux @@ -72,5 +72,5 @@ (^ (synthesis.function/abstraction data)) (function.function translate archive data) - (#synthesis.Extension extension) + {#synthesis.Extension extension} (extension.apply archive translate extension))) diff --git a/lux-jvm/source/luxc/lang/translation/jvm/extension/common.lux b/lux-jvm/source/luxc/lang/translation/jvm/extension/common.lux index e3ac4141b..8d92a68eb 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/extension/common.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/extension/common.lux @@ -48,10 +48,10 @@ Handler)) (function (_ extension_name phase archive input) (case (.result parser input) - (#try.Success input') + {#try.Success input'} (handler extension_name phase archive input') - (#try.Failure error) + {#try.Failure error} (phase.except extension.invalid_syntax [extension_name %synthesis input])))) (import: java/lang/Double diff --git a/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux b/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux index 131ff0968..8535c3b35 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux @@ -96,9 +96,9 @@ (do <>.monad [arrayJT (.then parser.array .text)] (case (parser.array? arrayJT) - (#.Some elementJT) + {#.Some elementJT} (case (parser.object? elementJT) - (#.Some elementJT) + {#.Some elementJT} (in elementJT) #.None @@ -629,7 +629,7 @@ (do phase.monad [] (case (dictionary.value unboxed ..primitives) - (#.Some primitive) + {#.Some primitive} (in (_.GETSTATIC (type.class class (list)) field primitive)) #.None @@ -644,7 +644,7 @@ [valueI (generate archive valueS) .let [$class (type.class class (list))]] (case (dictionary.value unboxed ..primitives) - (#.Some primitive) + {#.Some primitive} (in (|>> valueI (_.PUTSTATIC $class field primitive) (_.string synthesis.unit))) @@ -664,7 +664,7 @@ [objectI (generate archive objectS) .let [$class (type.class class (list)) getI (case (dictionary.value unboxed ..primitives) - (#.Some primitive) + {#.Some primitive} (_.GETFIELD $class field primitive) #.None @@ -683,7 +683,7 @@ objectI (generate archive objectS) .let [$class (type.class class (list)) putI (case (dictionary.value unboxed ..primitives) - (#.Some primitive) + {#.Some primitive} (_.PUTFIELD $class field primitive) #.None @@ -709,10 +709,10 @@ (do phase.monad [valueI (generate archive valueS)] (case (type.primitive? valueT) - (#.Right valueT) + {#.Right valueT} (in [valueT valueI]) - (#.Left valueT) + {#.Left valueT} (in [valueT (|>> valueI (_.CHECKCAST valueT))])))) @@ -722,10 +722,10 @@ (def: (prepare_output outputT) (-> (Type Return) Inst) (case (type.void? outputT) - (#.Right outputT) + {#.Right outputT} ..voidI - (#.Left outputT) + {#.Left outputT} function.identity)) (def: invoke::static @@ -814,26 +814,26 @@ [0 _] body [1 _] body - [2 (#synthesis.Control (#synthesis.Branch (#synthesis.Let _ 2 hidden)))] + [2 {#synthesis.Control {#synthesis.Branch {#synthesis.Let _ 2 hidden}}}] hidden - [_ (#synthesis.Control (#synthesis.Branch (#synthesis.Case _ path)))] + [_ {#synthesis.Control {#synthesis.Branch {#synthesis.Case _ path}}}] (loop [path path] (case path (^or #synthesis.Pop - (#synthesis.Access _) - (#synthesis.Bind _) - (#synthesis.Bit_Fork _) - (#synthesis.I64_Fork _) - (#synthesis.F64_Fork _) - (#synthesis.Text_Fork _) - (#synthesis.Alt _)) + {#synthesis.Access _} + {#synthesis.Bind _} + {#synthesis.Bit_Fork _} + {#synthesis.I64_Fork _} + {#synthesis.F64_Fork _} + {#synthesis.Text_Fork _} + {#synthesis.Alt _}) body - (#synthesis.Seq _ next) + {#synthesis.Seq _ next} (recur next) - (#synthesis.Then hidden) + {#synthesis.Then hidden} hidden)) _ @@ -873,27 +873,27 @@ (synthesis.path/then (normalize bodyS)) (^template [] - [(^ ( leftP rightP)) - ( (recur leftP) (recur rightP))]) + [(^ { leftP rightP}) + { (recur leftP) (recur rightP)}]) ([#synthesis.Alt] [#synthesis.Seq]) (^template [] - [(^ ( value)) + [(^ { value}) path]) ([#synthesis.Pop] [#synthesis.Bind] [#synthesis.Access]) - (#synthesis.Bit_Fork when then else) - (#synthesis.Bit_Fork when (recur then) (maybe\each recur else)) + {#synthesis.Bit_Fork when then else} + {#synthesis.Bit_Fork when (recur then) (maybe\each recur else)} (^template [] - [( [[test then] elses]) - ( [[test (recur then)] + [{ [[test then] elses]} + { [[test (recur then)] (list\each (function (_ [else_test else_then]) [else_test (recur else_then)]) - elses)])]) + elses)]}]) ([#synthesis.I64_Fork] [#synthesis.F64_Fork] [#synthesis.Text_Fork]) @@ -903,11 +903,11 @@ (-> (Dictionary Synthesis Variable) Synthesis Synthesis) (function (recur body) (case body - (^template [] - [(^ ( value)) - body]) - ([#synthesis.Primitive] - [synthesis.constant]) + (^ {#synthesis.Primitive value}) + body + + (^ {synthesis.constant value}) + body (^ (synthesis.variant [lefts right? sub])) (synthesis.variant [lefts right? (recur sub)]) @@ -957,8 +957,8 @@ (^ (synthesis.function/apply [functionS inputsS+])) (synthesis.function/apply [(recur functionS) (list\each recur inputsS+)]) - (#synthesis.Extension [name inputsS+]) - (#synthesis.Extension [name (list\each recur inputsS+)])))) + {#synthesis.Extension [name inputsS+]} + {#synthesis.Extension [name (list\each recur inputsS+)]}))) (def: $Object (type.class "java.lang.Object" (list))) @@ -999,14 +999,14 @@ (def: (prepare_argument lux_register argumentT jvm_register) (-> Register (Type Value) Register [Register Inst]) (case (type.primitive? argumentT) - (#.Left argumentT) + {#.Left argumentT} [(n.+ 1 jvm_register) (if (n.= lux_register jvm_register) (|>>) (|>> (_.ALOAD jvm_register) (_.ASTORE lux_register)))] - (#.Right argumentT) + {#.Right argumentT} (template.let [(wrap_primitive ) [[(n.+ jvm_register) (|>> ( jvm_register) @@ -1040,21 +1040,21 @@ (def: .public (returnI returnT) (-> (Type Return) Inst) (case (type.void? returnT) - (#.Right returnT) + {#.Right returnT} _.RETURN - (#.Left returnT) + {#.Left returnT} (case (type.primitive? returnT) - (#.Left returnT) + {#.Left returnT} (case (type.class? returnT) - (#.Some class_name) + {#.Some class_name} (|>> (_.CHECKCAST returnT) _.ARETURN) #.None _.ARETURN) - (#.Right returnT) + {#.Right returnT} (template.let [(unwrap_primitive ) [(|>> (_.unwrap ) )]] @@ -1102,7 +1102,7 @@ ... Give them names as "foreign" variables. list.enumeration (list\each (function (_ [id capture]) - [capture (#variable.Foreign id)])) + [capture {#variable.Foreign id}])) (dictionary.of_list synthesis.hash)) normalized_methods (list\each (function (_ [environment [ownerT name diff --git a/lux-jvm/source/luxc/lang/translation/jvm/function.lux b/lux-jvm/source/luxc/lang/translation/jvm/function.lux index 2a202fbcd..7630191e9 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/function.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/function.lux @@ -308,7 +308,7 @@ (do [! phase.monad] [@begin _.make_label [function_context bodyI] (case forced_context - (#.Some function_context) + {#.Some function_context} (do ! [without_context (generation.with_anchor [@begin 1] (generate archive bodyS))] @@ -331,7 +331,7 @@ #.None (generation.save! (product.right function_context) #.None directive) - (#.Some function_context) + {#.Some function_context} (in []))] (in instanceI))) diff --git a/lux-jvm/source/luxc/lang/translation/jvm/reference.lux b/lux-jvm/source/luxc/lang/translation/jvm/reference.lux index 9b0feeb78..3c76f44c0 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/reference.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/reference.lux @@ -53,10 +53,10 @@ (def: .public (variable archive variable) (-> Archive Variable (Operation Inst)) (case variable - (#variable.Local variable) + {#variable.Local variable} (operation@in (local variable)) - (#variable.Foreign variable) + {#variable.Foreign variable} (foreign archive variable))) (def: .public (constant archive name) diff --git a/lux-jvm/source/program.lux b/lux-jvm/source/program.lux index b2319af7e..e3244f410 100644 --- a/lux-jvm/source/program.lux +++ b/lux-jvm/source/program.lux @@ -144,73 +144,73 @@ unwrap_long (: (-> Synthesis Synthesis) (|>> (list ($.text jvm/type/box.long) ($.text "long")) - (#$.Extension "jvm object cast"))) + {#$.Extension "jvm object cast"})) long_to_int (: (-> Synthesis Synthesis) (|>> (list) - (#$.Extension "jvm conversion long-to-int"))) + {#$.Extension "jvm conversion long-to-int"})) literal_nat (: (-> Nat Synthesis) (|>> .i64 $.i64 unwrap_long long_to_int)) write! (: (-> Text Nat Synthesis Synthesis Synthesis) (function (_ element_class index value array) - ((#$.Extension "jvm array write object" - (list (jvm_type (jvm/type.array (jvm/type.class element_class (list)))) - (literal_nat index) - value - array))))) + ({#$.Extension "jvm array write object" + (list (jvm_type (jvm/type.array (jvm/type.class element_class (list)))) + (literal_nat index) + value + array)}))) object_array (: (-> Text Nat Synthesis) (function (_ class_name size) - (#$.Extension "jvm array new object" - (list (class_type class_name) - (literal_nat size))))) + {#$.Extension "jvm array new object" + (list (class_type class_name) + (literal_nat size))})) class_of (: (-> Synthesis Synthesis) (function (_ object) - (#$.Extension "jvm member invoke virtual" - (list& (class_type "java.lang.Object") - ($.text "getClass") - (class_type "java.lang.Class") - object - (list))))) + {#$.Extension "jvm member invoke virtual" + (list& (class_type "java.lang.Object") + ($.text "getClass") + (class_type "java.lang.Class") + object + (list))})) input (: (All (_ c) (-> (jvm/type.Type c) Synthesis Synthesis)) (function (_ value_type value) ($.tuple (list (jvm_type value_type) value)))) - example_object (#$.Extension "jvm member invoke constructor" - (list& (class_type "java.lang.Object") - (list))) + example_object {#$.Extension "jvm member invoke constructor" + (list& (class_type "java.lang.Object") + (list))} phase_arity 3 $phase ($.variable/local 1) $archive ($.variable/local 2) $input ($.variable/local 3) $state ($.variable/local 4) - apply_method (#$.Extension "jvm member invoke virtual" - (list& (class_type "java.lang.Class") - ($.text "getMethod") - (class_type "java.lang.reflect.Method") - (class_of $phase) - (list (input java/lang/String - ($.text runtime.apply_method)) - (input - (|> (object_array "java.lang.Class" phase_arity) - (write! "java.lang.Class" 0 (class_of example_object)) - (write! "java.lang.Class" 1 (class_of example_object)) - (write! "java.lang.Class" 2 (class_of example_object)))))))] - (#$.Extension "jvm member invoke virtual" - (list& (class_type "java.lang.reflect.Method") - ($.text "invoke") - (class_type "java.lang.Object") - apply_method - (list (input java/lang/Object - $phase) - (input - (|> (object_array "java.lang.Object" phase_arity) - (write! "java.lang.Object" 0 $archive) - (write! "java.lang.Object" 1 $input) - (write! "java.lang.Object" 2 $state)))))))) + apply_method {#$.Extension "jvm member invoke virtual" + (list& (class_type "java.lang.Class") + ($.text "getMethod") + (class_type "java.lang.reflect.Method") + (class_of $phase) + (list (input java/lang/String + ($.text runtime.apply_method)) + (input + (|> (object_array "java.lang.Class" phase_arity) + (write! "java.lang.Class" 0 (class_of example_object)) + (write! "java.lang.Class" 1 (class_of example_object)) + (write! "java.lang.Class" 2 (class_of example_object))))))}] + {#$.Extension "jvm member invoke virtual" + (list& (class_type "java.lang.reflect.Method") + ($.text "invoke") + (class_type "java.lang.Object") + apply_method + (list (input java/lang/Object + $phase) + (input + (|> (object_array "java.lang.Object" phase_arity) + (write! "java.lang.Object" 0 $archive) + (write! "java.lang.Object" 1 $input) + (write! "java.lang.Object" 2 $state)))))})) (def: (phase_wrapper archive) (-> Archive (generation.Operation _.Anchor _.Inst _.Definition phase.Wrapper)) (do phase.monad - [instanceG (function.function' (#.Some [0 (.nat -1)]) expression.translate archive [(list) 4 ..how_to_wrap_a_phase]) + [instanceG (function.function' {#.Some [0 (.nat -1)]} expression.translate archive [(list) 4 ..how_to_wrap_a_phase]) phase_wrapper (generation.evaluate! [0 (.nat -2)] instanceG)] (in (function (_ phase) (<| try.trusted diff --git a/lux-jvm/test/test/luxc/lang/analysis/host.jvm.lux b/lux-jvm/test/test/luxc/lang/analysis/host.jvm.lux index ef12fcf25..81328faec 100644 --- a/lux-jvm/test/test/luxc/lang/analysis/host.jvm.lux +++ b/lux-jvm/test/test/luxc/lang/analysis/host.jvm.lux @@ -42,10 +42,10 @@ (_primitive.analyse (` ((~ (code.text procedure)) (~+ params))))))) (analysis.with-current-module "") (macro.result (initL.compiler [])) - (case> (#e.Success _) + (case> {#e.Success _} - (#e.Error error) + {#e.Error error} )))] [success #1 #0] @@ -63,10 +63,10 @@ (_primitive.analyse syntax)))) (analysis.with-current-module "") (macro.result (initL.compiler [])) - (case> (#e.Success _) + (case> {#e.Success _} - (#e.Error error) + {#e.Error error} )))] [success' #1 #0] @@ -281,14 +281,14 @@ size (|> r.nat (:: @ each cap)) idx (|> r.nat (:: @ each (n/% size))) level (|> r.nat (:: @ each cap)) - #let [unboxedT (#.Primitive unboxed (list)) - arrayT (#.Primitive "#Array" (list unboxedT)) + #let [unboxedT {#.Primitive unboxed (list)} + arrayT {#.Primitive "#Array" (list unboxedT)} arrayC (`' ("lux check" (+0 "#Array" (+1 (+0 (~ (code.text unboxed)) (+0)) (+0))) ("jvm array new" (~ (code.nat size))))) - boxedT (#.Primitive boxed (list)) + boxedT {#.Primitive boxed (list)} boxedTC (` (+0 (~ (code.text boxed)) (+0))) multi-arrayT (list/mix (function (_ _ innerT) - (|> innerT (list) (#.Primitive "#Array"))) + (|> innerT (list) {#.Primitive "#Array"})) boxedT (list.n/range +1 level))]] ($_ seq @@ -335,7 +335,7 @@ [!unboxed !boxed] (|> array-type (r.filter (function (_ [!unboxed !boxed]) (not (text/= boxed !boxed))))) - #let [boxedT (#.Primitive boxed (list)) + #let [boxedT {#.Primitive boxed (list)} boxedC (`' ("lux check" (+0 (~ (code.text boxed)) (+0)) ("jvm object null"))) !boxedC (`' ("lux check" (+0 (~ (code.text !boxed)) (+0)) @@ -354,12 +354,12 @@ (test "jvm object null" (success "jvm object null" (list) - (#.Primitive boxed (list)))) + {#.Primitive boxed (list)})) (test "jvm object null (no primitives)" (or (text/= "java.lang.Object" boxed) (failure "jvm object null" (list) - (#.Primitive unboxed (list))))) + {#.Primitive unboxed (list)}))) (test "jvm object null?" (success "jvm object null?" (list boxedC) @@ -381,7 +381,7 @@ (test "jvm object class" (success "jvm object class" (list (code.text boxed)) - (#.Primitive "java.lang.Class" (list boxedT)))) + {#.Primitive "java.lang.Class" (list boxedT)})) (test "jvm object instance?" (success "jvm object instance?" (list (code.text boxed) @@ -406,12 +406,12 @@ (success "jvm member static get" (list (code.text "java.lang.System") (code.text "out")) - (#.Primitive "java.io.PrintStream" (list)))) + {#.Primitive "java.io.PrintStream" (list)})) (test "jvm member static get (inheritance out)" (success "jvm member static get" (list (code.text "java.lang.System") (code.text "out")) - (#.Primitive "java.lang.Object" (list)))) + {#.Primitive "java.lang.Object" (list)})) (test "jvm member static put" (success "jvm member static put" (list (code.text "java.awt.datatransfer.DataFlavor") @@ -444,14 +444,14 @@ (code.text "id") (`' ("lux check" (+0 "org.omg.CORBA.ValueMember" (+0)) ("jvm object null")))) - (#.Primitive "java.lang.String" (list)))) + {#.Primitive "java.lang.String" (list)})) (test "jvm member virtual get (inheritance out)" (success "jvm member virtual get" (list (code.text "org.omg.CORBA.ValueMember") (code.text "id") (`' ("lux check" (+0 "org.omg.CORBA.ValueMember" (+0)) ("jvm object null")))) - (#.Primitive "java.lang.Object" (list)))) + {#.Primitive "java.lang.Object" (list)})) (test "jvm member virtual put" (success "jvm member virtual put" (list (code.text "org.omg.CORBA.ValueMember") @@ -488,14 +488,14 @@ (success "jvm member static get" (list (code.text "java.util.GregorianCalendar") (code.text "AD")) - (#.Primitive "java.lang.Integer" (list)))) + {#.Primitive "java.lang.Integer" (list)})) (test "jvm member virtual get" (success "jvm member virtual get" (list (code.text "javax.accessibility.AccessibleAttributeSequence") (code.text "startIndex") (`' ("lux check" (+0 "javax.accessibility.AccessibleAttributeSequence" (+0)) ("jvm object null")))) - (#.Primitive "java.lang.Integer" (list)))) + {#.Primitive "java.lang.Integer" (list)})) (test "jvm member virtual put" (success "jvm member virtual put" (list (code.text "javax.accessibility.AccessibleAttributeSequence") @@ -522,28 +522,28 @@ (success' (` ("jvm member invoke static" "java.lang.Long" "decode" ["java.lang.String" (~ stringC)])) - (#.Primitive "java.lang.Long" (list)))) + {#.Primitive "java.lang.Long" (list)})) (test "jvm member invoke virtual" (success' (` ("jvm object cast" ("jvm member invoke virtual" "java.lang.Object" "equals" ("jvm object cast" (~ longC)) ["java.lang.Object" ("jvm object cast" (~ longC))]))) - (#.Primitive "java.lang.Boolean" (list)))) + {#.Primitive "java.lang.Boolean" (list)})) (test "jvm member invoke special" (success' (` ("jvm object cast" ("jvm member invoke special" "java.lang.Long" "equals" ("jvm object cast" (~ longC)) ["java.lang.Object" ("jvm object cast" (~ longC))]))) - (#.Primitive "java.lang.Boolean" (list)))) + {#.Primitive "java.lang.Boolean" (list)})) (test "jvm member invoke interface" (success' (` ("jvm object cast" ("jvm member invoke interface" "java.util.Collection" "add" ("jvm object cast" (~ objectC)) ["java.lang.Object" ("jvm object cast" (~ longC))]))) - (#.Primitive "java.lang.Boolean" (list)))) + {#.Primitive "java.lang.Boolean" (list)})) (test "jvm member invoke constructor" (success' (` ("jvm member invoke constructor" "java.util.ArrayList" ["int" ("jvm object cast" (~ intC))])) - (All (_ a) (#.Primitive "java.util.ArrayList" (list a))))) + (All (_ a) {#.Primitive "java.util.ArrayList" (list a)}))) ))) diff --git a/lux-jvm/test/test/luxc/lang/synthesis/loop.lux b/lux-jvm/test/test/luxc/lang/synthesis/loop.lux index ad2a67deb..b923a4e90 100644 --- a/lux-jvm/test/test/luxc/lang/synthesis/loop.lux +++ b/lux-jvm/test/test/luxc/lang/synthesis/loop.lux @@ -21,29 +21,29 @@ (-> ls.Arity ls.Synthesis Bit) (loop [exprS exprS] (case exprS - (^ [_ (#.Form (list [_ (#.Text "lux case")] inputS pathS))]) + (^ [_ {#.Form (list [_ {#.Text "lux case"}] inputS pathS)}]) (loop [pathS pathS] (case pathS - (^ [_ (#.Form (list [_ (#.Text "lux case alt")] leftS rightS))]) + (^ [_ {#.Form (list [_ {#.Text "lux case alt"}] leftS rightS)}]) (or (recur leftS) (recur rightS)) - (^ [_ (#.Form (list [_ (#.Text "lux case seq")] leftS rightS))]) + (^ [_ {#.Form (list [_ {#.Text "lux case seq"}] leftS rightS)}]) (recur rightS) - (^ [_ (#.Form (list [_ (#.Text "lux case exec")] bodyS))]) + (^ [_ {#.Form (list [_ {#.Text "lux case exec"}] bodyS)}]) (does-recursion? arity bodyS) _ #0)) - (^ [_ (#.Form (list& [_ (#.Text "lux recur")] argsS))]) + (^ [_ {#.Form (list& [_ {#.Text "lux recur"}] argsS)}]) (n/= arity (list.size argsS)) - (^ [_ (#.Form (list [_ (#.Text "lux let")] register inputS bodyS))]) + (^ [_ {#.Form (list [_ {#.Text "lux let"}] register inputS bodyS)}]) (recur bodyS) - (^ [_ (#.Form (list [_ (#.Text "lux if")] inputS thenS elseS))]) + (^ [_ {#.Form (list [_ {#.Text "lux if"}] inputS thenS elseS)}]) (or (recur thenS) (recur elseS)) @@ -132,7 +132,7 @@ (test "Can accurately identify (and then reify) tail recursion." (case (expressionS.synthesize extensionL.no-syntheses analysis) - (^ [_ (#.Form (list [_ (#.Text "lux function")] [_ (#.Nat _arity)] [_ (#.Tuple _env)] _body))]) + (^ [_ {#.Form (list [_ {#.Text "lux function"}] [_ {#.Nat _arity}] [_ {#.Tuple _env}] _body)}]) (|> _body (does-recursion? arity) (bit/= prediction) @@ -149,13 +149,13 @@ (test "Can reify loops." (case (expressionS.synthesize extensionL.no-syntheses (la.apply (list.repeat arity (' [])) analysis)) - (^ [_ (#.Form (list [_ (#.Text "lux loop")] [_ (#.Nat in_register)] [_ (#.Tuple _inits)] _body))]) + (^ [_ {#.Form (list [_ {#.Text "lux loop"}] [_ {#.Nat in_register}] [_ {#.Tuple _inits}] _body)}]) (and (n/= arity (list.size _inits)) (not (loopS.contains-self-reference? _body))) - (^ [_ (#.Form (list& [_ (#.Text "lux call")] - [_ (#.Form (list [_ (#.Text "lux function")] _arity _env _bodyS))] - argsS))]) + (^ [_ {#.Form (list& [_ {#.Text "lux call"}] + [_ {#.Form (list [_ {#.Text "lux function"}] _arity _env _bodyS)}] + argsS)}]) (loopS.contains-self-reference? _bodyS) _ diff --git a/lux-jvm/test/test/luxc/lang/synthesis/procedure.lux b/lux-jvm/test/test/luxc/lang/synthesis/procedure.lux index 1262f2252..0d73b1038 100644 --- a/lux-jvm/test/test/luxc/lang/synthesis/procedure.lux +++ b/lux-jvm/test/test/luxc/lang/synthesis/procedure.lux @@ -24,7 +24,7 @@ (test "Can synthesize procedure calls." (|> (expressionS.synthesize extensionL.no-syntheses (la.procedure nameA argsA)) - (case> (^ [_ (#.Form (list& [_ (#.Text procedure)] argsS))]) + (case> (^ [_ {#.Form (list& [_ {#.Text procedure}] argsS)}]) (and (text/= nameA procedure) (list.every? (product.uncurried corresponds?) (list.zip2 argsA argsS))) diff --git a/lux-jvm/test/test/luxc/lang/translation/js.lux b/lux-jvm/test/test/luxc/lang/translation/js.lux index effad7726..69bcd7ecd 100644 --- a/lux-jvm/test/test/luxc/lang/translation/js.lux +++ b/lux-jvm/test/test/luxc/lang/translation/js.lux @@ -22,7 +22,7 @@ (def: (test-primitive-identity synthesis) (-> Synthesis Bit) (|> (run-js (` ("lux is" (~ synthesis) (~ synthesis)))) - (case> (#e.Success valueV) + (case> {#e.Success valueV} (:coerce Bit valueV) _ @@ -33,10 +33,10 @@ (template [
 <=>]
   [(def: ( angle)
      (->  Check)
-     (|>> (case> (#e.Success valueV)
+     (|>> (case> {#e.Success valueV}
                  (<=> (
 angle) (:coerce  valueV))
                  
-                 (#e.Error error)
+                 {#e.Error error}
                  #0)))]
 
   [sin-check    Frac math.sin f/=]
@@ -73,7 +73,7 @@
         ($_ seq
             (test "Cannot get non-existing fields from objects."
                   (|> (run-js (` ("js object get" (~ field) (~ empty-object))))
-                      (case> (^multi (#e.Success valueV)
+                      (case> (^multi {#e.Success valueV}
                                      [(:coerce (Maybe Int) valueV) #.None])
                              #1
 
@@ -81,8 +81,8 @@
                              #0)))
             (test "Can get fields from objects."
                   (|> (run-js (` ("js object get" (~ field) (~ object))))
-                      (case> (^multi (#e.Success valueV)
-                                     [(:coerce (Maybe Int) valueV) (#.Some valueV)])
+                      (case> (^multi {#e.Success valueV}
+                                     [(:coerce (Maybe Int) valueV) {#.Some valueV}])
                              (i/= value (:coerce Int valueV))
 
                              _
@@ -90,7 +90,7 @@
             (test "Can delete fields from objects."
                   (|> (run-js (let [post-delete (` ("js object delete" (~ field) (~ object)))]
                                 (` ("js object get" (~ field) (~ post-delete)))))
-                      (case> (^multi (#e.Success valueV)
+                      (case> (^multi {#e.Success valueV}
                                      [(:coerce (Maybe Int) valueV) #.None])
                              #1
 
@@ -99,10 +99,10 @@
             (test "Can instance new objects."
                   (let [base (` ("js object new" ("js global" "Number") (~ (code.text (%f frac-value)))))]
                     (|> (run-js (` ("lux frac +" (~ base) 0.0)))
-                        (case> (#e.Success valueV)
+                        (case> {#e.Success valueV}
                                (f/= frac-value (:coerce Frac valueV))
 
-                               (#e.Error error)
+                               {#e.Error error}
                                #0))))
             (test "Can call methods on objects."
                   (|> (run-js (` ("js object call" ("js global" "Math") "sin" (~ (code.text (%f frac-value))))))
@@ -124,9 +124,9 @@
                       (length-check length)))
             (test "Can get an element from an array."
                   (|> (run-js (` ("js array read" (~ (code.nat idx)) (~ arrayS))))
-                      (case> (^multi (#e.Success elemV)
+                      (case> (^multi {#e.Success elemV}
                                      [[(list.nth idx elems) (:coerce (Maybe Nat) elemV)]
-                                      [(#.Some reference) (#.Some sample)]])
+                                      [{#.Some reference} {#.Some sample}]])
                              (n/= reference sample)
 
                              _
@@ -136,9 +136,9 @@
                         overwriteS (code.nat overwrite)]
                     (|> (run-js (` ("js array read" (~ idxS)
                                     ("js array write" (~ idxS) (~ overwriteS) (~ arrayS)))))
-                        (case> (^multi (#e.Success elemV)
+                        (case> (^multi {#e.Success elemV}
                                        [(:coerce (Maybe Nat) elemV)
-                                        (#.Some sample)])
+                                        {#.Some sample}])
                                (n/= overwrite sample)
 
                                _
@@ -149,7 +149,7 @@
                     (and (|> (run-js (` ("js array length" (~ deleteS))))
                              (length-check length))
                          (|> (run-js (` ("js array read" (~ idxS) (~ deleteS))))
-                             (case> (^multi (#e.Success elemV)
+                             (case> (^multi {#e.Success elemV}
                                             [(:coerce (Maybe Nat) elemV)
                                              #.None])
                                     #1
diff --git a/lux-jvm/test/test/luxc/lang/translation/jvm.lux b/lux-jvm/test/test/luxc/lang/translation/jvm.lux
index 95812e6ca..86c8253e4 100644
--- a/lux-jvm/test/test/luxc/lang/translation/jvm.lux
+++ b/lux-jvm/test/test/luxc/lang/translation/jvm.lux
@@ -36,10 +36,10 @@
                                                  (evalT.eval sampleI))
                                                (lang.with-current-module "")
                                                (macro.result (io.run! init-jvm))
-                                               (case> (#e.Success valueT)
+                                               (case> {#e.Success valueT}
                                                       (  (:coerce  valueT))
 
-                                                      (#e.Error error)
+                                                      {#e.Error error}
                                                       #0)))]
 
                                     ["jvm convert double-to-float" "jvm convert float-to-double" code.frac frac-sample Frac f/=]
@@ -68,10 +68,10 @@
                                    (evalT.eval sampleI))
                                  (lang.with-current-module "")
                                  (macro.result (io.run! init-jvm))
-                                 (case> (#e.Success valueT)
+                                 (case> {#e.Success valueT}
                                         (  (:coerce  valueT))
 
-                                        (#e.Error error)
+                                        {#e.Error error}
                                         #0)))]
 
                       ["jvm convert long-to-int"   "jvm convert int-to-char"  "jvm convert char-to-long"  code.int int-sample Int i/=]
@@ -95,10 +95,10 @@
                                    (evalT.eval sampleI))
                                  (lang.with-current-module "")
                                  (macro.result (io.run! init-jvm))
-                                 (case> (#e.Success valueT)
+                                 (case> {#e.Success valueT}
                                         (  (:coerce  valueT))
 
-                                        (#e.Error error)
+                                        {#e.Error error}
                                         #0)))]
 
                       ["jvm convert long-to-int" "jvm convert int-to-char" "jvm convert char-to-byte" "jvm convert byte-to-long" code.int int-sample Int i/=]
@@ -136,11 +136,11 @@
                                                     (evalT.eval sampleI))
                                                   (lang.with-current-module "")
                                                   (macro.result (io.run! init-jvm))
-                                                  (case> (#e.Success valueT)
+                                                  (case> {#e.Success valueT}
                                                          ( ( param subject)
                                                                  (:coerce  valueT))
 
-                                                         (#e.Error error)
+                                                         {#e.Error error}
                                                          #0)))]
 
                                        [(format "jvm "  " +") <+>]
@@ -175,11 +175,11 @@
                                       (evalT.eval sampleI))
                                     (lang.with-current-module "")
                                     (macro.result (io.run! init-jvm))
-                                    (case> (#e.Success valueT)
+                                    (case> {#e.Success valueT}
                                            (n/= ( param subject)
                                                 (:coerce Nat valueT))
 
-                                           (#e.Error error)
+                                           {#e.Error error}
                                            #0)))]
 
                          [(format "jvm "  " and") bit.and]
@@ -209,11 +209,11 @@
                                       (evalT.eval sampleI))
                                     (lang.with-current-module "")
                                     (macro.result (io.run! init-jvm))
-                                    (case> (#e.Success valueT)
+                                    (case> {#e.Success valueT}
                                            ( ( shift ( subject))
                                                    (:coerce  valueT))
 
-                                           (#e.Error error)
+                                           {#e.Error error}
                                            #0)))]
 
                          [(format "jvm "  " shl") bit.left-shift Nat n/= id code.nat]
@@ -241,11 +241,11 @@
                                                     (evalT.eval sampleI))
                                                   (lang.with-current-module "")
                                                   (macro.result (io.run! init-jvm))
-                                                  (case> (#e.Success valueT)
+                                                  (case> {#e.Success valueT}
                                                          (bit/= ( param subject)
                                                                 (:coerce Bit valueT))
 
-                                                         (#e.Error error)
+                                                         {#e.Error error}
                                                          #0)))]
 
                                        [(format "jvm "  " =") <=>]
@@ -297,10 +297,10 @@
                                                  (evalT.eval sampleI))
                                                (lang.with-current-module "")
                                                (macro.result (io.run! init-jvm))
-                                               (case> (#e.Success outputZ)
+                                               (case> {#e.Success outputZ}
                                                       (  (:coerce  outputZ))
 
-                                                      (#e.Error error)
+                                                      {#e.Error error}
                                                       #0)))]
 
                                     ["boolean" Bit valueZ bit/= (code.bit valueZ)
@@ -345,10 +345,10 @@
                                                  (evalT.eval sampleI))
                                                (lang.with-current-module "")
                                                (macro.result (io.run! init-jvm))
-                                               (case> (#e.Success outputT)
+                                               (case> {#e.Success outputT}
                                                       (  (:coerce  outputT))
 
-                                                      (#e.Error error)
+                                                      {#e.Error error}
                                                       #0)))]
 
                                     ["char" Int valueC i/=
@@ -373,10 +373,10 @@
                                          (evalT.eval sampleI))
                                        (lang.with-current-module "")
                                        (macro.result (io.run! init-jvm))
-                                       (case> (#e.Success outputT)
+                                       (case> {#e.Success outputT}
                                               (f/= valueD (:coerce Frac outputT))
 
-                                              (#e.Error error)
+                                              {#e.Error error}
                                               #0)))
                              (test "jvm array length"
                                    (|> (do macro.Monad
@@ -384,10 +384,10 @@
                                          (evalT.eval sampleI))
                                        (lang.with-current-module "")
                                        (macro.result (io.run! init-jvm))
-                                       (case> (#e.Success outputT)
+                                       (case> {#e.Success outputT}
                                               (n/= size (:coerce Nat outputT))
 
-                                              (#e.Error error)
+                                              {#e.Error error}
                                               #0)))
                              )))))
 
@@ -435,10 +435,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (:coerce Bit outputT)
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm object null?"
                   (|> (do macro.Monad
@@ -446,10 +446,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (not (:coerce Bit outputT))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm object synchronized"
                   (|> (do macro.Monad
@@ -457,10 +457,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (i/= sample (:coerce Int outputT))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm object throw"
                   (|> (do macro.Monad
@@ -472,15 +472,15 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (case (:coerce (e.Error Any) outputT)
-                               (#e.Error error)
+                               {#e.Error error}
                                (text.contains? exception-message error)
 
-                               (#e.Success outputT)
+                               {#e.Success outputT}
                                #0)
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm object class"
                   (|> (do macro.Monad
@@ -488,10 +488,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (|> outputT (:coerce Class) (Class::getName []) (text/= class))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm object instance?"
                   (|> (do macro.Monad
@@ -499,10 +499,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (:coerce Bit outputT)
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             ))))
 
@@ -531,10 +531,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (i/= GregorianCalendar::AD (:coerce Int outputT))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm member static put"
                   (|> (do macro.Monad
@@ -543,10 +543,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (same? hostL.unit (:coerce Text outputT))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm member virtual get"
                   (|> (do macro.Monad
@@ -554,10 +554,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (text/= sample-string (:coerce Text outputT))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm member virtual put"
                   (|> (do macro.Monad
@@ -567,10 +567,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (text/= other-sample-string (:coerce Text outputT))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             ))))
 
@@ -596,10 +596,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (i/= sample (:coerce Int outputT))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm member invoke virtual"
                   (|> (do macro.Monad
@@ -609,10 +609,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (:coerce Bit outputT)
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm member invoke interface"
                   (|> (do macro.Monad
@@ -622,10 +622,10 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (:coerce Bit outputT)
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             (test "jvm member invoke constructor"
                   (|> (do macro.Monad
@@ -633,9 +633,9 @@
                         (evalT.eval sampleI))
                       (lang.with-current-module "")
                       (macro.result (io.run! init-jvm))
-                      (case> (#e.Success outputT)
+                      (case> {#e.Success outputT}
                              (host.instance? ArrayList (:coerce Object outputT))
 
-                             (#e.Error error)
+                             {#e.Error error}
                              #0)))
             ))))
diff --git a/lux-lua/source/program.lux b/lux-lua/source/program.lux
index 1ff6e2e57..04f566788 100644
--- a/lux-lua/source/program.lux
+++ b/lux-lua/source/program.lux
@@ -170,7 +170,7 @@
                                  (let [re_wrap (: (-> java/lang/Object java/lang/Object)
                                                   (function (_ unwrapped)
                                                     (case (ffi.check [java/lang/Object] unwrapped)
-                                                      (#.Some sub_value)
+                                                      {#.Some sub_value}
                                                       (|> sub_value (:as (Array java/lang/Object)) lux_structure (:as java/lang/Object))
                                                       
                                                       #.None
@@ -194,14 +194,14 @@
                                           (net/sandius/rembulan/impl/DefaultTable
                                            [] (rawget self [field java/lang/Object]) java/lang/Object
                                            (case (ffi.check net/sandius/rembulan/ByteString field)
-                                             (#.Some field)
+                                             {#.Some field}
                                              (case (net/sandius/rembulan/ByteString::decode field)
                                                (^ (static runtime.variant_tag_field))
                                                (|> value (array.read! 0) maybe.trusted)
                                                
                                                (^ (static runtime.variant_flag_field))
                                                (case (array.read! 1 value)
-                                                 (#.Some _)
+                                                 {#.Some _}
                                                  (:as java/lang/Object "")
 
                                                  #.None
@@ -215,7 +215,7 @@
 
                                              #.None
                                              (case (ffi.check java/lang/Long field)
-                                               (#.Some idx)
+                                               {#.Some idx}
                                                (|> value (array.read! (|> idx (:as Nat) --)) maybe.trusted re_wrap)
                                                
                                                #.None
@@ -230,14 +230,14 @@
                                  (case [(net/sandius/rembulan/Table::get_key (:as java/lang/Object runtime.variant_tag_field) host_object)
                                         (net/sandius/rembulan/Table::get_key (:as java/lang/Object runtime.variant_flag_field) host_object)
                                         (net/sandius/rembulan/Table::get_key (:as java/lang/Object runtime.variant_value_field) host_object)]
-                                   (^multi [(#.Some tag) ?flag (#.Some value)]
+                                   (^multi [{#.Some tag} ?flag {#.Some value}]
                                            [(read value)
-                                            (#try.Success value)])
-                                   (#try.Success [(: Any (|> tag (:as java/lang/Long) java/lang/Long::intValue))
+                                            {#try.Success value}])
+                                   {#try.Success [(: Any (|> tag (:as java/lang/Long) java/lang/Long::intValue))
                                                   (: Any (case ?flag
-                                                           (#.Some _) (: Any "")
+                                                           {#.Some _} (: Any "")
                                                            #.None (:as Any (ffi.null))))
-                                                  (: Any value)])
+                                                  (: Any value)]}
 
                                    _
                                    (exception.except ..unknown_kind_of_object [(:as java/lang/Object host_object)])))
@@ -254,14 +254,14 @@
                                          #.None
                                          (recur num_keys (++ idx) output)
 
-                                         (#.Some member)
+                                         {#.Some member}
                                          (case (read member)
-                                           (#try.Success parsed_member)
+                                           {#try.Success parsed_member}
                                            (recur num_keys (++ idx) (array.write! idx (:as java/lang/Object parsed_member) output))
 
-                                           (#try.Failure error)
-                                           (#try.Failure error)))
-                                       (#try.Success output)))))
+                                           {#try.Failure error}
+                                           {#try.Failure error}))
+                                       {#try.Success output}))))
 
                                (exception: .public nil_has_no_lux_representation)
 
@@ -271,7 +271,7 @@
                                            (exception.except ..nil_has_no_lux_representation []))
                                          (~~ (template [ ]
                                                [(case (ffi.check  host_object)
-                                                  (#.Some typed_object)
+                                                  {#.Some typed_object}
                                                   (|> typed_object )
 
                                                   _)]
@@ -285,12 +285,12 @@
                                                [program/StructureValue (<| #try.Success program/StructureValue::getValue)]
                                                ))
                                          (case (ffi.check net/sandius/rembulan/impl/DefaultTable host_object)
-                                           (#.Some typed_object)
+                                           {#.Some typed_object}
                                            (case (read_variant read typed_object)
-                                             (#try.Success value)
-                                             (#try.Success value)
+                                             {#try.Success value}
+                                             {#try.Success value}
 
-                                             (#try.Failure error)
+                                             {#try.Failure error}
                                              (read_tuple read typed_object))
 
                                            _)
@@ -327,15 +327,15 @@
                                (def: (expander baggage macro inputs lux)
                                  (-> Baggage Expander)
                                  (case (..ensure_function macro)
-                                   (#.Some macro)
+                                   {#.Some macro}
                                    (case (..call_macro baggage inputs lux macro)
-                                     (#try.Success output)
+                                     {#try.Success output}
                                      (|> output
                                          (:as (Try [Lux (List Code)]))
                                          #try.Success)
 
-                                     (#try.Failure error)
-                                     (#try.Failure error))
+                                     {#try.Failure error}
+                                     {#try.Failure error})
 
                                    #.None
                                    (exception.except ..cannot_apply_a_non_function (:as java/lang/Object macro)))))]
@@ -345,7 +345,7 @@
         @.lua
         (def: (expander macro inputs lux)
           Expander
-          (#try.Success ((:as Macro' macro) inputs lux)))]))
+          {#try.Success ((:as Macro' macro) inputs lux)})]))
 
 (with_expansions [ (as_is (with_expansions [$var_args (_.var "...")
                                                  $str_rel_to_abs (_.var "_utf8_str_rel_to_abs")
@@ -555,7 +555,7 @@
                                                          #.None
                                                          (in [])
 
-                                                         (#.Some value)
+                                                         {#.Some value}
                                                          (read value)))))
                                            _ (try.trusted (run! ..rembulan_prelude))]
                                        [[state_context executor]
@@ -596,9 +596,9 @@
                                            (do try.monad
                                              [lua_function (..load (_.code code))]
                                              (let [output ("lua apply" lua_function)]
-                                               (#try.Success (if ("lua object nil?" output)
+                                               {#try.Success (if ("lua object nil?" output)
                                                                []
-                                                               output))))))]
+                                                               output)}))))]
                              (: (Host _.Expression _.Statement)
                                 (implementation
                                  (def: (evaluate! context code)
diff --git a/lux-php/source/program.lux b/lux-php/source/program.lux
index c2c61b1ef..9421b6f9c 100644
--- a/lux-php/source/program.lux
+++ b/lux-php/source/program.lux
@@ -185,34 +185,34 @@
   (<| (if (ffi.null? value)
         (php/runtime/memory/NullMemory::INSTANCE))
       (case (ffi.check java/lang/Boolean value)
-        (#.Some value)
+        {#.Some value}
         (if (:as Bit value)
           (php/runtime/memory/TrueMemory::INSTANCE)
           (php/runtime/memory/FalseMemory::INSTANCE))
 
         #.None)
       (case (ffi.check java/lang/Long value)
-        (#.Some value)
+        {#.Some value}
         (php/runtime/memory/LongMemory::new value)
 
         #.None)
       (case (ffi.check java/lang/Double value)
-        (#.Some value)
+        {#.Some value}
         (php/runtime/memory/DoubleMemory::new value)
 
         #.None)
       (case (ffi.check java/lang/String value)
-        (#.Some value)
+        {#.Some value}
         (php/runtime/memory/StringMemory::new value)
 
         #.None)
       (case (ffi.check [java/lang/Object] value)
-        (#.Some value)
+        {#.Some value}
         (lux_structure (:as (Array java/lang/Object) value))
 
         #.None)
       (case (ffi.check php/runtime/memory/ObjectMemory value)
-        (#.Some value)
+        {#.Some value}
         value
 
         #.None)
@@ -243,7 +243,7 @@
          php/runtime/Memory
          (`` (<| (~~ (template [  ]
                        [(case (ffi.check  index)
-                          (#.Some index)
+                          {#.Some index}
                           ( trace ( index) self)
                           
                           #.None)]
@@ -286,7 +286,7 @@
              #.None
              (php/runtime/memory/NullMemory::INSTANCE)
              
-             (#.Some value)
+             {#.Some value}
              ..unit)
 
            (^ (static runtime.variant_value_field))
@@ -317,17 +317,17 @@
                         (:as php/runtime/memory/ReferenceMemory)
                         php/runtime/memory/ReferenceMemory::getValue)]
           (case (ffi.check php/runtime/memory/NullMemory value)
-            (#.Some _)
+            {#.Some _}
             (recur (++ idx) output)
 
             #.None
             (case (read value)
-              (#try.Success lux_value)
+              {#try.Success lux_value}
               (recur (++ idx) (array.write! idx lux_value output))
 
               error
               error)))
-        (#try.Success output)))))
+        {#try.Success output}))))
 
 (def: variant_tag_field
   (php/runtime/memory/StringMemory::new runtime.variant_tag_field))
@@ -348,8 +348,8 @@
              (php/runtime/memory/ArrayMemory::get ..variant_value_field)
              maybe.trusted
              read)]
-    [(#try.Success tag) (#try.Success value)]
-    (#try.Success [(java/lang/Long::intValue (:as java/lang/Long tag))
+    [{#try.Success tag} {#try.Success value}]
+    {#try.Success [(java/lang/Long::intValue (:as java/lang/Long tag))
                    (: Any
                       (case (|> host_object
                                 (php/runtime/memory/ArrayMemory::get ..variant_flag_field)
@@ -357,12 +357,12 @@
                                 (:as php/runtime/memory/ReferenceMemory)
                                 php/runtime/memory/ReferenceMemory::getValue
                                 (ffi.check php/runtime/memory/NullMemory))
-                        (#.Some _)
+                        {#.Some _}
                         (ffi.null)
 
                         #.None
                         synthesis.unit))
-                   value])
+                   value]}
 
     _
     (exception.throw ..unknown_kind_of_object host_object)))
@@ -376,8 +376,8 @@
   Reader
   (`` (<| (~~ (template [ ]
                 [(case (ffi.check  host_object)
-                   (#.Some _)
-                   (#try.Success )
+                   {#.Some _}
+                   {#try.Success }
 
                    #.None)]
 
@@ -386,7 +386,7 @@
                 ))
           (~~ (template [ ]
                 [(case (ffi.check  host_object)
-                   (#.Some value)
+                   {#.Some value}
                    (`` (|> value (~~ (template.splice ))))
 
                    #.None)]
@@ -399,10 +399,10 @@
                 [php/runtime/memory/ObjectMemory [#try.Success]]
                 ))
           (case (ffi.check php/runtime/memory/ArrayMemory host_object)
-            (#.Some value)
+            {#.Some value}
             (if (|> value
                     (php/runtime/memory/ArrayMemory::get ..tuple_size_field)
-                    (case> (#.Some _) false #.None true))
+                    (case> {#.Some _} false #.None true))
               (read_variant read value)
               (read_tuple read value))
 
@@ -457,7 +457,7 @@
 (def: (expander macro inputs lux)
   Expander
   (case (ensure_macro macro)
-    (#.Some macro)
+    {#.Some macro}
     (call_macro inputs lux macro)
 
     #.None
diff --git a/lux-python/source/program.lux b/lux-python/source/program.lux
index afb244311..4aa41e066 100644
--- a/lux-python/source/program.lux
+++ b/lux-python/source/program.lux
@@ -128,17 +128,17 @@
                                                       (array.empty size))]
                                      (if (n.< size idx)
                                        (case (org/python/core/PyObject::__getitem__ (.int idx) host_object)
-                                         (#try.Failure try)
-                                         (#try.Failure try)
+                                         {#try.Failure try}
+                                         {#try.Failure try}
                                          
-                                         (#try.Success value)
+                                         {#try.Success value}
                                          (case (read value)
-                                           (#try.Failure try)
-                                           (#try.Failure try)
+                                           {#try.Failure try}
+                                           {#try.Failure try}
 
-                                           (#try.Success lux_value)
+                                           {#try.Success lux_value}
                                            (recur (++ idx) (array.write! idx lux_value output))))
-                                       (#try.Success output)))))
+                                       {#try.Success output}))))
 
                                (exception: (unknown_kind_of_object [object java/lang/Object])
                                  (exception.report
@@ -149,26 +149,26 @@
                                  (case [(org/python/core/PyObject::__getitem__ +0 host_object)
                                         (org/python/core/PyObject::__getitem__ +1 host_object)
                                         (org/python/core/PyObject::__getitem__ +2 host_object)]
-                                   (^or [(#try.Failure try) _ _]
-                                        [_ (#try.Failure try) _]
-                                        [_ _ (#try.Failure try)])
-                                   (#try.Failure try)
+                                   (^or [{#try.Failure try} _ _]
+                                        [_ {#try.Failure try} _]
+                                        [_ _ {#try.Failure try}])
+                                   {#try.Failure try}
                                    
-                                   (^multi [(#try.Success tag) (#try.Success flag) (#try.Success value)]
+                                   (^multi [{#try.Success tag} {#try.Success flag} {#try.Success value}]
                                            [(read tag)
-                                            (#try.Success tag)]
+                                            {#try.Success tag}]
                                            [(read value)
-                                            (#try.Success value)])
-                                   (#try.Success [tag
+                                            {#try.Success value}])
+                                   {#try.Success [tag
                                                   (: Any
                                                      (case (ffi.check org/python/core/PyNone
                                                                       (:as java/lang/Object flag))
-                                                       (#.Some _)
+                                                       {#.Some _}
                                                        (:as Any (ffi.null))
 
                                                        #.None
                                                        (:as Any synthesis.unit)))
-                                                  value])
+                                                  value]}
 
                                    _
                                    (exception.except ..unknown_kind_of_object [(:as java/lang/Object host_object)])))
@@ -177,8 +177,8 @@
                                  Translator
                                  (`` (<| (~~ (template [ ]
                                                [(case (ffi.check  (:as  host_object))
-                                                  (#.Some host_object)
-                                                  (#try.Success (`` (|> host_object (~~ (template.spliced )))))
+                                                  {#.Some host_object}
+                                                  {#try.Success (`` (|> host_object (~~ (template.spliced ))))}
 
                                                   _)]
 
@@ -198,7 +198,7 @@
                                                ))
                                          (~~ (template [ ]
                                                [(case (ffi.check  host_object)
-                                                  (#.Some host_object)
+                                                  {#.Some host_object}
                                                   (<|  (:as org/python/core/PyObject) host_object)
 
                                                   _)]
@@ -207,7 +207,7 @@
                                                [org/python/core/PyList (..read_tuple read)]
                                                ))
                                          ... (exception.except ..unknown_kind_of_object [(:as java/lang/Object host_object)])
-                                         (#try.Success host_object))))
+                                         {#try.Success host_object})))
 
                                (exception: (cannot_apply_a_non_function [object java/lang/Object])
                                  (exception.report
@@ -249,16 +249,16 @@
                                (def: (expander macro inputs lux)
                                  Expander
                                  (case (ensure_macro macro)
-                                   (#.Some macro)
+                                   {#.Some macro}
                                    (case (..call_macro inputs lux macro)
-                                     (#try.Success output)
+                                     {#try.Success output}
                                      (|> output
                                          (:as org/python/core/PyObject)
                                          ..read
                                          (:as (Try (Try [Lux (List Code)]))))
 
-                                     (#try.Failure error)
-                                     (#try.Failure error))
+                                     {#try.Failure error}
+                                     {#try.Failure error})
 
                                    #.None
                                    (exception.except ..cannot_apply_a_non_function (:as java/lang/Object macro)))))]
@@ -268,7 +268,7 @@
         @.python
         (def: (expander macro inputs lux)
           Expander
-          (#try.Success ((:as Macro' macro) inputs lux)))]))
+          {#try.Success ((:as Macro' macro) inputs lux)})]))
 
 (with_expansions [ (def: host
                           (IO (Host (_.Expression Any) (_.Statement Any)))
@@ -281,10 +281,10 @@
                                     execute! (: (-> (_.Statement Any) (Try Any))
                                                 (function (execute! input)
                                                   (case (org/python/util/PythonInterpreter::exec (_.code input) interpreter)
-                                                    (#try.Failure error)
+                                                    {#try.Failure error}
                                                     (if (text.contains? "maximum recursion depth exceeded" error)
                                                       (execute! input)
-                                                      (#try.Failure error))
+                                                      {#try.Failure error})
 
                                                     output
                                                     output)))]
diff --git a/lux-r/source/luxc/lang/synthesis/variable.lux b/lux-r/source/luxc/lang/synthesis/variable.lux
deleted file mode 100644
index 82478a2d6..000000000
--- a/lux-r/source/luxc/lang/synthesis/variable.lux
+++ /dev/null
@@ -1,101 +0,0 @@
-(.module:
-  lux
-  (lux (data [number]
-             (coll [list "list/" Mix Monoid]
-                   ["s" set])))
-  (luxc (lang ["la" analysis]
-              ["ls" synthesis]
-              ["[0]L" variable {"+" [Variable]}])))
-
-(def: (bound-vars path)
-  (-> ls.Path (List Variable))
-  (case path
-    (#ls.BindP register)
-    (list (.int register))
-
-    (^or (#ls.SeqP pre post) (#ls.AltP pre post))
-    (list/composite (bound-vars pre) (bound-vars post))
-    
-    _
-    (list)))
-
-(def: (path-bodies path)
-  (-> ls.Path (List ls.Synthesis))
-  (case path
-    (#ls.ExecP body)
-    (list body)
-
-    (#ls.SeqP pre post)
-    (path-bodies post)
-
-    (#ls.AltP pre post)
-    (list/composite (path-bodies pre) (path-bodies post))
-    
-    _
-    (list)))
-
-(def: (non-arg? arity var)
-  (-> ls.Arity Variable Bit)
-  (and (variableL.local? var)
-       (n/> arity (.nat var))))
-
-(type: Tracker
-  (s.Set Variable))
-
-(def: init-tracker
-  Tracker
-  (s.new number.Hash))
-
-(def: (unused-vars current-arity bound exprS)
-  (-> ls.Arity (List Variable) ls.Synthesis (List Variable))
-  (let [tracker (loop [exprS exprS
-                       tracker (list/mix s.has init-tracker bound)]
-                  (case exprS
-                    (#ls.Variable var)
-                    (if (non-arg? current-arity var)
-                      (s.lacks var tracker)
-                      tracker)
-                    
-                    (#ls.Variant tag last? memberS)
-                    (recur memberS tracker)
-
-                    (#ls.Tuple membersS)
-                    (list/mix recur tracker membersS)
-
-                    (#ls.Call funcS argsS)
-                    (list/mix recur (recur funcS tracker) argsS)
-                    
-                    (^or (#ls.Recur argsS)
-                         (#ls.Procedure name argsS))
-                    (list/mix recur tracker argsS)
-
-                    (#ls.Let offset inputS outputS)
-                    (|> tracker (recur inputS) (recur outputS))
-
-                    (#ls.If testS thenS elseS)
-                    (|> tracker (recur testS) (recur thenS) (recur elseS))
-
-                    (#ls.Loop offset initsS bodyS)
-                    (recur bodyS (list/mix recur tracker initsS))
-
-                    (#ls.Case inputS outputPS)
-                    (let [tracker' (list/mix s.has
-                                             (recur inputS tracker)
-                                             (bound-vars outputPS))]
-                      (list/mix recur tracker' (path-bodies outputPS)))
-
-                    (#ls.Function arity env bodyS)
-                    (list/mix s.lacks tracker env)
-
-                    _
-                    tracker
-                    ))]
-    (s.to-list tracker)))
-
-... (def: (optimize-register-use current-arity [pathS bodyS])
-...   (-> ls.Arity [ls.Path ls.Synthesis] [ls.Path ls.Synthesis])
-...   (let [bound (bound-vars pathS)
-...         unused (unused-vars current-arity bound bodyS)
-...         adjusted (adjust-vars unused bound)]
-...     [(|> pathS (clean-pattern adjusted) simplify-pattern)
-...      (clean-expression adjusted bodyS)]))
diff --git a/lux-r/source/program.lux b/lux-r/source/program.lux
index ec77f8c0d..990fb6dbc 100644
--- a/lux-r/source/program.lux
+++ b/lux-r/source/program.lux
@@ -188,7 +188,7 @@
         ...             (let [sub_value (:as java/lang/Object sub_value)]
         ...               (`` (<| (~~ (template [ ]
         ...                             [(case (ffi.check  sub_value)
-        ...                                (#.Some sub_value)
+        ...                                {#.Some sub_value}
         ...                                (`` (|> sub_value (~~ (template.splice ))))
         ...                                #.None)]
 
@@ -362,7 +362,7 @@
            (case (|> host_object
                      (org/renjin/sexp/ListVector::get_field runtime.variant_flag_field)
                      (ffi.check org/renjin/sexp/Null))
-             (#.Some _)
+             {#.Some _}
              (: Any (ffi.null))
 
              _
@@ -377,12 +377,12 @@
          (|> host_object
              (org/renjin/sexp/ListVector::get_field runtime.i64_low_field)
              (ffi.check org/renjin/sexp/IntArrayVector))]
-    [(#.Some high) (#.Some low)]
-    (#try.Success (runtime.lux_i64 (org/renjin/sexp/SEXP::asInt high)
-                                   (org/renjin/sexp/SEXP::asInt low)))
+    [{#.Some high} {#.Some low}]
+    {#try.Success (runtime.lux_i64 (org/renjin/sexp/SEXP::asInt high)
+                                   (org/renjin/sexp/SEXP::asInt low))}
 
     _
-    (#try.Failure "")))
+    {#try.Failure ""}))
 
 (def: (read_tuple read host_object)
   (-> (Reader java/lang/Object) (Reader org/renjin/sexp/ListVector))
@@ -391,12 +391,12 @@
            output (:as (Array Any) (array.new size))]
       (if (n.< size idx)
         (case (|> host_object (org/renjin/sexp/ListVector::get_index (.int idx)) (:as java/lang/Object) read)
-          (#try.Failure error)
-          (#try.Failure error)
+          {#try.Failure error}
+          {#try.Failure error}
 
-          (#try.Success member)
+          {#try.Success member}
           (recur (++ idx) (array.write! idx (:as Any member) output)))
-        (#try.Success output)))))
+        {#try.Success output}))))
 
 (def: (field_class field host_object)
   (-> Text org/renjin/sexp/ListVector Text)
@@ -411,23 +411,23 @@
   (exec
     ... ("lux io log" (exception.construct ..unknown_kind_of_object [host_object]))
     (`` (<| (case (ffi.check org/renjin/sexp/ListVector host_object)
-              (#.Some host_object)
+              {#.Some host_object}
               (<| (case (..read_variant read host_object)
-                    (#try.Success output)
-                    (#try.Success output)
+                    {#try.Success output}
+                    {#try.Success output}
 
-                    (#try.Failure _))
+                    {#try.Failure _})
                   (case (..read_i64 host_object)
-                    (#try.Success output)
-                    (#try.Success output)
+                    {#try.Success output}
+                    {#try.Success output}
 
-                    (#try.Failure _))
+                    {#try.Failure _})
                   (..read_tuple read host_object))
 
               #.None)
             (~~ (template [ ]
                   [(case (ffi.check  host_object)
-                     (#.Some host_object)
+                     {#.Some host_object}
                      (`` (|> host_object (~~ (template.splice ))))
 
                      #.None)]
@@ -458,10 +458,10 @@
                                        (org/renjin/sexp/PairList$Builder::add (..host_value lux))
                                        org/renjin/sexp/PairList$Builder::build
                                        (:as org/renjin/sexp/PairList)))
-                      (#try.Success r_inputs)
+                      {#try.Success r_inputs}
                       r_inputs
                       
-                      (#try.Failure error)
+                      {#try.Failure error}
                       (exec
                         ("lux io log" error)
                         (panic! error))))
@@ -481,7 +481,7 @@
 (def: (expander interpreter macro inputs lux)
   (-> org/renjin/script/RenjinScriptEngine Expander)
   (case (ensure_macro macro)
-    (#.Some macro)
+    {#.Some macro}
     (call_macro interpreter inputs lux macro)
 
     #.None
@@ -569,7 +569,7 @@
             (:as Try)
             (exec
               ("lux io log" "TODO: Extender")
-              (#try.Failure "TODO: Extender"))))
+              {#try.Failure "TODO: Extender"})))
 
       @.r
       (def: (extender handler)
diff --git a/lux-ruby/source/program.lux b/lux-ruby/source/program.lux
index 25e3cc2ab..37713dfdb 100644
--- a/lux-ruby/source/program.lux
+++ b/lux-ruby/source/program.lux
@@ -242,14 +242,14 @@
           #.None
           (recur (++ idx) output)
           
-          (#.Some value)
+          {#.Some value}
           (case (read value)
-            (#try.Failure error)
-            (#try.Failure error)
+            {#try.Failure error}
+            {#try.Failure error}
 
-            (#try.Success lux_value)
+            {#try.Success lux_value}
             (recur (++ idx) (array.write! idx lux_value output))))
-        (#try.Success output)))))
+        {#try.Success output}))))
 
 (exception: (unknown_kind_of_object [object java/lang/Object])
   (exception.report
@@ -261,18 +261,18 @@
   (case [(org/jruby/RubyHash::get (:as java/lang/String runtime.variant_tag_field) host_object)
          (org/jruby/RubyHash::get (:as java/lang/String runtime.variant_flag_field) host_object)
          (org/jruby/RubyHash::get (:as java/lang/String runtime.variant_value_field) host_object)]
-    (^multi [(#.Some tag) ?flag (#.Some value)]
+    (^multi [{#.Some tag} ?flag {#.Some value}]
             [(read value)
-             (#try.Success value)])
-    (#try.Success [(:as Any (java/lang/Long::intValue (:as java/lang/Long tag)))
+             {#try.Success value}])
+    {#try.Success [(:as Any (java/lang/Long::intValue (:as java/lang/Long tag)))
                    (:as Any
                         (case ?flag
-                          (#.Some _)
+                          {#.Some _}
                           ""
 
                           #.None
                           (ffi.null)))
-                   (:as Any value)])
+                   (:as Any value)]}
 
     _
     (exception.except ..unknown_kind_of_object [(:as java/lang/Object host_object)])))
@@ -285,7 +285,7 @@
             (exception.except ..nil_has_no_lux_representation []))
           (~~ (template [ ]
                 [(case (ffi.check  host_object)
-                   (#.Some typed_object)
+                   {#.Some typed_object}
                    (`` (|> typed_object (~~ (template.spliced ))))
 
                    _)]
@@ -316,27 +316,27 @@
   (-> (-> (Array java/lang/Object) org/jruby/runtime/builtin/IRubyObject)
       (-> java/lang/Object org/jruby/runtime/builtin/IRubyObject))
   (<| (case (ffi.check [java/lang/Object] value)
-        (#.Some value)
+        {#.Some value}
         (|> value (:as (Array java/lang/Object)) lux_structure)
 
         #.None)
       (case (ffi.check java/lang/Boolean value)
-        (#.Some value)
+        {#.Some value}
         (org/jruby/RubyBoolean::newBoolean ..initial_ruby_runtime value)
         
         #.None)
       (case (ffi.check java/lang/Long value)
-        (#.Some value)
+        {#.Some value}
         (org/jruby/RubyFixnum::new ..initial_ruby_runtime value)
         
         #.None)
       (case (ffi.check java/lang/Double value)
-        (#.Some value)
+        {#.Some value}
         (org/jruby/RubyFloat::new ..initial_ruby_runtime value)
         
         #.None)
       (case (ffi.check java/lang/String value)
-        (#.Some value)
+        {#.Some value}
         (org/jruby/RubyString::newInternalFromJavaExternal ..initial_ruby_runtime value)
         
         #.None)
@@ -378,9 +378,9 @@
      org/jruby/runtime/builtin/IRubyObject
      (let [member (ffi.read! 0 args)]
        (<| (case (ffi.check org/jruby/RubyFixnum member)
-             (#.Some member)
+             {#.Some member}
              (case (array.read! (org/jruby/RubyFixnum::getLongValue member) value)
-               (#.Some value)
+               {#.Some value}
                (wrapped_lux_value lux_structure value)
 
                #.None
@@ -388,7 +388,7 @@
 
              #.None)
            (case (ffi.check org/jruby/RubyString member)
-             (#.Some member)
+             {#.Some member}
              (case (:as Text (org/jruby/RubyString::asJavaString member))
                (^ (static runtime.variant_tag_field))
                (|> value
@@ -403,12 +403,12 @@
                  #.None
                  ..ruby_nil
                  
-                 (#.Some flag)
+                 {#.Some flag}
                  ..lux_unit)
                
                (^ (static runtime.variant_value_field))
                (case (array.read! 2 value)
-                 (#.Some value)
+                 {#.Some value}
                  (wrapped_lux_value lux_structure value)
 
                  #.None
@@ -419,10 +419,10 @@
              
              #.None)
            (case (ffi.check org/jruby/RubyRange member)
-             (#.Some member)
+             {#.Some member}
              (case [(|> member (org/jruby/RubyRange::first thread_context) (ffi.check org/jruby/RubyFixnum))
                     (|> member (org/jruby/RubyRange::size thread_context) (ffi.check org/jruby/RubyFixnum))]
-               [(#.Some first) (#.Some size)]
+               [{#.Some first} {#.Some size}]
                (let [first (org/jruby/RubyFixnum::getLongValue first)
                      size (org/jruby/RubyFixnum::getLongValue size)]
                  (lux_structure (java/util/Arrays::copyOfRange value first (i.+ first size))))
@@ -448,10 +448,10 @@
      org/jruby/runtime/builtin/IRubyObject
      (let [reference (ffi.read! 0 args)]
        (case (..read (:as java/lang/Object reference))
-         (#try.Success reference)
+         {#try.Success reference}
          (org/jruby/RubyBoolean::newBoolean ..initial_ruby_runtime (same? (: Any reference) (: Any value)))
          
-         (#try.Failure error)
+         {#try.Failure error}
          (org/jruby/RubyBoolean::newBoolean ..initial_ruby_runtime false))))))
 
 (def: (lux_wrapper_length value)
@@ -508,7 +508,7 @@
      (case (|> args
                (ffi.read! 0)
                (ffi.check org/jruby/RubySymbol))
-       (#.Some method)
+       {#.Some method}
        (|> (case (|> method
                      org/jruby/RubySymbol::asJavaString
                      (:as Text))
@@ -585,16 +585,16 @@
 (def: (expander macro inputs lux)
   Expander
   (case (ensure_macro macro)
-    (#.Some macro)
+    {#.Some macro}
     (case (call_macro inputs lux macro)
-      (#try.Success output)
+      {#try.Success output}
       (|> output
           (:as java/lang/Object)
           ..read
           (:as (Try (Try [Lux (List Code)]))))
 
-      (#try.Failure error)
-      (#try.Failure error))
+      {#try.Failure error}
+      {#try.Failure error})
 
     #.None
     (exception.except ..cannot_apply_a_non_function [(:as java/lang/Object macro)])))
@@ -692,7 +692,7 @@
                                   (let [inputs (array.list #.None inputs)])
                                   (case inputs
                                     (^ (list))
-                                    (#try.Success (host_phase partial_application phase))
+                                    {#try.Success (host_phase partial_application phase)}
                                     
                                     (^ (list input/0))
                                     (do try.monad
diff --git a/lux-scheme/source/program.lux b/lux-scheme/source/program.lux
index ee5b95952..1eac52eeb 100644
--- a/lux-scheme/source/program.lux
+++ b/lux-scheme/source/program.lux
@@ -134,14 +134,14 @@
 (def: (variant? value)
   (-> Any Bit)
   (case (ffi.check [java/lang/Object] (:as java/lang/Object value))
-    (#.Some array)
+    {#.Some array}
     ... TODO: Get rid of this coercion ASAP.
     (let [array (:as (Array java/lang/Object) array)]
       (and (n.= 3 (array.size array))
            (case (array.read! 0 array)
-             (#.Some tag)
+             {#.Some tag}
              (case (ffi.check java/lang/Integer tag)
-               (#.Some _)
+               {#.Some _}
                true
 
                #.None
@@ -177,7 +177,7 @@
      [] (getCar self []) java/lang/Object
      (if cdr?
        (case (array.read! 1 value)
-         (#.Some flag_is_set)
+         {#.Some flag_is_set}
          true
          
          #.None
@@ -243,7 +243,7 @@
 (def: (lux_value value)
   (-> java/lang/Object java/lang/Object)
   (<| (case (ffi.check [java/lang/Object] value)
-        (#.Some value)
+        {#.Some value}
         ... TODO: Get rid of the coercions below.
         (if (variant? value)
           (variant_value lux_value false (:as (Array java/lang/Object) value))
@@ -269,7 +269,7 @@
     [tag (read (gnu/lists/Pair::getCar host_object))
      #let [host_object (:as gnu/lists/Pair (gnu/lists/Pair::getCdr host_object))
            flag (case (ffi.check java/lang/Boolean (gnu/lists/Pair::getCar host_object))
-                  (#.Some flag)
+                  {#.Some flag}
                   (:as Bit flag)
                   
                   #.None
@@ -285,19 +285,19 @@
                      (array.new size))]
       (if (n.< size idx)
         (case (read (gnu/lists/FVector::getRaw (.int idx) host_object))
-          (#try.Failure error)
-          (#try.Failure error)
+          {#try.Failure error}
+          {#try.Failure error}
 
-          (#try.Success lux_value)
+          {#try.Success lux_value}
           (recur (++ idx) (array.write! idx (: Any lux_value) output)))
-        (#try.Success output)))))
+        {#try.Success output}))))
 
 (def: (read host_object)
   (Reader java/lang/Object)
   (`` (<| (~~ (template []
                 [(case (ffi.check  host_object)
-                   (#.Some host_object)
-                   (#try.Success host_object)
+                   {#.Some host_object}
+                   {#try.Success host_object}
                    #.None)]
 
                 [java/lang/Boolean] [java/lang/Long] [java/lang/Double] [java/lang/String]
@@ -305,8 +305,8 @@
                 ))
           (~~ (template [ ]
                 [(case (ffi.check  host_object)
-                   (#.Some host_object)
-                   (#try.Success (<|  host_object))
+                   {#.Some host_object}
+                   {#try.Success (<|  host_object)}
                    #.None)]
 
                 [java/lang/Integer java/lang/Integer::longValue]
@@ -321,11 +321,11 @@
                 [program/TupleValue program/TupleValue::getValue]
                 ))
           (case (ffi.check gnu/lists/Pair host_object)
-            (#.Some host_object)
+            {#.Some host_object}
             (read_variant read host_object)
             #.None)
           (case (ffi.check gnu/lists/FVector host_object)
-            (#.Some host_object)
+            {#.Some host_object}
             (read_tuple read (:as (gnu/lists/FVector java/lang/Object) host_object))
             #.None)
           ... else
@@ -338,17 +338,17 @@
 (def: (expander macro inputs lux)
   Expander
   (case (..ensure_macro macro)
-    (#.Some macro)
+    {#.Some macro}
     (case (gnu/mapping/Procedure::apply2 (lux_value (:as java/lang/Object inputs))
                                          (lux_value (:as java/lang/Object lux))
                                          macro)
-      (#try.Success output)
+      {#try.Success output}
       (|> output
           ..read
           (:as (Try (Try [Lux (List Code)]))))
 
-      (#try.Failure error)
-      (#try.Failure error))
+      {#try.Failure error}
+      {#try.Failure error})
 
     #.None
     (exception.throw ..cannot_apply_a_non_function (:as java/lang/Object macro)))
diff --git a/stdlib/source/documentation/lux.lux b/stdlib/source/documentation/lux.lux
index e81beecb2..0f6e94998 100644
--- a/stdlib/source/documentation/lux.lux
+++ b/stdlib/source/documentation/lux.lux
@@ -329,17 +329,17 @@
    (type: Type
      (Rec @
        (Variant
-        (#Primitive Text (List @))
-        (#Sum @ @)
-        (#Product @ @)
-        (#Function @ @)
-        (#Parameter Nat)
-        (#Var Nat)
-        (#Ex Nat)
-        (#UnivQ (List @) @)
-        (#ExQ (List @) @)
-        (#Apply @ @)
-        (#Named Name @))))])
+        {#Primitive Text (List @)}
+        {#Sum @ @}
+        {#Product @ @}
+        {#Function @ @}
+        {#Parameter Nat}
+        {#Var Nat}
+        {#Ex Nat}
+        {#UnivQ (List @) @}
+        {#ExQ (List @) @}
+        {#Apply @ @}
+        {#Named Name @})))])
 
 (documentation: /.exec
   "Sequential execution of expressions (great for side-effects)."
@@ -354,8 +354,8 @@
           \n "Allows the usage of macros within the patterns to provide custom syntax.")
   [(case (: (List Int)
             (list +1 +2 +3))
-     (#Item x (#Item y (#Item z #End)))
-     (#Some ($_ * x y z))
+     {#Item x {#Item y {#Item z #End}}}
+     {#Some ($_ * x y z)}
 
      _
      #None)])
@@ -366,7 +366,7 @@
   [(case (: (List Int)
             (list +1 +2 +3))
      (^ (list x y z))
-     (#Some ($_ * x y z))
+     {#Some ($_ * x y z)}
 
      _
      #None)])
@@ -435,7 +435,7 @@
   [(macro: .public (name_of tokens)
      (case tokens
        (^template []
-         [(^ (list [_ ( [module name])]))
+         [(^ (list [_ { [module name]}]))
           (in (list (` [(~ (text$ module)) (~ (text$ name))])))])
        ([#Identifier] [#Tag])
        
@@ -489,8 +489,8 @@
   [(type: Referrals
      (Variant
       #All
-      (#Only (List Text))
-      (#Exclude (List Text))
+      {#Only (List Text)}
+      {#Exclude (List Text)}
       #Ignore
       #Nothing))])
 
@@ -506,7 +506,7 @@
   "The type-definition macro."
   [(type: (List a)
      #End
-     (#Item a (List a)))])
+     {#Item a (List a)})])
 
 (documentation: /.Interface
   "Interface definition."
@@ -540,13 +540,13 @@
        (loop [end to
               output #.End]
          (cond (< end from)
-               (recur (pred end) (#.Item end output))
+               (recur (pred end) {#.Item end output})
 
                (< from end)
-               (recur (succ end) (#.Item end output))
+               (recur (succ end) {#.Item end output})
 
                ... (= end from)
-               (#.Item end output)))))])
+               {#.Item end output}))))])
 
 (documentation: /.cond
   "Conditional branching with multiple test conditions."
@@ -640,30 +640,30 @@
   [(def: (reduced env type)
      (-> (List Type) Type Type)
      (case type
-       (#.Primitive name params)
-       (#.Primitive name (list\each (reduced env) params))
+       {#.Primitive name params}
+       {#.Primitive name (list\each (reduced env) params)}
 
        (^template []
-         [( left right)
-          ( (reduced env left) (reduced env right))])
+         [{ left right}
+          { (reduced env left) (reduced env right)}])
        ([#.Sum] [#.Product])
 
        (^template []
-         [( left right)
-          ( (reduced env left) (reduced env right))])
+         [{ left right}
+          { (reduced env left) (reduced env right)}])
        ([#.Function] [#.Apply])
 
        (^template []
-         [( old_env def)
+         [{ old_env def}
           (case old_env
             #.End
-            ( env def)
+            { env def}
 
             _
             type)])
        ([#.UnivQ] [#.ExQ])
 
-       (#.Parameter idx)
+       {#.Parameter idx}
        (else type (list.item idx env))
 
        _
@@ -751,21 +751,21 @@
   (format "Multi-level pattern matching."
           \n "Useful in situations where the result of a branch depends on further refinements on the values being matched.")
   [(case (split (size static) uri)
-     (^multi (#Some [chunk uri'])
+     (^multi {#Some [chunk uri']}
              [(text\= static chunk) #1])
      (match_uri endpoint? parts' uri')
 
      _
-     (#Left (format "Static part " (%t static) " does not match URI: " uri)))]
+     {#Left (format "Static part " (%t static) " does not match URI: " uri)})]
   ["Short-cuts can be taken when using bit tests."
    "The example above can be rewritten as..."
    (case (split (size static) uri)
-     (^multi (#Some [chunk uri'])
+     (^multi {#Some [chunk uri']}
              (text\= static chunk))
      (match_uri endpoint? parts' uri')
 
      _
-     (#Left (format "Static part " (%t static) " does not match URI: " uri)))])
+     {#Left (format "Static part " (%t static) " does not match URI: " uri)})])
 
 (documentation: /.name_of
   "Given an identifier or a tag, gives back a 2 tuple with the module and name parts, both as Text."
@@ -875,8 +875,8 @@
   "Generates pattern-matching code for Code values in a way that looks like code-templating."
   [(: (Maybe Nat)
       (case (` (#0 123 +456.789))
-        (^code (#0 (~ [_ (#.Nat number)]) +456.789))
-        (#.Some number)
+        (^code (#0 (~ [_ {#.Nat number}]) +456.789))
+        {#.Some number}
 
         _
         #.None))])
@@ -898,11 +898,11 @@
       (case (: (Either Text Bar)
                (try (: Bar
                        (risky computation which may panic))))
-        (#.Right success)
+        {#.Right success}
         (: Foo
            (do something after success))
 
-        (#.Left error)
+        {#.Left error}
         (: Foo
            (recover from error))))])
 
diff --git a/stdlib/source/documentation/lux/control/concurrency/actor.lux b/stdlib/source/documentation/lux/control/concurrency/actor.lux
index c0701a367..a26d2f2d6 100644
--- a/stdlib/source/documentation/lux/control/concurrency/actor.lux
+++ b/stdlib/source/documentation/lux/control/concurrency/actor.lux
@@ -58,8 +58,8 @@
 
                                        (message: .public (push [value a] state self)
                                          (List a)
-                                         (let [state' (#.Item value state)]
-                                           (async.resolved (#try.Success [state' state']))))])
+                                         (let [state' {#.Item value state}]
+                                           (async.resolved {#try.Success [state' state']})))])
 
                                     (actor: .public counter
                                       Nat
@@ -67,11 +67,11 @@
                                       [(message: .public (count! [increment Nat] state self)
                                          Any
                                          (let [state' (n.+ increment state)]
-                                           (async.resolved (#try.Success [state' state']))))
+                                           (async.resolved {#try.Success [state' state']})))
 
                                        (message: .public (read! state self)
                                          Nat
-                                         (async.resolved (#try.Success [state state])))]))]
+                                         (async.resolved {#try.Success [state state]}))]))]
   (documentation: /.actor:
     (format "Defines a named actor, with its behavior and internal state."
             \n "Messages for the actor must be defined after the on_mail handler.")
diff --git a/stdlib/source/documentation/lux/control/maybe.lux b/stdlib/source/documentation/lux/control/maybe.lux
index f57f2f54d..582c1fa4a 100644
--- a/stdlib/source/documentation/lux/control/maybe.lux
+++ b/stdlib/source/documentation/lux/control/maybe.lux
@@ -18,7 +18,7 @@
   (format "Allows you to provide a default value that will be used"
           \n "if a (Maybe x) value turns out to be #.None."
           \n "Note: the expression for the default value will not be computed if the base computation succeeds.")
-  [(else +20 (#.Some +10))
+  [(else +20 {#.Some +10})
    "=>"
    +10]
   [(else +20 #.None)
diff --git a/stdlib/source/documentation/lux/control/try.lux b/stdlib/source/documentation/lux/control/try.lux
index 6ef45a5b2..8176614d0 100644
--- a/stdlib/source/documentation/lux/control/try.lux
+++ b/stdlib/source/documentation/lux/control/try.lux
@@ -40,9 +40,9 @@
           \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")))]
+      (else "foo" {#..Success "bar"}))]
   [(= "foo"
-      (else "foo" (#..Failure "KABOOM!")))])
+      (else "foo" {#..Failure "KABOOM!"}))])
 
 (.def: .public documentation
   (.List $.Module)
diff --git a/stdlib/source/documentation/lux/data/collection/array.lux b/stdlib/source/documentation/lux/data/collection/array.lux
index ed6bce3a5..b8926391a 100644
--- a/stdlib/source/documentation/lux/data/collection/array.lux
+++ b/stdlib/source/documentation/lux/data/collection/array.lux
@@ -87,7 +87,7 @@
   (format "Yields a list with every non-empty item in the array."
           \n "Can use the optional default value when encountering an empty cell in the array.")
   [(list #.None array)
-   (list (#.Some default) array)])
+   (list {#.Some default} array)])
 
 (.def: .public documentation
   (.List $.Module)
diff --git a/stdlib/source/documentation/lux/ffi.jvm.lux b/stdlib/source/documentation/lux/ffi.jvm.lux
index f76ada558..d8e818783 100644
--- a/stdlib/source/documentation/lux/ffi.jvm.lux
+++ b/stdlib/source/documentation/lux/ffi.jvm.lux
@@ -144,7 +144,7 @@
   [(= (??? (: java/lang/String (null)))
       #.None)]
   [(= (??? "YOLO")
-      (#.Some "YOLO"))])
+      {#.Some "YOLO"})])
 
 (documentation: /.!!!
   (format "Takes a (Maybe ObjectType) and returns a ObjectType."
@@ -158,7 +158,7 @@
   (format "Checks whether an object is an instance of a particular class."
           \n "Caveat emptor: Cannot check for polymorphism, so avoid using parameterized classes.")
   [(case (check String "YOLO")
-     (#.Some value_as_string)
+     {#.Some value_as_string}
      #.None)])
 
 (documentation: /.synchronized
diff --git a/stdlib/source/documentation/lux/ffi.old.lux b/stdlib/source/documentation/lux/ffi.old.lux
index b2ac15139..64fbfcf45 100644
--- a/stdlib/source/documentation/lux/ffi.old.lux
+++ b/stdlib/source/documentation/lux/ffi.old.lux
@@ -107,7 +107,7 @@
   [(= (??? (: java/lang/String (null)))
       #.None)]
   [(= (??? "YOLO")
-      (#.Some "YOLO"))])
+      {#.Some "YOLO"})])
 
 (documentation: /.!!!
   "Takes a (Maybe ObjectType) and returns a ObjectType."
@@ -121,7 +121,7 @@
   (format "Checks whether an object is an instance of a particular class."
           \n "Caveat emptor: Cannot check for polymorphism, so avoid using parameterized classes.")
   [(case (check java/lang/String "YOLO")
-     (#.Some value_as_string)
+     {#.Some value_as_string}
      #.None)])
 
 (documentation: /.synchronized
diff --git a/stdlib/source/library/lux.lux b/stdlib/source/library/lux.lux
index 5f6f9342e..7d94363f3 100644
--- a/stdlib/source/library/lux.lux
+++ b/stdlib/source/library/lux.lux
@@ -18,153 +18,177 @@
 ...   (Ex (_ a) a))
 ("lux def" Any
  ("lux type check type"
-  (9 #1 [..prelude_module "Any"]
-     (8 #0 (0 #0) (4 #0 1))))
+  {9 #1
+   [..prelude_module "Any"]
+   {8 #0
+    {0 #0}
+    {4 #0 1}}})
  #1)
 
 ... (type: .public Nothing
 ...   (All (_ a) a))
 ("lux def" Nothing
  ("lux type check type"
-  (9 #1 [..prelude_module "Nothing"]
-     (7 #0 (0 #0) (4 #0 1))))
+  {9 #1
+   [..prelude_module "Nothing"]
+   {7 #0
+    {0 #0}
+    {4 #0 1}}})
  #1)
 
 ... (type: .public (List a)
 ...   #End
-...   (#Item a (List a)))
+...   {#Item a (List a)})
 ("lux def type tagged" List
- (9 #1 [..prelude_module "List"]
-    (7 #0 (0 #0)
-       (1 #0
-          ... End
-          Any
-          ... Item
-          (2 #0 (4 #0 1)
-             (9 #0 (4 #0 1) (4 #0 0))))))
- ("End" "Item")
+ {9 #1
+  [..prelude_module "List"]
+  {7 #0
+   {0 #0}
+   {1 #0
+    ... End
+    Any
+    ... Item
+    {2 #0
+     {4 #0 1}
+     {9 #0
+      {4 #0 1}
+      {4 #0 0}}}}}}
+ {"End" "Item"}
  #1)
 
 ("lux def" Bit
  ("lux type check type"
-  (9 #1 [..prelude_module "Bit"]
-     (0 #0 "#Bit" #End)))
+  {9 #1
+   [..prelude_module "Bit"]
+   {0 #0 "#Bit" #End}})
  #1)
 
 ("lux def" I64
  ("lux type check type"
-  (9 #1 [..prelude_module "I64"]
-     (7 #0 (0 #0)
-        (0 #0 "#I64" (#Item (4 #0 1) #End)))))
+  {9 #1
+   [..prelude_module "I64"]
+   {7 #0
+    {0 #0}
+    {0 #0 "#I64" {#Item {4 #0 1} #End}}}})
  #1)
 
 ("lux def" Nat
  ("lux type check type"
-  (9 #1 [..prelude_module "Nat"]
-     (0 #0 "#I64" (#Item (0 #0 "#Nat" #End) #End))))
+  {9 #1
+   [..prelude_module "Nat"]
+   {0 #0 "#I64" {#Item {0 #0 "#Nat" #End} #End}}})
  #1)
 
 ("lux def" Int
  ("lux type check type"
-  (9 #1 [..prelude_module "Int"]
-     (0 #0 "#I64" (#Item (0 #0 "#Int" #End) #End))))
+  {9 #1
+   [..prelude_module "Int"]
+   {0 #0 "#I64" {#Item {0 #0 "#Int" #End} #End}}})
  #1)
 
 ("lux def" Rev
  ("lux type check type"
-  (9 #1 [..prelude_module "Rev"]
-     (0 #0 "#I64" (#Item (0 #0 "#Rev" #End) #End))))
+  {9 #1
+   [..prelude_module "Rev"]
+   {0 #0 "#I64" {#Item {0 #0 "#Rev" #End} #End}}})
  #1)
 
 ("lux def" Frac
  ("lux type check type"
-  (9 #1 [..prelude_module "Frac"]
-     (0 #0 "#Frac" #End)))
+  {9 #1
+   [..prelude_module "Frac"]
+   {0 #0 "#Frac" #End}})
  #1)
 
 ("lux def" Text
  ("lux type check type"
-  (9 #1 [..prelude_module "Text"]
-     (0 #0 "#Text" #End)))
+  {9 #1
+   [..prelude_module "Text"]
+   {0 #0 "#Text" #End}})
  #1)
 
 ("lux def" Name
  ("lux type check type"
-  (9 #1 [..prelude_module "Name"]
-     (2 #0 Text Text)))
+  {9 #1
+   [..prelude_module "Name"]
+   {2 #0 Text Text}})
  #1)
 
 ... (type: .public (Maybe a)
 ...   #None
-...   (#Some a))
+...   {#Some a})
 ("lux def type tagged" Maybe
- (9 #1 [..prelude_module "Maybe"]
-    (7 #0 #End
-       (1 #0
-          ... None
-          Any
-          ... Some
-          (4 #0 1))))
- ("None" "Some")
+ {9 #1
+  [..prelude_module "Maybe"]
+  {7 #0
+   #End
+   {1 #0
+    ... None
+    Any
+    ... Some
+    {4 #0 1}}}}
+ {"None" "Some"}
  #1)
 
 ... (type: .public Type
 ...   (Rec Type
 ...     (Variant
-...      (#Primitive Text (List Type))
-...      (#Sum Type Type)
-...      (#Product Type Type)
-...      (#Function Type Type)
-...      (#Parameter Nat)
-...      (#Var Nat)
-...      (#Ex Nat)
-...      (#UnivQ (List Type) Type)
-...      (#ExQ (List Type) Type)
-...      (#Apply Type Type)
-...      (#Named Name Type))))
+...      {#Primitive Text (List Type)}
+...      {#Sum Type Type}
+...      {#Product Type Type}
+...      {#Function Type Type}
+...      {#Parameter Nat}
+...      {#Var Nat}
+...      {#Ex Nat}
+...      {#UnivQ (List Type) Type}
+...      {#ExQ (List Type) Type}
+...      {#Apply Type Type}
+...      {#Named Name Type})))
 ("lux def type tagged" Type
- (9 #1 [..prelude_module "Type"]
-    ({Type
-      ({Type_List
-        ({Type_Pair
-          (9 #0 (0 #0 ["" #End])
-             (7 #0 #End
-                (1 #0
-                   ... Primitive
-                   (2 #0 Text Type_List)
-                   (1 #0
-                      ... Sum
-                      Type_Pair
-                      (1 #0
-                         ... Product
-                         Type_Pair
-                         (1 #0
-                            ... Function
-                            Type_Pair
-                            (1 #0
-                               ... Parameter
-                               Nat
-                               (1 #0
-                                  ... Var
-                                  Nat
-                                  (1 #0
-                                     ... Ex
-                                     Nat
-                                     (1 #0
-                                        ... UnivQ
-                                        (2 #0 Type_List Type)
-                                        (1 #0
-                                           ... ExQ
-                                           (2 #0 Type_List Type)
-                                           (1 #0
-                                              ... Apply
-                                              Type_Pair
-                                              ... Named
-                                              (2 #0 Name Type)))))))))))))}
-         ("lux type check type" (2 #0 Type Type)))}
-       ("lux type check type" (9 #0 Type List)))}
-     ("lux type check type" (9 #0 (0 #0 ["" #End]) (4 #0 0)))))
- ("Primitive" "Sum" "Product" "Function" "Parameter" "Var" "Ex" "UnivQ" "ExQ" "Apply" "Named")
+ {9 #1 [..prelude_module "Type"]
+  ({Type
+    ({Type_List
+      ({Type_Pair
+        {9 #0
+         {0 #0 ["" #End]}
+         {7 #0
+          #End
+          {1 #0
+           ... Primitive
+           {2 #0 Text Type_List}
+           {1 #0
+            ... Sum
+            Type_Pair
+            {1 #0
+             ... Product
+             Type_Pair
+             {1 #0
+              ... Function
+              Type_Pair
+              {1 #0
+               ... Parameter
+               Nat
+               {1 #0
+                ... Var
+                Nat
+                {1 #0
+                 ... Ex
+                 Nat
+                 {1 #0
+                  ... UnivQ
+                  {2 #0 Type_List Type}
+                  {1 #0
+                   ... ExQ
+                   {2 #0 Type_List Type}
+                   {1 #0
+                    ... Apply
+                    Type_Pair
+                    ... Named
+                    {2 #0 Name Type}}}}}}}}}}}}}}
+       ("lux type check type" {2 #0 Type Type}))}
+     ("lux type check type" {9 #0 Type List}))}
+   ("lux type check type" {9 #0 {0 #0 ["" #End]} {4 #0 0}}))}
+ {"Primitive" "Sum" "Product" "Function" "Parameter" "Var" "Ex" "UnivQ" "ExQ" "Apply" "Named"}
  #1)
 
 ... (type: .public Location
@@ -173,8 +197,8 @@
 ...     #line   Nat
 ...     #column Nat]))
 ("lux def type tagged" Location
- (#Named [..prelude_module "Location"]
-         (#Product Text (#Product Nat Nat)))
+ {#Named [..prelude_module "Location"]
+  {#Product Text {#Product Nat Nat}}}
  ["module" "line" "column"]
  #1)
 
@@ -183,80 +207,81 @@
 ...    [#meta  m
 ...     #datum v]))
 ("lux def type tagged" Ann
- (#Named [..prelude_module "Ann"]
-         (#UnivQ #End
-                 (#UnivQ #End
-                         (#Product (#Parameter 3)
-                                   (#Parameter 1)))))
+ {#Named [..prelude_module "Ann"]
+  {#UnivQ #End
+   {#UnivQ #End
+    {#Product
+     {#Parameter 3}
+     {#Parameter 1}}}}}
  ["meta" "datum"]
  #1)
 
 ... (type: .public (Code' w)
-...   (#Bit Bit)
-...   (#Nat Nat)
-...   (#Int Int)
-...   (#Rev Rev)
-...   (#Frac Frac)
-...   (#Text Text)
-...   (#Identifier Name)
-...   (#Tag Name)
-...   (#Form (List (w (Code' w))))
-...   (#Variant (List (w (Code' w))))
-...   (#Tuple (List (w (Code' w)))))
+...   {#Bit Bit}
+...   {#Nat Nat}
+...   {#Int Int}
+...   {#Rev Rev}
+...   {#Frac Frac}
+...   {#Text Text}
+...   {#Identifier Name}
+...   {#Tag Name}
+...   {#Form (List (w (Code' w)))}
+...   {#Variant (List (w (Code' w)))}
+...   {#Tuple (List (w (Code' w)))})
 ("lux def type tagged" Code'
- (#Named [..prelude_module "Code'"]
-         ({Code
-           ({Code_List
-             (#UnivQ #End
-                     (#Sum
-                      ... Bit
-                      Bit
-                      (#Sum
-                       ... Nat
-                       Nat
-                       (#Sum
-                        ... Int
-                        Int
-                        (#Sum
-                         ... Rev
-                         Rev
-                         (#Sum
-                          ... Frac
-                          Frac
-                          (#Sum
-                           ... Text
-                           Text
-                           (#Sum
-                            ... Identifier
-                            Name
-                            (#Sum
-                             ... Tag
-                             Name
-                             (#Sum
-                              ... Form
-                              Code_List
-                              (#Sum
-                               ... Variant
-                               Code_List
-                               ... Tuple
-                               Code_List
-                               ))))))))))
-                     )}
-            ("lux type check type" (#Apply Code List)))}
-          ("lux type check type" (#Apply (#Apply (#Parameter 1)
-                                                 (#Parameter 0))
-                                         (#Parameter 1)))))
- ("Bit" "Nat" "Int" "Rev" "Frac" "Text" "Identifier" "Tag" "Form" "Variant" "Tuple")
+ {#Named [..prelude_module "Code'"]
+  ({Code
+    ({Code_List
+      {#UnivQ #End
+       {#Sum
+        ... Bit
+        Bit
+        {#Sum
+         ... Nat
+         Nat
+         {#Sum
+          ... Int
+          Int
+          {#Sum
+           ... Rev
+           Rev
+           {#Sum
+            ... Frac
+            Frac
+            {#Sum
+             ... Text
+             Text
+             {#Sum
+              ... Identifier
+              Name
+              {#Sum
+               ... Tag
+               Name
+               {#Sum
+                ... Form
+                Code_List
+                {#Sum
+                 ... Variant
+                 Code_List
+                 ... Tuple
+                 Code_List
+                 }}}}}}}}}}
+       }}
+     ("lux type check type" {#Apply Code List}))}
+   ("lux type check type" {#Apply {#Apply {#Parameter 1}
+                                   {#Parameter 0}}
+                           {#Parameter 1}}))}
+ {"Bit" "Nat" "Int" "Rev" "Frac" "Text" "Identifier" "Tag" "Form" "Variant" "Tuple"}
  #1)
 
 ... (type: .public Code
 ...   (Ann Location (Code' (Ann Location))))
 ("lux def" Code
  ("lux type check type"
-  (#Named [..prelude_module "Code"]
-          ({w
-            (#Apply (#Apply w Code') w)}
-           ("lux type check type" (#Apply Location Ann)))))
+  {#Named [..prelude_module "Code"]
+   ({w
+     {#Apply {#Apply w Code'} w}}
+    ("lux type check type" {#Apply Location Ann}))})
  #1)
 
 ("lux def" private
@@ -277,119 +302,118 @@
 
 ("lux def" _ann
  ("lux type check"
-  (#Function (#Apply (#Apply Location Ann)
-                     Code')
-             Code)
+  {#Function {#Apply {#Apply Location Ann} Code'}
+   Code}
   ([_ data]
    [dummy_location data]))
  #0)
 
 ("lux def" bit$
- ("lux type check" (#Function Bit Code)
-  ([_ value] (_ann (#Bit value))))
+ ("lux type check" {#Function Bit Code}
+  ([_ value] (_ann {#Bit value})))
  #0)
 
 ("lux def" nat$
- ("lux type check" (#Function Nat Code)
-  ([_ value] (_ann (#Nat value))))
+ ("lux type check" {#Function Nat Code}
+  ([_ value] (_ann {#Nat value})))
  #0)
 
 ("lux def" int$
- ("lux type check" (#Function Int Code)
-  ([_ value] (_ann (#Int value))))
+ ("lux type check" {#Function Int Code}
+  ([_ value] (_ann {#Int value})))
  #0)
 
 ("lux def" rev$
- ("lux type check" (#Function Rev Code)
-  ([_ value] (_ann (#Rev value))))
+ ("lux type check" {#Function Rev Code}
+  ([_ value] (_ann {#Rev value})))
  #0)
 
 ("lux def" frac$
- ("lux type check" (#Function Frac Code)
-  ([_ value] (_ann (#Frac value))))
+ ("lux type check" {#Function Frac Code}
+  ([_ value] (_ann {#Frac value})))
  #0)
 
 ("lux def" text$
- ("lux type check" (#Function Text Code)
-  ([_ text] (_ann (#Text text))))
+ ("lux type check" {#Function Text Code}
+  ([_ text] (_ann {#Text text})))
  #0)
 
 ("lux def" identifier$
- ("lux type check" (#Function Name Code)
-  ([_ name] (_ann (#Identifier name))))
+ ("lux type check" {#Function Name Code}
+  ([_ name] (_ann {#Identifier name})))
  #0)
 
 ("lux def" local_identifier$
- ("lux type check" (#Function Text Code)
-  ([_ name] (_ann (#Identifier ["" name]))))
+ ("lux type check" {#Function Text Code}
+  ([_ name] (_ann {#Identifier ["" name]})))
  #0)
 
 ("lux def" tag$
- ("lux type check" (#Function Name Code)
-  ([_ name] (_ann (#Tag name))))
+ ("lux type check" {#Function Name Code}
+  ([_ name] (_ann {#Tag name})))
  #0)
 
 ("lux def" local_tag$
- ("lux type check" (#Function Text Code)
-  ([_ name] (_ann (#Tag ["" name]))))
+ ("lux type check" {#Function Text Code}
+  ([_ name] (_ann {#Tag ["" name]})))
  #0)
 
 ("lux def" form$
- ("lux type check" (#Function (#Apply Code List) Code)
-  ([_ tokens] (_ann (#Form tokens))))
+ ("lux type check" {#Function {#Apply Code List} Code}
+  ([_ tokens] (_ann {#Form tokens})))
  #0)
 
 ("lux def" variant$
- ("lux type check" (#Function (#Apply Code List) Code)
-  ([_ tokens] (_ann (#Variant tokens))))
+ ("lux type check" {#Function {#Apply Code List} Code}
+  ([_ tokens] (_ann {#Variant tokens})))
  #0)
 
 ("lux def" tuple$
- ("lux type check" (#Function (#Apply Code List) Code)
-  ([_ tokens] (_ann (#Tuple tokens))))
+ ("lux type check" {#Function {#Apply Code List} Code}
+  ([_ tokens] (_ann {#Tuple tokens})))
  #0)
 
 ... (type: .public Definition
 ...   [Bit Type Any])
 ("lux def" Definition
  ("lux type check type"
-  (#Named [..prelude_module "Definition"]
-          (#Product Bit (#Product Type Any))))
+  {#Named [..prelude_module "Definition"]
+   {#Product Bit {#Product Type Any}}})
  .public)
 
 ... (type: .public Alias
 ...   Name)
 ("lux def" Alias
  ("lux type check type"
-  (#Named [..prelude_module "Alias"]
-          Name))
+  {#Named [..prelude_module "Alias"]
+   Name})
  .public)
 
 ... (type: .public Label
 ...   [Bit Type (List Text) Nat])
 ("lux def" Label
  ("lux type check type"
-  (#Named [..prelude_module "Label"]
-          (#Product Bit (#Product Type (#Product (#Apply Text List) Nat)))))
+  {#Named [..prelude_module "Label"]
+   {#Product Bit {#Product Type {#Product {#Apply Text List} Nat}}}})
  .public)
 
 ... (type: .public Global
 ...   (Variant
-...    (#Definition Definition)
-...    (#Type [Bit Type (Either [Text (List Text)] [Text (List Text)])])
-...    (#Tag Label)
-...    (#Slot Label)
-...    (#Alias Alias)))
+...    {#Definition Definition}
+...    {#Type [Bit Type (Either [Text (List Text)] [Text (List Text)])]}
+...    {#Tag Label}
+...    {#Slot Label}
+...    {#Alias Alias}))
 ("lux def type tagged" Global
- (#Named [..prelude_module "Global"]
-         (#Sum Definition
-               (#Sum ({labels
-                       (#Product Bit (#Product Type (#Sum labels labels)))}
-                      (#Product Text (#Apply Text List)))
-                     (#Sum Label
-                           (#Sum Label
-                                 Alias)))))
- ("Definition" "Type" "Label" "Slot" "Alias")
+ {#Named [..prelude_module "Global"]
+  {#Sum Definition
+   {#Sum ({labels
+           {#Product Bit {#Product Type {#Sum labels labels}}}}
+          {#Product Text {#Apply Text List}})
+    {#Sum Label
+     {#Sum Label
+      Alias}}}}}
+ {"Definition" "Type" "Label" "Slot" "Alias"}
  .public)
 
 ... (type: .public (Bindings k v)
@@ -397,29 +421,29 @@
 ...    [#counter Nat
 ...     #mappings (List [k v])]))
 ("lux def type tagged" Bindings
- (#Named [..prelude_module "Bindings"]
-         (#UnivQ #End
-                 (#UnivQ #End
-                         (#Product
-                          ... counter
-                          Nat
-                          ... mappings
-                          (#Apply (#Product (#Parameter 3)
-                                            (#Parameter 1))
-                                  List)))))
+ {#Named [..prelude_module "Bindings"]
+  {#UnivQ #End
+   {#UnivQ #End
+    {#Product
+     ... counter
+     Nat
+     ... mappings
+     {#Apply {#Product {#Parameter 3}
+              {#Parameter 1}}
+      List}}}}}
  ["counter" "mappings"]
  .public)
 
 ... (type: .public Ref
-...   (#Local Nat)
-...   (#Captured Nat))
+...   {#Local Nat}
+...   {#Captured Nat})
 ("lux def type tagged" Ref
- (#Named [..prelude_module "Ref"]
-         (#Sum ... Local
-          Nat
-          ... Captured
-          Nat))
- ("Local" "Captured")
+ {#Named [..prelude_module "Ref"]
+  {#Sum ... Local
+   Nat
+   ... Captured
+   Nat}}
+ {"Local" "Captured"}
  .public)
 
 ... (type: .public Scope
@@ -429,44 +453,44 @@
 ...     #locals   (Bindings Text [Type Nat])
 ...     #captured (Bindings Text [Type Ref])]))
 ("lux def type tagged" Scope
- (#Named [..prelude_module "Scope"]
-         (#Product ... name
-          (#Apply Text List)
-          (#Product ... inner
-           Nat
-           (#Product ... locals
-            (#Apply (#Product Type Nat) (#Apply Text Bindings))
-            ... captured
-            (#Apply (#Product Type Ref) (#Apply Text Bindings))))))
+ {#Named [..prelude_module "Scope"]
+  {#Product ... name
+   {#Apply Text List}
+   {#Product ... inner
+    Nat
+    {#Product ... locals
+     {#Apply {#Product Type Nat} {#Apply Text Bindings}}
+     ... captured
+     {#Apply {#Product Type Ref} {#Apply Text Bindings}}}}}}
  ["name" "inner" "locals" "captured"]
  .public)
 
 ("lux def" Code_List
  ("lux type check type"
-  (#Apply Code List))
+  {#Apply Code List})
  #0)
 
 ... (type: .public (Either l r)
-...   (#Left l)
-...   (#Right r))
+...   {#Left l}
+...   {#Right r})
 ("lux def type tagged" Either
- (#Named [..prelude_module "Either"]
-         (#UnivQ #End
-                 (#UnivQ #End
-                         (#Sum
-                          ... Left
-                          (#Parameter 3)
-                          ... Right
-                          (#Parameter 1)))))
- ("Left" "Right")
+ {#Named [..prelude_module "Either"]
+  {#UnivQ #End
+   {#UnivQ #End
+    {#Sum
+     ... Left
+     {#Parameter 3}
+     ... Right
+     {#Parameter 1}}}}}
+ {"Left" "Right"}
  .public)
 
 ... (type: .public Source
 ...   [Location Nat Text])
 ("lux def" Source
  ("lux type check type"
-  (#Named [..prelude_module "Source"]
-          (#Product Location (#Product Nat Text))))
+  {#Named [..prelude_module "Source"]
+   {#Product Location {#Product Nat Text}}})
  .public)
 
 ... (type: .public Module_State
@@ -474,16 +498,16 @@
 ...   #Compiled
 ...   #Cached)
 ("lux def type tagged" Module_State
- (#Named [..prelude_module "Module_State"]
-         (#Sum
-          ... #Active
-          Any
-          (#Sum
-           ... #Compiled
-           Any
-           ... #Cached
-           Any)))
- ("Active" "Compiled" "Cached")
+ {#Named [..prelude_module "Module_State"]
+  {#Sum
+   ... #Active
+   Any
+   {#Sum
+    ... #Compiled
+    Any
+    ... #Cached
+    Any}}}
+ {"Active" "Compiled" "Cached"}
  .public)
 
 ... (type: .public Module
@@ -494,22 +518,22 @@
 ...     #imports            (List Text)
 ...     #module_state       Module_State]))
 ("lux def type tagged" Module
- (#Named [..prelude_module "Module"]
-         (#Product
-          ... module_hash
-          Nat
-          (#Product
-           ... module_aliases
-           (#Apply (#Product Text Text) List)
-           (#Product
-            ... definitions
-            (#Apply (#Product Text Global) List)
-            (#Product
-             ... imports
-             (#Apply Text List)
-             ... module_state
-             Module_State
-             )))))
+ {#Named [..prelude_module "Module"]
+  {#Product
+   ... module_hash
+   Nat
+   {#Product
+    ... module_aliases
+    {#Apply {#Product Text Text} List}
+    {#Product
+     ... definitions
+     {#Apply {#Product Text Global} List}
+     {#Product
+      ... imports
+      {#Apply Text List}
+      ... module_state
+      Module_State
+      }}}}}
  ["module_hash" "module_aliases" "definitions" "imports" "module_state"]
  .public)
 
@@ -519,14 +543,14 @@
 ...     #var_counter Nat
 ...     #var_bindings (List [Nat (Maybe Type)])]))
 ("lux def type tagged" Type_Context
- (#Named [..prelude_module "Type_Context"]
-         (#Product ... ex_counter
-          Nat
-          (#Product ... var_counter
-           Nat
-           ... var_bindings
-           (#Apply (#Product Nat (#Apply Type Maybe))
-                   List))))
+ {#Named [..prelude_module "Type_Context"]
+  {#Product ... ex_counter
+   Nat
+   {#Product ... var_counter
+    Nat
+    ... var_bindings
+    {#Apply {#Product Nat {#Apply Type Maybe}}
+     List}}}}
  ["ex_counter" "var_counter" "var_bindings"]
  .public)
 
@@ -535,14 +559,14 @@
 ...   #Eval
 ...   #Interpreter)
 ("lux def type tagged" Mode
- (#Named [..prelude_module "Mode"]
-         (#Sum ... Build
-          Any
-          (#Sum ... Eval
-           Any
-           ... Interpreter
-           Any)))
- ("Build" "Eval" "Interpreter")
+ {#Named [..prelude_module "Mode"]
+  {#Sum ... Build
+   Any
+   {#Sum ... Eval
+    Any
+    ... Interpreter
+    Any}}}
+ {"Build" "Eval" "Interpreter"}
  .public)
 
 ... (type: .public Info
@@ -551,15 +575,15 @@
 ...     #version Text
 ...     #mode    Mode]))
 ("lux def type tagged" Info
- (#Named [..prelude_module "Info"]
-         (#Product
-          ... target
-          Text
-          (#Product
-           ... version
-           Text
-           ... mode
-           Mode)))
+ {#Named [..prelude_module "Info"]
+  {#Product
+   ... target
+   Text
+   {#Product
+    ... version
+    Text
+    ... mode
+    Mode}}}
  ["target" "version" "mode"]
  .public)
 
@@ -579,52 +603,52 @@
 ...     #eval            (-> Type Code (-> Lux (Either Text [Lux Any])))
 ...     #host            Any]))
 ("lux def type tagged" Lux
- (#Named [..prelude_module "Lux"]
-         ({Lux
-           (#Apply (0 #0 ["" #End])
-                   (#UnivQ #End
-                           (#Product
-                            ... info
-                            Info
-                            (#Product
-                             ... source
-                             Source
-                             (#Product
-                              ... location
-                              Location
-                              (#Product
-                               ... current_module
-                               (#Apply Text Maybe)
-                               (#Product
-                                ... modules
-                                (#Apply (#Product Text Module) List)
-                                (#Product
-                                 ... scopes
-                                 (#Apply Scope List)
-                                 (#Product
-                                  ... type_context
-                                  Type_Context
-                                  (#Product
-                                   ... expected
-                                   (#Apply Type Maybe)
-                                   (#Product
-                                    ... seed
-                                    Nat
-                                    (#Product
-                                     ... scope_type_vars
-                                     (#Apply Nat List)
-                                     (#Product
-                                      ... extensions
-                                      Any
-                                      (#Product
-                                       ... eval
-                                       (#Function Type
-                                                  (#Function Code
-                                                             (#Function Lux
-                                                                        (#Sum Text (#Product Lux Any)))))
-                                       ... host
-                                       Any))))))))))))))}
-          (#Apply (0 #0 ["" #End]) (#Parameter 0))))
+ {#Named [..prelude_module "Lux"]
+  ({Lux
+    {#Apply {0 #0 ["" #End]}
+     {#UnivQ #End
+      {#Product
+       ... info
+       Info
+       {#Product
+        ... source
+        Source
+        {#Product
+         ... location
+         Location
+         {#Product
+          ... current_module
+          {#Apply Text Maybe}
+          {#Product
+           ... modules
+           {#Apply {#Product Text Module} List}
+           {#Product
+            ... scopes
+            {#Apply Scope List}
+            {#Product
+             ... type_context
+             Type_Context
+             {#Product
+              ... expected
+              {#Apply Type Maybe}
+              {#Product
+               ... seed
+               Nat
+               {#Product
+                ... scope_type_vars
+                {#Apply Nat List}
+                {#Product
+                 ... extensions
+                 Any
+                 {#Product
+                  ... eval
+                  {#Function Type
+                   {#Function Code
+                    {#Function Lux
+                     {#Sum Text {#Product Lux Any}}}}}
+                  ... host
+                  Any}}}}}}}}}}}}}}}
+   {#Apply {0 #0 ["" #End]} {#Parameter 0}})}
  ["info" "source" "location" "current_module" "modules" "scopes" "type_context" "expected" "seed" "scope_type_vars" "extensions" "eval" "host"]
  .public)
 
@@ -632,63 +656,63 @@
 ...   (-> Lux (Either Text [Lux a])))
 ("lux def" Meta
  ("lux type check type"
-  (#Named [..prelude_module "Meta"]
-          (#UnivQ #End
-                  (#Function Lux
-                             (#Apply (#Product Lux (#Parameter 1))
-                                     (#Apply Text Either))))))
+  {#Named [..prelude_module "Meta"]
+   {#UnivQ #End
+    {#Function Lux
+     {#Apply {#Product Lux {#Parameter 1}}
+      {#Apply Text Either}}}}})
  .public)
 
 ... (type: .public Macro'
 ...   (-> (List Code) (Meta (List Code))))
 ("lux def" Macro'
  ("lux type check type"
-  (#Named [..prelude_module "Macro'"]
-          (#Function Code_List (#Apply Code_List Meta))))
+  {#Named [..prelude_module "Macro'"]
+   {#Function Code_List {#Apply Code_List Meta}}})
  .public)
 
 ... (type: .public Macro
 ...   (primitive "#Macro"))
 ("lux def" Macro
  ("lux type check type"
-  (#Named [..prelude_module "Macro"]
-          (#Primitive "#Macro" #End)))
+  {#Named [..prelude_module "Macro"]
+   {#Primitive "#Macro" #End}})
  .public)
 
 ... Base functions & macros
 ("lux def" in_meta
  ("lux type check"
-  (#UnivQ #End
-          (#Function (#Parameter 1)
-                     (#Function Lux
-                                (#Apply (#Product Lux
-                                                  (#Parameter 1))
-                                        (#Apply Text Either)))))
+  {#UnivQ #End
+   {#Function {#Parameter 1}
+    {#Function Lux
+     {#Apply {#Product Lux
+              {#Parameter 1}}
+      {#Apply Text Either}}}}}
   ([_ val]
    ([_ state]
-    (#Right state val))))
+    {#Right state val})))
  #0)
 
 ("lux def" failure
  ("lux type check"
-  (#UnivQ #End
-          (#Function Text
-                     (#Function Lux
-                                (#Apply (#Product Lux
-                                                  (#Parameter 1))
-                                        (#Apply Text Either)))))
+  {#UnivQ #End
+   {#Function Text
+    {#Function Lux
+     {#Apply {#Product Lux
+              {#Parameter 1}}
+      {#Apply Text Either}}}}}
   ([_ msg]
    ([_ state]
-    (#Left msg))))
+    {#Left msg})))
  #0)
 
 ("lux def" let''
  ("lux macro"
   ([_ tokens]
-   ({(#Item lhs (#Item rhs (#Item body #End)))
-     (in_meta (#Item (form$ (#Item (variant$ (#Item lhs (#Item body #End)))
-                                   (#Item rhs #End)))
-                     #End))
+   ({{#Item lhs {#Item rhs {#Item body #End}}}
+     (in_meta {#Item (form$ {#Item (variant$ {#Item lhs {#Item body #End}})
+                             {#Item rhs #End}})
+               #End})
 
      _
      (failure "Wrong syntax for let''")}
@@ -698,33 +722,33 @@
 ("lux def" function''
  ("lux macro"
   ([_ tokens]
-   ({(#Item [_ (#Tuple (#Item arg args'))] (#Item body #End))
-     (in_meta (#Item (_ann (#Form (#Item (_ann (#Tuple (#Item (_ann (#Identifier ["" ""]))
-                                                              (#Item arg #End))))
-                                         (#Item ({#End
-                                                  body
-
-                                                  _
-                                                  (_ann (#Form (#Item (_ann (#Identifier [..prelude_module "function''"]))
-                                                                      (#Item (_ann (#Tuple args'))
-                                                                             (#Item body #End)))))}
-                                                 args')
-                                                #End))))
-                     #End))
-
-     (#Item [_ (#Identifier ["" self])] (#Item [_ (#Tuple (#Item arg args'))] (#Item body #End)))
-     (in_meta (#Item (_ann (#Form (#Item (_ann (#Tuple (#Item (_ann (#Identifier ["" self]))
-                                                              (#Item arg #End))))
-                                         (#Item ({#End
-                                                  body
-
-                                                  _
-                                                  (_ann (#Form (#Item (_ann (#Identifier [..prelude_module "function''"]))
-                                                                      (#Item (_ann (#Tuple args'))
-                                                                             (#Item body #End)))))}
-                                                 args')
-                                                #End))))
-                     #End))
+   ({{#Item [_ {#Tuple {#Item arg args'}}] {#Item body #End}}
+     (in_meta {#Item (_ann {#Form {#Item (_ann {#Tuple {#Item (_ann {#Identifier ["" ""]})
+                                                        {#Item arg #End}}})
+                                   {#Item ({#End
+                                            body
+
+                                            _
+                                            (_ann {#Form {#Item (_ann {#Identifier [..prelude_module "function''"]})
+                                                          {#Item (_ann {#Tuple args'})
+                                                           {#Item body #End}}}})}
+                                           args')
+                                    #End}}})
+               #End})
+
+     {#Item [_ {#Identifier ["" self]}] {#Item [_ {#Tuple {#Item arg args'}}] {#Item body #End}}}
+     (in_meta {#Item (_ann {#Form {#Item (_ann {#Tuple {#Item (_ann {#Identifier ["" self]})
+                                                        {#Item arg #End}}})
+                                   {#Item ({#End
+                                            body
+
+                                            _
+                                            (_ann {#Form {#Item (_ann {#Identifier [..prelude_module "function''"]})
+                                                          {#Item (_ann {#Tuple args'})
+                                                           {#Item body #End}}}})}
+                                           args')
+                                    #End}}})
+               #End})
 
      _
      (failure "Wrong syntax for function''")}
@@ -733,70 +757,70 @@
 
 ("lux def" location_code
  ("lux type check" Code
-  (tuple$ (#Item (text$ "") (#Item (nat$ 0) (#Item (nat$ 0) #End)))))
+  (tuple$ {#Item (text$ "") {#Item (nat$ 0) {#Item (nat$ 0) #End}}}))
  #0)
 
 ("lux def" meta_code
- ("lux type check" (#Function Name (#Function Code Code))
+ ("lux type check" {#Function Name {#Function Code Code}}
   ([_ tag]
    ([_ value]
-    (tuple$ (#Item location_code
-                   (#Item (form$ (#Item (tag$ tag) (#Item value #End)))
-                          #End))))))
+    (tuple$ {#Item location_code
+             {#Item (form$ {#Item (tag$ tag) {#Item value #End}})
+              #End}}))))
  #0)
 
 ("lux def" flag_meta
- ("lux type check" (#Function Text Code)
+ ("lux type check" {#Function Text Code}
   ([_ tag]
-   (tuple$ (#Item [(meta_code [..prelude_module "Tag"] (tuple$ (#Item (text$ ..prelude_module) (#Item (text$ tag) #End))))
-                   (#Item [(meta_code [..prelude_module "Bit"] (bit$ #1))
-                           #End])]))))
+   (tuple$ {#Item [(meta_code [..prelude_module "Tag"] (tuple$ {#Item (text$ ..prelude_module) {#Item (text$ tag) #End}}))
+                   {#Item [(meta_code [..prelude_module "Bit"] (bit$ #1))
+                           #End]}]})))
  #0)
 
 ("lux def" as_def
- ("lux type check" (#Function Code (#Function Code (#Function Code Code)))
+ ("lux type check" {#Function Code {#Function Code {#Function Code Code}}}
   (function'' [name value export_policy]
-              (form$ (#Item (text$ "lux def") (#Item name (#Item value (#Item export_policy #End)))))))
+              (form$ {#Item (text$ "lux def") {#Item name {#Item value {#Item export_policy #End}}}})))
  #0)
 
 ("lux def" as_checked
- ("lux type check" (#Function Code (#Function Code Code))
+ ("lux type check" {#Function Code {#Function Code Code}}
   (function'' [type value]
-              (form$ (#Item (text$ "lux type check") (#Item type (#Item value #End))))))
+              (form$ {#Item (text$ "lux type check") {#Item type {#Item value #End}}})))
  #0)
 
 ("lux def" as_function
- ("lux type check" (#Function Code (#Function (#Apply Code List) (#Function Code Code)))
+ ("lux type check" {#Function Code {#Function {#Apply Code List} {#Function Code Code}}}
   (function'' [self inputs output]
-              (form$ (#Item (identifier$ [..prelude_module "function''"])
-                            (#Item self
-                                   (#Item (tuple$ inputs)
-                                          (#Item output #End)))))))
+              (form$ {#Item (identifier$ [..prelude_module "function''"])
+                      {#Item self
+                       {#Item (tuple$ inputs)
+                        {#Item output #End}}}})))
  #0)
 
 ("lux def" as_macro
- ("lux type check" (#Function Code Code)
+ ("lux type check" {#Function Code Code}
   (function'' [expression]
-              (form$ (#Item (text$ "lux macro")
-                            (#Item expression
-                                   #End)))))
+              (form$ {#Item (text$ "lux macro")
+                      {#Item expression
+                       #End}})))
  #0)
 
 ("lux def" def:''
  ("lux macro"
   (function'' [tokens]
-              ({(#Item [export_policy
-                        (#Item [[_ (#Form (#Item [name args]))]
-                                (#Item [type (#Item [body #End])])])])
-                (in_meta (#Item [(as_def name
+              ({{#Item [export_policy
+                        {#Item [[_ {#Form {#Item [name args]}}]
+                                {#Item [type {#Item [body #End]}]}]}]}
+                (in_meta {#Item [(as_def name
                                          (as_checked type (as_function name args body))
                                          export_policy)
-                                 #End]))
+                                 #End]})
 
-                (#Item [export_policy (#Item [name (#Item [type (#Item [body #End])])])])
-                (in_meta (#Item [(as_def name (as_checked type body)
+                {#Item [export_policy {#Item [name {#Item [type {#Item [body #End]}]}]}]}
+                (in_meta {#Item [(as_def name (as_checked type body)
                                          export_policy)
-                                 #End]))
+                                 #End]})
 
                 _
                 (failure "Wrong syntax for def''")}
@@ -806,10 +830,10 @@
 ("lux def" macro:'
  ("lux macro"
   (function'' [tokens]
-              ({(#Item export_policy (#Item [_ (#Form (#Item name args))] (#Item body #End)))
-                (in_meta (#Item (as_def name (as_macro (as_function name args body))
+              ({{#Item export_policy {#Item [_ {#Form {#Item name args}}] {#Item body #End}}}
+                (in_meta {#Item (as_def name (as_macro (as_function name args body))
                                         export_policy)
-                                #End))
+                          #End})
 
                 _
                 (failure "Wrong syntax for macro:'")}
@@ -820,58 +844,58 @@
          (in_meta #End))
 
 (macro:' .private ($' tokens)
-         ({(#Item x #End)
+         ({{#Item x #End}
            (in_meta tokens)
 
-           (#Item x (#Item y xs))
-           (in_meta (#Item (form$ (#Item (identifier$ [..prelude_module "$'"])
-                                         (#Item (form$ (#Item (tag$ [..prelude_module "Apply"])
-                                                              (#Item y (#Item x #End))))
-                                                xs)))
-                           #End))
+           {#Item x {#Item y xs}}
+           (in_meta {#Item (form$ {#Item (identifier$ [..prelude_module "$'"])
+                                   {#Item (variant$ {#Item (tag$ [..prelude_module "Apply"])
+                                                     {#Item y {#Item x #End}}})
+                                    xs}})
+                     #End})
 
            _
            (failure "Wrong syntax for $'")}
           tokens))
 
 (def:'' .private (list\each f xs)
-        (#UnivQ #End
-                (#UnivQ #End
-                        (#Function (#Function (#Parameter 3) (#Parameter 1))
-                                   (#Function ($' List (#Parameter 3))
-                                              ($' List (#Parameter 1))))))
+        {#UnivQ #End
+         {#UnivQ #End
+          {#Function {#Function {#Parameter 3} {#Parameter 1}}
+           {#Function ($' List {#Parameter 3})
+            ($' List {#Parameter 1})}}}}
         ({#End
           #End
 
-          (#Item x xs')
-          (#Item (f x) (list\each f xs'))}
+          {#Item x xs'}
+          {#Item (f x) (list\each f xs')}}
          xs))
 
 (def:'' .private Replacement_Environment
         Type
-        ($' List (#Product Text Code)))
+        ($' List {#Product Text Code}))
 
 (def:'' .private (replacement_environment xs ys)
-        (#Function ($' List Text) (#Function ($' List Code) Replacement_Environment))
-        ({[(#Item x xs') (#Item y ys')]
-          (#Item [x y] (replacement_environment xs' ys'))
+        {#Function ($' List Text) {#Function ($' List Code) Replacement_Environment}}
+        ({[{#Item x xs'} {#Item y ys'}]
+          {#Item [x y] (replacement_environment xs' ys')}
 
           _
           #End}
          [xs ys]))
 
 (def:'' .private (text\= reference sample)
-        (#Function Text (#Function Text Bit))
+        {#Function Text {#Function Text Bit}}
         ("lux text =" reference sample))
 
 (def:'' .private (replacement for environment)
-        (#Function Text (#Function Replacement_Environment ($' Maybe Code)))
+        {#Function Text {#Function Replacement_Environment ($' Maybe Code)}}
         ({#End
           #None
 
-          (#Item [k v] environment')
+          {#Item [k v] environment'}
           ({#1
-            (#Some v)
+            {#Some v}
 
             #0
             (replacement for environment')}
@@ -879,30 +903,30 @@
          environment))
 
 (def:'' .private (with_replacements reps syntax)
-        (#Function Replacement_Environment (#Function Code Code))
-        ({[_ (#Identifier "" name)]
-          ({(#Some replacement)
+        {#Function Replacement_Environment {#Function Code Code}}
+        ({[_ {#Identifier "" name}]
+          ({{#Some replacement}
             replacement
 
             #None
             syntax}
            (..replacement name reps))
 
-          [meta (#Form parts)]
-          [meta (#Form (list\each (with_replacements reps) parts))]
+          [meta {#Form parts}]
+          [meta {#Form (list\each (with_replacements reps) parts)}]
 
-          [meta (#Variant members)]
-          [meta (#Variant (list\each (with_replacements reps) members))]
+          [meta {#Variant members}]
+          [meta {#Variant (list\each (with_replacements reps) members)}]
 
-          [meta (#Tuple members)]
-          [meta (#Tuple (list\each (with_replacements reps) members))]
+          [meta {#Tuple members}]
+          [meta {#Tuple (list\each (with_replacements reps) members)}]
           
           _
           syntax}
          syntax))
 
 (def:'' .private (n/* param subject)
-        (#Function Nat (#Function Nat Nat))
+        {#Function Nat {#Function Nat Nat}}
         ("lux type as" Nat
          ("lux i64 *"
           ("lux type as" Int param)
@@ -910,36 +934,36 @@
 
 (def:'' .private (list\mix f init xs)
         ... (All (_ a b) (-> (-> b a a) a (List b) a))
-        (#UnivQ #End (#UnivQ #End (#Function (#Function (#Parameter 1)
-                                                        (#Function (#Parameter 3)
-                                                                   (#Parameter 3)))
-                                             (#Function (#Parameter 3)
-                                                        (#Function ($' List (#Parameter 1))
-                                                                   (#Parameter 3))))))
+        {#UnivQ #End {#UnivQ #End {#Function {#Function {#Parameter 1}
+                                              {#Function {#Parameter 3}
+                                               {#Parameter 3}}}
+                                   {#Function {#Parameter 3}
+                                    {#Function ($' List {#Parameter 1})
+                                     {#Parameter 3}}}}}}
         ({#End
           init
 
-          (#Item x xs')
+          {#Item x xs'}
           (list\mix f (f x init) xs')}
          xs))
 
 (def:'' .private (list\size list)
-        (#UnivQ #End
-                (#Function ($' List (#Parameter 1)) Nat))
+        {#UnivQ #End
+         {#Function ($' List {#Parameter 1}) Nat}}
         (list\mix (function'' [_ acc] ("lux i64 +" 1 acc)) 0 list))
 
 (def:'' .private (let$ binding value body)
-        (#Function Code (#Function Code (#Function Code Code)))
-        (form$ (#Item (variant$ (#Item binding (#Item body #End)))
-                      (#Item value #End))))
+        {#Function Code {#Function Code {#Function Code Code}}}
+        (form$ {#Item (variant$ {#Item binding {#Item body #End}})
+                {#Item value #End}}))
 
 (def:'' .private (UnivQ$ body)
-        (#Function Code Code)
-        (form$ (#Item (tag$ [..prelude_module "UnivQ"]) (#Item (tag$ [..prelude_module "End"]) (#Item body #End)))))
+        {#Function Code Code}
+        (variant$ {#Item (tag$ [..prelude_module "UnivQ"]) {#Item (tag$ [..prelude_module "End"]) {#Item body #End}}}))
 
 (def:'' .private (ExQ$ body)
-        (#Function Code Code)
-        (form$ (#Item (tag$ [..prelude_module "ExQ"]) (#Item (tag$ [..prelude_module "End"]) (#Item body #End)))))
+        {#Function Code Code}
+        (variant$ {#Item (tag$ [..prelude_module "ExQ"]) {#Item (tag$ [..prelude_module "End"]) {#Item body #End}}}))
 
 (def:'' .private quantification_level
         Text
@@ -948,24 +972,24 @@
           double_quote)))
 
 (def:'' .private quantified
-        (#Function Code Code)
+        {#Function Code Code}
         (let$ (local_identifier$ ..quantification_level) (nat$ 0)))
 
 (def:'' .private (quantified_type_parameter idx)
-        (#Function Nat Code)
-        (form$ (#Item (tag$ [..prelude_module "Parameter"])
-                      (#Item (form$ (#Item (text$ "lux i64 +")
-                                           (#Item (local_identifier$ ..quantification_level)
-                                                  (#Item (nat$ idx)
-                                                         #End))))
-                             #End))))
+        {#Function Nat Code}
+        (variant$ {#Item (tag$ [..prelude_module "Parameter"])
+                   {#Item (form$ {#Item (text$ "lux i64 +")
+                                  {#Item (local_identifier$ ..quantification_level)
+                                   {#Item (nat$ idx)
+                                    #End}}})
+                    #End}}))
 
 (def:'' .private (next_level depth)
-        (#Function Nat Nat)
+        {#Function Nat Nat}
         ("lux i64 +" 2 depth))
 
 (def:'' .private (self_id? id)
-        (#Function Nat Bit)
+        {#Function Nat Bit}
         ("lux i64 =" id ("lux type as" Nat
                          ("lux i64 *" +2
                           ("lux i64 /" +2
@@ -973,49 +997,49 @@
                             id))))))
 
 (def:'' .public (__adjusted_quantified_type__ permission depth type)
-        (#Function Nat (#Function Nat (#Function Type Type)))
+        {#Function Nat {#Function Nat {#Function Type Type}}}
         ({0
           ({... Jackpot!
-            (#Parameter id)
+            {#Parameter id}
             ({id'
-              ({#0 (#Parameter id')
-                #1 (#Parameter ("lux i64 -" 2 id'))}
+              ({#0 {#Parameter id'}
+                #1 {#Parameter ("lux i64 -" 2 id')}}
                (self_id? id))}
              ("lux i64 -" ("lux i64 -" depth id) 0))
             
             ... Recur
-            (#Primitive name parameters)
-            (#Primitive name (list\each (__adjusted_quantified_type__ permission depth)
-                                        parameters))
+            {#Primitive name parameters}
+            {#Primitive name (list\each (__adjusted_quantified_type__ permission depth)
+                                        parameters)}
 
-            (#Sum left right)
-            (#Sum (__adjusted_quantified_type__ permission depth left)
-                  (__adjusted_quantified_type__ permission depth right))
+            {#Sum left right}
+            {#Sum (__adjusted_quantified_type__ permission depth left)
+             (__adjusted_quantified_type__ permission depth right)}
             
-            (#Product left right)
-            (#Product (__adjusted_quantified_type__ permission depth left)
-                      (__adjusted_quantified_type__ permission depth right))
+            {#Product left right}
+            {#Product (__adjusted_quantified_type__ permission depth left)
+             (__adjusted_quantified_type__ permission depth right)}
             
-            (#Function input output)
-            (#Function (__adjusted_quantified_type__ permission depth input)
-                       (__adjusted_quantified_type__ permission depth output))
+            {#Function input output}
+            {#Function (__adjusted_quantified_type__ permission depth input)
+             (__adjusted_quantified_type__ permission depth output)}
             
-            (#UnivQ environment body)
-            (#UnivQ environment
-                    (__adjusted_quantified_type__ permission (next_level depth) body))
+            {#UnivQ environment body}
+            {#UnivQ environment
+             (__adjusted_quantified_type__ permission (next_level depth) body)}
             
-            (#ExQ environment body)
-            (#ExQ environment
-                  (__adjusted_quantified_type__ permission (next_level depth) body))
+            {#ExQ environment body}
+            {#ExQ environment
+             (__adjusted_quantified_type__ permission (next_level depth) body)}
             
-            (#Apply parameter function)
-            (#Apply (__adjusted_quantified_type__ permission depth parameter)
-                    (__adjusted_quantified_type__ permission depth function))
+            {#Apply parameter function}
+            {#Apply (__adjusted_quantified_type__ permission depth parameter)
+             (__adjusted_quantified_type__ permission depth function)}
 
             ... Leave these alone.
-            (#Named name anonymous) type
-            (#Var id) type
-            (#Ex id) type}
+            {#Named name anonymous} type
+            {#Var id} type
+            {#Ex id} type}
            type)
 
           _
@@ -1023,29 +1047,29 @@
          permission))
 
 (def:'' .private (with_correct_quantification body)
-        (#Function Code Code)
-        (form$ (#Item (identifier$ [prelude_module "__adjusted_quantified_type__"])
-                      (#Item (local_identifier$ ..quantification_level)
-                             (#Item (nat$ 0)
-                                    (#Item body
-                                           #End))))))
+        {#Function Code Code}
+        (form$ {#Item (identifier$ [prelude_module "__adjusted_quantified_type__"])
+                {#Item (local_identifier$ ..quantification_level)
+                 {#Item (nat$ 0)
+                  {#Item body
+                   #End}}}}))
 
 (def:'' .private (with_quantification depth body)
-        (#Function Nat (#Function Code Code))
+        {#Function Nat {#Function Code Code}}
         ({g!level
           (let$ g!level
-                (form$ (#Item (text$ "lux i64 +")
-                              (#Item g!level
-                                     (#Item (nat$ ("lux type as" Nat
-                                                   ("lux i64 *" +2
-                                                    ("lux type as" Int
-                                                     depth))))
-                                            #End))))
+                (form$ {#Item (text$ "lux i64 +")
+                        {#Item g!level
+                         {#Item (nat$ ("lux type as" Nat
+                                       ("lux i64 *" +2
+                                        ("lux type as" Int
+                                         depth))))
+                          #End}}})
                 body)}
          (local_identifier$ ..quantification_level)))
 
 (def:'' .private (initialized_quantification? lux)
-        (#Function Lux Bit)
+        {#Function Lux Bit}
         ({[#info _ #source _ #current_module _ #modules _
            #scopes scopes #type_context _ #host _
            #seed _ #expected _ #location _ #extensions _
@@ -1070,17 +1094,17 @@
          lux))
 
 (macro:' .public (All tokens lux)
-         ({(#Item [_ (#Form (#Item self_name args))]
-                  (#Item body #End))
-           (#Right [lux
-                    (#Item ({raw
+         ({{#Item [_ {#Form {#Item self_name args}}]
+            {#Item body #End}}
+           {#Right [lux
+                    {#Item ({raw
                              ({#1 raw
                                #0 (..quantified raw)}
                               (initialized_quantification? lux))}
                             ({#End
                               body
 
-                              (#Item head tail)
+                              {#Item head tail}
                               (with_correct_quantification
                                 (let$ self_name (quantified_type_parameter 0)
                                       ({[_ raw]
@@ -1095,24 +1119,24 @@
                                                       body)]
                                                  args))))}
                              args))
-                           #End)])
+                     #End}]}
            
            _
-           (#Left "Wrong syntax for All")}
+           {#Left "Wrong syntax for All"}}
           tokens))
 
 (macro:' .public (Ex tokens lux)
-         ({(#Item [_ (#Form (#Item self_name args))]
-                  (#Item body #End))
-           (#Right [lux
-                    (#Item ({raw
+         ({{#Item [_ {#Form {#Item self_name args}}]
+            {#Item body #End}}
+           {#Right [lux
+                    {#Item ({raw
                              ({#1 raw
                                #0 (..quantified raw)}
                               (initialized_quantification? lux))}
                             ({#End
                               body
 
-                              (#Item head tail)
+                              {#Item head tail}
                               (with_correct_quantification
                                 (let$ self_name (quantified_type_parameter 0)
                                       ({[_ raw]
@@ -1127,47 +1151,47 @@
                                                       body)]
                                                  args))))}
                              args))
-                           #End)])
+                     #End}]}
            
            _
-           (#Left "Wrong syntax for Ex")}
+           {#Left "Wrong syntax for Ex"}}
           tokens))
 
 (def:'' .private (list\reversed list)
         (All (_ a)
-          (#Function ($' List a) ($' List a)))
+          {#Function ($' List a) ($' List a)})
         (list\mix ("lux type check" (All (_ a)
-                                      (#Function a (#Function ($' List a) ($' List a))))
-                   (function'' [head tail] (#Item head tail)))
+                                      {#Function a {#Function ($' List a) ($' List a)}})
+                   (function'' [head tail] {#Item head tail}))
                   #End
                   list))
 
 (macro:' .public (-> tokens)
-         ({(#Item output inputs)
-           (in_meta (#Item (list\mix ("lux type check" (#Function Code (#Function Code Code))
-                                      (function'' [i o] (form$ (#Item (tag$ [..prelude_module "Function"]) (#Item i (#Item o #End))))))
+         ({{#Item output inputs}
+           (in_meta {#Item (list\mix ("lux type check" {#Function Code {#Function Code Code}}
+                                      (function'' [i o] (variant$ {#Item (tag$ [..prelude_module "Function"]) {#Item i {#Item o #End}}})))
                                      output
                                      inputs)
-                           #End))
+                     #End})
            
            _
            (failure "Wrong syntax for ->")}
           (list\reversed tokens)))
 
 (macro:' .public (list xs)
-         (in_meta (#Item (list\mix (function'' [head tail]
-                                               (form$ (#Item (tag$ [..prelude_module "Item"])
-                                                             (#Item (tuple$ (#Item [head (#Item [tail #End])]))
-                                                                    #End))))
+         (in_meta {#Item (list\mix (function'' [head tail]
+                                               (variant$ {#Item (tag$ [..prelude_module "Item"])
+                                                          {#Item (tuple$ {#Item [head {#Item [tail #End]}]})
+                                                           #End}}))
                                    (tag$ [..prelude_module "End"])
                                    (list\reversed xs))
-                         #End)))
+                   #End}))
 
 (macro:' .public (list& xs)
-         ({(#Item last init)
+         ({{#Item last init}
            (in_meta (list (list\mix (function'' [head tail]
-                                                (form$ (list (tag$ [..prelude_module "Item"])
-                                                             (tuple$ (list head tail)))))
+                                                (variant$ (list (tag$ [..prelude_module "Item"])
+                                                                (tuple$ (list head tail)))))
                                     last
                                     init)))
 
@@ -1179,8 +1203,8 @@
          ({#End
            (in_meta (list (identifier$ [..prelude_module "Nothing"])))
 
-           (#Item last prevs)
-           (in_meta (list (list\mix (function'' [left right] (form$ (list (tag$ [..prelude_module "Sum"]) left right)))
+           {#Item last prevs}
+           (in_meta (list (list\mix (function'' [left right] (variant$ (list (tag$ [..prelude_module "Sum"]) left right)))
                                     last
                                     prevs)))}
           (list\reversed tokens)))
@@ -1189,24 +1213,24 @@
          ({#End
            (in_meta (list (identifier$ [..prelude_module "Any"])))
 
-           (#Item last prevs)
-           (in_meta (list (list\mix (function'' [left right] (form$ (list (tag$ [..prelude_module "Product"]) left right)))
+           {#Item last prevs}
+           (in_meta (list (list\mix (function'' [left right] (variant$ (list (tag$ [..prelude_module "Product"]) left right)))
                                     last
                                     prevs)))}
           (list\reversed tokens)))
 
 (macro:' .private (function' tokens)
-         (let'' [name tokens'] ({(#Item [[_ (#Identifier ["" name])] tokens'])
+         (let'' [name tokens'] ({{#Item [[_ {#Identifier ["" name]}] tokens']}
                                  [name tokens']
 
                                  _
                                  ["" tokens]}
                                 tokens)
-                ({(#Item [[_ (#Tuple args)] (#Item [body #End])])
+                ({{#Item [[_ {#Tuple args}] {#Item [body #End]}]}
                   ({#End
                     (failure "function' requires a non-empty arguments tuple.")
                     
-                    (#Item [harg targs])
+                    {#Item [harg targs]}
                     (in_meta (list (form$ (list (tuple$ (list (local_identifier$ name)
                                                               harg))
                                                 (list\mix (function'' [arg body']
@@ -1222,9 +1246,9 @@
                  tokens')))
 
 (macro:' .private (def:''' tokens)
-         ({(#Item [export_policy
-                   (#Item [[_ (#Form (#Item [name args]))]
-                           (#Item [type (#Item [body #End])])])])
+         ({{#Item [export_policy
+                   {#Item [[_ {#Form {#Item [name args]}}]
+                           {#Item [type {#Item [body #End]}]}]}]}
            (in_meta (list (form$ (list (text$ "lux def")
                                        name
                                        (form$ (list (text$ "lux type check")
@@ -1235,7 +1259,7 @@
                                                                  body))))
                                        export_policy))))
 
-           (#Item [export_policy (#Item [name (#Item [type (#Item [body #End])])])])
+           {#Item [export_policy {#Item [name {#Item [type {#Item [body #End]}]}]}]}
            (in_meta (list (form$ (list (text$ "lux def")
                                        name
                                        (form$ (list (text$ "lux type check")
@@ -1257,15 +1281,15 @@
 
 (def:''' .private (pairs xs)
          (All (_ a) (-> ($' List a) ($' List (Tuple a a))))
-         ({(#Item x (#Item y xs'))
-           (#Item [x y] (pairs xs'))
+         ({{#Item x {#Item y xs'}}
+           {#Item [x y] (pairs xs')}
 
            _
            #End}
           xs))
 
 (macro:' .private (let' tokens)
-         ({(#Item [[_ (#Tuple bindings)] (#Item [body #End])])
+         ({{#Item [[_ {#Tuple bindings}] {#Item [body #End]}]}
            (in_meta (list (list\mix ("lux type check" (-> (Tuple Code Code) Code
                                                           Code)
                                      (function' [binding body]
@@ -1285,7 +1309,7 @@
          ({#End
            #0
 
-           (#Item x xs')
+           {#Item x xs'}
            ({#1  #1
              #0 (any? p xs')}
             (p x))}
@@ -1299,16 +1323,18 @@
 (def:''' .private (untemplated_list tokens)
          (-> ($' List Code) Code)
          ({#End
-           (_ann (#Tag [..prelude_module "End"]))
+           (_ann {#Tag [..prelude_module "End"]})
 
-           (#Item [token tokens'])
-           (_ann (#Form (list (_ann (#Tag [..prelude_module "Item"])) token (untemplated_list tokens'))))}
+           {#Item [token tokens']}
+           (_ann {#Variant (list (_ann {#Tag [..prelude_module "Item"]})
+                                 token
+                                 (untemplated_list tokens'))})}
           tokens))
 
 (def:''' .private (list\composite xs ys)
          (All (_ a) (-> ($' List a) ($' List a) ($' List a)))
-         ({(#Item x xs')
-           (#Item x (list\composite xs' ys))
+         ({{#Item x xs'}
+           {#Item x (list\composite xs' ys)}
 
            #End
            ys}
@@ -1316,7 +1342,7 @@
 
 (def:''' .private (right_associativity op a1 a2)
          (-> Code Code Code Code)
-         ({[_ (#Form parts)]
+         ({[_ {#Form parts}]
            (form$ (list\composite parts (list a1 a2)))
 
            _
@@ -1330,8 +1356,8 @@
                     (func left right)))
 
 (macro:' .public (_$ tokens)
-         ({(#Item op tokens')
-           ({(#Item first nexts)
+         ({{#Item op tokens'}
+           ({{#Item first nexts}
              (in_meta (list (list\mix (function\flipped (right_associativity op)) first nexts)))
 
              _
@@ -1343,8 +1369,8 @@
           tokens))
 
 (macro:' .public ($_ tokens)
-         ({(#Item op tokens')
-           ({(#Item last prevs)
+         ({{#Item op tokens'}
+           ({{#Item last prevs}
              (in_meta (list (list\mix (right_associativity op) last prevs)))
 
              _
@@ -1362,26 +1388,26 @@
 ...    (: (All (_ a b) (-> (-> a (m b)) (m a) (m b)))
 ...       then)))
 ("lux def type tagged" Monad
- (#Named [..prelude_module "Monad"]
-         (All (_ !)
-           (Tuple (All (_ a)
-                    (-> a ($' ! a)))
-                  (All (_ a b)
-                    (-> (-> a ($' ! b))
-                        ($' ! a)
-                        ($' ! b))))))
+ {#Named [..prelude_module "Monad"]
+  (All (_ !)
+    (Tuple (All (_ a)
+             (-> a ($' ! a)))
+           (All (_ a b)
+             (-> (-> a ($' ! b))
+                 ($' ! a)
+                 ($' ! b)))))}
  ["in" "then"]
  #0)
 
 (def:''' .private maybe_monad
          ($' Monad Maybe)
          [#in
-          (function' [x] (#Some x))
+          (function' [x] {#Some x})
           
           #then
           (function' [f ma]
                      ({#None     #None
-                       (#Some a) (f a)}
+                       {#Some a} (f a)}
                       ma))])
 
 (def:''' .private meta_monad
@@ -1389,26 +1415,26 @@
          [#in
           (function' [x]
                      (function' [state]
-                                (#Right state x)))
+                                {#Right state x}))
           
           #then
           (function' [f ma]
                      (function' [state]
-                                ({(#Left msg)
-                                  (#Left msg)
+                                ({{#Left msg}
+                                  {#Left msg}
 
-                                  (#Right [state' a])
+                                  {#Right [state' a]}
                                   (f a state')}
                                  (ma state))))])
 
 (macro:' .private (do tokens)
-         ({(#Item monad (#Item [_ (#Tuple bindings)] (#Item body #End)))
+         ({{#Item monad {#Item [_ {#Tuple bindings}] {#Item body #End}}}
            (let' [g!in (local_identifier$ "in")
                   g!then (local_identifier$ " then ")
                   body' (list\mix ("lux type check" (-> (Tuple Code Code) Code Code)
                                    (function' [binding body']
                                               (let' [[var value] binding]
-                                                    ({[_ (#Identifier [module short])]
+                                                    ({[_ {#Identifier [module short]}]
                                                       ({""
                                                         (form$ (list g!then
                                                                      (form$ (list (tuple$ (list (local_identifier$ "") var)) body'))
@@ -1445,11 +1471,11 @@
                ({#End
                  (in #End)
                  
-                 (#Item x xs')
+                 {#Item x xs'}
                  (do m
                    [y (f x)
                     ys (monad\each m f xs')]
-                   (in (#Item y ys)))}
+                   (in {#Item y ys}))}
                 xs)))
 
 (def:''' .private (monad\mix m f y xs)
@@ -1463,14 +1489,14 @@
                ({#End
                  (in y)
                  
-                 (#Item x xs')
+                 {#Item x xs'}
                  (do m
                    [y' (f x y)]
                    (monad\mix m f y' xs'))}
                 xs)))
 
 (macro:' .public (if tokens)
-         ({(#Item test (#Item then (#Item else #End)))
+         ({{#Item test {#Item then {#Item else #End}}}
            (in_meta (list (form$ (list (variant$ (list (bit$ #1)  then
                                                        (bit$ #0) else))
                                        test))))
@@ -1486,9 +1512,9 @@
 (def:''' .private (plist\value k plist)
          (All (_ a)
            (-> Text ($' PList a) ($' Maybe a)))
-         ({(#Item [[k' v] plist'])
+         ({{#Item [[k' v] plist']}
            (if (text\= k k')
-             (#Some v)
+             {#Some v}
              (plist\value k plist'))
 
            #End
@@ -1513,37 +1539,37 @@
                  #scopes scopes #type_context types    #host    host
                  #seed seed #expected  expected #location  location #extensions extensions
                  #scope_type_vars scope_type_vars #eval _eval] state]
-               ({(#Some [#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_state _])
-                 ({(#Some constant)
-                   ({(#Alias real_name)
-                     (#Right [state real_name])
+               ({{#Some [#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_state _]}
+                 ({{#Some constant}
+                   ({{#Alias real_name}
+                     {#Right [state real_name]}
                      
-                     (#Definition [exported? def_type def_value])
-                     (#Right [state full_name])
+                     {#Definition [exported? def_type def_value]}
+                     {#Right [state full_name]}
 
-                     (#Type [exported? type labels])
-                     (#Right [state full_name])
+                     {#Type [exported? type labels]}
+                     {#Right [state full_name]}
 
-                     (#Label _)
-                     (#Left ($_ text\composite "Unknown definition: " (name\encoded full_name)))
+                     {#Label _}
+                     {#Left ($_ text\composite "Unknown definition: " (name\encoded full_name))}
 
-                     (#Slot _)
-                     (#Left ($_ text\composite "Unknown definition: " (name\encoded full_name)))}
+                     {#Slot _}
+                     {#Left ($_ text\composite "Unknown definition: " (name\encoded full_name))}}
                     constant)
 
                    #None
-                   (#Left ($_ text\composite "Unknown definition: " (name\encoded full_name)))}
+                   {#Left ($_ text\composite "Unknown definition: " (name\encoded full_name))}}
                   (plist\value name definitions))
                  
                  #None
-                 (#Left ($_ text\composite "Unknown module: " module " @ " (name\encoded full_name)))}
+                 {#Left ($_ text\composite "Unknown module: " module " @ " (name\encoded full_name))}}
                 (plist\value module modules))))
 
 (def:''' .private (code_list expression)
          (-> Code Code)
-         (let' [type (form$ (list (tag$ [..prelude_module "Apply"])
-                                  (identifier$ [..prelude_module "Code"])
-                                  (identifier$ [..prelude_module "List"])))]
+         (let' [type (variant$ (list (tag$ [..prelude_module "Apply"])
+                                     (identifier$ [..prelude_module "Code"])
+                                     (identifier$ [..prelude_module "List"])))]
                (form$ (list (text$ "lux type check") type expression))))
 
 (def:''' .private (spliced replace? untemplated elems)
@@ -1552,20 +1578,20 @@
            ({#End
              (in_meta (tag$ [..prelude_module "End"]))
              
-             (#Item lastI inits)
+             {#Item lastI inits}
              (do meta_monad
-               [lastO ({[_ (#Form (#Item [[_ (#Identifier ["" "~+"])] (#Item [spliced #End])]))]
+               [lastO ({[_ {#Form {#Item [[_ {#Identifier ["" "~+"]}] {#Item [spliced #End]}]}}]
                         (in (code_list spliced))
 
                         _
                         (do meta_monad
                           [lastO (untemplated lastI)]
-                          (in (code_list (form$ (list (tag$ [..prelude_module "Item"])
-                                                      (tuple$ (list lastO (tag$ [..prelude_module "End"]))))))))}
+                          (in (code_list (variant$ (list (tag$ [..prelude_module "Item"])
+                                                         (tuple$ (list lastO (tag$ [..prelude_module "End"]))))))))}
                        lastI)]
                (monad\mix meta_monad
                           (function' [leftI rightO]
-                                     ({[_ (#Form (#Item [[_ (#Identifier ["" "~+"])] (#Item [spliced #End])]))]
+                                     ({[_ {#Form {#Item [[_ {#Identifier ["" "~+"]}] {#Item [spliced #End]}]}}]
                                        (let' [g!in-module (form$ (list (text$ "lux in-module")
                                                                        (text$ ..prelude_module)
                                                                        (identifier$ [..prelude_module "list\composite"])))]
@@ -1574,7 +1600,7 @@
                                        _
                                        (do meta_monad
                                          [leftO (untemplated leftI)]
-                                         (in (form$ (list (tag$ [..prelude_module "Item"]) (tuple$ (list leftO rightO))))))}
+                                         (in (variant$ (list (tag$ [..prelude_module "Item"]) (tuple$ (list leftO rightO))))))}
                                       leftI))
                           lastO
                           inits))}
@@ -1587,41 +1613,41 @@
 
 (def:''' .private (untemplated_text value)
          (-> Text Code)
-         (with_location (form$ (list (tag$ [..prelude_module "Text"]) (text$ value)))))
+         (with_location (variant$ (list (tag$ [..prelude_module "Text"]) (text$ value)))))
 
 (def:''' .private (untemplated replace? subst token)
          (-> Bit Text Code ($' Meta Code))
-         ({[_ [_ (#Bit value)]]
-           (in_meta (with_location (form$ (list (tag$ [..prelude_module "Bit"]) (bit$ value)))))
+         ({[_ [_ {#Bit value}]]
+           (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Bit"]) (bit$ value)))))
 
-           [_ [_ (#Nat value)]]
-           (in_meta (with_location (form$ (list (tag$ [..prelude_module "Nat"]) (nat$ value)))))
+           [_ [_ {#Nat value}]]
+           (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Nat"]) (nat$ value)))))
 
-           [_ [_ (#Int value)]]
-           (in_meta (with_location (form$ (list (tag$ [..prelude_module "Int"]) (int$ value)))))
+           [_ [_ {#Int value}]]
+           (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Int"]) (int$ value)))))
 
-           [_ [_ (#Rev value)]]
-           (in_meta (with_location (form$ (list (tag$ [..prelude_module "Rev"]) (rev$ value)))))
+           [_ [_ {#Rev value}]]
+           (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Rev"]) (rev$ value)))))
            
-           [_ [_ (#Frac value)]]
-           (in_meta (with_location (form$ (list (tag$ [..prelude_module "Frac"]) (frac$ value)))))
+           [_ [_ {#Frac value}]]
+           (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Frac"]) (frac$ value)))))
 
-           [_ [_ (#Text value)]]
+           [_ [_ {#Text value}]]
            (in_meta (untemplated_text value))
 
-           [#0 [_ (#Tag [module name])]]
-           (in_meta (with_location (form$ (list (tag$ [..prelude_module "Tag"]) (tuple$ (list (text$ module) (text$ name)))))))
+           [#0 [_ {#Tag [module name]}]]
+           (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Tag"]) (tuple$ (list (text$ module) (text$ name)))))))
 
-           [#1 [_ (#Tag [module name])]]
+           [#1 [_ {#Tag [module name]}]]
            (let' [module' ({""
                             subst
 
                             _
                             module}
                            module)]
-                 (in_meta (with_location (form$ (list (tag$ [..prelude_module "Tag"]) (tuple$ (list (text$ module') (text$ name))))))))
+                 (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Tag"]) (tuple$ (list (text$ module') (text$ name))))))))
 
-           [#1 [_ (#Identifier [module name])]]
+           [#1 [_ {#Identifier [module name]}]]
            (do meta_monad
              [real_name ({""
                           (if (text\= "" subst)
@@ -1632,52 +1658,52 @@
                           (in [module name])}
                          module)
               .let' [[module name] real_name]]
-             (in_meta (with_location (form$ (list (tag$ [..prelude_module "Identifier"]) (tuple$ (list (text$ module) (text$ name))))))))
+             (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Identifier"]) (tuple$ (list (text$ module) (text$ name))))))))
 
-           [#0 [_ (#Identifier [module name])]]
-           (in_meta (with_location (form$ (list (tag$ [..prelude_module "Identifier"]) (tuple$ (list (text$ module) (text$ name)))))))
+           [#0 [_ {#Identifier [module name]}]]
+           (in_meta (with_location (variant$ (list (tag$ [..prelude_module "Identifier"]) (tuple$ (list (text$ module) (text$ name)))))))
 
-           [#1 [_ (#Form (#Item [[_ (#Identifier ["" "~"])] (#Item [unquoted #End])]))]]
+           [#1 [_ {#Form {#Item [[_ {#Identifier ["" "~"]}] {#Item [unquoted #End]}]}}]]
            (in_meta (form$ (list (text$ "lux type check")
                                  (identifier$ [..prelude_module "Code"])
                                  unquoted)))
 
-           [#1 [_ (#Form (#Item [[_ (#Identifier ["" "~!"])] (#Item [dependent #End])]))]]
+           [#1 [_ {#Form {#Item [[_ {#Identifier ["" "~!"]}] {#Item [dependent #End]}]}}]]
            (do meta_monad
              [independent (untemplated replace? subst dependent)]
-             (in (with_location (form$ (list (tag$ [..prelude_module "Form"])
-                                             (untemplated_list (list (untemplated_text "lux in-module")
-                                                                     (untemplated_text subst)
-                                                                     independent)))))))
+             (in (with_location (variant$ (list (tag$ [..prelude_module "Form"])
+                                                (untemplated_list (list (untemplated_text "lux in-module")
+                                                                        (untemplated_text subst)
+                                                                        independent)))))))
 
-           [#1 [_ (#Form (#Item [[_ (#Identifier ["" "~'"])] (#Item [keep_quoted #End])]))]]
+           [#1 [_ {#Form {#Item [[_ {#Identifier ["" "~'"]}] {#Item [keep_quoted #End]}]}}]]
            (untemplated #0 subst keep_quoted)
 
-           [_ [meta (#Form elems)]]
+           [_ [meta {#Form elems}]]
            (do meta_monad
              [output (spliced replace? (untemplated replace? subst) elems)
-              .let' [[_ output'] (with_location (form$ (list (tag$ [..prelude_module "Form"]) output)))]]
+              .let' [[_ output'] (with_location (variant$ (list (tag$ [..prelude_module "Form"]) output)))]]
              (in [meta output']))
 
-           [_ [meta (#Variant elems)]]
+           [_ [meta {#Variant elems}]]
            (do meta_monad
              [output (spliced replace? (untemplated replace? subst) elems)
-              .let' [[_ output'] (with_location (form$ (list (tag$ [..prelude_module "Variant"]) output)))]]
+              .let' [[_ output'] (with_location (variant$ (list (tag$ [..prelude_module "Variant"]) output)))]]
              (in [meta output']))
 
-           [_ [meta (#Tuple elems)]]
+           [_ [meta {#Tuple elems}]]
            (do meta_monad
              [output (spliced replace? (untemplated replace? subst) elems)
-              .let' [[_ output'] (with_location (form$ (list (tag$ [..prelude_module "Tuple"]) output)))]]
+              .let' [[_ output'] (with_location (variant$ (list (tag$ [..prelude_module "Tuple"]) output)))]]
              (in [meta output']))}
           [replace? token]))
 
 (macro:' .public (primitive tokens)
-         ({(#Item [_ (#Text class_name)] #End)
-           (in_meta (list (form$ (list (tag$ [..prelude_module "Primitive"]) (text$ class_name) (tag$ [..prelude_module "End"])))))
+         ({{#Item [_ {#Text class_name}] #End}
+           (in_meta (list (variant$ (list (tag$ [..prelude_module "Primitive"]) (text$ class_name) (tag$ [..prelude_module "End"])))))
 
-           (#Item [_ (#Text class_name)] (#Item [_ (#Tuple params)] #End))
-           (in_meta (list (form$ (list (tag$ [..prelude_module "Primitive"]) (text$ class_name) (untemplated_list params)))))
+           {#Item [_ {#Text class_name}] {#Item [_ {#Tuple params}] #End}}
+           (in_meta (list (variant$ (list (tag$ [..prelude_module "Primitive"]) (text$ class_name) (untemplated_list params)))))
 
            _
            (failure "Wrong syntax for primitive")}
@@ -1689,16 +1715,16 @@
            #scopes scopes #type_context types    #host    host
            #seed seed #expected  expected #location  location #extensions extensions
            #scope_type_vars scope_type_vars #eval _eval]
-          ({(#Some module_name)
-            (#Right [state module_name])
+          ({{#Some module_name}
+            {#Right [state module_name]}
 
             _
-            (#Left "Cannot get the module name without a module!")}
+            {#Left "Cannot get the module name without a module!"}}
            current_module)}
          state))
 
 (macro:' .public (` tokens)
-         ({(#Item template #End)
+         ({{#Item template #End}
            (do meta_monad
              [current_module current_module_name
               =template (untemplated #1 current_module template)]
@@ -1711,7 +1737,7 @@
           tokens))
 
 (macro:' .public (`' tokens)
-         ({(#Item template #End)
+         ({{#Item template #End}
            (do meta_monad
              [=template (untemplated #1 "" template)]
              (in (list (form$ (list (text$ "lux type check") (identifier$ [..prelude_module "Code"]) =template)))))
@@ -1721,7 +1747,7 @@
           tokens))
 
 (macro:' .public (' tokens)
-         ({(#Item template #End)
+         ({{#Item template #End}
            (do meta_monad
              [=template (untemplated #0 "" template)]
              (in (list (form$ (list (text$ "lux type check") (identifier$ [..prelude_module "Code"]) =template)))))
@@ -1731,15 +1757,21 @@
           tokens))
 
 (macro:' .public (|> tokens)
-         ({(#Item [init apps])
+         ({{#Item [init apps]}
            (in_meta (list (list\mix ("lux type check" (-> Code Code Code)
                                      (function' [app acc]
-                                                ({[_ (#Tuple parts)]
+                                                ({[_ {#Variant parts}]
+                                                  (variant$ (list\composite parts (list acc)))
+
+                                                  [_ {#Tuple parts}]
                                                   (tuple$ (list\composite parts (list acc)))
 
-                                                  [_ (#Form parts)]
+                                                  [_ {#Form parts}]
                                                   (form$ (list\composite parts (list acc)))
 
+                                                  [_ {#Tag _}]
+                                                  (` {(~ app) (~ acc)})
+
                                                   _
                                                   (` ((~ app) (~ acc)))}
                                                  app)))
@@ -1751,15 +1783,21 @@
           tokens))
 
 (macro:' .public (<| tokens)
-         ({(#Item [init apps])
+         ({{#Item [init apps]}
            (in_meta (list (list\mix ("lux type check" (-> Code Code Code)
                                      (function' [app acc]
-                                                ({[_ (#Tuple parts)]
+                                                ({[_ {#Variant parts}]
+                                                  (variant$ (list\composite parts (list acc)))
+
+                                                  [_ {#Tuple parts}]
                                                   (tuple$ (list\composite parts (list acc)))
 
-                                                  [_ (#Form parts)]
+                                                  [_ {#Form parts}]
                                                   (form$ (list\composite parts (list acc)))
 
+                                                  [_ {#Tag name}]
+                                                  (` {(~ app) (~ acc)})
+
                                                   _
                                                   (` ((~ app) (~ acc)))}
                                                  app)))
@@ -1777,8 +1815,8 @@
 
 (def:''' .private (identifier_name x)
          (-> Code ($' Maybe Name))
-         ({[_ (#Identifier sname)]
-           (#Some sname)
+         ({[_ {#Identifier sname}]
+           {#Some sname}
 
            _
            #None}
@@ -1786,8 +1824,8 @@
 
 (def:''' .private (tag_name x)
          (-> Code ($' Maybe Name))
-         ({[_ (#Tag sname)]
-           (#Some sname)
+         ({[_ {#Tag sname}]
+           {#Some sname}
 
            _
            #None}
@@ -1795,8 +1833,8 @@
 
 (def:''' .private (identifier_short x)
          (-> Code ($' Maybe Text))
-         ({[_ (#Identifier "" sname)]
-           (#Some sname)
+         ({[_ {#Identifier "" sname}]
+           {#Some sname}
 
            _
            #None}
@@ -1804,8 +1842,8 @@
 
 (def:''' .private (tuple_list tuple)
          (-> Code ($' Maybe ($' List Code)))
-         ({[_ (#Tuple members)]
-           (#Some members)
+         ({[_ {#Tuple members}]
+           {#Some members}
 
            _
            #None}
@@ -1813,22 +1851,22 @@
 
 (def:''' .private (realized_template env template)
          (-> Replacement_Environment Code Code)
-         ({[_ (#Identifier "" sname)]
-           ({(#Some subst)
+         ({[_ {#Identifier "" sname}]
+           ({{#Some subst}
              subst
 
              _
              template}
             (..replacement sname env))
 
-           [meta (#Form elems)]
-           [meta (#Form (list\each (realized_template env) elems))]
+           [meta {#Form elems}]
+           [meta {#Form (list\each (realized_template env) elems)}]
 
-           [meta (#Tuple elems)]
-           [meta (#Tuple (list\each (realized_template env) elems))]
+           [meta {#Tuple elems}]
+           [meta {#Tuple (list\each (realized_template env) elems)}]
 
-           [meta (#Variant elems)]
-           [meta (#Variant (list\each (realized_template env) elems))]
+           [meta {#Variant elems}]
+           [meta {#Variant (list\each (realized_template env) elems)}]
 
            _
            template}
@@ -1869,8 +1907,8 @@
          (list\mix list\composite #End (list\reversed xs)))
 
 (macro:' .public (template tokens)
-         ({(#Item [[_ (#Tuple bindings)] (#Item [[_ (#Tuple templates)] data])])
-           ({[(#Some bindings') (#Some data')]
+         ({{#Item [[_ {#Tuple bindings}] {#Item [[_ {#Tuple templates}] data]}]}
+           ({[{#Some bindings'} {#Some data'}]
              (let' [apply ("lux type check" (-> Replacement_Environment ($' List Code))
                            (function' [env] (list\each (realized_template env) templates)))
                     num_bindings (list\size bindings')]
@@ -1988,7 +2026,7 @@
 
 (def:''' .private (macro_type? type)
          (-> Type Bit)
-         ({(#Named ["library/lux" "Macro"] (#Primitive "#Macro" #End))
+         ({{#Named ["library/lux" "Macro"] {#Primitive "#Macro" #End}}
            #1
 
            _
@@ -2003,25 +2041,25 @@
            [$module (plist\value module modules)
             gdef (let' [[#module_hash _ #module_aliases _ #definitions bindings #imports _ #module_state _] ("lux type check" Module $module)]
                        (plist\value name bindings))]
-           ({(#Alias [r_module r_name])
+           ({{#Alias [r_module r_name]}
              (macro'' modules current_module r_module r_name)
 
-             (#Definition [exported? def_type def_value])
+             {#Definition [exported? def_type def_value]}
              (if (macro_type? def_type)
                (if exported?
-                 (#Some ("lux type as" Macro def_value))
+                 {#Some ("lux type as" Macro def_value)}
                  (if (text\= module current_module)
-                   (#Some ("lux type as" Macro def_value))
+                   {#Some ("lux type as" Macro def_value)}
                    #None))
                #None)
 
-             (#Type [exported? type labels])
+             {#Type [exported? type labels]}
              #None
 
-             (#Label _)
+             {#Label _}
              #None
 
-             (#Slot _)
+             {#Slot _}
              #None}
             ("lux type check" Global gdef))))
 
@@ -2047,7 +2085,7 @@
                                #seed   seed #expected expected
                                #location location #extensions extensions
                                #scope_type_vars scope_type_vars #eval _eval]
-                              (#Right state (macro'' modules current_module module name))}
+                              {#Right state (macro'' modules current_module module name)}}
                              state)))))
 
 (def:''' .private (macro? name)
@@ -2055,7 +2093,7 @@
          (do meta_monad
            [name (normal name)
             output (macro' name)]
-           (in ({(#Some _) #1
+           (in ({{#Some _} #1
                  #None     #0}
                 output))))
 
@@ -2065,20 +2103,20 @@
          ({#End
            xs
 
-           (#Item [x #End])
+           {#Item [x #End]}
            xs
 
-           (#Item [x xs'])
+           {#Item [x xs']}
            (list& x sep (list\interposed sep xs'))}
           xs))
 
 (def:''' .private (single_expansion token)
          (-> Code ($' Meta ($' List Code)))
-         ({[_ (#Form (#Item [_ (#Identifier name)] args))]
+         ({[_ {#Form {#Item [_ {#Identifier name}] args}}]
            (do meta_monad
              [name' (normal name)
               ?macro (macro' name')]
-             ({(#Some macro)
+             ({{#Some macro}
                (("lux type as" Macro' macro) args)
                
                #None
@@ -2091,11 +2129,11 @@
 
 (def:''' .private (expansion token)
          (-> Code ($' Meta ($' List Code)))
-         ({[_ (#Form (#Item [_ (#Identifier name)] args))]
+         ({[_ {#Form {#Item [_ {#Identifier name}] args}}]
            (do meta_monad
              [name' (normal name)
               ?macro (macro' name')]
-             ({(#Some macro)
+             ({{#Some macro}
                (do meta_monad
                  [top_level_expansion (("lux type as" Macro' macro) args)
                   recursive_expansion (monad\each meta_monad expansion top_level_expansion)]
@@ -2111,11 +2149,11 @@
 
 (def:''' .private (full_expansion syntax)
          (-> Code ($' Meta ($' List Code)))
-         ({[_ (#Form (#Item [_ (#Identifier name)] args))]
+         ({[_ {#Form {#Item [_ {#Identifier name}] args}}]
            (do meta_monad
              [name' (normal name)
               ?macro (macro' name')]
-             ({(#Some macro)
+             ({{#Some macro}
                (do meta_monad
                  [expansion (("lux type as" Macro' macro) args)
                   expansion' (monad\each meta_monad full_expansion expansion)]
@@ -2124,23 +2162,23 @@
                #None
                (do meta_monad
                  [args' (monad\each meta_monad full_expansion args)]
-                 (in (list (form$ (#Item (identifier$ name) (list\conjoint args'))))))}
+                 (in (list (form$ {#Item (identifier$ name) (list\conjoint args')}))))}
               ?macro))
 
-           [_ (#Form members)]
+           [_ {#Form members}]
            (do meta_monad
              [members' (monad\each meta_monad full_expansion members)]
              (in (list (form$ (list\conjoint members')))))
 
-           [_ (#Tuple members)]
+           [_ {#Variant members}]
            (do meta_monad
              [members' (monad\each meta_monad full_expansion members)]
-             (in (list (tuple$ (list\conjoint members')))))
+             (in (list (variant$ (list\conjoint members')))))
 
-           [_ (#Variant members)]
+           [_ {#Tuple members}]
            (do meta_monad
              [members' (monad\each meta_monad full_expansion members)]
-             (in (list (variant$ (list\conjoint members')))))
+             (in (list (tuple$ (list\conjoint members')))))
 
            _
            (in_meta (list syntax))}
@@ -2152,49 +2190,49 @@
 
 (def:''' .private (code\encoded code)
          (-> Code Text)
-         ({[_ (#Bit value)]
+         ({[_ {#Bit value}]
            (bit\encoded value)
 
-           [_ (#Nat value)]
+           [_ {#Nat value}]
            (nat\encoded value)
 
-           [_ (#Int value)]
+           [_ {#Int value}]
            (int\encoded value)
 
-           [_ (#Rev value)]
+           [_ {#Rev value}]
            ("lux io error" "@code\encoded Undefined behavior.")
            
-           [_ (#Frac value)]
+           [_ {#Frac value}]
            (frac\encoded value)
 
-           [_ (#Text value)]
+           [_ {#Text value}]
            (text\encoded value)
            
-           [_ (#Identifier [module name])]
+           [_ {#Identifier [module name]}]
            (if (text\= "" module)
              name
              ($_ text\composite module "." name))
            
-           [_ (#Tag [module name])]
+           [_ {#Tag [module name]}]
            (if (text\= "" module)
              ($_ text\composite "#" name)
              ($_ text\composite "#" module "." name))
            
-           [_ (#Form xs)]
+           [_ {#Form xs}]
            ($_ text\composite "(" (|> xs
                                       (list\each code\encoded)
                                       (list\interposed " ")
                                       list\reversed
                                       (list\mix text\composite "")) ")")
            
-           [_ (#Tuple xs)]
+           [_ {#Tuple xs}]
            ($_ text\composite "[" (|> xs
                                       (list\each code\encoded)
                                       (list\interposed " ")
                                       list\reversed
                                       (list\mix text\composite "")) "]")
            
-           [_ (#Variant xs)]
+           [_ {#Variant xs}]
            ($_ text\composite "{" (|> xs
                                       (list\each code\encoded)
                                       (list\interposed " ")
@@ -2204,45 +2242,45 @@
 
 (def:''' .private (normal_type type)
          (-> Code Code)
-         ({[_ (#Form (#Item [_ (#Tag tag)] parts))]
-           (form$ (#Item (tag$ tag) (list\each normal_type parts)))
+         ({[_ {#Variant {#Item [_ {#Tag tag}] parts}}]
+           (` {(~ (tag$ tag)) (~+ (list\each normal_type parts))})
 
-           [_ (#Variant members)]
+           [_ {#Variant members}]
            (` (Or (~+ (list\each normal_type members))))
 
-           [_ (#Tuple members)]
+           [_ {#Tuple members}]
            (` (Tuple (~+ (list\each normal_type members))))
 
-           [_ (#Form (#Item [_ (#Text "lux in-module")]
-                            (#Item [_ (#Text module)]
-                                   (#Item type'
-                                          #End))))]
+           [_ {#Form {#Item [_ {#Text "lux in-module"}]
+                      {#Item [_ {#Text module}]
+                       {#Item type'
+                        #End}}}}]
            (` ("lux in-module" (~ (text$ module)) (~ (normal_type type'))))
 
-           [_ (#Form (#Item [_ (#Identifier ["" ":~"])] (#Item expression #End)))]
+           [_ {#Form {#Item [_ {#Identifier ["" ":~"]}] {#Item expression #End}}}]
            expression
 
-           [_0 (#Form (#Item [_1 (#Variant (#Item binding (#Item body #End)))]
-                             (#Item value
-                                    #End)))]
-           [_0 (#Form (#Item [_1 (#Variant (#Item binding (#Item (normal_type body) #End)))]
-                             (#Item value
-                                    #End)))]
-
-           [_0 (#Form (#Item [_1 (#Identifier ["library/lux" "__adjusted_quantified_type__"])]
-                             (#Item _permission
-                                    (#Item _level
-                                           (#Item body
-                                                  #End)))))]
-           [_0 (#Form (#Item [_1 (#Identifier [..prelude_module "__adjusted_quantified_type__"])]
-                             (#Item _permission
-                                    (#Item _level
-                                           (#Item (normal_type body)
-                                                  #End)))))]
-
-           [_ (#Form (#Item type_fn args))]
+           [_0 {#Form {#Item [_1 {#Variant {#Item binding {#Item body #End}}}]
+                       {#Item value
+                        #End}}}]
+           [_0 {#Form {#Item [_1 {#Variant {#Item binding {#Item (normal_type body) #End}}}]
+                       {#Item value
+                        #End}}}]
+
+           [_0 {#Form {#Item [_1 {#Identifier ["library/lux" "__adjusted_quantified_type__"]}]
+                       {#Item _permission
+                        {#Item _level
+                         {#Item body
+                          #End}}}}}]
+           [_0 {#Form {#Item [_1 {#Identifier [..prelude_module "__adjusted_quantified_type__"]}]
+                       {#Item _permission
+                        {#Item _level
+                         {#Item (normal_type body)
+                          #End}}}}}]
+
+           [_ {#Form {#Item type_fn args}}]
            (list\mix ("lux type check" (-> Code Code Code)
-                      (function' [arg type_fn] (` (#.Apply (~ arg) (~ type_fn)))))
+                      (function' [arg type_fn] (` {#.Apply (~ arg) (~ type_fn)})))
                      (normal_type type_fn)
                      (list\each normal_type args))
 
@@ -2251,13 +2289,13 @@
           type))
 
 (macro:' .public (type tokens)
-         ({(#Item type #End)
+         ({{#Item type #End}
            (do meta_monad
-             [initialized_quantification? (function' [lux] (#Right [lux (initialized_quantification? lux)]))]
+             [initialized_quantification? (function' [lux] {#Right [lux (initialized_quantification? lux)]})]
              (if initialized_quantification?
                (do meta_monad
                  [type+ (full_expansion type)]
-                 ({(#Item type' #End)
+                 ({{#Item type' #End}
                    (in (list (normal_type type')))
 
                    _
@@ -2270,7 +2308,7 @@
           tokens))
 
 (macro:' .public (: tokens)
-         ({(#Item type (#Item value #End))
+         ({{#Item type {#Item value #End}}
            (in_meta (list (` ("lux type check"
                               (..type (~ type))
                               (~ value)))))
@@ -2280,7 +2318,7 @@
           tokens))
 
 (macro:' .public (:as tokens)
-         ({(#Item type (#Item value #End))
+         ({{#Item type {#Item value #End}}
            (in_meta (list (` ("lux type as"
                               (..type (~ type))
                               (~ value)))))
@@ -2313,16 +2351,16 @@
             #seed   seed #expected expected
             #location location #extensions extensions
             #scope_type_vars scope_type_vars #eval _eval]
-           (#Right [#info info #source source #current_module _ #modules modules
+           {#Right [#info info #source source #current_module _ #modules modules
                     #scopes   scopes   #type_context   types   #host host
                     #seed   ("lux i64 +" 1 seed) #expected expected
                     #location location #extensions extensions
                     #scope_type_vars scope_type_vars #eval _eval]
-                   (local_identifier$ ($_ text\composite "__gensym__" prefix (nat\encoded seed))))}
+            (local_identifier$ ($_ text\composite "__gensym__" prefix (nat\encoded seed)))}}
           state))
 
 (macro:' .public (exec tokens)
-         ({(#Item value actions)
+         ({{#Item value actions}
            (let' [dummy (local_identifier$ "")]
                  (in_meta (list (list\mix ("lux type check" (-> Code Code Code)
                                            (function' [pre post] (` ({(~ dummy) (~ post)}
@@ -2336,29 +2374,29 @@
 
 (macro:' .private (def:' tokens)
          (let' [parts (: (Maybe [Code Code (List Code) (Maybe Code) Code])
-                         ({(#Item export_policy (#Item [_ (#Form (#Item name args))] (#Item type (#Item body #End))))
-                           (#Some [export_policy name args (#Some type) body])
+                         ({{#Item export_policy {#Item [_ {#Form {#Item name args}}] {#Item type {#Item body #End}}}}
+                           {#Some [export_policy name args {#Some type} body]}
                            
-                           (#Item export_policy (#Item name (#Item type (#Item body #End))))
-                           (#Some [export_policy name #End (#Some type) body])
+                           {#Item export_policy {#Item name {#Item type {#Item body #End}}}}
+                           {#Some [export_policy name #End {#Some type} body]}
                            
-                           (#Item export_policy (#Item [_ (#Form (#Item name args))] (#Item body #End)))
-                           (#Some [export_policy name args #None body])
+                           {#Item export_policy {#Item [_ {#Form {#Item name args}}] {#Item body #End}}}
+                           {#Some [export_policy name args #None body]}
                            
-                           (#Item export_policy (#Item name (#Item body #End)))
-                           (#Some [export_policy name #End #None body])
+                           {#Item export_policy {#Item name {#Item body #End}}}
+                           {#Some [export_policy name #End #None body]}
 
                            _
                            #None}
                           tokens))]
-               ({(#Some [export_policy name args ?type body])
+               ({{#Some [export_policy name args ?type body]}
                  (let' [body' ({#End
                                 body
 
                                 _
                                 (` (function' (~ name) [(~+ args)] (~ body)))}
                                args)
-                        body'' ({(#Some type)
+                        body'' ({{#Some type}
                                  (` (: (~ type) (~ body')))
                                  
                                  #None
@@ -2374,9 +2412,9 @@
 
 (def:' .private (expander branches)
        (-> (List Code) (Meta (List Code)))
-       ({(#Item [_ (#Form (#Item [_ (#Identifier name)] args))]
-                (#Item body
-                       branches'))
+       ({{#Item [_ {#Form {#Item [_ {#Identifier name}] args}}]
+          {#Item body
+           branches'}}
          (do meta_monad
            [??? (macro? name)]
            (if ???
@@ -2389,7 +2427,7 @@
                           body
                           sub_expansion)))))
 
-         (#Item pattern (#Item body branches'))
+         {#Item pattern {#Item body branches'}}
          (do meta_monad
            [sub_expansion (expander branches')]
            (in (list& pattern body sub_expansion)))
@@ -2406,7 +2444,7 @@
         branches))
 
 (macro:' .public (case tokens)
-         ({(#Item value branches)
+         ({{#Item value branches}
            (do meta_monad
              [expansion (expander branches)]
              (in (list (` ((~ (variant$ expansion)) (~ value))))))
@@ -2417,11 +2455,11 @@
 
 (macro:' .public (^ tokens)
          (case tokens
-           (#Item [_ (#Form (#Item pattern #End))] (#Item body branches))
+           {#Item [_ {#Form {#Item pattern #End}}] {#Item body branches}}
            (do meta_monad
              [pattern+ (full_expansion pattern)]
              (case pattern+
-               (#Item pattern' #End)
+               {#Item pattern' #End}
                (in (list& pattern' body branches))
                
                _
@@ -2432,7 +2470,7 @@
 
 (macro:' .public (^or tokens)
          (case tokens
-           (^ (list& [_ (#Form patterns)] body branches))
+           (^ (list& [_ {#Form patterns}] body branches))
            (case patterns
              #End
              (failure "^or cannot have 0 patterns")
@@ -2448,7 +2486,7 @@
 (def:' .private (identifier? code)
        (-> Code Bit)
        (case code
-         [_ (#Identifier _)]
+         [_ {#Identifier _}]
          #1
 
          _
@@ -2456,7 +2494,7 @@
 
 (macro:' .public (let tokens)
          (case tokens
-           (^ (list [_ (#Tuple bindings)] body))
+           (^ (list [_ {#Tuple bindings}] body))
            (if (multiple? 2 (list\size bindings))
              (|> bindings pairs list\reversed
                  (list\mix (: (-> [Code Code] Code Code)
@@ -2476,12 +2514,12 @@
 (macro:' .public (function tokens)
          (case (: (Maybe [Text Code (List Code) Code])
                   (case tokens
-                    (^ (list [_ (#Form (list& [_ (#Identifier ["" name])] head tail))] body))
-                    (#Some name head tail body)
+                    (^ (list [_ {#Form (list& [_ {#Identifier ["" name]}] head tail)}] body))
+                    {#Some name head tail body}
                     
                     _
                     #None))
-           (#Some g!name head tail body)
+           {#Some g!name head tail body}
            (let [g!blank (local_identifier$ "")
                  nest (: (-> Code (-> Code Code Code))
                          (function' [g!name]
@@ -2500,7 +2538,7 @@
        (-> (List Code) (Maybe Any))
        (case tokens
          (^ (list))
-         (#Some [])
+         {#Some []}
 
          _
          #None))
@@ -2509,7 +2547,7 @@
        (-> (List Code) (Maybe [(List Code) Code]))
        (case tokens
          (^ (list& code tokens'))
-         (#Some [tokens' code])
+         {#Some [tokens' code]}
 
          _
          #None))
@@ -2517,8 +2555,8 @@
 (def:' .private (local_identifierP tokens)
        (-> (List Code) (Maybe [(List Code) Text]))
        (case tokens
-         (^ (list& [_ (#Identifier ["" local_identifier])] tokens'))
-         (#Some [tokens' local_identifier])
+         (^ (list& [_ {#Identifier ["" local_identifier]}] tokens'))
+         {#Some [tokens' local_identifier]}
 
          _
          #None))
@@ -2528,14 +2566,14 @@
           (-> (List Code) (Maybe (List )))
           (case tokens
             #End
-            (#Some #End)
+            {#Some #End}
 
             _
             (do maybe_monad
               [% ( tokens)
                .let' [[tokens head] %]
                tail ( tokens)]
-              (in (#Item head tail)))))]
+              (in {#Item head tail}))))]
 
   [parametersP Text local_identifierP]
   [enhanced_parametersP Code anyP]
@@ -2545,7 +2583,7 @@
   [(def:' .private ( tokens)
           (-> (List Code) (Maybe [(List Code) [Text (List )]]))
           (case tokens
-            (^ (list& [_ (#Form local_declaration)] tokens'))
+            (^ (list& [_ {#Form local_declaration}] tokens'))
             (do maybe_monad
               [% (local_identifierP local_declaration)
                .let' [[local_declaration name] %]
@@ -2567,13 +2605,13 @@
        (case tokens
          (^ (list& candidate tokens'))
          (case candidate
-           [_ (#Bit it)]
+           [_ {#Bit it}]
            [tokens' candidate]
            
-           [_ (#Identifier ["" _])]
+           [_ {#Identifier ["" _]}]
            [tokens (` .private)]
            
-           [_ (#Identifier it)]
+           [_ {#Identifier it}]
            [tokens' candidate]
 
            _
@@ -2600,11 +2638,11 @@
        (case tokens
          ... TB
          (^ (list& type body tokens'))
-         (#Some [tokens' [(#Some type) body]])
+         {#Some [tokens' [{#Some type} body]]}
 
          ... B
          (^ (list& body tokens'))
-         (#Some [tokens' [#None body]])
+         {#Some [tokens' [#None body]]}
 
          _
          #None))
@@ -2621,7 +2659,7 @@
 
 (macro:' .public (def: tokens)
          (case (definitionP tokens)
-           (#Some [export_policy name parameters ?type body])
+           {#Some [export_policy name parameters ?type body]}
            (let [body (case parameters
                         #End
                         body
@@ -2630,7 +2668,7 @@
                         (` (function ((~ (..local_identifier$ name)) (~+ parameters))
                              (~ body))))
                  body (case ?type
-                        (#Some type)
+                        {#Some type}
                         (` (: (~ type)
                               (~ body)))
                         
@@ -2655,7 +2693,7 @@
 
 (macro:' .public (macro: tokens)
          (case (macroP tokens)
-           (#Some [export_policy name args body])
+           {#Some [export_policy name args body]}
            (let [name (local_identifier$ name)
                  body (case args
                         #End
@@ -2678,13 +2716,13 @@
     #End
     #None
 
-    (#Item x xs')
+    {#Item x xs'}
     (case (f x)
       #None
       (list\one f xs')
 
-      (#Some y)
-      (#Some y))))
+      {#Some y}
+      {#Some y})))
 
 (template [ 
] [(macro: .public ( tokens) @@ -2712,17 +2750,17 @@ (macro: (maybe\else tokens state) (case tokens (^ (list else maybe)) - (let [g!temp (: Code [dummy_location (#Identifier ["" ""])]) + (let [g!temp (: Code [dummy_location {#Identifier ["" ""]}]) code (` (case (~ maybe) - (#.Some (~ g!temp)) + {#.Some (~ g!temp)} (~ g!temp) #.None (~ else)))] - (#Right [state (list code)])) + {#Right [state (list code)]}) _ - (#Left "Wrong syntax for maybe\else"))) + {#Left "Wrong syntax for maybe\else"})) (def: (text\all_split_by splitter input) (-> Text Text (List Text)) @@ -2730,7 +2768,7 @@ #None (list input) - (#Some idx) + {#Some idx} (list& ("lux text clip" 0 idx input) (text\all_split_by splitter (let [after_offset ("lux i64 +" 1 idx) @@ -2746,52 +2784,52 @@ #End #None - (#Item x xs') + {#Item x xs'} (if ("lux i64 =" 0 idx) - (#Some x) + {#Some x} (item ("lux i64 -" 1 idx) xs')))) ... https://en.wikipedia.org/wiki/Lambda_calculus#%CE%B2-reduction (def: (reduced env type) (-> (List Type) Type Type) (case type - (#Sum left right) - (#Sum (reduced env left) (reduced env right)) + {#Sum left right} + {#Sum (reduced env left) (reduced env right)} - (#Product left right) - (#Product (reduced env left) (reduced env right)) + {#Product left right} + {#Product (reduced env left) (reduced env right)} - (#Apply arg func) - (#Apply (reduced env arg) (reduced env func)) + {#Apply arg func} + {#Apply (reduced env arg) (reduced env func)} - (#UnivQ ?local_env ?local_def) + {#UnivQ ?local_env ?local_def} (case ?local_env #End - (#UnivQ env ?local_def) + {#UnivQ env ?local_def} _ type) - (#ExQ ?local_env ?local_def) + {#ExQ ?local_env ?local_def} (case ?local_env #End - (#ExQ env ?local_def) + {#ExQ env ?local_def} _ type) - (#Function ?input ?output) - (#Function (reduced env ?input) (reduced env ?output)) + {#Function ?input ?output} + {#Function (reduced env ?input) (reduced env ?output)} - (#Parameter idx) + {#Parameter idx} (case (item idx env) - (#Some parameter) + {#Some parameter} parameter _ type) - (#Named name type) + {#Named name type} (reduced env type) _ @@ -2801,18 +2839,18 @@ (def: (applied_type param type_fn) (-> Type Type (Maybe Type)) (case type_fn - (#UnivQ env body) - (#Some (reduced (list& type_fn param env) body)) + {#UnivQ env body} + {#Some (reduced (list& type_fn param env) body)} - (#ExQ env body) - (#Some (reduced (list& type_fn param env) body)) + {#ExQ env body} + {#Some (reduced (list& type_fn param env) body)} - (#Apply A F) + {#Apply A F} (do maybe_monad [type_fn* (applied_type A F)] (applied_type param type_fn*)) - (#Named name type) + {#Named name type} (applied_type param type) _ @@ -2822,7 +2860,7 @@ [(def: ( type) (-> Type (List Type)) (case type - ( left right) + { left right} (list& left ( right)) _ @@ -2836,9 +2874,9 @@ (def: (flat_application type) (-> Type [Type (List Type)]) (case type - (#Apply head func') + {#Apply head func'} (let [[func tail] (flat_application func')] - [func (#Item head tail)]) + [func {#Item head tail}]) _ [type (list)])) @@ -2846,28 +2884,28 @@ (def: (interface_methods type) (-> Type (Maybe (List Type))) (case type - (#Product _) - (#Some (flat_tuple type)) + {#Product _} + {#Some (flat_tuple type)} - (#Apply arg func) + {#Apply arg func} (do maybe_monad [output (applied_type arg func)] (interface_methods output)) - (#UnivQ _ body) + {#UnivQ _ body} (interface_methods body) - (#ExQ _ body) + {#ExQ _ body} (interface_methods body) - (#Named name type) + {#Named name type} (interface_methods type) - (#Sum _) + {#Sum _} #None _ - (#Some (list type)))) + {#Some (list type)})) (def: (module name) (-> Text (Meta Module)) @@ -2877,11 +2915,11 @@ #seed seed #expected expected #location location #extensions extensions #scope_type_vars scope_type_vars #eval _eval] state] (case (plist\value name modules) - (#Some module) - (#Right state module) + {#Some module} + {#Right state module} _ - (#Left ($_ text\composite "Unknown module: " name)))))) + {#Left ($_ text\composite "Unknown module: " name)})))) (def: (type_slot [module name]) (-> Name (Meta [Nat (List Name) Bit Type])) @@ -2889,7 +2927,7 @@ [=module (..module module) .let [[#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_state _] =module]] (case (plist\value (text\composite "#" name) definitions) - (#Some (#Slot [exported type group index])) + {#Some {#Slot [exported type group index]}} (in_meta [index (list\each (function (_ slot) [module slot]) @@ -2903,26 +2941,26 @@ (def: (record_slots type) (-> Type (Meta (Maybe [(List Name) (List Type)]))) (case type - (#Apply arg func) + {#Apply arg func} (record_slots func) - (#UnivQ env body) + {#UnivQ env body} (record_slots body) - (#ExQ env body) + {#ExQ env body} (record_slots body) - (#Named [module name] unnamed) + {#Named [module name] unnamed} (do meta_monad [=module (..module module) .let [[#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_state _] =module]] (case (plist\value name definitions) - (#Some (#Type [exported? (#Named _ _type) (#Right slots)])) + {#Some {#Type [exported? {#Named _ _type} {#Right slots}]}} (case (interface_methods _type) - (#Some members) - (in_meta (#Some [(list\each (function (_ slot) [module slot]) - (#Item slots)) - members])) + {#Some members} + (in_meta {#Some [(list\each (function (_ slot) [module slot]) + {#Item slots}) + members]}) _ (in_meta #None)) @@ -2941,16 +2979,16 @@ #seed seed #expected expected #location location #extensions extensions #scope_type_vars scope_type_vars #eval _eval] state] (case expected - (#Some type) - (#Right state type) + {#Some type} + {#Right state type} #None - (#Left "Not expecting any type."))))) + {#Left "Not expecting any type."})))) (def: (type\encoded type) (-> Type Text) (case type - (#Primitive name params) + {#Primitive name params} (case params #End name @@ -2958,38 +2996,38 @@ _ ($_ text\composite "(" name " " (|> params (list\each type\encoded) (list\interposed " ") list\reversed (list\mix text\composite "")) ")")) - (#Sum _) - ($_ text\composite "(Or " (|> (flat_variant type) (list\each type\encoded) (list\interposed " ") list\reversed (list\mix text\composite "")) ")") + {#Sum _} + ($_ text\composite "{" (|> (flat_variant type) (list\each type\encoded) (list\interposed " ") list\reversed (list\mix text\composite "")) "}") - (#Product _) + {#Product _} ($_ text\composite "[" (|> (flat_tuple type) (list\each type\encoded) (list\interposed " ") list\reversed (list\mix text\composite "")) "]") - (#Function _) + {#Function _} ($_ text\composite "(-> " (|> (flat_lambda type) (list\each type\encoded) (list\interposed " ") list\reversed (list\mix text\composite "")) ")") - (#Parameter id) + {#Parameter id} (nat\encoded id) - (#Var id) + {#Var id} ($_ text\composite "⌈v:" (nat\encoded id) "⌋") - (#Ex id) + {#Ex id} ($_ text\composite "⟨e:" (nat\encoded id) "⟩") - (#UnivQ env body) + {#UnivQ env body} ($_ text\composite "(All " (type\encoded body) ")") - (#ExQ env body) + {#ExQ env body} ($_ text\composite "(Ex " (type\encoded body) ")") - (#Apply _) + {#Apply _} (let [[func args] (flat_application type)] ($_ text\composite "(" (type\encoded func) " " (|> args (list\each type\encoded) (list\interposed " ") list\reversed (list\mix text\composite "")) ")")) - (#Named name _) + {#Named name _} (name\encoded name) )) @@ -3000,7 +3038,7 @@ tags+type (record_slots struct_type) tags (: (Meta (List Name)) (case tags+type - (#Some [tags _]) + {#Some [tags _]} (in_meta tags) _ @@ -3014,9 +3052,9 @@ (: (-> Code (Meta (List Code))) (function (_ token) (case token - (^ [_ (#Form (list [_ (#Text "lux def")] [_ (#Identifier ["" tag_name])] value export_policy))]) + (^ [_ {#Form (list [_ {#Text "lux def"}] [_ {#Identifier ["" tag_name]}] value export_policy)}]) (case (plist\value tag_name tag_mappings) - (#Some tag) + {#Some tag} (in (list tag value)) _ @@ -3033,7 +3071,7 @@ #End "" - (#Item head tail) + {#Item head tail} (list\mix (function (_ right left) ($_ text\composite left separator right)) head @@ -3046,7 +3084,7 @@ #None _ - (#Item tokens))) + {#Item tokens})) (def: (implementationP tokens) (-> (List Code) (Maybe [Code Text (List Code) Code (List Code)])) @@ -3060,7 +3098,7 @@ (macro: .public (implementation: tokens) (case (implementationP tokens) - (#Some [export_policy name args type definitions]) + {#Some [export_policy name args type definitions]} (let [usage (case args #End (local_identifier$ name) @@ -3085,12 +3123,12 @@ (-> (-> (List Code) (Maybe [(List Code) a])) (-> (List Code) (Maybe (List a))))) (case tokens - (#Item _) + {#Item _} (do maybe_monad [% (itP tokens) .let [[tokens' head] %] tail (case tokens' - (#Item _) + {#Item _} (everyP itP tokens') #End @@ -3098,27 +3136,27 @@ (in (list& head tail))) #End - (#Some (list)))) + {#Some (list)})) (def: (caseP tokens) (-> (List Code) (Maybe [(List Code) [Text Code]])) (case tokens - (^ (list& [_ (#Tag ["" niladic])] tokens')) - (#Some [tokens' [niladic (` .Any)]]) + (^ (list& [_ {#Tag ["" niladic]}] tokens')) + {#Some [tokens' [niladic (` .Any)]]} - (^ (list& [_ (#Form (list& [_ (#Tag ["" polyadic])] caseT))] tokens')) - (#Some [tokens' [polyadic (` (..Tuple (~+ caseT)))]]) + (^ (list& [_ {#Variant (list& [_ {#Tag ["" polyadic]}] caseT)}] tokens')) + {#Some [tokens' [polyadic (` (..Tuple (~+ caseT)))]]} _ #None)) (macro: .public (Variant tokens) (case (everyP caseP tokens) - (#Some cases) + {#Some cases} (in_meta (list (` (..Union (~+ (list\each product\right cases)))) - (form$ (list\each (function (_ case) - (text$ (product\left case))) - cases)))) + (variant$ (list\each (function (_ case) + (text$ (product\left case))) + cases)))) #None (failure "Wrong syntax for Variant"))) @@ -3126,17 +3164,17 @@ (def: (slotP tokens) (-> (List Code) (Maybe [(List Code) [Text Code]])) (case tokens - (^ (list& [_ (#Tag ["" slot])] type tokens')) - (#Some [tokens' [slot type]]) + (^ (list& [_ {#Tag ["" slot]}] type tokens')) + {#Some [tokens' [slot type]]} _ #None)) (macro: .public (Record tokens) (case tokens - (^ (list [_ (#Tuple record)])) + (^ (list [_ {#Tuple record}])) (case (everyP slotP record) - (#Some slots) + {#Some slots} (in_meta (list (` (..Tuple (~+ (list\each product\right slots)))) (tuple$ (list\each (function (_ slot) (text$ (product\left slot))) @@ -3161,30 +3199,30 @@ (def: (textP tokens) (-> (List Code) (Maybe [(List Code) Text])) (case tokens - (^ (list& [_ (#Text it)] tokens')) - (#Some [tokens' it]) + (^ (list& [_ {#Text it}] tokens')) + {#Some [tokens' it]} _ #None)) (def: (type_declaration it) (-> Code (Meta (Tuple Code (Maybe (Either (List Text) (List Text)))))) - ({[_ (#Form (#Item [_ (#Identifier declarer)] parameters))] + ({[_ {#Form {#Item [_ {#Identifier declarer}] parameters}}] (do meta_monad [declaration (single_expansion (form$ (list& (identifier$ declarer) parameters)))] (case declaration - (^ (list type [_ (#Form tags)])) + (^ (list type [_ {#Variant tags}])) (case (everyP textP tags) - (#Some tags) - (in_meta [type (#Some (#Left tags))]) + {#Some tags} + (in_meta [type {#Some {#Left tags}}]) #None (failure "Improper type-definition syntax")) - (^ (list type [_ (#Tuple slots)])) + (^ (list type [_ {#Tuple slots}])) (case (everyP textP slots) - (#Some slots) - (in_meta [type (#Some (#Right slots))]) + {#Some slots} + (in_meta [type {#Some {#Right slots}}]) #None (failure "Improper type-definition syntax")) @@ -3201,7 +3239,7 @@ (macro: .public (type: tokens) (case (typeP tokens) - (#Some [export_policy name args type_codes]) + {#Some [export_policy name args type_codes]} (do meta_monad [type+labels?? (..type_declaration type_codes) module_name current_module_name @@ -3210,30 +3248,27 @@ type' (: (Maybe Code) (case args #End - (#Some type) + {#Some type} _ - (#Some (` (.All ((~ type_name) (~+ (list\each local_identifier$ args))) - (~ type))))))]] + {#Some (` (.All ((~ type_name) (~+ (list\each local_identifier$ args))) + (~ type)))}))]] (case type' - (#Some type'') - (let [typeC (` (#.Named [(~ (text$ module_name)) + {#Some type''} + (let [typeC (` {#.Named [(~ (text$ module_name)) (~ (text$ name))] - (.type (~ type''))))] + (.type (~ type''))})] (in_meta (list (case labels?? - (#Some labels) - (case labels - (#Left tags) - (` ("lux def type tagged" (~ type_name) - (~ typeC) - ((~+ (list\each text$ tags))) - (~ export_policy))) - - (#Right slots) - (` ("lux def type tagged" (~ type_name) - (~ typeC) - [(~+ (list\each text$ slots))] - (~ export_policy)))) + {#Some labels} + (` ("lux def type tagged" (~ type_name) + (~ typeC) + (~ (case labels + {#Left tags} + (` {(~+ (list\each text$ tags))}) + + {#Right slots} + (` [(~+ (list\each text$ slots))]))) + (~ export_policy))) _ (` ("lux def" (~ type_name) @@ -3261,8 +3296,8 @@ (type: Referrals (Variant #All - (#Only (List Text)) - (#Exclude (List Text)) + {#Only (List Text)} + {#Exclude (List Text)} #Ignore #Nothing)) @@ -3286,7 +3321,7 @@ (: (-> Code (Meta Text)) (function (_ def) (case def - [_ (#Identifier ["" name])] + [_ {#Identifier ["" name]}] (in_meta name) _ @@ -3296,24 +3331,24 @@ (def: (referrals_parser tokens) (-> (List Code) (Meta [Referrals (List Code)])) (case tokens - (^or (^ (list& [_ (#Variant (list [_ (#Text "+")] [_ (#Tuple defs)]))] tokens')) - (^ (list& [_ (#Variant (list [_ (#Text "only")] [_ (#Tuple defs)]))] tokens'))) + (^or (^ (list& [_ {#Variant (list [_ {#Text "+"}] [_ {#Tuple defs}])}] tokens')) + (^ (list& [_ {#Variant (list [_ {#Text "only"}] [_ {#Tuple defs}])}] tokens'))) (do meta_monad [defs' (..referral_references defs)] - (in [(#Only defs') tokens'])) + (in [{#Only defs'} tokens'])) - (^or (^ (list& [_ (#Variant (list [_ (#Text "-")] [_ (#Tuple defs)]))] tokens')) - (^ (list& [_ (#Variant (list [_ (#Text "exclude")] [_ (#Tuple defs)]))] tokens'))) + (^or (^ (list& [_ {#Variant (list [_ {#Text "-"}] [_ {#Tuple defs}])}] tokens')) + (^ (list& [_ {#Variant (list [_ {#Text "exclude"}] [_ {#Tuple defs}])}] tokens'))) (do meta_monad [defs' (..referral_references defs)] - (in [(#Exclude defs') tokens'])) + (in [{#Exclude defs'} tokens'])) - (^or (^ (list& [_ (#Text "*")] tokens')) - (^ (list& [_ (#Text "all")] tokens'))) + (^or (^ (list& [_ {#Text "*"}] tokens')) + (^ (list& [_ {#Text "all"}] tokens'))) (in_meta [#All tokens']) - (^or (^ (list& [_ (#Text "_")] tokens')) - (^ (list& [_ (#Text "ignore")] tokens'))) + (^or (^ (list& [_ {#Text "_"}] tokens')) + (^ (list& [_ {#Text "ignore"}] tokens'))) (in_meta [#Ignore tokens']) _ @@ -3325,12 +3360,12 @@ #End (in_meta [#End #End]) - (^ (list& [_ (#Form (list& [_ (#Text prefix)] structs))] parts')) + (^ (list& [_ {#Form (list& [_ {#Text prefix}] structs)}] parts')) (do meta_monad [structs' (monad\each meta_monad (function (_ struct) (case struct - [_ (#Identifier ["" struct_name])] + [_ {#Identifier ["" struct_name]}] (in_meta struct_name) _ @@ -3338,7 +3373,7 @@ structs) next+remainder (openings_parser parts')] (let [[next remainder] next+remainder] - (in_meta [(#Item [prefix structs'] next) + (in_meta [{#Item [prefix structs'] next} remainder]))) _ @@ -3362,7 +3397,7 @@ ((: (-> Text Text Text) (function (recur left right) (case (..text\split_by pattern right) - (#Some [pre post]) + {#Some [pre post]} (recur ($_ "lux text concat" left pre replacement) post) #None @@ -3392,8 +3427,8 @@ (-> Text Text Text) (case [(text\split_by ..module_separator hierarchy) (text\split_by ..parallel_hierarchy_sigil root)] - [(#Some [_ hierarchy']) - (#Some ["" root'])] + [{#Some [_ hierarchy']} + {#Some ["" root']}] (normal_parallel_path' hierarchy' root') _ @@ -3404,8 +3439,8 @@ (def: (normal_parallel_path hierarchy root) (-> Text Text (Maybe Text)) (case (text\split_by ..parallel_hierarchy_sigil root) - (#Some ["" root']) - (#Some (normal_parallel_path' hierarchy root')) + {#Some ["" root']} + {#Some (normal_parallel_path' hierarchy root')} _ #None)) @@ -3416,7 +3451,7 @@ #None relatives - (#Some found) + {#Some found} (if ("lux i64 =" relatives found) (relative_ups ("lux i64 +" 1 relatives) input) relatives))) @@ -3427,7 +3462,7 @@ (^or [0 _] [_ #End]) list - [_ (#Item _ tail)] + [_ {#Item _ tail}] (list\after ("lux i64 -" 1 amount) tail))) (def: (absolute_module_name nested? relative_root module) @@ -3465,7 +3500,7 @@ (function (_ token) (case token ... Simple - [_ (#Identifier ["" module_name])] + [_ {#Identifier ["" module_name]}] (do meta_monad [absolute_module_name (..absolute_module_name nested? relative_root module_name)] (in (list [#import_name absolute_module_name @@ -3474,10 +3509,10 @@ #refer_open (list)]]))) ... Nested - (^ [_ (#Tuple (list& [_ (#Identifier ["" module_name])] extra))]) + (^ [_ {#Tuple (list& [_ {#Identifier ["" module_name]}] extra)}]) (do meta_monad [absolute_module_name (case (normal_parallel_path relative_root module_name) - (#Some parallel_path) + {#Some parallel_path} (in parallel_path) #None @@ -3498,10 +3533,10 @@ #refer_open openings]] sub_imports)))) - (^ [_ (#Tuple (list& [_ (#Text alias)] [_ (#Identifier ["" module_name])] extra))]) + (^ [_ {#Tuple (list& [_ {#Text alias}] [_ {#Identifier ["" module_name]}] extra)}]) (do meta_monad [absolute_module_name (case (normal_parallel_path relative_root module_name) - (#Some parallel_path) + {#Some parallel_path} (in parallel_path) #None @@ -3510,15 +3545,15 @@ .let [[referral extra] referral+extra] openings+extra (openings_parser extra) .let [[openings extra] openings+extra - module_alias (..module_alias (#Item module_name context) alias)] - sub_imports (imports_parser #1 absolute_module_name (#Item module_alias context) extra)] + module_alias (..module_alias {#Item module_name context} alias)] + sub_imports (imports_parser #1 absolute_module_name {#Item module_alias context} extra)] (in (case [referral openings] [#Ignore #End] sub_imports _ (list& [#import_name absolute_module_name - #import_alias (#Some module_alias) + #import_alias {#Some module_alias} #import_refer [#refer_defs referral #refer_open openings]] sub_imports)))) @@ -3542,38 +3577,38 @@ #scope_type_vars scope_type_vars #eval _eval] [current_module modules])] (case (plist\value module modules) - (#Some =module) + {#Some =module} (let [to_alias (list\each (: (-> [Text Global] (List Text)) (function (_ [name definition]) (case definition - (#Alias _) + {#Alias _} (list) - (#Definition [exported? def_type def_value]) + {#Definition [exported? def_type def_value]} (if exported? (list name) (list)) - (#Type [exported? type labels]) + {#Type [exported? type labels]} (if exported? (list name) (list)) - (#Label _) + {#Label _} (list) - (#Slot _) + {#Slot _} (list)))) (let [[#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_state _] =module] definitions))] - (#Right state (list\conjoint to_alias))) + {#Right state (list\conjoint to_alias)}) #None - (#Left ($_ text\composite + {#Left ($_ text\composite "Unknown module: " (text\encoded module) ..\n "Current module: " (case current_module - (#Some current_module) + {#Some current_module} (text\encoded current_module) #None @@ -3582,7 +3617,7 @@ (list\each (function (_ [name module]) (text$ name))) tuple$ - code\encoded)))) + code\encoded))}) )) (def: (list\only p xs) @@ -3592,9 +3627,9 @@ #End (list) - (#Item x xs') + {#Item x xs'} (if (p x) - (#Item x (list\only p xs')) + {#Item x (list\only p xs')} (list\only p xs')))) (def: (is_member? cases name) @@ -3611,7 +3646,7 @@ (-> (-> a (Maybe b)) a a (Maybe b))) (case (f x1) #None (f x2) - (#Some y) (#Some y))) + {#Some y} {#Some y})) (def: (in_env name state) (-> Text Lux (Maybe Type)) @@ -3630,7 +3665,7 @@ (on_either (list\one (: (-> [Text [Type Any]] (Maybe Type)) (function (_ [bname [type _]]) (if (text\= name bname) - (#Some type) + {#Some type} #None)))) (: (List [Text [Type Any]]) locals) (: (List [Text [Type Any]]) closure))))) @@ -3647,26 +3682,26 @@ #None #None - (#Some [#definitions definitions #module_hash _ #module_aliases _ #imports _ #module_state _]) + {#Some [#definitions definitions #module_hash _ #module_aliases _ #imports _ #module_state _]} (case (plist\value v_name definitions) #None #None - (#Some definition) + {#Some definition} (case definition - (#Alias real_name) + {#Alias real_name} (definition_type real_name state) - (#Definition [exported? def_type def_value]) - (#Some def_type) + {#Definition [exported? def_type def_value]} + {#Some def_type} - (#Type [exported? type labels]) - (#Some ..Type) + {#Type [exported? type labels]} + {#Some ..Type} - (#Label _) + {#Label _} #None - (#Slot _) + {#Slot _} #None))))) (def: (definition_value name state) @@ -3678,29 +3713,29 @@ #scope_type_vars scope_type_vars #eval _eval] state] (case (plist\value v_module modules) #None - (#Left (text\composite "Unknown definition: " (name\encoded name))) + {#Left (text\composite "Unknown definition: " (name\encoded name))} - (#Some [#definitions definitions #module_hash _ #module_aliases _ #imports _ #module_state _]) + {#Some [#definitions definitions #module_hash _ #module_aliases _ #imports _ #module_state _]} (case (plist\value v_name definitions) #None - (#Left (text\composite "Unknown definition: " (name\encoded name))) + {#Left (text\composite "Unknown definition: " (name\encoded name))} - (#Some definition) + {#Some definition} (case definition - (#Alias real_name) + {#Alias real_name} (definition_value real_name state) - (#Definition [exported? def_type def_value]) - (#Right [state [def_type def_value]]) + {#Definition [exported? def_type def_value]} + {#Right [state [def_type def_value]]} - (#Type [exported? type labels]) - (#Right [state [..Type type]]) + {#Type [exported? type labels]} + {#Right [state [..Type type]]} - (#Label _) - (#Left (text\composite "Unknown definition: " (name\encoded name))) + {#Label _} + {#Left (text\composite "Unknown definition: " (name\encoded name))} - (#Slot _) - (#Left (text\composite "Unknown definition: " (name\encoded name)))))))) + {#Slot _} + {#Left (text\composite "Unknown definition: " (name\encoded name))}))))) (def: (type_variable idx bindings) (-> Nat (List [Nat (Maybe Type)]) (Maybe Type)) @@ -3708,7 +3743,7 @@ #End #End - (#Item [var bound] bindings') + {#Item [var bound] bindings'} (if ("lux i64 =" idx var) bound (type_variable idx bindings')))) @@ -3721,24 +3756,24 @@ (function (_ compiler) (let [temp (if (text\= "" module) (case (in_env name compiler) - (#Some struct_type) - (#Right [compiler struct_type]) + {#Some struct_type} + {#Right [compiler struct_type]} _ (case (definition_type [current_module name] compiler) - (#Some struct_type) - (#Right [compiler struct_type]) + {#Some struct_type} + {#Right [compiler struct_type]} _ - (#Left ($_ text\composite "Unknown var: " (name\encoded full_name))))) + {#Left ($_ text\composite "Unknown var: " (name\encoded full_name))})) (case (definition_type full_name compiler) - (#Some struct_type) - (#Right [compiler struct_type]) + {#Some struct_type} + {#Right [compiler struct_type]} _ - (#Left ($_ text\composite "Unknown var: " (name\encoded full_name)))))] + {#Left ($_ text\composite "Unknown var: " (name\encoded full_name))}))] (case temp - (#Right [compiler (#Var type_id)]) + {#Right [compiler {#Var type_id}]} (let [[#info _ #source _ #current_module _ #modules _ #scopes _ #type_context type_context #host _ #seed _ #expected _ #location _ #extensions extensions @@ -3748,8 +3783,8 @@ #None temp - (#Some actualT) - (#Right [compiler actualT]))) + {#Some actualT} + {#Right [compiler actualT]})) _ temp)) @@ -3759,9 +3794,9 @@ (All (_ a b) (-> (List a) (List b) (List [a b]))) (case xs - (#Item x xs') + {#Item x xs'} (case ys - (#Item y ys') + {#Item y ys'} (list& [x y] (zipped/2 xs' ys')) _ @@ -3772,12 +3807,12 @@ (macro: .public (^open tokens) (case tokens - (^ (list& [_ (#Form (list [_ (#Text alias)]))] body branches)) + (^ (list& [_ {#Form (list [_ {#Text alias}])}] body branches)) (do meta_monad [g!temp (..identifier "temp")] (in (list& g!temp (` (..^open (~ g!temp) (~ (text$ alias)) (~ body))) branches))) - (^ (list [_ (#Identifier name)] [_ (#Text alias)] body)) + (^ (list [_ {#Identifier name}] [_ {#Text alias}] body)) (do meta_monad [init_type (type_definition name) struct_evidence (record_slots init_type)] @@ -3785,7 +3820,7 @@ #None (failure (text\composite "Can only 'open' structs: " (type\encoded init_type))) - (#Some tags&members) + {#Some tags&members} (do meta_monad [full_body ((: (-> Name [(List Name) (List Type)] Code (Meta Code)) (function (recur source [tags members] target) @@ -3799,7 +3834,7 @@ (do meta_monad [m_implementation (record_slots m_type)] (case m_implementation - (#Some m_tags&members) + {#Some m_tags&members} (recur m_local m_tags&members enhanced_target) @@ -3834,8 +3869,8 @@ (All (_ a) (-> Nat (List a) (List [Nat a]))) (case xs - (#Item x xs') - (#Item [idx x] (enumeration' ("lux i64 +" 1 idx) xs')) + {#Item x xs'} + {#Item [idx x] (enumeration' ("lux i64 +" 1 idx) xs')} #End #End)) @@ -3847,7 +3882,7 @@ (macro: .public (value@ tokens) (case tokens - (^ (list [_ (#Tag slot')] record)) + (^ (list [_ {#Tag slot'}] record)) (do meta_monad [slot (normal slot') output (..type_slot slot) @@ -3855,7 +3890,7 @@ g!_ (..identifier "_") g!output (..identifier "")] (case (interface_methods type) - (#Some members) + {#Some members} (let [pattern (|> (zipped/2 tags (enumeration members)) (list\each (: (-> [Name [Nat Type]] (List Code)) (function (_ [[r_module r_name] [r_idx r_type]]) @@ -3870,7 +3905,7 @@ _ (failure "value@ can only use records."))) - (^ (list [_ (#Tuple slots)] record)) + (^ (list [_ {#Tuple slots}] record)) (in_meta (list (list\mix (: (-> Code Code Code) (function (_ slot inner) (` (..value@ (~ slot) (~ inner))))) @@ -3901,7 +3936,7 @@ tuple$) source+ (` ({(~ pattern) (~ g!output)} (~ source)))]] (case output - (#Some [tags' members']) + {#Some [tags' members']} (do meta_monad [decls' (monad\each meta_monad (: (-> [Nat Name Type] (Meta (List Code))) @@ -3917,15 +3952,15 @@ (macro: .public (open: tokens) (case tokens - (^ (list [_ (#Text alias)] struct)) + (^ (list [_ {#Text alias}] struct)) (case struct - [_ (#Identifier struct_name)] + [_ {#Identifier struct_name}] (do meta_monad [struct_type (type_definition struct_name) output (record_slots struct_type) .let [source (identifier$ struct_name)]] (case output - (#Some [tags members]) + {#Some [tags members]} (do meta_monad [decls' (monad\each meta_monad (: (-> [Nat Name Type] (Meta (List Code))) (function (_ [tag_index sname stype]) @@ -4001,13 +4036,13 @@ #All (exported_definitions module_name) - (#Only +defs) + {#Only +defs} (do meta_monad [*defs (exported_definitions module_name) _ (test_referrals module_name *defs +defs)] (in +defs)) - (#Exclude _defs) + {#Exclude _defs} (do meta_monad [*defs (exported_definitions module_name) _ (test_referrals module_name *defs _defs)] @@ -4033,7 +4068,7 @@ (macro: (refer tokens) (case tokens - (^ (list& [_ (#Text module_name)] options)) + (^ (list& [_ {#Text module_name}] options)) (do meta_monad [=refer (referrals module_name options)] (referral_definitions module_name =refer)) @@ -4049,10 +4084,10 @@ #All (list (' "*")) - (#Only defs) + {#Only defs} (list (variant$ (list (' "+") (tuple$ (list\each local_identifier$ defs))))) - (#Exclude defs) + {#Exclude defs} (list (variant$ (list (' "-") (tuple$ (list\each local_identifier$ defs))))) #Ignore @@ -4082,11 +4117,11 @@ (refer_code module_name m_alias =refer))) imports) =module (` ("lux def module" (~ =imports)))]] - (in (#Item =module =refers)))) + (in {#Item =module =refers}))) (macro: .public (\ tokens) (case tokens - (^ (list struct [_ (#Identifier member)])) + (^ (list struct [_ {#Identifier member}])) (in_meta (list (` (let [(^open (~ (text$ (alias_stand_in 0)))) (~ struct)] (~ (identifier$ member)))))) (^ (list& struct member args)) @@ -4097,13 +4132,13 @@ (macro: .public (with@ tokens) (case tokens - (^ (list [_ (#Tag slot')] value record)) + (^ (list [_ {#Tag slot'}] value record)) (do meta_monad [slot (normal slot') output (..type_slot slot) .let [[idx tags exported? type] output]] (case (interface_methods type) - (#Some members) + {#Some members} (do meta_monad [pattern' (monad\each meta_monad (: (-> [Name [Nat Type]] (Meta [Name Nat Code])) @@ -4133,7 +4168,7 @@ _ (failure "with@ can only use records."))) - (^ (list [_ (#Tuple slots)] value record)) + (^ (list [_ {#Tuple slots}] value record)) (case slots #End (failure "Wrong syntax for with@") @@ -4153,7 +4188,7 @@ [_ accesses'] (list\mix (: (-> [Code Code] [Code (List (List Code))] [Code (List (List Code))]) (function (_ [new_slot new_binding] [old_record accesses']) [(` (value@ (~ new_slot) (~ new_binding))) - (#Item (list new_binding old_record) accesses')])) + {#Item (list new_binding old_record) accesses'}])) [record (: (List (List Code)) #End)] pairs) accesses (list\conjoint (list\reversed accesses'))]] @@ -4180,13 +4215,13 @@ (macro: .public (revised@ tokens) (case tokens - (^ (list [_ (#Tag slot')] fun record)) + (^ (list [_ {#Tag slot'}] fun record)) (do meta_monad [slot (normal slot') output (..type_slot slot) .let [[idx tags exported? type] output]] (case (interface_methods type) - (#Some members) + {#Some members} (do meta_monad [pattern' (monad\each meta_monad (: (-> [Name [Nat Type]] (Meta [Name Nat Code])) @@ -4216,7 +4251,7 @@ _ (failure "revised@ can only use records."))) - (^ (list [_ (#Tuple slots)] fun record)) + (^ (list [_ {#Tuple slots}] fun record)) (case slots #End (failure "Wrong syntax for revised@") @@ -4249,9 +4284,9 @@ (macro: .public (^template tokens) (case tokens - (^ (list& [_ (#Form (list [_ (#Tuple bindings)] - [_ (#Tuple templates)]))] - [_ (#Form data)] + (^ (list& [_ {#Form (list [_ {#Tuple bindings}] + [_ {#Tuple templates}])}] + [_ {#Form data}] branches)) (case (: (Maybe (List Code)) (do maybe_monad @@ -4267,7 +4302,7 @@ list\conjoint in)) #None)))) - (#Some output) + {#Some output} (in_meta (list\composite output branches)) #None @@ -4293,57 +4328,57 @@ #End #End - (#Item x xs') + {#Item x xs'} (case ys #End #End - (#Item y ys') + {#Item y ys'} (list& x y (interleaved xs' ys'))))) (def: (type_code type) (-> Type Code) (case type - (#Primitive name params) - (` (#.Primitive (~ (text$ name)) (~ (untemplated_list (list\each type_code params))))) + {#Primitive name params} + (` {#.Primitive (~ (text$ name)) (~ (untemplated_list (list\each type_code params)))}) (^template [] - [( left right) - (` ( (~ (type_code left)) (~ (type_code right))))]) + [{ left right} + (` { (~ (type_code left)) (~ (type_code right))})]) ([#.Sum] [#.Product] [#.Function] [#.Apply]) (^template [] - [( id) - (` ( (~ (nat$ id))))]) + [{ id} + (` { (~ (nat$ id))})]) ([#.Parameter] [#.Var] [#.Ex]) (^template [] - [( env type) + [{ env type} (let [env' (untemplated_list (list\each type_code env))] - (` ( (~ env') (~ (type_code type)))))]) + (` { (~ env') (~ (type_code type))}))]) ([#.UnivQ] [#.ExQ]) - (#Named [module name] anonymous) + {#Named [module name] anonymous} ... TODO: Generate the explicit type definition instead of using ... the "identifier$" shortcut below. - ... (` (#.Named [(~ (text$ module)) (~ (text$ name))] - ... (~ (type_code anonymous)))) + ... (` {#.Named [(~ (text$ module)) (~ (text$ name))] + ... (~ (type_code anonymous))}) (identifier$ [module name]))) (macro: .public (loop tokens) (let [?params (case tokens - (^ (list name [_ (#Tuple bindings)] body)) - (#Some [name bindings body]) + (^ (list name [_ {#Tuple bindings}] body)) + {#Some [name bindings body]} - (^ (list [_ (#Tuple bindings)] body)) - (#Some [(local_identifier$ "recur") bindings body]) + (^ (list [_ {#Tuple bindings}] body)) + {#Some [(local_identifier$ "recur") bindings body]} _ #None)] (case ?params - (#Some [name bindings body]) + {#Some [name bindings body]} (let [pairs (pairs bindings) vars (list\each product\left pairs) inits (list\each product\right pairs)] @@ -4351,7 +4386,7 @@ (do meta_monad [inits' (: (Meta (List Name)) (case (monad\each maybe_monad identifier_name inits) - (#Some inits') (in_meta inits') + {#Some inits'} (in_meta inits') #None (failure "Wrong syntax for loop"))) init_types (monad\each meta_monad type_definition inits') expected ..expected_type] @@ -4376,7 +4411,7 @@ (macro: .public (^slots tokens) (case tokens - (^ (list& [_ (#Form (list [_ (#Tuple (list& hslot' tslots'))]))] body branches)) + (^ (list& [_ {#Form (list [_ {#Tuple (list& hslot' tslots')}])}] body branches)) (do meta_monad [slots (: (Meta [Name (List Name)]) (case (: (Maybe [Name (List Name)]) @@ -4384,7 +4419,7 @@ [hslot (..tag_name hslot') tslots (monad\each maybe_monad ..tag_name tslots')] (in [hslot tslots]))) - (#Some slots) + {#Some slots} (in_meta slots) #None @@ -4404,7 +4439,7 @@ (function (_ [module name]) (let [tag (tag$ [module name])] (case (plist\value name slot_pairings) - (#Some binding) (list tag binding) + {#Some binding} (list tag binding) #None (list tag g!_)))))) list\conjoint tuple$)]] @@ -4416,27 +4451,27 @@ (def: (with_expansions' label tokens target) (-> Text (List Code) Code (List Code)) (case target - (^or [_ (#Bit _)] [_ (#Nat _)] [_ (#Int _)] [_ (#Rev _)] [_ (#Frac _)] [_ (#Text _)] [_ (#Tag _)]) + (^or [_ {#Bit _}] [_ {#Nat _}] [_ {#Int _}] [_ {#Rev _}] [_ {#Frac _}] [_ {#Text _}] [_ {#Tag _}]) (list target) - [_ (#Identifier [module name])] + [_ {#Identifier [module name]}] (if (and (text\= "" module) (text\= label name)) tokens (list target)) (^template [] - [[location ( elems)] - (list [location ( (list\conjoint (list\each (with_expansions' label tokens) elems)))])]) + [[location { elems}] + (list [location { (list\conjoint (list\each (with_expansions' label tokens) elems))}])]) ([#Form] [#Variant] [#Tuple]))) (macro: .public (with_expansions tokens) (case tokens - (^ (list& [_ (#Tuple bindings)] bodies)) + (^ (list& [_ {#Tuple bindings}] bodies)) (case bindings - (^ (list& [_ (#Identifier ["" var_name])] expr bindings')) + (^ (list& [_ {#Identifier ["" var_name]}] expr bindings')) (do meta_monad [expansion (single_expansion expr)] (in (with_expansions' var_name expansion @@ -4457,7 +4492,7 @@ (-> Type Type) (case type (^template [] - [(#Named ["library/lux" ] _) + [{#Named ["library/lux" ] _} type]) (["Bit"] ["Nat"] @@ -4466,7 +4501,7 @@ ["Frac"] ["Text"]) - (#Named _ type') + {#Named _ type'} (flat_alias type') _ @@ -4479,7 +4514,7 @@ .let [[type value] type+value]] (case (flat_alias type) (^template [ ] - [(#Named ["library/lux" ] _) + [{#Named ["library/lux" ] _} (in ( (:as value)))]) (["Bit" Bit bit$] ["Nat" Nat nat$] @@ -4494,7 +4529,7 @@ (def: (static_literal token) (-> Code (Meta Code)) (case token - [_ (#Identifier [def_module def_name])] + [_ {#Identifier [def_module def_name]}] (if (text\= "" def_module) (do meta_monad [current_module current_module_name] @@ -4502,10 +4537,10 @@ (static_simple_literal [def_module def_name])) (^template [] - [[meta ( parts)] + [[meta { parts}] (do meta_monad [=parts (monad\each meta_monad static_literal parts)] - (in [meta ( =parts)]))]) + (in [meta { =parts}]))]) ([#Form] [#Variant] [#Tuple]) @@ -4532,7 +4567,7 @@ (def: (case_level^ level) (-> Code (Meta [Code Code])) (case level - (^ [_ (#Tuple (list expr binding))]) + (^ [_ {#Tuple (list expr binding)}]) (in_meta [expr binding]) _ @@ -4545,7 +4580,7 @@ #End (failure "Multi-level patterns cannot be empty.") - (#Item init extras) + {#Item init extras} (do meta_monad [extras' (monad\each meta_monad case_level^ extras)] (in [init extras'])))) @@ -4554,7 +4589,7 @@ (-> Code [Multi_Level_Case Code] (List Code)) (let [inner_pattern_body (list\mix (function (_ [calculation pattern] success) (let [bind? (case pattern - [_ (#Identifier _)] + [_ {#Identifier _}] #1 _ @@ -4566,17 +4601,17 @@ (~+ (if bind? (list) (list g!_ (` #.None)))))))) - (` (#.Some (~ body))) + (` {#.Some (~ body)}) (: (List [Code Code]) (list\reversed levels)))] (list init_pattern inner_pattern_body))) (macro: .public (^multi tokens) (case tokens - (^ (list& [_meta (#Form levels)] body next_branches)) + (^ (list& [_meta {#Form levels}] body next_branches)) (do meta_monad [mlc (multi_level_case^ levels) .let [initial_bind? (case mlc - [[_ (#Identifier _)] _] + [[_ {#Identifier _}] _] #1 _ @@ -4584,13 +4619,13 @@ expected ..expected_type g!temp (..identifier "temp")] (let [output (list g!temp - (` ({(#Some (~ g!temp)) + (` ({{#Some (~ g!temp)} (~ g!temp) #None (case (~ g!temp) (~+ next_branches))} - ("lux type check" (#.Apply (~ (type_code expected)) Maybe) + ("lux type check" {#.Apply (~ (type_code expected)) Maybe} (case (~ g!temp) (~+ (multi_level_case$ g!temp [mlc body])) @@ -4613,9 +4648,10 @@ (macro: .public (name_of tokens) (case tokens (^template [] - [(^ (list [_ ( [module name])])) + [(^ (list [_ { [module name]}])) (in_meta (list (` [(~ (text$ module)) (~ (text$ name))])))]) - ([#Identifier] [#Tag]) + ([#Identifier] + [#Tag]) _ (failure (..wrong_syntax_error [..prelude_module "name_of"])))) @@ -4627,16 +4663,16 @@ #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions #scope_type_vars scope_type_vars #eval _eval] - (#Right [state scope_type_vars]))) + {#Right [state scope_type_vars]})) (macro: .public (:parameter tokens) (case tokens - (^ (list [_ (#Nat idx)])) + (^ (list [_ {#Nat idx}])) (do meta_monad [stvs ..scope_type_vars] (case (..item idx (list\reversed stvs)) - (#Some var_id) - (in (list (` (#Ex (~ (nat$ var_id)))))) + {#Some var_id} + (in (list (` {#Ex (~ (nat$ var_id))}))) #None (failure (text\composite "Indexed-type does not exist: " (nat\encoded idx))))) @@ -4651,7 +4687,7 @@ (macro: .public (^@ tokens) (case tokens - (^ (list& [_meta (#Form (list [_ (#Identifier ["" name])] pattern))] body branches)) + (^ (list& [_meta {#Form (list [_ {#Identifier ["" name]}] pattern)}] body branches)) (let [g!whole (local_identifier$ name)] (in_meta (list& g!whole (` (case (~ g!whole) (~ pattern) (~ body))) @@ -4662,7 +4698,7 @@ (macro: .public (^|> tokens) (case tokens - (^ (list& [_meta (#Form (list [_ (#Identifier ["" name])] [_ (#Tuple steps)]))] body branches)) + (^ (list& [_meta {#Form (list [_ {#Identifier ["" name]}] [_ {#Tuple steps}])}] body branches)) (let [g!name (local_identifier$ name)] (in_meta (list& g!name (` (let [(~ g!name) (|> (~ g!name) (~+ steps))] @@ -4685,7 +4721,7 @@ (def: location (Meta Location) (function (_ compiler) - (#Right [compiler (value@ #location compiler)]))) + {#Right [compiler (value@ #location compiler)]})) (macro: .public (undefined tokens) (case tokens @@ -4702,7 +4738,7 @@ (macro: .public (:of tokens) (case tokens - (^ (list [_ (#Identifier var_name)])) + (^ (list [_ {#Identifier var_name}])) (do meta_monad [var_type (type_definition var_name)] (in (list (type_code var_type)))) @@ -4719,8 +4755,8 @@ (def: (tupleP tokens) (-> (List Code) (Maybe [(List Code) (List Code)])) (case tokens - (^ (list& [_ (#Tuple tuple)] tokens')) - (#Some [tokens' tuple]) + (^ (list& [_ {#Tuple tuple}] tokens')) + {#Some [tokens' tuple]} _ #None)) @@ -4737,7 +4773,7 @@ (macro: .public (template: tokens) (case (templateP tokens) - (#Some [export_policy name args input_templates]) + {#Some [export_policy name args input_templates]} (do meta_monad [g!tokens (..identifier "tokens") g!compiler (..identifier "compiler") @@ -4750,51 +4786,51 @@ ((~ (local_identifier$ name)) (~ g!tokens) (~ g!compiler)) (case (~ g!tokens) (^ (list (~+ (list\each local_identifier$ args)))) - (#.Right [(~ g!compiler) + {#.Right [(~ g!compiler) (list (~+ (list\each (function (_ template) (` (`' (~ (with_replacements rep_env template))))) - input_templates)))]) + input_templates)))]} (~ g!_) - (#.Left (~ (text$ (..wrong_syntax_error [this_module name])))))))))) + {#.Left (~ (text$ (..wrong_syntax_error [this_module name])))})))))) #None (failure (..wrong_syntax_error (name_of ..template:))))) (macro: .public (as_is tokens compiler) - (#Right [compiler tokens])) + {#Right [compiler tokens]}) (macro: .public (char tokens compiler) (case tokens - (^multi (^ (list [_ (#Text input)])) + (^multi (^ (list [_ {#Text input}])) (|> input "lux text size" ("lux i64 =" 1))) (|> input ("lux text char" 0) nat$ list [compiler] #Right) _ - (#Left (..wrong_syntax_error (name_of ..char))))) + {#Left (..wrong_syntax_error (name_of ..char))})) (def: target (Meta Text) (function (_ compiler) - (#Right [compiler (value@ [#info #target] compiler)]))) + {#Right [compiler (value@ [#info #target] compiler)]})) (def: (platform_name choice) (-> Code (Meta Text)) (case choice - [_ (#Text platform)] + [_ {#Text platform}] (..in_meta platform) - [_ (#Identifier identifier)] + [_ {#Identifier identifier}] (do meta_monad [identifier (..global_identifier identifier) type+value (..definition_value identifier) .let [[type value] type+value]] (case (..flat_alias type) - (^or (#Primitive "#Text" #End) - (#Named ["library/lux" "Text"] (#Primitive "#Text" #End))) + (^or {#Primitive "#Text" #End} + {#Named ["library/lux" "Text"] {#Primitive "#Text" #End}}) (in (:as ..Text value)) _ @@ -4815,10 +4851,10 @@ #None (failure ($_ text\composite "No code for target platform: " target)) - (#Some default) + {#Some default} (in_meta (list default))) - (#Item [key pick] options') + {#Item [key pick] options'} (do meta_monad [platform (..platform_name key)] (if (text\= target platform) @@ -4831,25 +4867,25 @@ list\size (n/% 2) ("lux i64 =" 0)) - (#Some (pairs tokens)) + {#Some (pairs tokens)} #None)) (macro: .public (for tokens) (do meta_monad [target ..target] (case tokens - (^ (list [_ (#Tuple options)])) + (^ (list [_ {#Tuple options}])) (case (pairs' options) - (#Some options) + {#Some options} (target_pick target options #None) #None (failure (..wrong_syntax_error (name_of ..for)))) - (^ (list [_ (#Tuple options)] default)) + (^ (list [_ {#Tuple options}] default)) (case (pairs' options) - (#Some options) - (target_pick target options (#Some default)) + {#Some options} + (target_pick target options {#Some default}) #None (failure (..wrong_syntax_error (name_of ..for)))) @@ -4860,17 +4896,17 @@ (def: (embedded_expansions code) (-> Code (Meta [(List [Code Code]) Code])) (case code - (^ [ann (#Form (list [_ (#Identifier ["" "~~"])] expansion))]) + (^ [ann {#Form (list [_ {#Identifier ["" "~~"]}] expansion)}]) (do meta_monad [g!expansion (..identifier "g!expansion")] (in [(list [g!expansion expansion]) g!expansion])) (^template [] - [[ann ( parts)] + [[ann { parts}] (do meta_monad [=parts (monad\each meta_monad embedded_expansions parts)] (in [(list\mix list\composite (list) (list\each product\left =parts)) - [ann ( (list\each product\right =parts))]]))]) + [ann { (list\each product\right =parts)}]]))]) ([#Form] [#Variant] [#Tuple]) @@ -4902,24 +4938,24 @@ #End last - (#Item [init inits']) - (` (#.Item (~ init) (~ (untemplated_list& last inits')))))) + {#Item [init inits']} + (` {#.Item (~ init) (~ (untemplated_list& last inits'))}))) (template [ ] [(def: ( g!meta untemplated_pattern elems) (-> Code (-> Code (Meta Code)) (-> (List Code) (Meta Code))) (case (list\reversed elems) - (#Item [_ (#Form (#Item [[_ (#Identifier ["" "~+"])] (#Item [spliced #End])]))] - inits) + {#Item [_ {#Form {#Item [[_ {#Identifier ["" "~+"]}] {#Item [spliced #End]}]}}] + inits} (do meta_monad [=inits (monad\each meta_monad untemplated_pattern (list\reversed inits))] - (in (` [(~ g!meta) ( (~ (untemplated_list& spliced =inits)))]))) + (in (` [(~ g!meta) { (~ (untemplated_list& spliced =inits))}]))) _ (do meta_monad [=elems (monad\each meta_monad untemplated_pattern elems)] - (in (` [(~ g!meta) ( (~ (untemplated_list =elems)))])))))] + (in (` [(~ g!meta) { (~ (untemplated_list =elems))}])))))] [#.Form untemplated_form] [#.Tuple untemplated_tuple] @@ -4932,8 +4968,8 @@ [g!meta (..identifier "g!meta")] (case pattern (^template [ ] - [[_ ( value)] - (in (` [(~ g!meta) ( (~ ( value)))]))]) + [[_ { value}] + (in (` [(~ g!meta) { (~ ( value))}]))]) ([#.Bit bit$] [#.Nat nat$] [#.Int int$] @@ -4943,14 +4979,14 @@ [#.Tag name$] [#.Identifier name$]) - [_ (#Form (#Item [[_ (#Identifier ["" "~"])] (#Item [unquoted #End])]))] + [_ {#Form {#Item [[_ {#Identifier ["" "~"]}] {#Item [unquoted #End]}]}}] (in_meta unquoted) - [_ (#Form (#Item [[_ (#Identifier ["" "~+"])] (#Item [spliced #End])]))] + [_ {#Form {#Item [[_ {#Identifier ["" "~+"]}] {#Item [spliced #End]}]}}] (failure "Cannot use (~+) inside of ^code unless it is the last element in a form or a tuple.") (^template [ ] - [[_ ( elems)] + [[_ { elems}] ( g!meta untemplated_pattern elems)]) ([#Form ..untemplated_form] [#Variant ..untemplated_variant] @@ -4959,7 +4995,7 @@ (macro: .public (^code tokens) (case tokens - (^ (list& [_meta (#Form (list template))] body branches)) + (^ (list& [_meta {#Form (list template)}] body branches)) (do meta_monad [pattern (untemplated_pattern template)] (in (list& pattern body branches))) @@ -4982,7 +5018,7 @@ (macro: .public (:let tokens) (case tokens - (^ (list [_ (#Tuple bindings)] bodyT)) + (^ (list [_ {#Tuple bindings}] bodyT)) (if (multiple? 2 (list\size bindings)) (in_meta (list (` (..with_expansions [(~+ (|> bindings ..pairs @@ -5010,9 +5046,9 @@ (def: (methodP tokens) (-> (List Code) (Maybe [(List Code) [Text Code]])) (case tokens - (^ (list& [_ (#Form (list [_ (#Text "lux type check")] type [_ (#Identifier ["" name])]))] + (^ (list& [_ {#Form (list [_ {#Text "lux type check"}] type [_ {#Identifier ["" name]}])}] tokens')) - (#Some [tokens' [name type]]) + {#Some [tokens' [name type]]} _ #None)) @@ -5021,7 +5057,7 @@ (do meta_monad [methods' (monad\each meta_monad expansion tokens)] (case (everyP methodP (list\conjoint methods')) - (#Some methods) + {#Some methods} (in (list (` (..Tuple (~+ (list\each product\right methods)))) (tuple$ (list\each (|>> product\left text$) methods)))) @@ -5031,13 +5067,13 @@ (def: (recursive_type g!self g!dummy name body) (-> Code Code Text Code Code) (` ((.All ((~ g!self) (~ g!dummy)) - (~ (let$ (local_identifier$ name) (` (#.Apply (..primitive "") (~ g!self))) + (~ (let$ (local_identifier$ name) (` {#.Apply (..primitive "") (~ g!self)}) body))) (..primitive "")))) (macro: .public (Rec tokens) (case tokens - (^ (list [_ (#Identifier "" name)] body)) + (^ (list [_ {#Identifier "" name}] body)) (do meta_monad [body' (expansion body) g!self (identifier "g!self") diff --git a/stdlib/source/library/lux/abstract/comonad.lux b/stdlib/source/library/lux/abstract/comonad.lux index b4dd60a68..20e24bcb5 100644 --- a/stdlib/source/library/lux/abstract/comonad.lux +++ b/stdlib/source/library/lux/abstract/comonad.lux @@ -26,15 +26,15 @@ (macro: .public (be tokens state) (case (: (Maybe [(Maybe Text) Code (List Code) Code]) (case tokens - (^ (list [_ (#.Tuple (list [_ (#.Identifier ["" name])] comonad))] [_ (#.Tuple bindings)] body)) - (#.Some [(#.Some name) comonad bindings body]) + (^ (list [_ {#.Tuple (list [_ {#.Identifier ["" name]}] comonad)}] [_ {#.Tuple bindings}] body)) + {#.Some [{#.Some name} comonad bindings body]} - (^ (list comonad [_ (#.Tuple bindings)] body)) - (#.Some [#.None comonad bindings body]) + (^ (list comonad [_ {#.Tuple bindings}] body)) + {#.Some [#.None comonad bindings body]} _ #.None)) - (#.Some [?name comonad bindings body]) + {#.Some [?name comonad bindings body]} (if (|> bindings list.size (n.% 2) (n.= 0)) (let [[module short] (name_of ..be) identifier (: (-> Text Code) @@ -47,19 +47,19 @@ (with_expansions [ (` (|> (~ value) (~ g!disjoint) ((~ g!each) (function ((~ g!_) (~ var)) (~ body')))))] (let [[var value] binding] (case var - [_ (#.Identifier ["" _])] + [_ {#.Identifier ["" _]}] - [_ (#.Identifier _)] + [_ {#.Identifier _}] (` ((~ var) (~ value) (~ body'))) _ ))))) body (list.reversed (list.pairs bindings)))] - (#.Right [state (list (case ?name - (#.Some name) - (let [name [location.dummy (#.Identifier ["" name])]] + {#.Right [state (list (case ?name + {#.Some name} + (let [name [location.dummy {#.Identifier ["" name]}]] (` (.case (~ comonad) (~ name) (.case (~ name) @@ -69,8 +69,8 @@ #.None (` (.case (~ comonad) [(~ g!each) (~' out) (~ g!disjoint)] - (~ body')))))])) - (#.Left "'be' bindings must have an even number of parts.")) + (~ body')))))]}) + {#.Left "'be' bindings must have an even number of parts."}) #.None - (#.Left "Wrong syntax for 'be'"))) + {#.Left "Wrong syntax for 'be'"})) diff --git a/stdlib/source/library/lux/abstract/enum.lux b/stdlib/source/library/lux/abstract/enum.lux index 390bd9956..c78a0711f 100644 --- a/stdlib/source/library/lux/abstract/enum.lux +++ b/stdlib/source/library/lux/abstract/enum.lux @@ -16,10 +16,10 @@ (loop [end to output #.End] (cond (< end from) - (recur (pred end) (#.Item end output)) + (recur (pred end) {#.Item end output}) (< from end) - (recur (succ end) (#.Item end output)) + (recur (succ end) {#.Item end output}) ... (= end from) - (#.Item end output))))) + {#.Item end output})))) diff --git a/stdlib/source/library/lux/abstract/functor.lux b/stdlib/source/library/lux/abstract/functor.lux index c72ae415b..5b7b4d3f1 100644 --- a/stdlib/source/library/lux/abstract/functor.lux +++ b/stdlib/source/library/lux/abstract/functor.lux @@ -20,11 +20,11 @@ (implementation (def: (each f fa|ga) (case fa|ga - (#.Left fa) - (#.Left (f\each f fa)) + {#.Left fa} + {#.Left (f\each f fa)} - (#.Right ga) - (#.Right (g\each f ga)))))) + {#.Right ga} + {#.Right (g\each f ga)})))) (type: .public (And f g) (All (_ a) (.And (f a) (g a)))) diff --git a/stdlib/source/library/lux/abstract/monad.lux b/stdlib/source/library/lux/abstract/monad.lux index 98baec35e..c915945a1 100644 --- a/stdlib/source/library/lux/abstract/monad.lux +++ b/stdlib/source/library/lux/abstract/monad.lux @@ -13,7 +13,7 @@ #.End init - (#.Item x xs') + {#.Item x xs'} (list\mix f (f x init) xs'))) (def: (list\size xs) @@ -24,21 +24,21 @@ #.End counter - (#.Item _ xs') + {#.Item _ xs'} (recur (++ counter) xs')))) (def: (reversed xs) (All (_ a) (-> (List a) (List a))) - (list\mix (function (_ head tail) (#.Item head tail)) + (list\mix (function (_ head tail) {#.Item head tail}) #.End xs)) (def: (pairs xs) (All (_ a) (-> (List a) (List [a a]))) (case xs - (#.Item x1 (#.Item x2 xs')) - (#.Item [x1 x2] (pairs xs')) + {#.Item x1 {#.Item x2 xs'}} + {#.Item [x1 x2] (pairs xs')} _ #.End)) @@ -57,15 +57,15 @@ (macro: .public (do tokens state) (case (: (Maybe [(Maybe Text) Code (List Code) Code]) (case tokens - (^ (list [_ (#.Tuple (list [_ (#.Identifier ["" name])] monad))] [_ (#.Tuple bindings)] body)) - (#.Some [(#.Some name) monad bindings body]) + (^ (list [_ {#.Tuple (list [_ {#.Identifier ["" name]}] monad)}] [_ {#.Tuple bindings}] body)) + {#.Some [{#.Some name} monad bindings body]} - (^ (list monad [_ (#.Tuple bindings)] body)) - (#.Some [#.None monad bindings body]) + (^ (list monad [_ {#.Tuple bindings}] body)) + {#.Some [#.None monad bindings body]} _ #.None)) - (#.Some [?name monad bindings body]) + {#.Some [?name monad bindings body]} (if (|> bindings list\size .int ("lux i64 %" +2) ("lux i64 =" +0)) (let [[module short] (name_of ..do) identifier (: (-> Text Code) @@ -78,19 +78,19 @@ (with_expansions [ (` (|> (~ value) ((~ g!each) (function ((~ g!_) (~ var)) (~ body'))) (~ g!conjoint)))] (let [[var value] binding] (case var - [_ (#.Identifier ["" _])] + [_ {#.Identifier ["" _]}] - [_ (#.Identifier _)] + [_ {#.Identifier _}] (` ((~ var) (~ value) (~ body'))) _ ))))) body (reversed (pairs bindings)))] - (#.Right [state (list (case ?name - (#.Some name) - (let [name [location.dummy (#.Identifier ["" name])]] + {#.Right [state (list (case ?name + {#.Some name} + (let [name [location.dummy {#.Identifier ["" name]}]] (` (.case (~ monad) (~ name) (.case (~ name) @@ -100,11 +100,11 @@ #.None (` (.case (~ monad) [(~ g!each) (~' in) (~ g!conjoint)] - (~ body')))))])) - (#.Left "'do' bindings must have an even number of parts.")) + (~ body')))))]}) + {#.Left "'do' bindings must have an even number of parts."}) #.None - (#.Left "Wrong syntax for 'do'"))) + {#.Left "Wrong syntax for 'do'"})) (def: .public (then monad f) (All (_ ! a b) @@ -123,10 +123,10 @@ #.End (!\in #.End) - (#.Item x xs') + {#.Item x xs'} (|> x (!\each (function (_ _x) - (!\each (|>> (#.Item _x)) (recur xs')))) + (!\each (|>> {#.Item _x}) (recur xs')))) !\conjoint))))) (def: .public (each monad f) @@ -139,10 +139,10 @@ #.End (!\in #.End) - (#.Item x xs') + {#.Item x xs'} (|> (f x) (!\each (function (_ _x) - (!\each (|>> (#.Item _x)) (recur xs')))) + (!\each (|>> {#.Item _x}) (recur xs')))) !\conjoint))))) (def: .public (only monad f) @@ -155,12 +155,12 @@ #.End (!\in #.End) - (#.Item head xs') + {#.Item head xs'} (|> (f head) (!\each (function (_ verdict) (!\each (function (_ tail) (if verdict - (#.Item head tail) + {#.Item head tail} tail)) (recur xs')))) !\conjoint))))) @@ -173,7 +173,7 @@ #.End (\ monad in init) - (#.Item x xs') + {#.Item x xs'} (do monad [init' (f x init)] (mix monad f init' xs')))) diff --git a/stdlib/source/library/lux/abstract/monad/free.lux b/stdlib/source/library/lux/abstract/monad/free.lux index 2f4d88fcc..04718ceb8 100644 --- a/stdlib/source/library/lux/abstract/monad/free.lux +++ b/stdlib/source/library/lux/abstract/monad/free.lux @@ -8,19 +8,19 @@ (type: .public (Free F a) (Variant - (#Pure a) - (#Effect (F (Free F a))))) + {#Pure a} + {#Effect (F (Free F a))})) (implementation: .public (functor dsl) (All (_ F) (-> (Functor F) (Functor (Free F)))) (def: (each f ea) (case ea - (#Pure a) - (#Pure (f a)) + {#Pure a} + {#Pure (f a)} - (#Effect value) - (#Effect (\ dsl each (each f) value))))) + {#Effect value} + {#Effect (\ dsl each (each f) value)}))) (implementation: .public (apply dsl) (All (_ F) (-> (Functor F) (Apply (Free F)))) @@ -30,16 +30,16 @@ (def: (on ea ef) (case [ef ea] - [(#Pure f) (#Pure a)] - (#Pure (f a)) + [{#Pure f} {#Pure a}] + {#Pure (f a)} - [(#Pure f) (#Effect fa)] - (#Effect (\ dsl each + [{#Pure f} {#Effect fa}] + {#Effect (\ dsl each (\ (..functor dsl) each f) - fa)) + fa)} - [(#Effect ff) _] - (#Effect (\ dsl each (on ea) ff)) + [{#Effect ff} _] + {#Effect (\ dsl each (on ea) ff)} ))) (implementation: .public (monad dsl) @@ -48,20 +48,20 @@ (def: &functor (..functor dsl)) (def: (in a) - (#Pure a)) + {#Pure a}) (def: (conjoint efefa) (case efefa - (#Pure efa) + {#Pure efa} (case efa - (#Pure a) - (#Pure a) + {#Pure a} + {#Pure a} - (#Effect fa) - (#Effect fa)) + {#Effect fa} + {#Effect fa}) - (#Effect fefa) - (#Effect (\ dsl each + {#Effect fefa} + {#Effect (\ dsl each (\ (monad dsl) conjoint) - fefa)) + fefa)} ))) diff --git a/stdlib/source/library/lux/abstract/monad/indexed.lux b/stdlib/source/library/lux/abstract/monad/indexed.lux index 6e8ddb602..3051aba52 100644 --- a/stdlib/source/library/lux/abstract/monad/indexed.lux +++ b/stdlib/source/library/lux/abstract/monad/indexed.lux @@ -33,8 +33,8 @@ (type: Context (Variant - (#Macro Name Code) - (#Binding Binding))) + {#Macro Name Code} + {#Binding Binding})) (def: global_identifier (Parser Name) @@ -67,12 +67,12 @@ (macro.with_identifiers [g!_ g!then] (let [body (list\mix (function (_ context next) (case context - (#Macro macro parameter) + {#Macro macro parameter} (` ((~ (code.identifier macro)) (~ parameter) (~ next))) - (#Binding [binding value]) + {#Binding [binding value]} (` ((~ g!then) (.function ((~ g!_) (~ binding)) (~ next)) @@ -80,7 +80,7 @@ expression (list.reversed context))] (in (list (case ?name - (#.Some name) + {#.Some name} (let [name (code.local_identifier name)] (` (let [(~ name) (~ monad) [#..in (~' in) diff --git a/stdlib/source/library/lux/control/concatenative.lux b/stdlib/source/library/lux/control/concatenative.lux index 28a48035f..2e70ed49e 100644 --- a/stdlib/source/library/lux/control/concatenative.lux +++ b/stdlib/source/library/lux/control/concatenative.lux @@ -67,7 +67,7 @@ (monad.do meta.monad [expansion expander] (case expansion - (#.Item singleton #.End) + {#.Item singleton #.End} (in singleton) _ @@ -87,7 +87,7 @@ aliases))] (case [(value@ #bottom inputs) (value@ #bottom outputs)] - [(#.Some bottomI) (#.Some bottomO)] + [{#.Some bottomI} {#.Some bottomO}] (monad.do meta.monad [inputC (singleton (macro.full_expansion (stack_mix (value@ #top inputs) bottomI))) outputC (singleton (macro.full_expansion (stack_mix (value@ #top outputs) bottomO)))] @@ -191,12 +191,12 @@ (def: .public ||L (All (_ a b) (=> [a] [(Or a b)])) (function (_ [stack l]) - [stack (0 #0 l)])) + [stack {0 #0 l}])) (def: .public ||R (All (_ a b) (=> [b] [(Or a b)])) (function (_ [stack r]) - [stack (0 #1 r)])) + [stack {0 #1 r}])) (template [ ] [(`` (def: .public diff --git a/stdlib/source/library/lux/control/concurrency/actor.lux b/stdlib/source/library/lux/control/concurrency/actor.lux index 5ce45f632..e3635595a 100644 --- a/stdlib/source/library/lux/control/concurrency/actor.lux +++ b/stdlib/source/library/lux/control/concurrency/actor.lux @@ -54,8 +54,8 @@ (do [! io.monad] [current (async.value read)] (case current - (#.Some [head tail]) - (\ ! each (|>> (#.Item head)) + {#.Some [head tail]} + (\ ! each (|>> {#.Item head}) (pending tail)) #.None @@ -94,15 +94,15 @@ [[head tail] |mailbox| ?state' (on_mail head state self)] (case ?state' - (#try.Failure error) + {#try.Failure error} (let [[_ resolve] (value@ #obituary (:representation self))] (exec (io.run! (do io.monad [pending (..pending tail)] - (resolve [error state (#.Item head pending)]))) + (resolve [error state {#.Item head pending}]))) (in []))) - (#try.Success state') + {#try.Success state'} (recur state' tail))))] self))) @@ -147,10 +147,10 @@ (if resolved? (do ! [_ (atom.write! (product.right entry) (value@ #mailbox (:representation actor)))] - (in (#try.Success []))) + (in {#try.Success []})) (recur |mailbox|&resolve))) - (#.Some [_ |mailbox|']) + {#.Some [_ |mailbox|']} (recur |mailbox|')))))) (in (exception.except ..dead []))))) @@ -171,15 +171,15 @@ (do [! async.monad] [outcome (message state self)] (case outcome - (#try.Success [state' return]) + {#try.Success [state' return]} (exec - (io.run! (resolve (#try.Success return))) - (async.resolved (#try.Success state'))) + (io.run! (resolve {#try.Success return})) + (async.resolved {#try.Success state'})) - (#try.Failure error) + {#try.Failure error} (exec - (io.run! (resolve (#try.Failure error))) - (async.resolved (#try.Failure error))))))])) + (io.run! (resolve {#try.Failure error})) + (async.resolved {#try.Failure error})))))])) (def: .public (tell! message actor) (All (_ s o) (-> (Message s o) (Actor s) (Async (Try o)))) @@ -187,11 +187,11 @@ (do async.monad [outcome (async.future (..mail! mail actor))] (case outcome - (#try.Success) + {#try.Success} async - (#try.Failure error) - (in (#try.Failure error))))))] + {#try.Failure error} + (in {#try.Failure error})))))] ) ) @@ -244,7 +244,7 @@ #.None (` (~! ..default_on_mail)) - (#.Some [[mailN stateN selfN] bodyC]) + {#.Some [[mailN stateN selfN] bodyC]} (` (function ((~ g!_) (~ (code.local_identifier mailN)) (~ (code.local_identifier stateN)) diff --git a/stdlib/source/library/lux/control/concurrency/async.lux b/stdlib/source/library/lux/control/concurrency/async.lux index 903ac8bd9..6e38aff6f 100644 --- a/stdlib/source/library/lux/control/concurrency/async.lux +++ b/stdlib/source/library/lux/control/concurrency/async.lux @@ -31,12 +31,12 @@ (do [! io.monad] [(^@ old [_value _observers]) (atom.read! async)] (case _value - (#.Some _) + {#.Some _} (in #0) #.None (do ! - [.let [new [(#.Some value) #.None]] + [.let [new [{#.Some value} #.None]] succeeded? (atom.compare_and_swap! old new async)] (if succeeded? (do ! @@ -47,7 +47,7 @@ (def: .public (resolved value) (All (_ a) (-> a (Async a))) - (:abstraction (atom [(#.Some value) (list)]))) + (:abstraction (atom [{#.Some value} (list)]))) (def: .public (async _) (All (_ a) (-> Any [(Async a) (Resolver a)])) @@ -66,11 +66,11 @@ [.let [async (:representation async)] (^@ old [_value _observers]) (atom.read! async)] (case _value - (#.Some value) + {#.Some value} (f value) #.None - (let [new [_value (#.Item f _observers)]] + (let [new [_value {#.Item f _observers}]] (do ! [swapped? (atom.compare_and_swap! old new async)] (if swapped? @@ -85,7 +85,7 @@ (|>> (case> #.None #0 - (#.Some _) + {#.Some _} #1))))) (implementation: .public functor diff --git a/stdlib/source/library/lux/control/concurrency/frp.lux b/stdlib/source/library/lux/control/concurrency/frp.lux index 1021c7e05..5498eeb06 100644 --- a/stdlib/source/library/lux/control/concurrency/frp.lux +++ b/stdlib/source/library/lux/control/concurrency/frp.lux @@ -42,7 +42,7 @@ stopped? (current #.None)] (if stopped? ... I closed the sink. - (in (#try.Success [])) + (in {#try.Success []}) ... Someone else interacted with the sink. (do ! [latter (atom.read! sink)] @@ -63,12 +63,12 @@ [(Async (Maybe [a (Channel a)])) (async.Resolver (Maybe [a (Channel a)]))] (async.async []))] - fed? (current (#.Some [value next]))] + fed? (current {#.Some [value next]})] (if fed? ... I fed the sink. (do ! [_ (atom.compare_and_swap! current resolve_next sink)] - (in (#try.Success []))) + (in {#try.Success []})) ... Someone else interacted with the sink. (do ! [latter (atom.read! sink)] @@ -102,8 +102,8 @@ [item_f ff item_a fa] (case [item_f item_a] - [(#.Some [head_f tail_f]) (#.Some [head_a tail_a])] - (in (#.Some [(head_f head_a) (on tail_a tail_f)])) + [{#.Some [head_f tail_f]} {#.Some [head_a tail_a]}] + (in {#.Some [(head_f head_a) (on tail_a tail_f)]}) _ (in #.None))))) @@ -118,7 +118,7 @@ (def: &functor ..functor) (def: (in a) - (async.resolved (#.Some [a ..empty]))) + (async.resolved {#.Some [a ..empty]})) (def: (conjoint mma) (let [[output sink] (channel [])] @@ -128,13 +128,13 @@ (do [! async.monad] [?mma mma] (case ?mma - (#.Some [ma mma']) + {#.Some [ma mma']} (do ! [_ (loop [ma ma] (do ! [?ma ma] (case ?ma - (#.Some [a ma']) + {#.Some [a ma']} (exec (io.run! (\ sink feed a)) (recur ma')) @@ -158,9 +158,9 @@ (do async.monad [item channel] (case item - (#.Some [head tail]) + {#.Some [head tail]} (case (io.run! (subscriber head)) - (#.Some _) + {#.Some _} (recur tail) #.None @@ -175,10 +175,10 @@ (do async.monad [item channel] (case item - (#.Some [head tail]) + {#.Some [head tail]} (let [tail' (only pass? tail)] (if (pass? head) - (in (#.Some [head tail'])) + (in {#.Some [head tail']}) tail')) #.None @@ -187,7 +187,7 @@ (def: .public (of_async async) (All (_ a) (-> (Async a) (Channel a))) (async\each (function (_ value) - (#.Some [value ..empty])) + {#.Some [value ..empty]}) async)) (def: .public (mix f init channel) @@ -200,7 +200,7 @@ #.None (in init) - (#.Some [head tail]) + {#.Some [head tail]} (do ! [init' (f head init)] (mix f init' tail))))) @@ -213,12 +213,12 @@ [item channel] (case item #.None - (in (#.Some [init (in #.None)])) + (in {#.Some [init (in #.None)]}) - (#.Some [head tail]) + {#.Some [head tail]} (do ! [init' (f head init)] - (in (#.Some [init (mixes f init' tail)])))))) + (in {#.Some [init (mixes f init' tail)]}))))) (def: .public (poll milli_seconds action) (All (_ a) @@ -241,8 +241,8 @@ (do async.monad [?next (f init)] (case ?next - (#.Some [state output]) - (in (#.Some [output (iterations f state)])) + {#.Some [state output]} + (in {#.Some [output (iterations f state)]}) #.None (in #.None)))) @@ -252,10 +252,10 @@ (do async.monad [item channel] (case item - (#.Some [head tail]) + {#.Some [head tail]} (if (\ equivalence = previous head) (distinct' equivalence previous tail) - (in (#.Some [head (distinct' equivalence head tail)]))) + (in {#.Some [head (distinct' equivalence head tail)]})) #.None (in #.None)))) @@ -265,8 +265,8 @@ (do async.monad [item channel] (in (case item - (#.Some [head tail]) - (#.Some [head (distinct' equivalence head tail)]) + {#.Some [head tail]} + {#.Some [head (distinct' equivalence head tail)]} #.None #.None)))) @@ -276,8 +276,8 @@ (do [! async.monad] [item channel] (case item - (#.Some [head tail]) - (\ ! each (|>> (#.Item head)) + {#.Some [head tail]} + (\ ! each (|>> {#.Item head}) (list tail)) #.None @@ -289,7 +289,7 @@ #.End ..empty - (#.Item head tail) - (async.resolved (#.Some [head (do async.monad + {#.Item head tail} + (async.resolved {#.Some [head (do async.monad [_ (async.delay milli_seconds)] - (sequential milli_seconds tail))])))) + (sequential milli_seconds tail))]}))) diff --git a/stdlib/source/library/lux/control/concurrency/semaphore.lux b/stdlib/source/library/lux/control/concurrency/semaphore.lux index 013720460..755e201ff 100644 --- a/stdlib/source/library/lux/control/concurrency/semaphore.lux +++ b/stdlib/source/library/lux/control/concurrency/semaphore.lux @@ -89,9 +89,9 @@ #.None (in true) - (#.Some sink) + {#.Some sink} (sink []))] - (in (#try.Success (value@ #open_positions post)))))))))] + (in {#try.Success (value@ #open_positions post)})))))))] ) (abstract: .public Mutex diff --git a/stdlib/source/library/lux/control/concurrency/stm.lux b/stdlib/source/library/lux/control/concurrency/stm.lux index 6b89926ff..382859176 100644 --- a/stdlib/source/library/lux/control/concurrency/stm.lux +++ b/stdlib/source/library/lux/control/concurrency/stm.lux @@ -54,10 +54,10 @@ (do ! [result (\ sink feed new_value)] (case result - (#try.Success _) + {#try.Success _} (in []) - (#try.Failure _) + {#try.Failure _} (un_follow! sink var)))) observers)] (in [])) @@ -68,7 +68,7 @@ (do io.monad [.let [[channel sink] (frp.channel [])] _ (atom.update! (function (_ [value observers]) - [value (#.Item sink observers)]) + [value {#.Item sink observers}]) (:representation target))] (in [channel sink])))] ) @@ -99,12 +99,12 @@ (All (_ a) (-> (Var a) (STM a))) (function (_ tx) (case (var_value var tx) - (#.Some value) + {#.Some value} [tx value] #.None (let [value (..read! var)] - [(#.Item [var value value] tx) + [{#.Item [var value value] tx} value])))) (def: (with_updated_var var value tx) @@ -113,28 +113,28 @@ #.End #.End - (#.Item [_var _original _current] tx') + {#.Item [_var _original _current] tx'} (if (same? (:as (Var Any) var) (:as (Var Any) _var)) - (#.Item [#var (:as (Var Any) _var) + {#.Item [#var (:as (Var Any) _var) #original (:as Any _original) #current (:as Any value)] - tx') - (#.Item [#var _var + tx'} + {#.Item [#var _var #original _original #current _current] - (with_updated_var var value tx'))))) + (with_updated_var var value tx')}))) (def: .public (write value var) (All (_ a) (-> a (Var a) (STM Any))) (function (_ tx) (case (var_value var tx) - (#.Some _) + {#.Some _} [(with_updated_var var value tx) []] #.None - [(#.Item [var (..read! var) value] tx) + [{#.Item [var (..read! var) value] tx} []]))) (implementation: .public functor @@ -223,7 +223,7 @@ (atom.write! (product.right entry) pending_commits) (recur |commits|&resolve))) - (#.Some [head tail]) + {#.Some [head tail]} (recur tail))))))) (def: (process_commit! commit) diff --git a/stdlib/source/library/lux/control/concurrency/thread.lux b/stdlib/source/library/lux/control/concurrency/thread.lux index c9430c1ed..f52b7f319 100644 --- a/stdlib/source/library/lux/control/concurrency/thread.lux +++ b/stdlib/source/library/lux/control/concurrency/thread.lux @@ -91,14 +91,14 @@ (def: (execute! action) (-> (IO Any) Any) (case (try (io.run! action)) - (#try.Failure error) + {#try.Failure error} (exec ("lux io log" ($_ "lux text concat" "ERROR DURING THREAD EXECUTION:" text.new_line error)) []) - (#try.Success _) + {#try.Success _} [])) (def: .public (schedule! milli_seconds action) @@ -129,9 +129,9 @@ ... Default (do [! io.monad] [now (\ ! each (|>> instant.millis .nat) instant.now) - _ (atom.update! (|>> (#.Item [#creation now + _ (atom.update! (|>> {#.Item [#creation now #delay milli_seconds - #action action])) + #action action]}) ..runner)] (in []))))) diff --git a/stdlib/source/library/lux/control/exception.lux b/stdlib/source/library/lux/control/exception.lux index 039265ff7..3ea07e3e7 100644 --- a/stdlib/source/library/lux/control/exception.lux +++ b/stdlib/source/library/lux/control/exception.lux @@ -40,26 +40,26 @@ (-> (Exception e) (-> Text a) (Try a) (Try a))) (case try - (#//.Success output) - (#//.Success output) + {#//.Success output} + {#//.Success output} - (#//.Failure error) + {#//.Failure error} (let [reference (value@ #label exception)] (if (text.starts_with? reference error) - (#//.Success (|> error + {#//.Success (|> error (text.clip_since (text.size reference)) maybe.trusted - then)) - (#//.Failure error))))) + then)} + {#//.Failure error})))) (def: .public (otherwise else try) (All (_ a) (-> (-> Text a) (Try a) a)) (case try - (#//.Success output) + {#//.Success output} output - (#//.Failure error) + {#//.Failure error} (else error))) (def: .public (error exception message) @@ -68,12 +68,12 @@ (def: .public (except exception message) (All (_ e a) (-> (Exception e) e (Try a))) - (#//.Failure (..error exception message))) + {#//.Failure (..error exception message)}) (def: .public (assertion exception message test) (All (_ e) (-> (Exception e) e Bit (Try Any))) (if test - (#//.Success []) + {#//.Success []} (..except exception message))) (def: exception @@ -131,7 +131,7 @@ #.End "" - (#.Item head tail) + {#.Item head tail} (list\mix (function (_ post pre) ($_ text\composite pre text.new_line (on_entry post))) (on_entry head) @@ -148,8 +148,8 @@ (|> entries (list\mix (function (_ entry [index next]) [(++ index) - (#.Item [(n\encoded index) (format entry)] - next)]) + {#.Item [(n\encoded index) (format entry)] + next}]) [0 #.End]) product.right list.reversed @@ -173,13 +173,13 @@ (def: .public (with exception message computation) (All (_ e a) (-> (Exception e) e (Try a) (Try a))) (case computation - (#//.Failure error) - (#//.Failure (case error + {#//.Failure error} + {#//.Failure (case error "" (..error exception message) _ - (..decorated (..error exception message) error))) + (..decorated (..error exception message) error))} success success)) diff --git a/stdlib/source/library/lux/control/function/memo.lux b/stdlib/source/library/lux/control/function/memo.lux index 8e99b18ab..cccc36bf4 100644 --- a/stdlib/source/library/lux/control/function/memo.lux +++ b/stdlib/source/library/lux/control/function/memo.lux @@ -23,7 +23,7 @@ (do [! state.monad] [memory state.get] (case (dictionary.value input memory) - (#.Some output) + {#.Some output} (in output) #.None diff --git a/stdlib/source/library/lux/control/function/mutual.lux b/stdlib/source/library/lux/control/function/mutual.lux index 159f037e3..820d40253 100644 --- a/stdlib/source/library/lux/control/function/mutual.lux +++ b/stdlib/source/library/lux/control/function/mutual.lux @@ -58,7 +58,7 @@ #.End (in (list body)) - (#.Item mutual #.End) + {#.Item mutual #.End} (.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))) @@ -110,7 +110,7 @@ #.End (in (list)) - (#.Item definition #.End) + {#.Item definition #.End} (.let [(^slots [#export_policy #mutual]) definition (^slots [#declaration #type #body]) mutual] (in (list (` (.def: (~ export_policy) (~ (declaration.format declaration)) diff --git a/stdlib/source/library/lux/control/lazy.lux b/stdlib/source/library/lux/control/lazy.lux index 16b501d9e..baedf1354 100644 --- a/stdlib/source/library/lux/control/lazy.lux +++ b/stdlib/source/library/lux/control/lazy.lux @@ -25,13 +25,13 @@ (let [cache (atom.atom #.None)] (:abstraction (function (_ _) (case (io.run! (atom.read! cache)) - (#.Some value) + {#.Some value} value _ (let [value (generator [])] (exec - (io.run! (atom.compare_and_swap! _ (#.Some value) cache)) + (io.run! (atom.compare_and_swap! _ {#.Some value} cache)) value))))))) (def: .public (value lazy) diff --git a/stdlib/source/library/lux/control/maybe.lux b/stdlib/source/library/lux/control/maybe.lux index 036377285..0387618a8 100644 --- a/stdlib/source/library/lux/control/maybe.lux +++ b/stdlib/source/library/lux/control/maybe.lux @@ -13,7 +13,7 @@ ... (type: (Maybe a) ... #.None -... (#.Some a)) +... {#.Some a}) (implementation: .public monoid (All (_ a) (Monoid (Maybe a))) @@ -25,8 +25,8 @@ #.None my - (#.Some x) - (#.Some x)))) + {#.Some x} + {#.Some x}))) (implementation: .public functor (Functor Maybe) @@ -34,7 +34,7 @@ (def: (each f ma) (case ma #.None #.None - (#.Some a) (#.Some (f a))))) + {#.Some a} {#.Some (f a)}))) (implementation: .public apply (Apply Maybe) @@ -43,8 +43,8 @@ (def: (on fa ff) (case [ff fa] - [(#.Some f) (#.Some a)] - (#.Some (f a)) + [{#.Some f} {#.Some a}] + {#.Some (f a)} _ #.None))) @@ -55,14 +55,14 @@ (def: &functor ..functor) (def: (in x) - (#.Some x)) + {#.Some x}) (def: (conjoint mma) (case mma #.None #.None - (#.Some mx) + {#.Some mx} mx))) (implementation: .public (equivalence super) @@ -73,7 +73,7 @@ [#.None #.None] #1 - [(#.Some x) (#.Some y)] + [{#.Some x} {#.Some y}] (\ super = x y) _ @@ -90,7 +90,7 @@ #.None 0 - (#.Some value) + {#.Some value} (\ super hash value)))) (implementation: .public (with monad) @@ -109,7 +109,7 @@ #.None (in #.None) - (#.Some Mma) + {#.Some Mma} Mma)))) (def: .public (lifted monad) @@ -119,16 +119,16 @@ (macro: .public (else tokens state) (case tokens (^ (.list else maybe)) - (let [g!temp (: Code [location.dummy (#.Identifier ["" ""])])] - (#.Right [state (.list (` (case (~ maybe) - (#.Some (~ g!temp)) + (let [g!temp (: Code [location.dummy {#.Identifier ["" ""]}])] + {#.Right [state (.list (` (case (~ maybe) + {#.Some (~ g!temp)} (~ g!temp) #.None - (~ else))))])) + (~ else))))]}) _ - (#.Left "Wrong syntax for else"))) + {#.Left "Wrong syntax for else"})) (def: .public trusted (All (_ a) (-> (Maybe a) a)) @@ -140,15 +140,15 @@ #.None #.End - (#.Some value) - (#.Item value #.End))) + {#.Some value} + {#.Item value #.End})) (macro: .public (when tokens state) (case tokens (^ (.list test then)) - (#.Right [state (.list (` (.if (~ test) + {#.Right [state (.list (` (.if (~ test) (~ then) - #.None)))]) + #.None)))]} _ - (#.Left "Wrong syntax for when"))) + {#.Left "Wrong syntax for when"})) diff --git a/stdlib/source/library/lux/control/parser.lux b/stdlib/source/library/lux/control/parser.lux index 7b7c499aa..17731a079 100644 --- a/stdlib/source/library/lux/control/parser.lux +++ b/stdlib/source/library/lux/control/parser.lux @@ -25,11 +25,11 @@ (def: (each f ma) (function (_ input) (case (ma input) - (#try.Failure msg) - (#try.Failure msg) + {#try.Failure msg} + {#try.Failure msg} - (#try.Success [input' a]) - (#try.Success [input' (f a)]))))) + {#try.Success [input' a]} + {#try.Success [input' (f a)]})))) (implementation: .public apply (All (_ s) (Apply (Parser s))) @@ -39,16 +39,16 @@ (def: (on fa ff) (function (_ input) (case (ff input) - (#try.Success [input' f]) + {#try.Success [input' f]} (case (fa input') - (#try.Success [input'' a]) - (#try.Success [input'' (f a)]) + {#try.Success [input'' a]} + {#try.Success [input'' (f a)]} - (#try.Failure msg) - (#try.Failure msg)) + {#try.Failure msg} + {#try.Failure msg}) - (#try.Failure msg) - (#try.Failure msg))))) + {#try.Failure msg} + {#try.Failure msg})))) (implementation: .public monad (All (_ s) (Monad (Parser s))) @@ -57,34 +57,34 @@ (def: (in x) (function (_ input) - (#try.Success [input x]))) + {#try.Success [input x]})) (def: (conjoint mma) (function (_ input) (case (mma input) - (#try.Failure msg) - (#try.Failure msg) + {#try.Failure msg} + {#try.Failure msg} - (#try.Success [input' ma]) + {#try.Success [input' ma]} (ma input'))))) (def: .public (assertion message test) (All (_ s) (-> Text Bit (Parser s Any))) (function (_ input) (if test - (#try.Success [input []]) - (#try.Failure message)))) + {#try.Success [input []]} + {#try.Failure message}))) (def: .public (maybe parser) (All (_ s a) (-> (Parser s a) (Parser s (Maybe a)))) (function (_ input) (case (parser input) - (#try.Failure _) - (#try.Success [input #.None]) + {#try.Failure _} + {#try.Success [input #.None]} - (#try.Success [input' x]) - (#try.Success [input' (#.Some x)])))) + {#try.Success [input' x]} + {#try.Success [input' {#.Some x}]}))) (def: .public (result parser input) (All (_ s a) @@ -103,23 +103,23 @@ (-> (Parser s a) (Parser s b) (Parser s (Or a b)))) (function (_ tokens) (case (left tokens) - (#try.Success [tokens' output]) - (#try.Success [tokens' (0 #0 output)]) + {#try.Success [tokens' output]} + {#try.Success [tokens' {0 #0 output}]} - (#try.Failure _) + {#try.Failure _} (case (right tokens) - (#try.Success [tokens' output]) - (#try.Success [tokens' (0 #1 output)]) + {#try.Success [tokens' output]} + {#try.Success [tokens' {0 #1 output}]} - (#try.Failure error) - (#try.Failure error))))) + {#try.Failure error} + {#try.Failure error})))) (def: .public (either this that) (All (_ s a) (-> (Parser s a) (Parser s a) (Parser s a))) (function (_ tokens) (case (this tokens) - (#try.Failure _) + {#try.Failure _} (that tokens) output @@ -130,10 +130,10 @@ (-> (Parser s a) (Parser s (List a)))) (function (_ input) (case (parser input) - (#try.Failure _) - (#try.Success [input (list)]) + {#try.Failure _} + {#try.Success [input (list)]} - (#try.Success [input' head]) + {#try.Success [input' head]} (..result (\ ..monad each (|>> (list& head)) (some parser)) input')))) @@ -153,7 +153,7 @@ [x parser] (|> parser (exactly (-- amount)) - (\ ! each (|>> (#.Item x))))))) + (\ ! each (|>> {#.Item x})))))) (def: .public (at_least amount parser) (All (_ s a) (-> Nat (Parser s a) (Parser s (List a)))) @@ -167,11 +167,11 @@ 0 (\ ..monad in (list)) _ (function (_ input) (case (parser input) - (#try.Failure msg) - (#try.Success [input (list)]) + {#try.Failure msg} + {#try.Success [input (list)]} - (#try.Success [input' x]) - (..result (\ ..monad each (|>> (#.Item x)) + {#try.Success [input' x]} + (..result (\ ..monad each (|>> {#.Item x}) (at_most (-- amount) parser)) input'))))) @@ -192,51 +192,51 @@ #.None (in #.End) - (#.Some x) + {#.Some x} (|> parser (..and separator) ..some - (\ ! each (|>> (list\each product.right) (#.Item x))))))) + (\ ! each (|>> (list\each product.right) {#.Item x})))))) (def: .public (not parser) (All (_ s a) (-> (Parser s a) (Parser s Any))) (function (_ input) (case (parser input) - (#try.Failure msg) - (#try.Success [input []]) + {#try.Failure msg} + {#try.Success [input []]} _ - (#try.Failure "Expected to fail; yet succeeded.")))) + {#try.Failure "Expected to fail; yet succeeded."}))) (def: .public (failure message) (All (_ s a) (-> Text (Parser s a))) (function (_ input) - (#try.Failure message))) + {#try.Failure message})) (def: .public (lifted operation) (All (_ s a) (-> (Try a) (Parser s a))) (function (_ input) (case operation - (#try.Success output) - (#try.Success [input output]) + {#try.Success output} + {#try.Success [input output]} - (#try.Failure error) - (#try.Failure error)))) + {#try.Failure error} + {#try.Failure error}))) (def: .public (else value parser) (All (_ s a) (-> a (Parser s a) (Parser s a))) (function (_ input) (case (parser input) - (#try.Failure error) - (#try.Success [input value]) + {#try.Failure error} + {#try.Success [input value]} - (#try.Success [input' output]) - (#try.Success [input' output])))) + {#try.Success [input' output]} + {#try.Success [input' output]}))) (def: .public remaining (All (_ s) (Parser s s)) (function (_ inputs) - (#try.Success [inputs inputs]))) + {#try.Success [inputs inputs]})) (def: .public (rec parser) (All (_ s a) (-> (-> (Parser s a) (Parser s a)) (Parser s a))) @@ -267,28 +267,28 @@ (All (_ s a) (-> (Parser s a) (Parser s Bit))) (function (_ input) (case (parser input) - (#try.Failure error) - (#try.Success [input false]) + {#try.Failure error} + {#try.Success [input false]} - (#try.Success [input' _]) - (#try.Success [input' true])))) + {#try.Success [input' _]} + {#try.Success [input' true]}))) (def: .public (parses parser) (All (_ s a) (-> (Parser s a) (Parser s Any))) (function (_ input) (case (parser input) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success [input' _]) - (#try.Success [input' []])))) + {#try.Success [input' _]} + {#try.Success [input' []]}))) (def: .public (speculative parser) (All (_ s a) (-> (Parser s a) (Parser s a))) (function (_ input) (case (parser input) - (#try.Success [input' output]) - (#try.Success [input output]) + {#try.Success [input' output]} + {#try.Success [input output]} output output))) @@ -297,13 +297,13 @@ (All (_ s a z) (-> (Codec a z) (Parser s a) (Parser s z))) (function (_ input) (case (parser input) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success [input' to_decode]) + {#try.Success [input' to_decode]} (case (\ codec decoded to_decode) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success value) - (#try.Success [input' value]))))) + {#try.Success value} + {#try.Success [input' value]})))) diff --git a/stdlib/source/library/lux/control/parser/analysis.lux b/stdlib/source/library/lux/control/parser/analysis.lux index bbc90f043..0c5f47cb3 100644 --- a/stdlib/source/library/lux/control/parser/analysis.lux +++ b/stdlib/source/library/lux/control/parser/analysis.lux @@ -53,13 +53,13 @@ (def: .public (result parser input) (All (_ a) (-> (Parser a) (List Analysis) (Try a))) (case (parser input) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success [#.End value]) - (#try.Success value) + {#try.Success [#.End value]} + {#try.Success value} - (#try.Success [unconsumed _]) + {#try.Success [unconsumed _]} (exception.except ..unconsumed_input unconsumed))) (def: .public any @@ -69,23 +69,23 @@ #.End (exception.except ..cannot_parse input) - (#.Item [head tail]) - (#try.Success [tail head])))) + {#.Item [head tail]} + {#try.Success [tail head]}))) (def: .public end! (Parser Any) (function (_ tokens) (case tokens - #.End (#try.Success [tokens []]) - _ (#try.Failure (format "Expected list of tokens to be empty!" - (remaining_inputs tokens)))))) + #.End {#try.Success [tokens []]} + _ {#try.Failure (format "Expected list of tokens to be empty!" + (remaining_inputs tokens))}))) (def: .public end? (Parser Bit) (function (_ tokens) - (#try.Success [tokens (case tokens + {#try.Success [tokens (case tokens #.End true - _ false)]))) + _ false)]})) (template [ ] [(`` (as_is (def: .public @@ -93,7 +93,7 @@ (function (_ input) (case input (^ (list& ( x) input')) - (#try.Success [input' x]) + {#try.Success [input' x]} _ (exception.except ..cannot_parse input)))) @@ -104,7 +104,7 @@ (case input (^ (list& ( actual) input')) (if (\ = expected actual) - (#try.Success [input' []]) + {#try.Success [input' []]} (exception.except ..cannot_parse input)) _ @@ -128,7 +128,7 @@ (^ (list& (/.tuple head) tail)) (do try.monad [output (..result parser head)] - (#try.Success [tail output])) + {#try.Success [tail output]}) _ (exception.except ..cannot_parse input)))) diff --git a/stdlib/source/library/lux/control/parser/binary.lux b/stdlib/source/library/lux/control/parser/binary.lux index d6de3c7cd..0f5e925e1 100644 --- a/stdlib/source/library/lux/control/parser/binary.lux +++ b/stdlib/source/library/lux/control/parser/binary.lux @@ -41,29 +41,29 @@ (def: .public (result parser input) (All (_ a) (-> (Parser a) Binary (Try a))) (case (parser [0 input]) - (#try.Failure msg) - (#try.Failure msg) + {#try.Failure msg} + {#try.Failure msg} - (#try.Success [[end _] output]) + {#try.Success [[end _] output]} (let [length (/.size input)] (if (n.= end length) - (#try.Success output) + {#try.Success output} (exception.except ..binary_was_not_fully_read [length end]))))) (def: .public end? (Parser Bit) (function (_ (^@ input [offset data])) - (#try.Success [input (n.= offset (/.size data))]))) + {#try.Success [input (n.= offset (/.size data))]})) (def: .public offset (Parser Offset) (function (_ (^@ input [offset data])) - (#try.Success [input offset]))) + {#try.Success [input offset]})) (def: .public remaining (Parser Nat) (function (_ (^@ input [offset data])) - (#try.Success [input (n.- offset (/.size data))]))) + {#try.Success [input (n.- offset (/.size data))]})) (type: .public Size Nat) @@ -78,11 +78,11 @@ (Parser I64) (function (_ [offset binary]) (case ( offset binary) - (#try.Success data) - (#try.Success [(n.+ offset) binary] data) + {#try.Success data} + {#try.Success [(n.+ offset) binary] data} - (#try.Failure error) - (#try.Failure error))))] + {#try.Failure error} + {#try.Failure error})))] [bits/8 ..size/8 /.read/8!] [bits/16 ..size/16 /.read/16!] @@ -115,7 +115,7 @@ (with_expansions [+' (template.spliced +)] (case flag (^template [ ] - [ (`` (\ ! each (|>> ((~~ (template.spliced )))) ))]) + [ (`` (\ ! each (|>> {(~~ (template.spliced ))}) ))]) (+') _ (//.lifted (exception.except ..invalid_tag [(template.amount [+]) flag])))))]) @@ -154,7 +154,7 @@ (-> Nat (Parser Binary)) (function (_ [offset binary]) (case size - 0 (#try.Success [[offset binary] (/.empty 0)]) + 0 {#try.Success [[offset binary] (/.empty 0)]} _ (|> binary (/.slice offset size) (\ try.monad each (|>> [[(n.+ size offset) binary]])))))) diff --git a/stdlib/source/library/lux/control/parser/cli.lux b/stdlib/source/library/lux/control/parser/cli.lux index c60b80d6a..aca4512fb 100644 --- a/stdlib/source/library/lux/control/parser/cli.lux +++ b/stdlib/source/library/lux/control/parser/cli.lux @@ -16,26 +16,26 @@ (def: .public (result parser inputs) (All (_ a) (-> (Parser a) (List Text) (Try a))) (case (//.result parser inputs) - (#try.Success [remaining output]) + {#try.Success [remaining output]} (case remaining #.End - (#try.Success output) + {#try.Success output} _ - (#try.Failure (format "Remaining CLI inputs: " (text.interposed " " remaining)))) + {#try.Failure (format "Remaining CLI inputs: " (text.interposed " " remaining))}) - (#try.Failure try) - (#try.Failure try))) + {#try.Failure try} + {#try.Failure try})) (def: .public any (Parser Text) (function (_ inputs) (case inputs - (#.Item arg inputs') - (#try.Success [inputs' arg]) + {#.Item arg inputs'} + {#try.Success [inputs' arg]} _ - (#try.Failure "Cannot parse empty arguments.")))) + {#try.Failure "Cannot parse empty arguments."}))) (def: .public (parse parser) (All (_ a) (-> (-> Text (Try a)) (Parser a))) @@ -52,33 +52,33 @@ [[remaining raw] (any inputs)] (if (text\= reference raw) (in [remaining []]) - (#try.Failure (format "Missing token: '" reference "'")))))) + {#try.Failure (format "Missing token: '" reference "'")})))) (def: .public (somewhere cli) (All (_ a) (-> (Parser a) (Parser a))) (function (_ inputs) (loop [immediate inputs] (case (//.result cli immediate) - (#try.Success [remaining output]) - (#try.Success [remaining output]) + {#try.Success [remaining output]} + {#try.Success [remaining output]} - (#try.Failure try) + {#try.Failure try} (case immediate #.End - (#try.Failure try) + {#try.Failure try} - (#.Item to_omit immediate') + {#.Item to_omit immediate'} (do try.monad [[remaining output] (recur immediate')] - (in [(#.Item to_omit remaining) + (in [{#.Item to_omit remaining} output]))))))) (def: .public end (Parser Any) (function (_ inputs) (case inputs - #.End (#try.Success [inputs []]) - _ (#try.Failure (format "Unknown parameters: " (text.interposed " " inputs)))))) + #.End {#try.Success [inputs []]} + _ {#try.Failure (format "Unknown parameters: " (text.interposed " " inputs))}))) (def: .public (named name value) (All (_ a) (-> Text (Parser a) (Parser a))) diff --git a/stdlib/source/library/lux/control/parser/code.lux b/stdlib/source/library/lux/control/parser/code.lux index f9fc4d550..d58874cf4 100644 --- a/stdlib/source/library/lux/control/parser/code.lux +++ b/stdlib/source/library/lux/control/parser/code.lux @@ -25,7 +25,7 @@ (All (_ a) (-> (List [a a]) (List a))) (case pairs #.End #.End - (#.Item [[x y] pairs']) (list& x y (un_paired pairs')))) + {#.Item [[x y] pairs']} (list& x y (un_paired pairs')))) (type: .public Parser (//.Parser (List Code))) @@ -41,29 +41,29 @@ (function (_ tokens) (case tokens #.End - (#try.Failure "There are no tokens to parse!") + {#try.Failure "There are no tokens to parse!"} - (#.Item [t tokens']) - (#try.Success [tokens' t])))) + {#.Item [t tokens']} + {#try.Success [tokens' t]}))) (def: .public next (Parser Code) (function (_ tokens) (case tokens #.End - (#try.Failure "There are no tokens to parse!") + {#try.Failure "There are no tokens to parse!"} - (#.Item next _) - (#try.Success [tokens next])))) + {#.Item next _} + {#try.Success [tokens next]}))) (template [ ] - [(with_expansions [ (as_is (#try.Failure ($_ text\composite "Cannot parse " (remaining_inputs tokens))))] + [(with_expansions [ (as_is {#try.Failure ($_ text\composite "Cannot parse " (remaining_inputs tokens))})] (def: .public (Parser ) (function (_ tokens) (case tokens - (#.Item [[_ ( x)] tokens']) - (#try.Success [tokens' x]) + {#.Item [[_ { x}] tokens']} + {#try.Success [tokens' x]} _ ))) @@ -72,9 +72,9 @@ (-> (Parser Any)) (function (_ tokens) (case tokens - (#.Item [[_ ( actual)] tokens']) + {#.Item [[_ { actual}] tokens']} (if (\ = expected actual) - (#try.Success [tokens' []]) + {#try.Success [tokens' []]} ) _ @@ -94,23 +94,23 @@ (-> Code (Parser Any)) (function (_ tokens) (case tokens - (#.Item [token tokens']) + {#.Item [token tokens']} (if (code\= code token) - (#try.Success [tokens' []]) - (#try.Failure ($_ text\composite "Expected a " (code.format code) " but instead got " (code.format token) - (remaining_inputs tokens)))) + {#try.Success [tokens' []]} + {#try.Failure ($_ text\composite "Expected a " (code.format code) " but instead got " (code.format token) + (remaining_inputs tokens))}) _ - (#try.Failure "There are no tokens to parse!")))) + {#try.Failure "There are no tokens to parse!"}))) (template [ ] - [(with_expansions [ (as_is (#try.Failure ($_ text\composite "Cannot parse " (remaining_inputs tokens))))] + [(with_expansions [ (as_is {#try.Failure ($_ text\composite "Cannot parse " (remaining_inputs tokens))})] (def: .public (Parser Text) (function (_ tokens) (case tokens - (#.Item [[_ ( ["" x])] tokens']) - (#try.Success [tokens' x]) + {#.Item [[_ { ["" x]}] tokens']} + {#try.Success [tokens' x]} _ ))) @@ -119,9 +119,9 @@ (-> Text (Parser Any)) (function (_ tokens) (case tokens - (#.Item [[_ ( ["" actual])] tokens']) + {#.Item [[_ { ["" actual]}] tokens']} (if (\ = expected actual) - (#try.Success [tokens' []]) + {#try.Success [tokens' []]} ) _ @@ -137,13 +137,13 @@ (-> (Parser a) (Parser a))) (function (_ tokens) (case tokens - (#.Item [[_ ( members)] tokens']) + {#.Item [[_ { members}] tokens']} (case (p members) - (#try.Success [#.End x]) (#try.Success [tokens' x]) - _ (#try.Failure ($_ text\composite "Parser was expected to fully consume " (remaining_inputs tokens)))) + {#try.Success [#.End x]} {#try.Success [tokens' x]} + _ {#try.Failure ($_ text\composite "Parser was expected to fully consume " (remaining_inputs tokens))}) _ - (#try.Failure ($_ text\composite "Cannot parse " (remaining_inputs tokens))))))] + {#try.Failure ($_ text\composite "Cannot parse " (remaining_inputs tokens))})))] [form #.Form "form"] [variant #.Variant "variant"] @@ -154,32 +154,32 @@ (Parser Any) (function (_ tokens) (case tokens - #.End (#try.Success [tokens []]) - _ (#try.Failure ($_ text\composite "Expected list of tokens to be empty!" (remaining_inputs tokens)))))) + #.End {#try.Success [tokens []]} + _ {#try.Failure ($_ text\composite "Expected list of tokens to be empty!" (remaining_inputs tokens))}))) (def: .public end? (Parser Bit) (function (_ tokens) - (#try.Success [tokens (case tokens + {#try.Success [tokens (case tokens #.End true - _ false)]))) + _ false)]})) (def: .public (result parser inputs) (All (_ a) (-> (Parser a) (List Code) (Try a))) (case (parser inputs) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success [unconsumed value]) + {#try.Success [unconsumed value]} (case unconsumed #.End - (#try.Success value) + {#try.Success value} _ - (#try.Failure (|> unconsumed + {#try.Failure (|> unconsumed (list\each code.format) (text.interposed ", ") - (text\composite "Unconsumed inputs: ")))))) + (text\composite "Unconsumed inputs: "))}))) (def: .public (local inputs parser) (All (_ a) (-> (List Code) (Parser a) (Parser a))) @@ -195,5 +195,5 @@ result (//.or parser ..any)] (case result - (#.Left _) (//.failure (text\composite "Did NOT expect to parse code: " (code.format sample))) - (#.Right output) (in output)))) + {#.Left _} (//.failure (text\composite "Did NOT expect to parse code: " (code.format sample))) + {#.Right output} (in output)))) diff --git a/stdlib/source/library/lux/control/parser/environment.lux b/stdlib/source/library/lux/control/parser/environment.lux index 1ad723411..ce254222e 100644 --- a/stdlib/source/library/lux/control/parser/environment.lux +++ b/stdlib/source/library/lux/control/parser/environment.lux @@ -33,8 +33,8 @@ (-> Property (Parser Text)) (function (_ environment) (case (dictionary.value name environment) - (#.Some value) - (#try.Success [environment value]) + {#.Some value} + {#try.Success [environment value]} #.None (exception.except ..unknown_property [name])))) diff --git a/stdlib/source/library/lux/control/parser/json.lux b/stdlib/source/library/lux/control/parser/json.lux index 4d09fa72b..3a0d76c1f 100644 --- a/stdlib/source/library/lux/control/parser/json.lux +++ b/stdlib/source/library/lux/control/parser/json.lux @@ -34,16 +34,16 @@ (def: .public (result parser json) (All (_ a) (-> (Parser a) JSON (Try a))) (case (//.result parser (list json)) - (#try.Success [remainder output]) + {#try.Success [remainder output]} (case remainder #.End - (#try.Success output) + {#try.Success output} _ (exception.except ..unconsumed_input remainder)) - (#try.Failure error) - (#try.Failure error))) + {#try.Failure error} + {#try.Failure error})) (def: .public any (Parser JSON) @@ -52,8 +52,8 @@ #.End (exception.except ..empty_input []) - (#.Item head tail) - (#try.Success [tail head])))) + {#.Item head tail} + {#try.Success [tail head]}))) (exception: .public (unexpected_value [value JSON]) (exception.report @@ -65,7 +65,7 @@ (do //.monad [head ..any] (case head - ( value) + { value} (in value) _ @@ -89,7 +89,7 @@ (do //.monad [head ..any] (case head - ( value) + { value} (in (\ = test value)) _ @@ -100,10 +100,10 @@ (do //.monad [head ..any] (case head - ( value) + { value} (if (\ = test value) (in []) - (//.failure (exception.error ..value_mismatch [( test) ( value)]))) + (//.failure (exception.error ..value_mismatch [{ test} { value}]))) _ (//.failure (exception.error ..unexpected_value [head])))))] @@ -123,12 +123,12 @@ (do //.monad [head ..any] (case head - (#/.Array values) + {#/.Array values} (case (//.result parser (row.list values)) - (#try.Failure error) + {#try.Failure error} (//.failure error) - (#try.Success [remainder output]) + {#try.Success [remainder output]} (case remainder #.End (in output) @@ -144,17 +144,17 @@ (do //.monad [head ..any] (case head - (#/.Object kvs) + {#/.Object kvs} (case (|> kvs dictionary.entries (list\each (function (_ [key value]) - (list (#/.String key) value))) + (list {#/.String key} value))) list.together (//.result parser)) - (#try.Failure error) + {#try.Failure error} (//.failure error) - (#try.Success [remainder output]) + {#try.Success [remainder output]} (case remainder #.End (in output) @@ -169,20 +169,20 @@ (All (_ a) (-> Text (Parser a) (Parser a))) (function (recur inputs) (case inputs - (^ (list& (#/.String key) value inputs')) + (^ (list& {#/.String key} value inputs')) (if (text\= key field_name) (case (//.result parser (list value)) - (#try.Success [#.End output]) - (#try.Success [inputs' output]) + {#try.Success [#.End output]} + {#try.Success [inputs' output]} - (#try.Success [inputs'' _]) + {#try.Success [inputs'' _]} (exception.except ..unconsumed_input inputs'') - (#try.Failure error) - (#try.Failure error)) + {#try.Failure error} + {#try.Failure error}) (do try.monad [[inputs'' output] (recur inputs')] - (in [(list& (#/.String key) value inputs'') + (in [(list& {#/.String key} value inputs'') output]))) #.End diff --git a/stdlib/source/library/lux/control/parser/synthesis.lux b/stdlib/source/library/lux/control/parser/synthesis.lux index 0bc446089..1578f9115 100644 --- a/stdlib/source/library/lux/control/parser/synthesis.lux +++ b/stdlib/source/library/lux/control/parser/synthesis.lux @@ -53,13 +53,13 @@ (def: .public (result parser input) (All (_ a) (-> (Parser a) (List Synthesis) (Try a))) (case (parser input) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success [#.End value]) - (#try.Success value) + {#try.Success [#.End value]} + {#try.Success value} - (#try.Success [unconsumed _]) + {#try.Success [unconsumed _]} (exception.except ..unconsumed_input unconsumed))) (def: .public any @@ -69,22 +69,22 @@ #.End (exception.except ..empty_input []) - (#.Item [head tail]) - (#try.Success [tail head])))) + {#.Item [head tail]} + {#try.Success [tail head]}))) (def: .public end! (Parser Any) (.function (_ tokens) (case tokens - #.End (#try.Success [tokens []]) + #.End {#try.Success [tokens []]} _ (exception.except ..expected_empty_input [tokens])))) (def: .public end? (Parser Bit) (.function (_ tokens) - (#try.Success [tokens (case tokens + {#try.Success [tokens (case tokens #.End true - _ false)]))) + _ false)]})) (template [ ] [(`` (def: .public @@ -92,7 +92,7 @@ (.function (_ input) (case input (^ (list& ( x) input')) - (#try.Success [input' x]) + {#try.Success [input' x]} _ (exception.except ..cannot_parse input))))) @@ -103,7 +103,7 @@ (case input (^ (list& ( actual) input')) (if (\ = expected actual) - (#try.Success [input' []]) + {#try.Success [input' []]} (exception.except ..cannot_parse input)) _ @@ -125,7 +125,7 @@ (^ (list& (/.tuple head) tail)) (do try.monad [output (..result parser head)] - (#try.Success [tail output])) + {#try.Success [tail output]}) _ (exception.except ..cannot_parse input)))) @@ -138,7 +138,7 @@ (if (n.= expected actual) (do try.monad [output (..result parser (list body))] - (#try.Success [tail [environment output]])) + {#try.Success [tail [environment output]]}) (exception.except ..wrong_arity [expected actual])) _ @@ -152,7 +152,7 @@ (do try.monad [inits (..result init_parsers inits) iteration (..result iteration_parser (list iteration))] - (#try.Success [tail [start inits iteration]])) + {#try.Success [tail [start inits iteration]]}) _ (exception.except ..cannot_parse input)))) diff --git a/stdlib/source/library/lux/control/parser/text.lux b/stdlib/source/library/lux/control/parser/text.lux index 9c847ad5c..8594dc353 100644 --- a/stdlib/source/library/lux/control/parser/text.lux +++ b/stdlib/source/library/lux/control/parser/text.lux @@ -58,18 +58,18 @@ (def: .public (result parser input) (All (_ a) (-> (Parser a) Text (Try a))) (case (parser [start_offset input]) - (#try.Failure msg) - (#try.Failure msg) + {#try.Failure msg} + {#try.Failure msg} - (#try.Success [[end_offset _] output]) + {#try.Success [[end_offset _] output]} (if (n.= end_offset (/.size input)) - (#try.Success output) + {#try.Success output} (exception.except ..unconsumed_input [end_offset input])))) (def: .public offset (Parser Offset) (function (_ (^@ input [offset tape])) - (#try.Success [input offset]))) + {#try.Success [input offset]})) (def: (with_slices parser) (-> (Parser (List Slice)) (Parser Slice)) @@ -87,8 +87,8 @@ (Parser Text) (function (_ [offset tape]) (case (/.char offset tape) - (#.Some output) - (#try.Success [[("lux i64 +" 1 offset) tape] (/.of_char output)]) + {#.Some output} + {#try.Success [[("lux i64 +" 1 offset) tape] (/.of_char output)]} _ (exception.except ..cannot_parse [])))) @@ -97,10 +97,10 @@ (Parser Slice) (function (_ [offset tape]) (case (/.char offset tape) - (#.Some _) - (#try.Success [[("lux i64 +" 1 offset) tape] + {#.Some _} + {#try.Success [[("lux i64 +" 1 offset) tape] [#basis offset - #distance 1]]) + #distance 1]]} _ (exception.except ..cannot_slice [])))) @@ -110,7 +110,7 @@ (All (_ a) (-> (Parser a) (Parser ))) (function (_ input) (case (parser input) - (#try.Failure msg) + {#try.Failure msg} ( input) _ @@ -128,10 +128,10 @@ (-> Text (Parser Any)) (function (_ [offset tape]) (case (/.index_since offset reference tape) - (#.Some where) + {#.Some where} (if (n.= offset where) - (#try.Success [[("lux i64 +" (/.size reference) offset) tape] - []]) + {#try.Success [[("lux i64 +" (/.size reference) offset) tape] + []]} (exception.except ..cannot_match [reference])) _ @@ -141,15 +141,15 @@ (Parser Any) (function (_ (^@ input [offset tape])) (if (n.= offset (/.size tape)) - (#try.Success [input []]) + {#try.Success [input []]} (exception.except ..unconsumed_input input)))) (def: .public next (Parser Text) (function (_ (^@ input [offset tape])) (case (/.char offset tape) - (#.Some output) - (#try.Success [input (/.of_char output)]) + {#.Some output} + {#try.Success [input (/.of_char output)]} _ (exception.except ..cannot_parse [])))) @@ -157,7 +157,7 @@ (def: .public remaining (Parser Text) (function (_ (^@ input [offset tape])) - (#try.Success [input (..left_over offset tape)]))) + {#try.Success [input (..left_over offset tape)]})) (def: .public (range bottom top) (-> Nat Nat (Parser Text)) @@ -211,10 +211,10 @@ (-> Text (Parser Text)) (function (_ [offset tape]) (case (/.char offset tape) - (#.Some output) + {#.Some output} (let [output' (/.of_char output)] (if ( (/.contains? output' options)) - (#try.Success [[("lux i64 +" 1 offset) tape] output']) + {#try.Success [[("lux i64 +" 1 offset) tape] output']} (exception.except [options output]))) _ @@ -229,12 +229,12 @@ (-> Text (Parser Slice)) (function (_ [offset tape]) (case (/.char offset tape) - (#.Some output) + {#.Some output} (let [output' (/.of_char output)] (if ( (/.contains? output' options)) - (#try.Success [[("lux i64 +" 1 offset) tape] + {#try.Success [[("lux i64 +" 1 offset) tape] [#basis offset - #distance 1]]) + #distance 1]]} (exception.except [options output]))) _ @@ -252,9 +252,9 @@ (-> (-> Char Bit) (Parser Text)) (function (_ [offset tape]) (case (/.char offset tape) - (#.Some output) + {#.Some output} (if (parser output) - (#try.Success [[("lux i64 +" 1 offset) tape] (/.of_char output)]) + {#try.Success [[("lux i64 +" 1 offset) tape] (/.of_char output)]} (exception.except ..character_does_not_satisfy_predicate [output])) _ @@ -340,11 +340,11 @@ (All (_ a) (-> Text (Parser a) (Parser a))) (function (_ real_input) (case (..result parser local_input) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success value) - (#try.Success [real_input value])))) + {#try.Success value} + {#try.Success [real_input value]}))) (def: .public (slice parser) (-> (Parser Slice) (Parser Text)) @@ -352,8 +352,8 @@ [[basis distance] parser] (function (_ (^@ input [offset tape])) (case (/.clip basis distance tape) - (#.Some output) - (#try.Success [input output]) + {#.Some output} + {#try.Success [input output]} #.None (exception.except ..cannot_slice []))))) diff --git a/stdlib/source/library/lux/control/parser/tree.lux b/stdlib/source/library/lux/control/parser/tree.lux index 7a28812ac..68b4336a5 100644 --- a/stdlib/source/library/lux/control/parser/tree.lux +++ b/stdlib/source/library/lux/control/parser/tree.lux @@ -28,7 +28,7 @@ (def: .public value (All (_ t) (Parser t t)) (function (_ zipper) - (#try.Success [zipper (zipper.value zipper)]))) + {#try.Success [zipper (zipper.value zipper)]})) (exception: .public cannot_move_further) @@ -40,8 +40,8 @@ #.None (exception.except ..cannot_move_further []) - (#.Some next) - (#try.Success [next []]))))] + {#.Some next} + {#try.Success [next []]})))] [down zipper.down] [up zipper.up] diff --git a/stdlib/source/library/lux/control/parser/type.lux b/stdlib/source/library/lux/control/parser/type.lux index c75df1031..4e2414934 100644 --- a/stdlib/source/library/lux/control/parser/type.lux +++ b/stdlib/source/library/lux/control/parser/type.lux @@ -23,7 +23,7 @@ ["[0]" //]) (template: (|recursion_dummy|) - [(#.Primitive "" #.End)]) + [{#.Primitive "" #.End}]) (template [] [(exception: .public ( [type Type]) @@ -74,13 +74,13 @@ (def: (result' env poly types) (All (_ a) (-> Env (Parser a) (List Type) (Try a))) (case (//.result poly [env types]) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success [[env' remaining] output]) + {#try.Success [[env' remaining] output]} (case remaining #.End - (#try.Success output) + {#try.Success output} _ (exception.except ..unconsumed_input remaining)))) @@ -92,17 +92,17 @@ (def: .public env (Parser Env) (.function (_ [env inputs]) - (#try.Success [[env inputs] env]))) + {#try.Success [[env inputs] env]})) (def: (with_env temp poly) (All (_ a) (-> Env (Parser a) (Parser a))) (.function (_ [env inputs]) (case (//.result poly [temp inputs]) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success [[_ remaining] output]) - (#try.Success [[env remaining] output])))) + {#try.Success [[_ remaining] output]} + {#try.Success [[env remaining] output]}))) (def: .public next (Parser Type) @@ -111,8 +111,8 @@ #.End (exception.except ..empty_input []) - (#.Item headT tail) - (#try.Success [[env inputs] headT])))) + {#.Item headT tail} + {#try.Success [[env inputs] headT]}))) (def: .public any (Parser Type) @@ -121,18 +121,18 @@ #.End (exception.except ..empty_input []) - (#.Item headT tail) - (#try.Success [[env tail] headT])))) + {#.Item headT tail} + {#try.Success [[env tail] headT]}))) (def: .public (local types poly) (All (_ a) (-> (List Type) (Parser a) (Parser a))) (.function (_ [env pass_through]) (case (result' env poly types) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success output) - (#try.Success [[env pass_through] output])))) + {#try.Success output} + {#try.Success [[env pass_through] output]}))) (def: (label idx) (-> Nat Code) @@ -146,11 +146,11 @@ (case (//.result poly [(dictionary.has current_id [type g!var] env) inputs]) - (#try.Failure error) - (#try.Failure error) + {#try.Failure error} + {#try.Failure error} - (#try.Success [[_ inputs'] output]) - (#try.Success [[env inputs'] [g!var output]]))))) + {#try.Success [[_ inputs'] output]} + {#try.Success [[env inputs'] [g!var output]]})))) (template [ ] [(`` (def: .public ( poly) @@ -192,8 +192,8 @@ (recur (++ current_arg) (|> env' (dictionary.has funcI [headT funcL]) - (dictionary.has (++ funcI) [(#.Parameter (++ funcI)) varL])) - (#.Item varL all_varsL))) + (dictionary.has (++ funcI) [{#.Parameter (++ funcI)} varL])) + {#.Item varL all_varsL})) (let [partialI (|> current_arg (n.* 2) (n.+ funcI)) partial_varI (++ partialI) partial_varL (label partial_varI) @@ -203,8 +203,8 @@ (recur (++ current_arg) (|> env' (dictionary.has partialI [(|recursion_dummy|) partialC]) - (dictionary.has partial_varI [(#.Parameter partial_varI) partial_varL])) - (#.Item partial_varL all_varsL)))) + (dictionary.has partial_varI [{#.Parameter partial_varI} partial_varL])) + {#.Item partial_varL all_varsL}))) [all_varsL env']))]] (<| (with_env env') (local (list non_poly)) @@ -229,7 +229,7 @@ .let [[funcT paramsT] (type.flat_application (type.anonymous headT))]] (if (n.= 0 (list.size paramsT)) (//.failure (exception.error ..not_application headT)) - (..local (#.Item funcT paramsT) poly)))) + (..local {#.Item funcT paramsT} poly)))) (template [ ] [(def: .public ( expected) @@ -258,9 +258,9 @@ [env ..env headT any] (case headT - (#.Parameter idx) + {#.Parameter idx} (case (dictionary.value (adjusted_idx env idx) env) - (#.Some [poly_type poly_code]) + {#.Some [poly_type poly_code]} (in poly_code) #.None @@ -275,10 +275,10 @@ [env ..env headT any] (case headT - (#.Parameter idx) + {#.Parameter idx} (if (n.= id (adjusted_idx env idx)) (in []) - (//.failure (exception.error ..wrong_parameter [(#.Parameter id) headT]))) + (//.failure (exception.error ..wrong_parameter [{#.Parameter id} headT]))) _ (//.failure (exception.error ..not_parameter headT))))) @@ -288,7 +288,7 @@ (do //.monad [headT any] (case headT - (#.Ex ex_id) + {#.Ex ex_id} (in ex_id) _ @@ -299,7 +299,7 @@ (do //.monad [inputT any] (case inputT - (#.Named name anonymousT) + {#.Named name anonymousT} (in [name anonymousT]) _ @@ -310,7 +310,7 @@ (do [! //.monad] [headT any] (case (type.anonymous headT) - (^ (#.Apply (|recursion_dummy|) (#.UnivQ _ headT'))) + (^ {#.Apply (|recursion_dummy|) {#.UnivQ _ headT'}}) (do ! [[recT _ output] (|> poly (with_extension (|recursion_dummy|)) @@ -327,9 +327,9 @@ [env ..env headT any] (case (type.anonymous headT) - (^multi (^ (#.Apply (|recursion_dummy|) (#.Parameter funcT_idx))) + (^multi (^ {#.Apply (|recursion_dummy|) {#.Parameter funcT_idx}}) (n.= 0 (adjusted_idx env funcT_idx)) - [(dictionary.value 0 env) (#.Some [self_type self_call])]) + [(dictionary.value 0 env) {#.Some [self_type self_call]}]) (in self_call) _ diff --git a/stdlib/source/library/lux/control/parser/xml.lux b/stdlib/source/library/lux/control/parser/xml.lux index a54e68170..6a1eb1206 100644 --- a/stdlib/source/library/lux/control/parser/xml.lux +++ b/stdlib/source/library/lux/control/parser/xml.lux @@ -42,13 +42,13 @@ (def: (result' parser attrs documents) (All (_ a) (-> (Parser a) Attrs (List XML) (Try a))) (case (//.result parser [attrs documents]) - (#try.Success [[attrs' remaining] output]) + {#try.Success [[attrs' remaining] output]} (if (list.empty? remaining) - (#try.Success output) + {#try.Success output} (exception.except ..unconsumed_inputs remaining)) - (#try.Failure error) - (#try.Failure error))) + {#try.Failure error} + {#try.Failure error})) (def: .public (result parser documents) (All (_ a) (-> (Parser a) (List XML) (Try a))) @@ -61,12 +61,12 @@ #.End (exception.except ..empty_input []) - (#.Item head tail) + {#.Item head tail} (case head - (#/.Text value) - (#try.Success [[attrs tail] value]) + {#/.Text value} + {#try.Success [[attrs tail] value]} - (#/.Node _) + {#/.Node _} (exception.except ..unexpected_input []))))) (def: .public tag @@ -76,13 +76,13 @@ #.End (exception.except ..empty_input []) - (#.Item head _) + {#.Item head _} (case head - (#/.Text _) + {#/.Text _} (exception.except ..unexpected_input []) - (#/.Node tag _ _) - (#try.Success [[attrs documents] tag]))))) + {#/.Node tag _ _} + {#try.Success [[attrs documents] tag]})))) (def: .public (attribute name) (-> Attribute (Parser Text)) @@ -91,8 +91,8 @@ #.None (exception.except ..unknown_attribute [name (dictionary.keys attrs)]) - (#.Some value) - (#try.Success [[attrs documents] value])))) + {#.Some value} + {#try.Success [[attrs documents] value]}))) (def: .public (node expected parser) (All (_ a) (-> Tag (Parser a) (Parser a))) @@ -101,12 +101,12 @@ #.End (exception.except ..empty_input []) - (#.Item head tail) + {#.Item head tail} (case head - (#/.Text _) + {#/.Text _} (exception.except ..unexpected_input []) - (#/.Node actual attrs' children) + {#/.Node actual attrs' children} (if (name\= expected actual) (|> children (..result' parser attrs') @@ -120,8 +120,8 @@ #.End (exception.except ..empty_input []) - (#.Item head tail) - (#try.Success [[attrs tail] head])))) + {#.Item head tail} + {#try.Success [[attrs tail] head]}))) (exception: .public nowhere) @@ -129,16 +129,16 @@ (All (_ a) (-> (Parser a) (Parser a))) (function (recur [attrs input]) (case (//.result parser [attrs input]) - (#try.Success [[attrs remaining] output]) - (#try.Success [[attrs remaining] output]) + {#try.Success [[attrs remaining] output]} + {#try.Success [[attrs remaining] output]} - (#try.Failure error) + {#try.Failure error} (case input #.End (exception.except ..nowhere []) - (#.Item head tail) + {#.Item head tail} (do try.monad [[[attrs tail'] output] (recur [attrs tail])] - (in [[attrs (#.Item head tail')] + (in [[attrs {#.Item head tail'}] output])))))) diff --git a/stdlib/source/library/lux/control/pipe.lux b/stdlib/source/library/lux/control/pipe.lux index 9c3c5ce36..2f9c81229 100644 --- a/stdlib/source/library/lux/control/pipe.lux +++ b/stdlib/source/library/lux/control/pipe.lux @@ -37,7 +37,7 @@ (def: _reversed_ (Parser Any) (function (_ tokens) - (#try.Success [(list.reversed tokens) []]))) + {#try.Success [(list.reversed tokens) []]})) (syntax: .public (cond> [_ _reversed_ prev .any diff --git a/stdlib/source/library/lux/control/region.lux b/stdlib/source/library/lux/control/region.lux index 58f406e3a..934daf578 100644 --- a/stdlib/source/library/lux/control/region.lux +++ b/stdlib/source/library/lux/control/region.lux @@ -35,20 +35,20 @@ output (Try a)]) (format error (case output - (#try.Success _) + {#try.Success _} "" - (#try.Failure error|output) + {#try.Failure error|output} (format separator error|output)))) (def: (clean clean_up output) (All (_ a) (-> (Try Any) (Try a) (Try a))) (case clean_up - (#try.Success _) + {#try.Success _} output - (#try.Failure error) + {#try.Failure error} (exception.except ..clean_up_error [error output]))) (def: .public (run! monad computation) @@ -65,9 +65,9 @@ (All (_ ! a) (-> (Monad !) (-> a (! (Try Any))) a (All (_ r) (Region r ! a)))) (function (_ [region cleaners]) - (\ monad in [(#.Item (function (_ region) (cleaner value)) - cleaners) - (#try.Success value)]))) + (\ monad in [{#.Item (function (_ region) (cleaner value)) + cleaners} + {#try.Success value}]))) (implementation: .public (functor super) (All (_ !) @@ -80,11 +80,11 @@ (\ super each (function (_ [cleaners' temp]) [cleaners' (case temp - (#try.Success value) - (#try.Success (f value)) + {#try.Success value} + {#try.Success (f value)} - (#try.Failure error) - (#try.Failure error))]) + {#try.Failure error} + {#try.Failure error})]) (fa region+cleaners)))))) (implementation: .public (apply super) @@ -101,16 +101,16 @@ [[cleaners ef] (ff [region cleaners]) [cleaners ea] (fa [region cleaners])] (case ef - (#try.Success f) + {#try.Success f} (case ea - (#try.Success a) - (in [cleaners (#try.Success (f a))]) + {#try.Success a} + (in [cleaners {#try.Success (f a)}]) - (#try.Failure error) - (in [cleaners (#try.Failure error)])) + {#try.Failure error} + (in [cleaners {#try.Failure error}])) - (#try.Failure error) - (in [cleaners (#try.Failure error)])))))) + {#try.Failure error} + (in [cleaners {#try.Failure error}])))))) (implementation: .public (monad super) (All (_ !) @@ -122,25 +122,25 @@ (def: (in value) (function (_ [region cleaners]) - (\ super in [cleaners (#try.Success value)]))) + (\ super in [cleaners {#try.Success value}]))) (def: (conjoint ffa) (function (_ [region cleaners]) (do super [[cleaners efa] (ffa [region cleaners])] (case efa - (#try.Success fa) + {#try.Success fa} (fa [region cleaners]) - (#try.Failure error) - (in [cleaners (#try.Failure error)])))))) + {#try.Failure error} + (in [cleaners {#try.Failure error}])))))) (def: .public (failure monad error) (All (_ ! a) (-> (Monad !) Text (All (_ r) (Region r ! a)))) (function (_ [region cleaners]) - (\ monad in [cleaners (#try.Failure error)]))) + (\ monad in [cleaners {#try.Failure error}]))) (def: .public (except monad exception message) (All (_ ! e a) @@ -154,5 +154,5 @@ (All (_ r) (Region r ! a)))) (function (_ [region cleaners]) (\ monad each - (|>> #try.Success [cleaners]) + (|>> {#try.Success} [cleaners]) operation))) diff --git a/stdlib/source/library/lux/control/remember.lux b/stdlib/source/library/lux/control/remember.lux index b2db48900..dcf7c1c8b 100644 --- a/stdlib/source/library/lux/control/remember.lux +++ b/stdlib/source/library/lux/control/remember.lux @@ -30,7 +30,7 @@ ["Today" (%.date today)] ["Message" message] ["Code" (case focus - (#.Some focus) + {#.Some focus} (%.code focus) #.None @@ -44,10 +44,10 @@ (do <>.monad [raw .text] (case (\ date.codec decoded raw) - (#try.Success date) + {#try.Success date} (in date) - (#try.Failure message) + {#try.Failure message} (<>.failure message))))) (syntax: .public (remember [deadline ..deadline @@ -57,7 +57,7 @@ today (instant.date now)] (if (date\< deadline today) (in (case focus - (#.Some focus) + {#.Some focus} (list focus) #.None @@ -71,7 +71,7 @@ (in (list (` (..remember (~ (code.text (%.date deadline))) (~ (code.text (format " " message))) (~+ (case focus - (#.Some focus) + {#.Some focus} (list focus) #.None diff --git a/stdlib/source/library/lux/control/try.lux b/stdlib/source/library/lux/control/try.lux index 16d58007c..b18a38dd8 100644 --- a/stdlib/source/library/lux/control/try.lux +++ b/stdlib/source/library/lux/control/try.lux @@ -11,19 +11,19 @@ (type: .public (Try a) (Variant - (#Failure Text) - (#Success a))) + {#Failure Text} + {#Success a})) (implementation: .public functor (Functor Try) (def: (each f ma) (case ma - (#Failure msg) - (#Failure msg) + {#Failure msg} + {#Failure msg} - (#Success datum) - (#Success (f datum))))) + {#Success datum} + {#Success (f datum)}))) (implementation: .public apply (Apply Try) @@ -32,16 +32,16 @@ (def: (on fa ff) (case ff - (#Success f) + {#Success f} (case fa - (#Success a) - (#Success (f a)) + {#Success a} + {#Success (f a)} - (#Failure msg) - (#Failure msg)) + {#Failure msg} + {#Failure msg}) - (#Failure msg) - (#Failure msg)))) + {#Failure msg} + {#Failure msg}))) (implementation: .public monad (Monad Try) @@ -49,14 +49,14 @@ (def: &functor ..functor) (def: (in a) - (#Success a)) + {#Success a}) (def: (conjoint mma) (case mma - (#Failure msg) - (#Failure msg) + {#Failure msg} + {#Failure msg} - (#Success ma) + {#Success ma} ma))) (implementation: .public (with monad) @@ -74,10 +74,10 @@ (do monad [eMea MeMea] (case eMea - (#Failure try) - (in (#Failure try)) + {#Failure try} + (in {#Failure try}) - (#Success Mea) + {#Success Mea} Mea)))) (def: .public (lifted monad) @@ -89,10 +89,10 @@ (def: (= reference sample) (case [reference sample] - [(#Success reference) (#Success sample)] + [{#Success reference} {#Success sample}] (_\= reference sample) - [(#Failure reference) (#Failure sample)] + [{#Failure reference} {#Failure sample}] ("lux text =" reference sample) _ @@ -103,42 +103,42 @@ (All (_ a) (-> (Try a) a)) (case try - (#Success value) + {#Success value} value - (#Failure message) + {#Failure message} (panic! message))) (def: .public (maybe try) (All (_ a) (-> (Try a) (Maybe a))) (case try - (#Success value) - (#.Some value) + {#Success value} + {#.Some value} - (#Failure message) + {#Failure message} #.None)) (def: .public (of_maybe maybe) (All (_ a) (-> (Maybe a) (Try a))) (case maybe - (#.Some value) - (#Success value) + {#.Some value} + {#Success value} #.None - (#Failure (`` (("lux in-module" (~~ (static .prelude_module)) .name\encoded) - (name_of ..of_maybe)))))) + {#Failure (`` (("lux in-module" (~~ (static .prelude_module)) .name\encoded) + (name_of ..of_maybe)))})) (macro: .public (else tokens compiler) (case tokens (^ (list else try)) - (#Success [compiler (list (` (case (~ try) - (#..Success (~' g!temp)) + {#Success [compiler (list (` (case (~ try) + {#..Success (~' g!temp)} (~' g!temp) - (#..Failure (~ [location.dummy (#.Identifier ["" ""])])) - (~ else))))]) + {#..Failure (~ [location.dummy {#.Identifier ["" ""]}])} + (~ else))))]} _ - (#Failure "Wrong syntax for else"))) + {#Failure "Wrong syntax for else"})) diff --git a/stdlib/source/library/lux/control/writer.lux b/stdlib/source/library/lux/control/writer.lux index 0805da036..6d824d2eb 100644 --- a/stdlib/source/library/lux/control/writer.lux +++ b/stdlib/source/library/lux/control/writer.lux @@ -63,7 +63,11 @@ (def: (conjoint MlMla) (do monad [[l1 Mla] (for [@.old - (: ((:parameter 1) (Writer (:parameter 0) ((:parameter 1) (Writer (:parameter 0) (:parameter 2))))) + (: {#.Apply (Writer (:parameter 0) + {#.Apply (Writer (:parameter 0) + (:parameter 2)) + (:parameter 1)}) + (:parameter 1)} MlMla)] ... On new compiler MlMla) diff --git a/stdlib/source/library/lux/data/binary.lux b/stdlib/source/library/lux/data/binary.lux index 33bac997b..e4a07b788 100644 --- a/stdlib/source/library/lux/data/binary.lux +++ b/stdlib/source/library/lux/data/binary.lux @@ -198,31 +198,31 @@ (def: .public (read/8! index binary) (-> Nat Binary (Try I64)) (if (n.< (..!size binary) index) - (#try.Success (!read index binary)) + {#try.Success (!read index binary)} (exception.except ..index_out_of_bounds [(..!size binary) index]))) (def: .public (read/16! index binary) (-> Nat Binary (Try I64)) (if (n.< (..!size binary) (n.+ 1 index)) - (#try.Success ($_ i64.or + {#try.Success ($_ i64.or (i64.left_shifted 8 (!read index binary)) - (!read (n.+ 1 index) binary))) + (!read (n.+ 1 index) binary))} (exception.except ..index_out_of_bounds [(..!size binary) index]))) (def: .public (read/32! index binary) (-> Nat Binary (Try I64)) (if (n.< (..!size binary) (n.+ 3 index)) - (#try.Success ($_ i64.or + {#try.Success ($_ i64.or (i64.left_shifted 24 (!read index binary)) (i64.left_shifted 16 (!read (n.+ 1 index) binary)) (i64.left_shifted 8 (!read (n.+ 2 index) binary)) - (!read (n.+ 3 index) binary))) + (!read (n.+ 3 index) binary))} (exception.except ..index_out_of_bounds [(..!size binary) index]))) (def: .public (read/64! index binary) (-> Nat Binary (Try I64)) (if (n.< (..!size binary) (n.+ 7 index)) - (#try.Success ($_ i64.or + {#try.Success ($_ i64.or (i64.left_shifted 56 (!read index binary)) (i64.left_shifted 48 (!read (n.+ 1 index) binary)) (i64.left_shifted 40 (!read (n.+ 2 index) binary)) @@ -230,32 +230,32 @@ (i64.left_shifted 24 (!read (n.+ 4 index) binary)) (i64.left_shifted 16 (!read (n.+ 5 index) binary)) (i64.left_shifted 8 (!read (n.+ 6 index) binary)) - (!read (n.+ 7 index) binary))) + (!read (n.+ 7 index) binary))} (exception.except ..index_out_of_bounds [(..!size binary) index]))) (def: .public (write/8! index value binary) (-> Nat (I64 Any) Binary (Try Binary)) (if (n.< (..!size binary) index) - (#try.Success (|> binary - (!write index value))) + {#try.Success (|> binary + (!write index value))} (exception.except ..index_out_of_bounds [(..!size binary) index]))) (def: .public (write/16! index value binary) (-> Nat (I64 Any) Binary (Try Binary)) (if (n.< (..!size binary) (n.+ 1 index)) - (#try.Success (|> binary + {#try.Success (|> binary (!write index (i64.right_shifted 8 value)) - (!write (n.+ 1 index) value))) + (!write (n.+ 1 index) value))} (exception.except ..index_out_of_bounds [(..!size binary) index]))) (def: .public (write/32! index value binary) (-> Nat (I64 Any) Binary (Try Binary)) (if (n.< (..!size binary) (n.+ 3 index)) - (#try.Success (|> binary + {#try.Success (|> binary (!write index (i64.right_shifted 24 value)) (!write (n.+ 1 index) (i64.right_shifted 16 value)) (!write (n.+ 2 index) (i64.right_shifted 8 value)) - (!write (n.+ 3 index) value))) + (!write (n.+ 3 index) value))} (exception.except ..index_out_of_bounds [(..!size binary) index]))) (def: .public (write/64! index value binary) @@ -270,7 +270,7 @@ (!write (n.+ 6 index) (i64.right_shifted 8 value)) (!write (n.+ 7 index) value))] (|> binary write_high write_low #try.Success))] - (#try.Success (|> binary + {#try.Success (|> binary (!write index (i64.right_shifted 56 value)) (!write (n.+ 1 index) (i64.right_shifted 48 value)) (!write (n.+ 2 index) (i64.right_shifted 40 value)) @@ -278,7 +278,7 @@ (!write (n.+ 4 index) (i64.right_shifted 24 value)) (!write (n.+ 5 index) (i64.right_shifted 16 value)) (!write (n.+ 6 index) (i64.right_shifted 8 value)) - (!write (n.+ 7 index) value)))) + (!write (n.+ 7 index) value))}) (exception.except ..index_out_of_bounds [(..!size binary) index]))) (implementation: .public equivalence @@ -329,7 +329,7 @@ (!read (n.+ source_offset index) source) target) (recur (++ index))) - (#try.Success target)))))))) + {#try.Success target}))))))) (def: .public (slice offset length binary) (-> Nat Nat Binary (Try Binary)) @@ -337,7 +337,7 @@ limit (n.+ length offset)] (if (n.> size limit) (exception.except ..slice_out_of_bounds [size offset length]) - (with_expansions [ (as_is (#try.Success (java/util/Arrays::copyOfRange binary (.int offset) (.int limit))))] + (with_expansions [ (as_is {#try.Success (java/util/Arrays::copyOfRange binary (.int offset) (.int limit))})] (for [@.old @.jvm ] @@ -350,10 +350,10 @@ 0 binary _ (let [distance (n.- bytes (..!size binary))] (case (..slice bytes distance binary) - (#try.Success slice) + {#try.Success slice} slice - (#try.Failure _) + {#try.Failure _} (..empty 0))))) (implementation: .public monoid diff --git a/stdlib/source/library/lux/data/bit.lux b/stdlib/source/library/lux/data/bit.lux index b1926e164..d78777213 100644 --- a/stdlib/source/library/lux/data/bit.lux +++ b/stdlib/source/library/lux/data/bit.lux @@ -56,9 +56,9 @@ (def: (decoded input) (case input - "#1" (#.Right #1) - "#0" (#.Right #0) - _ (#.Left "Wrong syntax for Bit.")))) + "#1" {#.Right #1} + "#0" {#.Right #0} + _ {#.Left "Wrong syntax for Bit."}))) (def: .public complement (All (_ a) (-> (-> a Bit) (-> a Bit))) diff --git a/stdlib/source/library/lux/data/collection/array.lux b/stdlib/source/library/lux/data/collection/array.lux index 0bd99245d..31cfc865b 100644 --- a/stdlib/source/library/lux/data/collection/array.lux +++ b/stdlib/source/library/lux/data/collection/array.lux @@ -22,7 +22,7 @@ "#Array") (type: .public (Array a) - (#.Primitive ..type_name (#.Item a #.End))) + {#.Primitive ..type_name {#.Item a #.End}}) (with_expansions [ (primitive "java.lang.Long") (primitive "java.lang.Object") @@ -79,7 +79,7 @@ [(let [output ( index array)] (if ( output) #.None - (#.Some output)))]) + {#.Some output}))]) (def: .public (read! index array) (All (_ a) @@ -89,7 +89,7 @@ (let [value ("jvm aaload" array index)] (if ("jvm object null?" value) #.None - (#.Some value))) + {#.Some value})) @.jvm (let [value (|> array @@ -97,7 +97,7 @@ ("jvm array read object" (!int index)))] (if ("jvm object null?" value) #.None - (#.Some (:expected value)))) + {#.Some (:expected value)})) @.js (!read! "js array read" "js object undefined?") @.python (!read! "python array read" "python object none?") @@ -149,7 +149,7 @@ (All (_ a) (-> Nat (Array a) Bit)) (case (..read! index array) - (#.Some _) + {#.Some _} true _ @@ -162,7 +162,7 @@ #.None array - (#.Some value) + {#.Some value} (write! index (transform value) array))) (def: .public (upsert! index default transform array) @@ -183,7 +183,7 @@ #.None target - (#.Some value) + {#.Some value} (write! (n.+ offset dest_start) value target))) dest_array (list.indices length)))) @@ -195,7 +195,7 @@ #.None count - (#.Some _) + {#.Some _} (++ count))) 0 (list.indices (size array)))) @@ -212,7 +212,7 @@ #.None xs' - (#.Some x) + {#.Some x} (if (p x) xs' (delete! idx xs')))) @@ -229,9 +229,9 @@ #.None (recur (++ idx)) - (#.Some x) + {#.Some x} (if (p x) - (#.Some x) + {#.Some x} (recur (++ idx)))) #.None)))) @@ -245,9 +245,9 @@ #.None (recur (++ idx)) - (#.Some x) + {#.Some x} (if (p idx x) - (#.Some [idx x]) + {#.Some [idx x]} (recur (++ idx)))) #.None)))) @@ -259,7 +259,7 @@ #.None ys - (#.Some x) + {#.Some x} (write! idx x ys))) (empty arr_size) (list.indices arr_size)))) @@ -286,8 +286,8 @@ _ (recur (-- idx) (case (read! idx array) - (#.Some head) - (#.Item head output) + {#.Some head} + {#.Item head output} #.None output))))) @@ -302,13 +302,13 @@ _ (recur (-- idx) - (#.Item (maybe.else default (read! idx array)) - output))))) + {#.Item (maybe.else default (read! idx array)) + output})))) (def: .public (list default array) (All (_ a) (-> (Maybe a) (Array a) (List a))) (case default - (#.Some default) + {#.Some default} (list|+default default array) #.None @@ -327,7 +327,7 @@ [#.None #.None] true - [(#.Some x) (#.Some y)] + [{#.Some x} {#.Some y}] (,\= x y) _ @@ -359,7 +359,7 @@ #.None mb - (#.Some x) + {#.Some x} (write! idx (f x) mb))) (empty arr_size) (list.indices arr_size)) @@ -377,7 +377,7 @@ #.None (recur so_far (++ idx)) - (#.Some value) + {#.Some value} (recur (f value so_far) (++ idx))) so_far))))) @@ -390,7 +390,7 @@ (loop [idx 0] (if (n.< size idx) (case (..read! idx array) - (#.Some value) + {#.Some value} ( (predicate value) (recur (++ idx))) diff --git a/stdlib/source/library/lux/data/collection/dictionary.lux b/stdlib/source/library/lux/data/collection/dictionary.lux index 3d7e785f3..bc78d8032 100644 --- a/stdlib/source/library/lux/data/collection/dictionary.lux +++ b/stdlib/source/library/lux/data/collection/dictionary.lux @@ -58,11 +58,11 @@ ... Dictionaries. (type: (Node k v) (Variant - (#Hierarchy Nat (Array (Node k v))) - (#Base Bit_Map - (Array (Either (Node k v) - [k v]))) - (#Collisions Hash_Code (Array [k v])))) + {#Hierarchy Nat (Array (Node k v))} + {#Base Bit_Map + (Array (Either (Node k v) + [k v]))} + {#Collisions Hash_Code (Array [k v])})) ... #Hierarchy nodes are meant to point down only to lower-level nodes. (type: (Hierarchy k v) @@ -127,7 +127,7 @@ ... The cannonical empty node, which is just an empty #Base node. (def: empty_node Node - (#Base clean_bitmap (array.empty 0))) + {#Base clean_bitmap (array.empty 0)}) ... Expands a copy of the array, to have 1 extra slot, which is used ... for storing the value. @@ -241,11 +241,11 @@ (let [[bitmap base] node] (case (array.read! idx h_array) #.None [insertion_idx node] - (#.Some sub_node) (if (n.= except_idx idx) + {#.Some sub_node} (if (n.= except_idx idx) [insertion_idx node] [(++ insertion_idx) [(with_bit_position (to_bit_position idx) bitmap) - (array.write! insertion_idx (#.Left sub_node) base)]]) + (array.write! insertion_idx {#.Left sub_node} base)]]) ))) [0 [clean_bitmap (array.empty (-- h_size))]] @@ -268,10 +268,10 @@ bitmap) [(++ base_idx) (case (array.read! base_idx base) - (#.Some (#.Left sub_node)) + {#.Some {#.Left sub_node}} (array.write! hierarchy_idx sub_node h_array) - (#.Some (#.Right [key' val'])) + {#.Some {#.Right [key' val']}} (array.write! hierarchy_idx (node\has (level_up level) (\ key_hash hash key') key' val' key_hash empty_node) h_array) @@ -289,7 +289,7 @@ (def: (node\empty? node) (All (_ k v) (-> (Node k v) Bit)) (`` (case node - (#Base (~~ (static ..clean_bitmap)) _) + {#Base (~~ (static ..clean_bitmap)) _} #1 _ @@ -300,47 +300,47 @@ (case node ... For #Hierarchy nodes, check whether one can add the element to ... a sub-node. If impossible, introduce a new singleton sub-node. - (#Hierarchy _size hierarchy) + {#Hierarchy _size hierarchy} (let [idx (level_index level hash) [_size' sub_node] (case (array.read! idx hierarchy) - (#.Some sub_node) + {#.Some sub_node} [_size sub_node] _ [(++ _size) empty_node])] - (#Hierarchy _size' - (array\revised idx (node\has (level_up level) hash key val key_hash sub_node) - hierarchy))) + {#Hierarchy _size' + (array\revised idx (node\has (level_up level) hash key val key_hash sub_node) + hierarchy)}) ... For #Base nodes, check if the corresponding Bit_Position has ... already been used. - (#Base bitmap base) + {#Base bitmap base} (let [bit (level_bit_position level hash)] (if (with_bit_position? bit bitmap) ... If so... (let [idx (base_index bit bitmap)] (case (array.read! idx base) ... If it's being used by a node, add the KV to it. - (#.Some (#.Left sub_node)) + {#.Some {#.Left sub_node}} (let [sub_node' (node\has (level_up level) hash key val key_hash sub_node)] - (#Base bitmap (array\revised idx (#.Left sub_node') base))) + {#Base bitmap (array\revised idx {#.Left sub_node'} base)}) ... Otherwise, if it's being used by a KV, compare the keys. - (#.Some (#.Right key' val')) + {#.Some {#.Right key' val'}} (if (\ key_hash = key key') ... If the same key is found, replace the value. - (#Base bitmap (array\revised idx (#.Right key val) base)) + {#Base bitmap (array\revised idx {#.Right key val} base)} ... Otherwise, compare the hashes of the keys. - (#Base bitmap (array\revised idx - (#.Left (let [hash' (\ key_hash hash key')] + {#Base bitmap (array\revised idx + {#.Left (let [hash' (\ key_hash hash key')] (if (n.= hash hash') ... If the hashes are ... the same, a new ... #Collisions node ... is added. - (#Collisions hash (|> (array.empty 2) + {#Collisions hash (|> (array.empty 2) (array.write! 0 [key' val']) - (array.write! 1 [key val]))) + (array.write! 1 [key val]))} ... Otherwise, one can ... just keep using ... #Base nodes, so @@ -349,8 +349,8 @@ (let [next_level (level_up level)] (|> empty_node (node\has next_level hash' key' val' key_hash) - (node\has next_level hash key val key_hash)))))) - base))) + (node\has next_level hash key val key_hash)))))} + base)}) #.None (undefined))) @@ -360,35 +360,35 @@ (if (n.< ..promotion_threshold base_count) ... If so, resize the #Base node to accommodate the ... new KV-pair. - (#Base (with_bit_position bit bitmap) - (array\has (base_index bit bitmap) (#.Right [key val]) base)) + {#Base (with_bit_position bit bitmap) + (array\has (base_index bit bitmap) {#.Right [key val]} base)} ... Otherwise, promote it to a #Hierarchy node, and add the new ... KV-pair as a singleton node to it. - (#Hierarchy (++ base_count) - (|> base - (promotion node\has key_hash level bitmap) - (array.write! (level_index level hash) - (node\has (level_up level) hash key val key_hash empty_node)))))))) + {#Hierarchy (++ base_count) + (|> base + (promotion node\has key_hash level bitmap) + (array.write! (level_index level hash) + (node\has (level_up level) hash key val key_hash empty_node)))})))) ... For #Collisions nodes, compare the hashes. - (#Collisions _hash _colls) + {#Collisions _hash _colls} (if (n.= hash _hash) ... If they're equal, that means the new KV contributes to the ... collisions. (case (collision_index key_hash key _colls) ... If the key was already present in the collisions-list, its ... value gets updated. - (#.Some coll_idx) - (#Collisions _hash (array\revised coll_idx [key val] _colls)) + {#.Some coll_idx} + {#Collisions _hash (array\revised coll_idx [key val] _colls)} ... Otherwise, the KV-pair is added to the collisions-list. #.None - (#Collisions _hash (array\has (array.size _colls) [key val] _colls))) + {#Collisions _hash (array\has (array.size _colls) [key val] _colls)}) ... If the hashes are not equal, create a new #Base node that ... contains the old #Collisions node, plus the new KV-pair. - (|> (#Base (level_bit_position level _hash) - (|> (array.empty 1) - (array.write! 0 (#.Left node)))) + (|> {#Base (level_bit_position level _hash) + (|> (array.empty 1) + (array.write! 0 {#.Left node}))} (node\has level hash key val key_hash))) )) @@ -397,7 +397,7 @@ (case node ... For #Hierarchy nodes, find out if there's a valid sub-node for ... the Hash-Code. - (#Hierarchy h_size h_array) + {#Hierarchy h_size h_array} (let [idx (level_index level hash)] (case (array.read! idx h_array) ... If not, there's nothing to remove. @@ -405,7 +405,7 @@ node ... But if there is, try to remove the key from the sub-node. - (#.Some sub_node) + {#.Some sub_node} (let [sub_node' (node\lacks (level_up level) hash key key_hash sub_node)] ... Then check if a removal was actually done. (if (same? sub_node sub_node') @@ -416,22 +416,22 @@ ... Check if it's due time for a demotion. (if (n.> demotion_threshold h_size) ... If so, just clear the space. - (#Hierarchy (-- h_size) (array\clear idx h_array)) + {#Hierarchy (-- h_size) (array\clear idx h_array)} ... Otherwise, perform it. - (#Base (demotion idx [h_size h_array]))) + {#Base (demotion idx [h_size 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))))))) + {#Hierarchy h_size (array\revised idx sub_node' h_array)}))))) ... For #Base nodes, check whether the Bit_Position is set. - (#Base bitmap base) + {#Base bitmap base} (let [bit (level_bit_position level hash)] (if (with_bit_position? bit bitmap) (let [idx (base_index bit bitmap)] (case (array.read! idx base) ... If set, check if it's a sub_node, and remove the KV ... from it. - (#.Some (#.Left sub_node)) + {#.Some {#.Left sub_node}} (let [sub_node' (node\lacks (level_up level) hash key key_hash sub_node)] ... Verify that it was removed. (if (same? sub_node sub_node') @@ -445,20 +445,20 @@ empty_node ... But if not, then just unset the position and ... remove the node. - (#Base (without_bit_position bit bitmap) - (array\lacks idx base))) + {#Base (without_bit_position bit bitmap) + (array\lacks idx base)}) ... But, if it did not come out empty, then the ... position is kept, and the node gets updated. - (#Base bitmap - (array\revised idx (#.Left sub_node') base))))) + {#Base bitmap + (array\revised idx {#.Left sub_node'} base)}))) ... If, however, there was a KV-pair instead of a sub-node. - (#.Some (#.Right [key' val'])) + {#.Some {#.Right [key' val']}} ... Check if the keys match. (if (\ key_hash = key key') ... If so, remove the KV-pair and unset the Bit_Position. - (#Base (without_bit_position bit bitmap) - (array\lacks idx base)) + {#Base (without_bit_position bit bitmap) + (array\lacks idx base)} ... Otherwise, there's nothing to remove. node) @@ -468,42 +468,42 @@ node)) ... For #Collisions nodes, It need to find out if the key already existst. - (#Collisions _hash _colls) + {#Collisions _hash _colls} (case (collision_index key_hash key _colls) ... If not, then there's nothing to remove. #.None node ... But if so, then check the size of the collisions list. - (#.Some idx) + {#.Some idx} (if (n.= 1 (array.size _colls)) ... If there's only one left, then removing it leaves us with ... an empty node. empty_node ... Otherwise, just shrink the array by removing the KV-pair. - (#Collisions _hash (array\lacks idx _colls)))) + {#Collisions _hash (array\lacks idx _colls)})) )) (def: (node\value level hash key key_hash node) (All (_ k v) (-> Level Hash_Code k (Hash k) (Node k v) (Maybe v))) (case node ... For #Hierarchy nodes, just look-up the key on its children. - (#Hierarchy _size hierarchy) + {#Hierarchy _size hierarchy} (case (array.read! (level_index level hash) hierarchy) #.None #.None - (#.Some sub_node) (node\value (level_up level) hash key key_hash sub_node)) + {#.Some sub_node} (node\value (level_up level) hash key key_hash sub_node)) ... For #Base nodes, check the leaves, and recursively check the branches. - (#Base bitmap base) + {#Base bitmap base} (let [bit (level_bit_position level hash)] (if (with_bit_position? bit bitmap) (case (array.read! (base_index bit bitmap) base) - (#.Some (#.Left sub_node)) + {#.Some {#.Left sub_node}} (node\value (level_up level) hash key key_hash sub_node) - (#.Some (#.Right [key' val'])) + {#.Some {#.Right [key' val']}} (if (\ key_hash = key key') - (#.Some val') + {#.Some val'} #.None) #.None @@ -511,7 +511,7 @@ #.None)) ... For #Collisions nodes, do a linear scan of all the known KV-pairs. - (#Collisions _hash _colls) + {#Collisions _hash _colls} (\ maybe.monad each product.right (array.example (|>> product.left (\ key_hash = key)) _colls)) @@ -520,41 +520,41 @@ (def: (node\size node) (All (_ k v) (-> (Node k v) Nat)) (case node - (#Hierarchy _size hierarchy) + {#Hierarchy _size hierarchy} (array\mix n.+ 0 (array\each node\size hierarchy)) - (#Base _ base) + {#Base _ base} (array\mix n.+ 0 (array\each (function (_ sub_node') (case sub_node' - (#.Left sub_node) (node\size sub_node) - (#.Right _) 1)) + {#.Left sub_node} (node\size sub_node) + {#.Right _} 1)) base)) - (#Collisions hash colls) + {#Collisions hash colls} (array.size colls) )) (def: (node\entries node) (All (_ k v) (-> (Node k v) (List [k v]))) (case node - (#Hierarchy _size hierarchy) + {#Hierarchy _size hierarchy} (array\mix (function (_ sub_node tail) (list\composite (node\entries sub_node) tail)) #.End hierarchy) - (#Base bitmap base) + {#Base bitmap base} (array\mix (function (_ branch tail) (case branch - (#.Left sub_node) + {#.Left sub_node} (list\composite (node\entries sub_node) tail) - (#.Right [key' val']) - (#.Item [key' val'] tail))) + {#.Right [key' val']} + {#.Item [key' val'] tail})) #.End base) - (#Collisions hash colls) - (array\mix (function (_ [key' val'] tail) (#.Item [key' val'] tail)) + {#Collisions hash colls} + (array\mix (function (_ [key' val'] tail) {#.Item [key' val'] tail}) #.End colls))) @@ -591,15 +591,15 @@ (All (_ k v) (-> (Dictionary k v) k Bit)) (case (value key dict) #.None #0 - (#.Some _) #1)) + {#.Some _} #1)) (exception: .public key_already_exists) (def: .public (has' key val dict) (All (_ k v) (-> k v (Dictionary k v) (Try (Dictionary k v)))) (case (value key dict) - #.None (#try.Success (has key val dict)) - (#.Some _) (exception.except ..key_already_exists []))) + #.None {#try.Success (has key val dict)} + {#.Some _} (exception.except ..key_already_exists []))) (def: .public (revised key f dict) (All (_ k v) (-> k (-> v v) (Dictionary k v) (Dictionary k v))) @@ -607,7 +607,7 @@ #.None dict - (#.Some val) + {#.Some val} (has key (f val) dict))) (def: .public (revised' key default f dict) @@ -641,7 +641,7 @@ (All (_ k v) (-> (Dictionary k v) (List ))) (|>> ..entries (list\mix (function (_ [k v] bundle) - (#.Item bundle)) + {#.Item bundle}) #.End)))] [k keys] @@ -661,7 +661,7 @@ #.None (has key val2 dict) - (#.Some val1) + {#.Some val1} (has key (f val2 val1) dict))) dict1 (entries dict2))) @@ -672,7 +672,7 @@ #.None dict - (#.Some val) + {#.Some val} (|> dict (lacks from_key) (has to_key val)))) @@ -683,7 +683,7 @@ (list\mix (function (_ key new_dict) (case (value key dict) #.None new_dict - (#.Some val) (has key val new_dict))) + {#.Some val} (has key val new_dict))) (empty key_hash) keys))) @@ -695,7 +695,7 @@ (..size subject)) (list.every? (function (_ [k rv]) (case (..value k subject) - (#.Some sv) + {#.Some sv} (,\= rv sv) _ @@ -707,23 +707,23 @@ (def: (each f fa) (case fa - (#Hierarchy size hierarchy) - (#Hierarchy size (array\each (each f) hierarchy)) + {#Hierarchy size hierarchy} + {#Hierarchy size (array\each (each f) hierarchy)} - (#Base bitmap base) - (#Base bitmap (array\each (function (_ either) + {#Base bitmap base} + {#Base bitmap (array\each (function (_ either) (case either - (#.Left fa') - (#.Left (each f fa')) + {#.Left fa'} + {#.Left (each f fa')} - (#.Right [k v]) - (#.Right [k (f v)]))) - base)) + {#.Right [k v]} + {#.Right [k (f v)]})) + base)} - (#Collisions hash collisions) - (#Collisions hash (array\each (function (_ [k v]) + {#Collisions hash collisions} + {#Collisions hash (array\each (function (_ [k v]) [k (f v)]) - collisions))))) + collisions)}))) (implementation: .public functor (All (_ k) (Functor (Dictionary k))) diff --git a/stdlib/source/library/lux/data/collection/dictionary/ordered.lux b/stdlib/source/library/lux/data/collection/dictionary/ordered.lux index 857683d40..d6376e88b 100644 --- a/stdlib/source/library/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/library/lux/data/collection/dictionary/ordered.lux @@ -65,11 +65,11 @@ #.None #.None - (#.Some node) + {#.Some node} (let [node_key (value@ #key node)] (cond (\ dict = node_key key) ... (_\= node_key key) - (#.Some (value@ #value node)) + {#.Some (value@ #value node)} (\ dict < node_key key) ... (_\< node_key key) @@ -90,7 +90,7 @@ #.None #0 - (#.Some node) + {#.Some node} (let [node_key (value@ #key node)] (or (\ dict = node_key key) ... (_\= node_key key) @@ -106,13 +106,13 @@ #.None #.None - (#.Some node) + {#.Some node} (loop [node node] (case (value@ node) #.None - (#.Some (value@ #value node)) + {#.Some (value@ #value node)} - (#.Some side) + {#.Some side} (recur side)))))] [min #left] @@ -126,7 +126,7 @@ #.None 0 - (#.Some node) + {#.Some node} (++ (n.+ (recur (value@ #left node)) (recur (value@ #right node))))))) @@ -155,42 +155,42 @@ #Red (red (value@ #key center) (value@ #value center) - (#.Some addition) + {#.Some addition} (value@ #right center)) #Black (with_expansions [ (as_is (black (value@ #key center) (value@ #value center) - (#.Some addition) + {#.Some addition} (value@ #right center)))] (case (value@ #color addition) #Red (case (value@ #left addition) - (^multi (#.Some left) + (^multi {#.Some left} [(value@ #color left) #Red]) (red (value@ #key addition) (value@ #value addition) - (#.Some (blackened left)) - (#.Some (black (value@ #key center) + {#.Some (blackened left)} + {#.Some (black (value@ #key center) (value@ #value center) (value@ #right addition) - (value@ #right center)))) + (value@ #right center))}) _ (case (value@ #right addition) - (^multi (#.Some right) + (^multi {#.Some right} [(value@ #color right) #Red]) (red (value@ #key right) (value@ #value right) - (#.Some (black (value@ #key addition) + {#.Some (black (value@ #key addition) (value@ #value addition) (value@ #left addition) - (value@ #left right))) - (#.Some (black (value@ #key center) + (value@ #left right))} + {#.Some (black (value@ #key center) (value@ #value center) (value@ #right right) - (value@ #right center)))) + (value@ #right center))}) _ )) @@ -205,41 +205,41 @@ (red (value@ #key center) (value@ #value center) (value@ #left center) - (#.Some addition)) + {#.Some addition}) #Black (with_expansions [ (as_is (black (value@ #key center) (value@ #value center) (value@ #left center) - (#.Some addition)))] + {#.Some addition}))] (case (value@ #color addition) #Red (case (value@ #right addition) - (^multi (#.Some right) + (^multi {#.Some right} [(value@ #color right) #Red]) (red (value@ #key addition) (value@ #value addition) - (#.Some (black (value@ #key center) + {#.Some (black (value@ #key center) (value@ #value center) (value@ #left center) - (value@ #left addition))) - (#.Some (blackened right))) + (value@ #left addition))} + {#.Some (blackened right)}) _ (case (value@ #left addition) - (^multi (#.Some left) + (^multi {#.Some left} [(value@ #color left) #Red]) (red (value@ #key left) (value@ #value left) - (#.Some (black (value@ #key center) + {#.Some (black (value@ #key center) (value@ #value center) (value@ #left center) - (value@ #left left))) - (#.Some (black (value@ #key addition) + (value@ #left left))} + {#.Some (black (value@ #key addition) (value@ #value addition) (value@ #right left) - (value@ #right addition)))) + (value@ #right addition))}) _ )) @@ -253,9 +253,9 @@ root' (loop [?root (value@ #root dict)] (case ?root #.None - (#.Some (red key value #.None #.None)) + {#.Some (red key value #.None #.None)} - (#.Some root) + {#.Some root} (let [reference (value@ #key root)] (`` (cond (~~ (template [ ] [( reference key) @@ -263,15 +263,15 @@ outcome (recur side_root)] (if (same? side_root outcome) ?root - (#.Some ( (maybe.trusted outcome) - root))))] + {#.Some ( (maybe.trusted outcome) + root)}))] [_\< #left ..with_left] [(order.> (value@ #&order dict)) #right ..with_right] )) ... (_\= reference key) - (#.Some (with@ #value value root)) + {#.Some (with@ #value value root)} ))) ))] (with@ #root root' dict))) @@ -279,28 +279,28 @@ (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) + (^multi {#.Some left} [(value@ #color left) #Red] - [(value@ #left left) (#.Some left>>left)] + [(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 (value@ #right left) ?right))) + {#.Some (blackened left>>left)} + {#.Some (black key value (value@ #right left) ?right)}) - (^multi (#.Some left) + (^multi {#.Some left} [(value@ #color left) #Red] - [(value@ #right left) (#.Some left>>right)] + [(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) + {#.Some (black (value@ #key left) (value@ #value left) (value@ #left left) - (value@ #left left>>right))) - (#.Some (black key value + (value@ #left left>>right))} + {#.Some (black key value (value@ #right left>>right) - ?right))) + ?right)}) _ (black key value ?left ?right))) @@ -308,26 +308,26 @@ (def: (right_balanced key value ?left ?right) (All (_ k v) (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?right - (^multi (#.Some right) + (^multi {#.Some right} [(value@ #color right) #Red] - [(value@ #right right) (#.Some right>>right)] + [(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))) + {#.Some (black key value ?left (value@ #left right))} + {#.Some (blackened right>>right)}) - (^multi (#.Some right) + (^multi {#.Some right} [(value@ #color right) #Red] - [(value@ #left right) (#.Some right>>left)] + [(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) + {#.Some (black key value ?left (value@ #left right>>left))} + {#.Some (black (value@ #key right) (value@ #value right) (value@ #right right>>left) - (value@ #right right)))) + (value@ #right right))}) _ (black key value ?left ?right))) @@ -335,27 +335,27 @@ (def: (without_left 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) + (^multi {#.Some left} [(value@ #color left) #Red]) - (red key value (#.Some (blackened left)) ?right) + (red key value {#.Some (blackened left)} ?right) _ (case ?right - (^multi (#.Some right) + (^multi {#.Some right} [(value@ #color right) #Black]) - (right_balanced key value ?left (#.Some (reddened right))) + (right_balanced key value ?left {#.Some (reddened right)}) - (^multi (#.Some right) + (^multi {#.Some right} [(value@ #color right) #Red] - [(value@ #left right) (#.Some right>>left)] + [(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) + {#.Some (black key value ?left (value@ #left right>>left))} + {#.Some (right_balanced (value@ #key right) (value@ #value right) (value@ #right right>>left) - (\ maybe.functor each reddened (value@ #right right))))) + (\ maybe.functor each reddened (value@ #right right)))}) _ (panic! error_message)) @@ -364,27 +364,27 @@ (def: (without_right key value ?left ?right) (All (_ k v) (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?right - (^multi (#.Some right) + (^multi {#.Some right} [(value@ #color right) #Red]) - (red key value ?left (#.Some (blackened right))) + (red key value ?left {#.Some (blackened right)}) _ (case ?left - (^multi (#.Some left) + (^multi {#.Some left} [(value@ #color left) #Black]) - (left_balanced key value (#.Some (reddened left)) ?right) + (left_balanced key value {#.Some (reddened left)} ?right) - (^multi (#.Some left) + (^multi {#.Some left} [(value@ #color left) #Red] - [(value@ #right left) (#.Some left>>right)] + [(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) + {#.Some (left_balanced (value@ #key left) (value@ #value left) (\ maybe.functor each reddened (value@ #left left)) - (value@ #left left>>right))) - (#.Some (black key value (value@ #right left>>right) ?right))) + (value@ #left left>>right))} + {#.Some (black key value (value@ #right left>>right) ?right)}) _ (panic! error_message) @@ -399,7 +399,7 @@ [_ #.None] ?left - [(#.Some left) (#.Some right)] + [{#.Some left} {#.Some right}] (case [(value@ #color left) (value@ #color right)] [#Red #Red] (do maybe.monad @@ -408,37 +408,37 @@ #Red (in (red (value@ #key fused) (value@ #value fused) - (#.Some (red (value@ #key left) + {#.Some (red (value@ #key left) (value@ #value left) (value@ #left left) - (value@ #left fused))) - (#.Some (red (value@ #key right) + (value@ #left fused))} + {#.Some (red (value@ #key right) (value@ #value right) (value@ #right fused) - (value@ #right right))))) + (value@ #right right))})) #Black (in (red (value@ #key left) (value@ #value left) (value@ #left left) - (#.Some (red (value@ #key right) + {#.Some (red (value@ #key right) (value@ #value right) - (#.Some fused) - (value@ #right right))))))) + {#.Some fused} + (value@ #right right))})))) [#Red #Black] - (#.Some (red (value@ #key left) + {#.Some (red (value@ #key left) (value@ #value left) (value@ #left left) (prepended (value@ #right left) - ?right))) + ?right))} [#Black #Red] - (#.Some (red (value@ #key right) + {#.Some (red (value@ #key right) (value@ #value right) (prepended ?left (value@ #left right)) - (value@ #right right))) + (value@ #right right))} [#Black #Black] (do maybe.monad @@ -447,23 +447,23 @@ #Red (in (red (value@ #key fused) (value@ #value fused) - (#.Some (black (value@ #key left) + {#.Some (black (value@ #key left) (value@ #value left) (value@ #left left) - (value@ #left fused))) - (#.Some (black (value@ #key right) + (value@ #left fused))} + {#.Some (black (value@ #key right) (value@ #value right) (value@ #right fused) - (value@ #right right))))) + (value@ #right right))})) #Black (in (without_left (value@ #key left) (value@ #value left) (value@ #left left) - (#.Some (black (value@ #key right) + {#.Some (black (value@ #key right) (value@ #value right) - (#.Some fused) - (value@ #right right))))) + {#.Some fused} + (value@ #right right))})) )) ) @@ -478,7 +478,7 @@ #.None [#.None #0] - (#.Some root) + {#.Some root} (let [root_key (value@ #key root) root_val (value@ #value root)] (if (_\= root_key key) @@ -495,22 +495,22 @@ [side_outcome _] (if go_left? (case (value@ #left root) - (^multi (#.Some left) + (^multi {#.Some left} [(value@ #color left) #Black]) - [(#.Some (without_left root_key root_val side_outcome (value@ #right root))) + [{#.Some (without_left root_key root_val side_outcome (value@ #right root))} #0] _ - [(#.Some (red root_key root_val side_outcome (value@ #right root))) + [{#.Some (red root_key root_val side_outcome (value@ #right root))} #0]) (case (value@ #right root) - (^multi (#.Some right) + (^multi {#.Some right} [(value@ #color right) #Black]) - [(#.Some (without_right root_key root_val (value@ #left root) side_outcome)) + [{#.Some (without_right root_key root_val (value@ #left root) side_outcome)} #0] _ - [(#.Some (red root_key root_val (value@ #left root) side_outcome)) + [{#.Some (red root_key root_val (value@ #left root) side_outcome)} #0]) ))) )) @@ -521,14 +521,14 @@ (with@ #root ?root dict) dict) - (#.Some root) - (with@ #root (#.Some (blackened root)) dict) + {#.Some root} + (with@ #root {#.Some (blackened root)} dict) ))) (def: .public (revised key transform dict) (All (_ k v) (-> k (-> v v) (Dictionary k v) (Dictionary k v))) (case (..value key dict) - (#.Some old) + {#.Some old} (..has key (transform old) dict) #.None @@ -549,7 +549,7 @@ #.None (list) - (#.Some node') + {#.Some node'} ($_ list\composite (recur (value@ #left node')) (list ) @@ -571,7 +571,7 @@ [#.End #.End] #1 - [(#.Item [keyR valueR] entriesR') (#.Item [keyS valueS] entriesS')] + [{#.Item [keyR valueR] entriesR'} {#.Item [keyS valueS] entriesS'}] (and (/\= keyR keyS) (,\= valueR valueS) (recur entriesR' entriesS')) diff --git a/stdlib/source/library/lux/data/collection/dictionary/plist.lux b/stdlib/source/library/lux/data/collection/dictionary/plist.lux index 9bd4665df..85fec4622 100644 --- a/stdlib/source/library/lux/data/collection/dictionary/plist.lux +++ b/stdlib/source/library/lux/data/collection/dictionary/plist.lux @@ -34,9 +34,9 @@ #.End #.None - (#.Item [k' v'] properties') + {#.Item [k' v'] properties'} (if (text\= key k') - (#.Some v') + {#.Some v'} (value key properties')))) (template [ ] @@ -51,7 +51,7 @@ (def: .public (contains? key properties) (All (_ a) (-> Text (PList a) Bit)) (case (..value key properties) - (#.Some _) + {#.Some _} true #.None @@ -63,12 +63,12 @@ #.End (list [key val]) - (#.Item [k' v'] properties') + {#.Item [k' v'] properties'} (if (text\= key k') - (#.Item [key val] - properties') - (#.Item [k' v'] - (has key val properties'))))) + {#.Item [key val] + properties'} + {#.Item [k' v'] + (has key val properties')}))) (def: .public (revised key f properties) (All (_ a) (-> Text (-> a a) (PList a) (PList a))) @@ -76,10 +76,10 @@ #.End #.End - (#.Item [k' v'] properties') + {#.Item [k' v'] properties'} (if (text\= key k') - (#.Item [k' (f v')] properties') - (#.Item [k' v'] (revised key f properties'))))) + {#.Item [k' (f v')] properties'} + {#.Item [k' v'] (revised key f properties')}))) (def: .public (lacks key properties) (All (_ a) (-> Text (PList a) (PList a))) @@ -87,11 +87,11 @@ #.End properties - (#.Item [k' v'] properties') + {#.Item [k' v'] properties'} (if (text\= key k') properties' - (#.Item [k' v'] - (lacks key properties'))))) + {#.Item [k' v'] + (lacks key properties')}))) (def: .public equivalence (All (_ a) (-> (Equivalence a) (Equivalence (PList a)))) diff --git a/stdlib/source/library/lux/data/collection/list.lux b/stdlib/source/library/lux/data/collection/list.lux index 286290c96..5c630614b 100644 --- a/stdlib/source/library/lux/data/collection/list.lux +++ b/stdlib/source/library/lux/data/collection/list.lux @@ -21,7 +21,7 @@ ... (type: (List a) ... #End -... (#Item a (List a))) +... {#Item a (List a)}) (implementation: .public mix (Mix List) @@ -31,7 +31,7 @@ #.End init - (#.Item x xs') + {#.Item x xs'} (mix f (f x init) xs')))) (def: .public (mixes f init inputs) @@ -40,13 +40,13 @@ #.End (list init) - (#.Item [head tail]) - (#.Item [init (mixes f (f head init) tail)]))) + {#.Item [head tail]} + {#.Item [init (mixes f (f head init) tail)]})) (def: .public (reversed xs) (All (_ a) (-> (List a) (List a))) - (mix (function (_ head tail) (#.Item head tail)) + (mix (function (_ head tail) {#.Item head tail}) #.End xs)) @@ -57,9 +57,9 @@ #.End #.End - (#.Item x xs') + {#.Item x xs'} (if (keep? x) - (#.Item x (only keep? xs')) + {#.Item x (only keep? xs')} (only keep? xs')))) (def: .public (partition satisfies? list) @@ -68,17 +68,17 @@ #.End [#.End #.End] - (#.Item head tail) + {#.Item head tail} (let [[in out] (partition satisfies? tail)] (if (satisfies? head) - [(#.Item head in) out] - [in (#.Item head out)])))) + [{#.Item head in} out] + [in {#.Item head out}])))) (def: .public (pairs xs) (All (_ a) (-> (List a) (List [a a]))) (case xs (^ (list& x1 x2 xs')) - (#.Item [x1 x2] (pairs xs')) + {#.Item [x1 x2] (pairs xs')} _ #.End)) @@ -92,11 +92,11 @@ #.End #.End - (#.Item x xs') + {#.Item x xs'} ) ))] - [first (#.Item x (first (-- n) xs')) #.End] + [first {#.Item x (first (-- n) xs')} #.End] [after (after (-- n) xs') xs] ) @@ -108,12 +108,12 @@ #.End #.End - (#.Item x xs') + {#.Item x xs'} (if (predicate x) )))] - [while (#.Item x (while predicate xs')) #.End] + [while {#.Item x (while predicate xs')} #.End] [until (until predicate xs') xs] ) @@ -125,9 +125,9 @@ #.End [#.End #.End] - (#.Item x xs') + {#.Item x xs'} (let [[tail rest] (split_at (-- n) xs')] - [(#.Item x tail) rest])) + [{#.Item x tail} rest])) [#.End xs])) (def: (split_when' predicate ys xs) @@ -137,10 +137,10 @@ #.End [ys xs] - (#.Item x xs') + {#.Item x xs'} (if (predicate x) [ys xs] - (split_when' predicate (#.Item x ys) xs')))) + (split_when' predicate {#.Item x ys} xs')))) (def: .public (split_when predicate xs) (All (_ a) @@ -156,21 +156,21 @@ _ (let [[pre post] (split_at size list)] - (#.Item pre (sub size post))))) + {#.Item pre (sub size post)}))) (def: .public (repeated n x) (All (_ a) (-> Nat a (List a))) (case n 0 #.End - _ (#.Item x (repeated (-- n) x)))) + _ {#.Item x (repeated (-- n) x)})) (def: (iterations' f x) (All (_ a) (-> (-> a (Maybe a)) a (List a))) (case (f x) - (#.Some x') - (#.Item x (iterations' f x')) + {#.Some x'} + {#.Item x (iterations' f x')} #.None (list))) @@ -179,8 +179,8 @@ (All (_ a) (-> (-> a (Maybe a)) a (List a))) (case (f x) - (#.Some x') - (#.Item x (iterations' f x')) + {#.Some x'} + {#.Item x (iterations' f x')} #.None (list x))) @@ -192,10 +192,10 @@ #.End #.None - (#.Item x xs') + {#.Item x xs'} (case (check x) - (#.Some output) - (#.Some output) + {#.Some output} + {#.Some output} #.None (one check xs')))) @@ -207,8 +207,8 @@ @.js (mix (function (_ head tail) (case (check head) - (#.Some head) - (#.Item head tail) + {#.Some head} + {#.Item head tail} #.None tail)) @@ -218,10 +218,10 @@ #.End #.End - (#.Item x xs') + {#.Item x xs'} (case (check x) - (#.Some output) - (#.Item output (all check xs')) + {#.Some output} + {#.Item output (all check xs')} #.None (all check xs'))))) @@ -231,7 +231,7 @@ (-> (Predicate a) (List a) (Maybe a))) (..one (function (_ value) (if (predicate value) - (#.Some value) + {#.Some value} #.None)) xs)) @@ -242,10 +242,10 @@ #.End xs - (#.Item x #.End) + {#.Item x #.End} xs - (#.Item x xs') + {#.Item x xs'} (list& x sep (interposed sep xs')))) (def: .public (size list) @@ -260,7 +260,7 @@ #.End - (#.Item head tail) + {#.Item head tail} ( (predicate head) ( predicate tail))))] @@ -275,9 +275,9 @@ #.End #.None - (#.Item x xs') + {#.Item x xs'} (case i - 0 (#.Some x) + 0 {#.Some x} _ (item (-- i) xs')))) (implementation: .public (equivalence Equivalence) @@ -288,7 +288,7 @@ [#.End #.End] #1 - [(#.Item x xs') (#.Item y ys')] + [{#.Item x xs'} {#.Item y ys'}] (and (\ Equivalence = x y) (= xs' ys')) @@ -317,8 +317,8 @@ #.End ys - (#.Item x xs') - (#.Item x (composite xs' ys))))) + {#.Item x xs'} + {#.Item x (composite xs' ys)}))) (open: "[0]" ..monoid) @@ -330,8 +330,8 @@ #.End #.End - (#.Item a ma') - (#.Item (f a) (each f ma'))))) + {#.Item a ma'} + {#.Item (f a) (each f ma')}))) (open: "[0]" ..functor) @@ -345,7 +345,7 @@ #.End #.End - (#.Item f ff') + {#.Item f ff'} (|> ff' (on fa) (composite (each f fa)))))) @@ -356,7 +356,7 @@ (def: &functor ..functor) (def: (in a) - (#.Item a #.End)) + {#.Item a #.End}) (def: conjoint (|>> reversed (mix composite identity)))) @@ -367,11 +367,11 @@ #.End (list) - (#.Item x xs') + {#.Item x xs'} (let [[pre post] (mix (function (_ x' [pre post]) (if (< x x') - [(#.Item x' pre) post] - [pre (#.Item x' post)])) + [{#.Item x' pre} post] + [pre {#.Item x' post}])) [(list) (list)] xs')] ($_ composite (sorted < pre) (list x) (sorted < post))))) @@ -391,7 +391,7 @@ #.End #0 - (#.Item x' xs') + {#.Item x' xs'} (or (\ eq = x x') (member? eq xs' x)))) @@ -402,8 +402,8 @@ #.End #.None - (#.Item x xs') - (#.Some )))] + {#.Item x xs'} + {#.Some }))] [head a x] [tail (List a) xs'] @@ -417,7 +417,7 @@ (def: (identifier$ name) (-> Text Code) - [["" 0 0] (#.Identifier "" name)]) + [["" 0 0] {#.Identifier "" name}]) (def: (nat\encoded value) (-> Nat Text) @@ -443,7 +443,7 @@ (macro: .public (zipped tokens state) (case tokens - (^ (list [_ (#.Nat num_lists)])) + (^ (list [_ {#.Nat num_lists}])) (if (n.> 0 num_lists) (let [(^open "[0]") ..functor indices (..indices num_lists) @@ -458,7 +458,7 @@ (let [base (nat\encoded idx)] [(identifier$ base) (identifier$ ("lux text concat" base "'"))])))) - pattern (` [(~+ (each (function (_ [v vs]) (` (#.Item (~ v) (~ vs)))) + pattern (` [(~+ (each (function (_ [v vs]) (` {#.Item (~ v) (~ vs)})) vars+lists))]) g!step (identifier$ "0step0") g!blank (identifier$ "0,0") @@ -467,23 +467,23 @@ (function ((~ g!step) (~+ list_vars)) (case [(~+ list_vars)] (~ pattern) - (#.Item [(~+ (each product.left vars+lists))] - ((~ g!step) (~+ list_vars))) + {#.Item [(~+ (each product.left vars+lists))] + ((~ g!step) (~+ list_vars))} (~ g!blank) #.End))))] - (#.Right [state (list code)])) - (#.Left "Cannot zipped 0 lists.")) + {#.Right [state (list code)]}) + {#.Left "Cannot zipped 0 lists."}) _ - (#.Left "Wrong syntax for zipped"))) + {#.Left "Wrong syntax for zipped"})) (def: .public zipped/2 (zipped 2)) (def: .public zipped/3 (zipped 3)) (macro: .public (zipped_with tokens state) (case tokens - (^ (list [_ (#.Nat num_lists)])) + (^ (list [_ {#.Nat num_lists}])) (if (n.> 0 num_lists) (let [(^open "[0]") ..functor indices (..indices num_lists) @@ -501,7 +501,7 @@ (let [base (nat\encoded idx)] [(identifier$ base) (identifier$ ("lux text concat" base "'"))])))) - pattern (` [(~+ (each (function (_ [v vs]) (` (#.Item (~ v) (~ vs)))) + pattern (` [(~+ (each (function (_ [v vs]) (` {#.Item (~ v) (~ vs)})) vars+lists))]) g!step (identifier$ "0step0") g!blank (identifier$ "0,0") @@ -510,16 +510,16 @@ (function ((~ g!step) (~ g!func) (~+ list_vars)) (case [(~+ list_vars)] (~ pattern) - (#.Item ((~ g!func) (~+ (each product.left vars+lists))) - ((~ g!step) (~ g!func) (~+ list_vars))) + {#.Item ((~ g!func) (~+ (each product.left vars+lists))) + ((~ g!step) (~ g!func) (~+ list_vars))} (~ g!blank) #.End))))] - (#.Right [state (list code)])) - (#.Left "Cannot zipped_with 0 lists.")) + {#.Right [state (list code)]}) + {#.Left "Cannot zipped_with 0 lists."}) _ - (#.Left "Wrong syntax for zipped_with"))) + {#.Left "Wrong syntax for zipped_with"})) (def: .public zipped_with/2 (zipped_with 2)) (def: .public zipped_with/3 (zipped_with 3)) @@ -530,10 +530,10 @@ #.End #.None - (#.Item x #.End) - (#.Some x) + {#.Item x #.End} + {#.Some x} - (#.Item x xs') + {#.Item x xs'} (last xs'))) (def: .public (inits xs) @@ -542,16 +542,16 @@ #.End #.None - (#.Item x #.End) - (#.Some #.End) + {#.Item x #.End} + {#.Some #.End} - (#.Item x xs') + {#.Item x xs'} (case (inits xs') #.None (undefined) - (#.Some tail) - (#.Some (#.Item x tail))) + {#.Some tail} + {#.Some {#.Item x tail}}) )) (def: .public together @@ -573,7 +573,9 @@ [lMla MlMla ... TODO: Remove this version ASAP and use one below. lla (for [@.old - (: ((:parameter 0) (List (List (:parameter 1)))) + (: {#.Apply + (type (List (List (:parameter 1)))) + (:parameter 0)} (monad.all ! lMla))] (monad.all ! lMla))] (in (..together lla))))) @@ -590,15 +592,15 @@ #.End #.End - (#.Item x xs') - (#.Item [idx x] (recur (++ idx) xs'))))) + {#.Item x xs'} + {#.Item [idx x] (recur (++ idx) xs')}))) (macro: .public (when tokens state) (case tokens (^ (.list test then)) - (#.Right [state (.list (` (.if (~ test) + {#.Right [state (.list (` (.if (~ test) (~ then) - (.list))))]) + (.list))))]} _ - (#.Left "Wrong syntax for when"))) + {#.Left "Wrong syntax for when"})) diff --git a/stdlib/source/library/lux/data/collection/queue.lux b/stdlib/source/library/lux/data/collection/queue.lux index 3e3bd9e87..7a52a1e9f 100644 --- a/stdlib/source/library/lux/data/collection/queue.lux +++ b/stdlib/source/library/lux/data/collection/queue.lux @@ -76,7 +76,7 @@ (with@ #front (.list val) queue) _ - (revised@ #rear (|>> (#.Item val)) queue))) + (revised@ #rear (|>> {#.Item val}) queue))) (implementation: .public (equivalence super) (All (_ a) (-> (Equivalence a) (Equivalence (Queue a)))) diff --git a/stdlib/source/library/lux/data/collection/queue/priority.lux b/stdlib/source/library/lux/data/collection/queue/priority.lux index 28f1f135f..6e56b4b1c 100644 --- a/stdlib/source/library/lux/data/collection/queue/priority.lux +++ b/stdlib/source/library/lux/data/collection/queue/priority.lux @@ -57,13 +57,13 @@ #.None 0 - (#.Some tree) + {#.Some tree} (loop [node tree] (case (tree.root node) - (0 #0 _) + {0 #0 _} 1 - (0 #1 [left right]) + {0 #1 [left right]} (n.+ (recur left) (recur right)))))) (def: .public (member? equivalence queue member) @@ -72,13 +72,13 @@ #.None false - (#.Some tree) + {#.Some tree} (loop [node tree] (case (tree.root node) - (0 #0 reference) + {0 #0 reference} (\ equivalence = reference member) - (0 #1 [left right]) + {0 #1 [left right]} (or (recur left) (recur right)))))) @@ -90,25 +90,25 @@ .let [highest_priority (tree.tag tree)]] (loop [node tree] (case (tree.root node) - (0 #0 reference) + {0 #0 reference} (if (n.= highest_priority (tree.tag node)) #.None - (#.Some node)) + {#.Some node}) - (0 #1 left right) + {0 #1 left right} (if (n.= highest_priority (tree.tag left)) (case (recur left) #.None - (#.Some right) + {#.Some right} - (#.Some =left) - (#.Some (\ ..builder branch =left right))) + {#.Some =left} + {#.Some (\ ..builder branch =left right)}) (case (recur right) #.None - (#.Some left) + {#.Some left} - (#.Some =right) - (#.Some (\ ..builder branch left =right))))))))) + {#.Some =right} + {#.Some (\ ..builder branch left =right)}))))))) (def: .public (end priority value queue) (All (_ a) (-> Priority a (Queue a) (Queue a))) @@ -116,10 +116,10 @@ (:abstraction (case (:representation queue) #.None - (#.Some addition) + {#.Some addition} - (#.Some tree) - (#.Some (\ ..builder branch tree addition))))))] + {#.Some tree} + {#.Some (\ ..builder branch tree addition)}))))] ) (def: .public empty? diff --git a/stdlib/source/library/lux/data/collection/row.lux b/stdlib/source/library/lux/data/collection/row.lux index 728a67ce4..aa8c6d0f7 100644 --- a/stdlib/source/library/lux/data/collection/row.lux +++ b/stdlib/source/library/lux/data/collection/row.lux @@ -34,8 +34,8 @@ (type: (Node a) (Variant - (#Base (Array a)) - (#Hierarchy (Array (Node a))))) + {#Base (Array a)} + {#Hierarchy (Array (Node a))})) (type: (Base a) (Array a)) @@ -93,7 +93,7 @@ (def: (path level tail) (All (_ a) (-> Level (Base a) (Node a))) (if (n.= 0 level) - (#Base tail) + {#Base tail} (|> (empty_hierarchy []) (array.write! 0 (path (level_down level) tail)) #Hierarchy))) @@ -109,15 +109,15 @@ ... If we're currently on a bottom node sub_node (if (n.= branching_exponent level) ... Just add the tail to it - (#Base tail) + {#Base tail} ... Otherwise, check whether there's a vacant spot (case (array.read! sub_idx parent) ... If so, set the path to the tail #.None (..path (level_down level) tail) ... If not, push the tail onto the sub_node. - (#.Some (#Hierarchy sub_node)) - (#Hierarchy (with_tail size (level_down level) tail sub_node)) + {#.Some {#Hierarchy sub_node}} + {#Hierarchy (with_tail size (level_down level) tail sub_node)} _ (undefined)) @@ -136,11 +136,11 @@ (All (_ a) (-> Level Index a (Hierarchy a) (Hierarchy a))) (let [sub_idx (branch_idx (i64.right_shifted level idx))] (case (array.read! sub_idx hierarchy) - (#.Some (#Hierarchy sub_node)) + {#.Some {#Hierarchy sub_node}} (|> (array.clone hierarchy) - (array.write! sub_idx (#Hierarchy (hierarchy\has (level_down level) idx val sub_node)))) + (array.write! sub_idx {#Hierarchy (hierarchy\has (level_down level) idx val sub_node)})) - (^multi (#.Some (#Base base)) + (^multi {#.Some {#Base base}} (n.= 0 (level_down level))) (|> (array.clone hierarchy) (array.write! sub_idx (|> (array.clone base) @@ -160,13 +160,13 @@ (do maybe.monad [base|hierarchy (array.read! sub_idx hierarchy) sub (case base|hierarchy - (#Hierarchy sub) + {#Hierarchy sub} (without_tail size (level_down level) sub) - (#Base _) + {#Base _} (undefined))] (|> (array.clone hierarchy) - (array.write! sub_idx (#Hierarchy sub)) + (array.write! sub_idx {#Hierarchy sub}) #.Some)) ... Else... @@ -178,10 +178,10 @@ (def: (node\list node) (All (_ a) (-> (Node a) (List a))) (case node - (#Base base) + {#Base base} (array.list #.None base) - (#Hierarchy hierarchy) + {#Hierarchy hierarchy} (|> hierarchy (array.list #.None) list.reversed @@ -228,7 +228,7 @@ (: (Hierarchy (:parameter 0)) (empty_hierarchy []))] (empty_hierarchy [])) - (array.write! 0 (#Hierarchy (value@ #root row))) + (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. @@ -261,18 +261,18 @@ hierarchy (value@ #root row)] (case [(n.> branching_exponent level) (array.read! (branch_idx (i64.right_shifted level idx)) hierarchy)] - [#1 (#.Some (#Hierarchy sub))] + [#1 {#.Some {#Hierarchy sub}}] (recur (level_down level) sub) - [#0 (#.Some (#Base base))] - (#try.Success base) + [#0 {#.Some {#Base base}}] + {#try.Success base} [_ #.None] (exception.except ..base_was_not_found []) _ (exception.except ..incorrect_row_structure []))) - (#try.Success (value@ #tail row))) + {#try.Success (value@ #tail row)}) (exception.except ..index_out_of_bounds [row idx]))) (def: .public (item idx row) @@ -280,8 +280,8 @@ (do try.monad [base (base_for idx row)] (case (array.read! (branch_idx idx) base) - (#.Some value) - (#try.Success value) + {#.Some value} + {#try.Success value} #.None (exception.except ..incorrect_row_structure [])))) @@ -290,14 +290,14 @@ (All (_ a) (-> Nat a (Row a) (Try (Row a)))) (let [row_size (value@ #size row)] (if (within_bounds? row idx) - (#try.Success (if (n.< (tail_off row_size) idx) + {#try.Success (if (n.< (tail_off row_size) idx) (revised@ #root (hierarchy\has (value@ #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))) + row))} (exception.except ..index_out_of_bounds [row idx])))) (def: .public (revised idx f row) @@ -332,10 +332,10 @@ (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))] + [#.None {#.Some {#Hierarchy sub_node}}] (recur (level_down level) sub_node) - ... [#.None (#.Some (#Base _))] + ... [#.None {#.Some {#Base _}}] ... (undefined) _ @@ -350,8 +350,8 @@ (def: .public (list row) (All (_ a) (-> (Row a) (List a))) - (list\composite (node\list (#Hierarchy (value@ #root row))) - (node\list (#Base (value@ #tail row))))) + (list\composite (node\list {#Hierarchy (value@ #root row)}) + (node\list {#Base (value@ #tail row)}))) (def: .public of_list (All (_ a) (-> (List a) (Row a))) @@ -373,10 +373,10 @@ (def: (= v1 v2) (case [v1 v2] - [(#Base b1) (#Base b2)] + [{#Base b1} {#Base b2}] (\ (array.equivalence Equivalence) = b1 b2) - [(#Hierarchy h1) (#Hierarchy h2)] + [{#Hierarchy h1} {#Hierarchy h2}] (\ (array.equivalence (node_equivalence Equivalence)) = h1 h2) _ @@ -388,20 +388,20 @@ (def: (= v1 v2) (and (n.= (value@ #size v1) (value@ #size v2)) (let [(^open "node\[0]") (node_equivalence Equivalence)] - (and (node\= (#Base (value@ #tail v1)) - (#Base (value@ #tail v2))) - (node\= (#Hierarchy (value@ #root v1)) - (#Hierarchy (value@ #root v2)))))))) + (and (node\= {#Base (value@ #tail v1)} + {#Base (value@ #tail v2)}) + (node\= {#Hierarchy (value@ #root v1)} + {#Hierarchy (value@ #root v2)})))))) (implementation: node_mix (Mix Node) (def: (mix f init xs) (case xs - (#Base base) + {#Base base} (array\mix f init base) - (#Hierarchy hierarchy) + {#Hierarchy hierarchy} (array\mix (function (_ node init') (mix f init' node)) init hierarchy)))) @@ -414,8 +414,8 @@ (mix f (mix f init - (#Hierarchy (value@ #root xs))) - (#Base (value@ #tail xs)))))) + {#Hierarchy (value@ #root xs)}) + {#Base (value@ #tail xs)})))) (implementation: .public monoid (All (_ a) (Monoid (Row a))) @@ -430,11 +430,11 @@ (def: (each f xs) (case xs - (#Base base) - (#Base (array\each f base)) + {#Base base} + {#Base (array\each f base)} - (#Hierarchy hierarchy) - (#Hierarchy (array\each (each f) hierarchy))))) + {#Hierarchy hierarchy} + {#Hierarchy (array\each (each f) hierarchy)}))) (implementation: .public functor (Functor Row) @@ -485,15 +485,15 @@ (-> (Predicate a) (Node a) Bit)) (function (help predicate node) (case node - (#Base base) + {#Base base} ( predicate base) - (#Hierarchy hierarchy) + {#Hierarchy hierarchy} ( (help predicate) hierarchy))))] (function ( predicate row) (let [(^slots [#root #tail]) row] - ( (help predicate (#Hierarchy root)) - (help predicate (#Base tail)))))))] + ( (help predicate {#Hierarchy root}) + (help predicate {#Base tail}))))))] [every? array.every? #1 and] [any? array.any? #0 or] diff --git a/stdlib/source/library/lux/data/collection/sequence.lux b/stdlib/source/library/lux/data/collection/sequence.lux index a641721c8..6e4e0b801 100644 --- a/stdlib/source/library/lux/data/collection/sequence.lux +++ b/stdlib/source/library/lux/data/collection/sequence.lux @@ -42,7 +42,7 @@ #.End (recur start next) - (#.Item head' tail') + {#.Item head' tail'} (recur head' tail'))]))) (template [ ] @@ -91,7 +91,7 @@ (if [(list) xs] (let [[tail next] ( xs')] - [(#.Item [x tail]) next]))))] + [{#.Item [x tail]} next]))))] [split_when (-> a Bit) (pred x) pred] [split_at Nat (n.= 0 pred) (-- pred)] diff --git a/stdlib/source/library/lux/data/collection/set/multi.lux b/stdlib/source/library/lux/data/collection/set/multi.lux index cd36648eb..89baa8935 100644 --- a/stdlib/source/library/lux/data/collection/set/multi.lux +++ b/stdlib/source/library/lux/data/collection/set/multi.lux @@ -43,7 +43,7 @@ (case multiplicity 0 set _ (case (dictionary.value elem (:representation set)) - (#.Some current) + {#.Some current} (:abstraction (if (n.> multiplicity current) (dictionary.revised elem (n.- multiplicity) (:representation set)) diff --git a/stdlib/source/library/lux/data/collection/stack.lux b/stdlib/source/library/lux/data/collection/stack.lux index feb2d2805..87925a89a 100644 --- a/stdlib/source/library/lux/data/collection/stack.lux +++ b/stdlib/source/library/lux/data/collection/stack.lux @@ -31,8 +31,8 @@ #.End #.None - (#.Item value _) - (#.Some value))) + {#.Item value _} + {#.Some value})) (def: .public (next stack) (All (_ a) (-> (Stack a) (Maybe [a (Stack a)]))) @@ -40,12 +40,12 @@ #.End #.None - (#.Item top stack') - (#.Some [top (:abstraction stack')]))) + {#.Item top stack'} + {#.Some [top (:abstraction stack')]})) (def: .public (top value stack) (All (_ a) (-> a (Stack a) (Stack a))) - (:abstraction (#.Item value (:representation stack)))) + (:abstraction {#.Item value (:representation stack)})) (implementation: .public (equivalence super) (All (_ a) diff --git a/stdlib/source/library/lux/data/collection/tree.lux b/stdlib/source/library/lux/data/collection/tree.lux index 96d92ac6d..281e9f2ed 100644 --- a/stdlib/source/library/lux/data/collection/tree.lux +++ b/stdlib/source/library/lux/data/collection/tree.lux @@ -27,7 +27,7 @@ (value@ #children) (list\each flat) list\conjoint - (#.Item (value@ #value tree)))) + {#.Item (value@ #value tree)})) (def: .public (leaf value) (All (_ a) (-> a (Tree a))) diff --git a/stdlib/source/library/lux/data/collection/tree/finger.lux b/stdlib/source/library/lux/data/collection/tree/finger.lux index b4e042069..c5fc655e8 100644 --- a/stdlib/source/library/lux/data/collection/tree/finger.lux +++ b/stdlib/source/library/lux/data/collection/tree/finger.lux @@ -45,40 +45,40 @@ (:abstraction [#monoid monoid #tag tag - #root (0 #0 value)])) + #root {0 #0 value}])) (def: (branch left right) (:abstraction [#monoid monoid #tag (\ monoid composite (..tag left) (..tag right)) - #root (0 #1 [left right])]))) + #root {0 #1 [left right]}]))) (def: .public (value tree) (All (_ @ t v) (-> (Tree @ t v) v)) (case (value@ #root (:representation tree)) - (0 #0 value) + {0 #0 value} value - (0 #1 [left right]) + {0 #1 [left right]} (value left))) (def: .public (tags tree) (All (_ @ t v) (-> (Tree @ t v) (List t))) (case (value@ #root (:representation tree)) - (0 #0 value) + {0 #0 value} (list (value@ #tag (:representation tree))) - (0 #1 [left right]) + {0 #1 [left right]} (list\composite (tags left) (tags right)))) (def: .public (values tree) (All (_ @ t v) (-> (Tree @ t v) (List v))) (case (value@ #root (:representation tree)) - (0 #0 value) + {0 #0 value} (list value) - (0 #1 [left right]) + {0 #1 [left right]} (list\composite (values left) (values right)))) @@ -90,10 +90,10 @@ (loop [_tag tag//identity _node root] (case _node - (0 #0 value) - (#.Some value) + {0 #0 value} + {#.Some value} - (0 #1 [left right]) + {0 #1 [left right]} (let [shifted_tag (tag//composite _tag (..tag left))] (if (predicate shifted_tag) (recur _tag (value@ #root (:representation left))) @@ -104,7 +104,7 @@ (def: .public (exists? predicate tree) (All (_ @ t v) (-> (Predicate t) (Tree @ t v) Bit)) (case (..one predicate tree) - (#.Some _) + {#.Some _} true #.None diff --git a/stdlib/source/library/lux/data/collection/tree/zipper.lux b/stdlib/source/library/lux/data/collection/tree/zipper.lux index ee7daa341..313a61909 100644 --- a/stdlib/source/library/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/library/lux/data/collection/tree/zipper.lux @@ -92,11 +92,11 @@ #.End #.None - (#.Item head tail) - (#.Some [#family (#.Some [#parent (with@ [#node #//.children] (list) zipper) + {#.Item head tail} + {#.Some [#family {#.Some [#parent (with@ [#node #//.children] (list) zipper) #lefts #.End - #rights tail]) - #node head]))) + #rights tail]} + #node head]})) (def: .public (up zipper) (All (_ a) (-> (Zipper a) (Maybe (Zipper a)))) @@ -107,33 +107,33 @@ (revised@ #node (: (-> (Tree (:parameter 0)) (Tree (:parameter 0))) (with@ #//.children (list\composite (list.reversed lefts) - (#.Item (value@ #node zipper) - rights)))) + {#.Item (value@ #node zipper) + rights}))) parent)] (with@ [#node #//.children] (list\composite (list.reversed lefts) - (#.Item (value@ #node zipper) - rights)) + {#.Item (value@ #node zipper) + rights}) parent)))))) (template [ ] [(def: .public ( zipper) (All (_ a) (-> (Zipper a) (Maybe (Zipper a)))) (case (value@ #family zipper) - (#.Some family) + {#.Some family} (case (value@ family) - (#.Item next side') - (#.Some (for [@.old - [#family (#.Some (|> family + {#.Item next side'} + {#.Some (for [@.old + [#family {#.Some (|> family (with@ side') - (revised@ (|>> (#.Item (value@ #node zipper)))))) + (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) (|>> (with@ side') - (revised@ (|>> (#.Item (value@ #node zipper)))))))] - [#family (#.Some (move side' zipper family)) - #node next]))) + (revised@ (|>> {#.Item (value@ #node zipper)})))))] + [#family {#.Some (move side' zipper family)} + #node next]))} #.End #.None) @@ -147,24 +147,24 @@ #.None #.None - (#.Some family) + {#.Some family} (case (list.reversed (value@ family)) #.End #.None - (#.Item last prevs) - (#.Some (for [@.old [#family (#.Some (|> family + {#.Item last prevs} + {#.Some (for [@.old [#family {#.Some (|> family (with@ #.End) - (revised@ (|>> (#.Item (value@ #node zipper)) - (list\composite prevs))))) + (revised@ (|>> {#.Item (value@ #node zipper)} + (list\composite prevs))))} #node last]] (let [move (: (All (_ a) (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ prevs zipper) (|>> (with@ #.End) - (revised@ (|>> (#.Item (value@ #node zipper)) + (revised@ (|>> {#.Item (value@ #node zipper)} (list\composite prevs))))))] - [#family (#.Some (move prevs zipper family)) - #node last]))))))] + [#family {#.Some (move prevs zipper family)} + #node last]))})))] [right rightmost #rights #lefts] [left leftmost #lefts #rights] @@ -173,14 +173,14 @@ (def: .public (next zipper) (All (_ a) (-> (Zipper a) (Maybe (Zipper a)))) (case (..down zipper) - (#.Some forward) - (#.Some forward) + {#.Some forward} + {#.Some forward} #.None (loop [@ zipper] (case (..right @) - (#.Some forward) - (#.Some forward) + {#.Some forward} + {#.Some forward} #.None (do maybe.monad @@ -190,12 +190,12 @@ (def: (bottom zipper) (All (_ a) (-> (Zipper a) (Zipper a))) (case (..right zipper) - (#.Some forward) + {#.Some forward} (bottom forward) #.None (case (..down zipper) - (#.Some forward) + {#.Some forward} (bottom forward) #.None @@ -207,13 +207,13 @@ #.None (..up zipper) - (#.Some backward) - (#.Some (case (..down backward) - (#.Some then) + {#.Some backward} + {#.Some (case (..down backward) + {#.Some then} (..bottom then) #.None - backward)))) + backward)})) (template [ ] [(def: .public ( zipper) @@ -222,13 +222,13 @@ #.None #.None - (#.Some @) + {#.Some @} (loop [@ @] (case ( @) #.None - (#.Some @) + {#.Some @} - (#.Some @) + {#.Some @} (recur @)))))] [end ..next] @@ -241,7 +241,7 @@ #.None true - (#.Some _) + {#.Some _} false)) (def: .public (interpose value zipper) @@ -253,7 +253,7 @@ (def: .public (adopt value zipper) (All (_ a) (-> a (Zipper a) (Zipper a))) (revised@ [#node #//.children] - (|>> (#.Item (//.leaf value))) + (|>> {#.Item (//.leaf value)}) zipper)) (def: .public (remove zipper) @@ -266,7 +266,7 @@ (value@ #rights family) (value@ #parent family))) - (#.Item next side) + {#.Item next side} (in (|> zipper (with@ #family (|> family (with@ #lefts side) @@ -280,10 +280,10 @@ #.None #.None - (#.Some family) - (#.Some (with@ #family - (#.Some (revised@ (|>> (#.Item (//.leaf value))) family)) - zipper))))] + {#.Some family} + {#.Some (with@ #family + {#.Some (revised@ (|>> {#.Item (//.leaf value)}) family)} + zipper)}))] [insert_left #lefts] [insert_right #rights] diff --git a/stdlib/source/library/lux/data/format/binary.lux b/stdlib/source/library/lux/data/format/binary.lux index 234b7a093..0fcc94723 100644 --- a/stdlib/source/library/lux/data/format/binary.lux +++ b/stdlib/source/library/lux/data/format/binary.lux @@ -85,7 +85,7 @@ (function (_ altV) (case altV (^template [ ] - [( caseV) + [{ caseV} (let [[caseS caseT] ( caseV)] [(.++ caseS) (function (_ [offset binary]) @@ -233,7 +233,7 @@ (function (_ altV) (case altV (^template [ ] - [( caseV) + [{ caseV} (let [[caseS caseT] ( caseV)] [(.++ caseS) (function (_ [offset binary]) @@ -268,7 +268,7 @@ (function (_ altV) (case altV (^template [ ] - [( caseV) + [{ caseV} (let [[caseS caseT] ( caseV)] [(.++ caseS) (function (_ [offset binary]) diff --git a/stdlib/source/library/lux/data/format/css.lux b/stdlib/source/library/lux/data/format/css.lux index a0d849ccf..e0c1d1773 100644 --- a/stdlib/source/library/lux/data/format/css.lux +++ b/stdlib/source/library/lux/data/format/css.lux @@ -50,7 +50,7 @@ (def: .public (font font) (-> Font (CSS Special)) (let [with_unicode (case (value@ #/font.unicode_range font) - (#.Some unicode_range) + {#.Some unicode_range} (let [unicode_range' (format "U+" (\ nat.hex encoded (value@ #/font.start unicode_range)) "-" (\ nat.hex encoded (value@ #/font.end unicode_range)))] (list ["unicode-range" unicode_range'])) @@ -74,7 +74,7 @@ (-> URL (Maybe Query) (CSS Special)) (:abstraction (format (format "@import url(" (%.text url) ")") (case query - (#.Some query) + {#.Some query} (format " " (/query.query query)) #.None diff --git a/stdlib/source/library/lux/data/format/css/value.lux b/stdlib/source/library/lux/data/format/css/value.lux index ae4393448..1d5fe95df 100644 --- a/stdlib/source/library/lux/data/format/css/value.lux +++ b/stdlib/source/library/lux/data/format/css/value.lux @@ -922,7 +922,7 @@ #.None (:representation Stop stop) - (#.Some hint) + {#.Some hint} (format (:representation Hint hint) ..value_separator (:representation Stop stop))))])]) (type: .public (List/1 a) @@ -1078,7 +1078,7 @@ (Value Image)) (let [after_extent (format "at " (:representation location)) with_extent (case extent - (#.Some extent) + {#.Some extent} (format (..extent extent) " " after_extent) #.None @@ -1158,7 +1158,7 @@ (def: .public (font_family options) (-> (List Font) (Value Font)) (case options - (#.Item _) + {#.Item _} (|> options (list\each ..font_name) (text.interposed ",") diff --git a/stdlib/source/library/lux/data/format/html.lux b/stdlib/source/library/lux/data/format/html.lux index 10cf2c203..7e1a7e322 100644 --- a/stdlib/source/library/lux/data/format/html.lux +++ b/stdlib/source/library/lux/data/format/html.lux @@ -41,7 +41,7 @@ #Parent #Self #Top - (#Frame Text))) + {#Frame Text})) (def: (target value) (-> Target Text) @@ -50,7 +50,7 @@ #Parent "_parent" #Self "_self" #Top "_top" - (#Frame name) name)) + {#Frame name} name)) ... Properly formats text to ensure no injection can happen on the HTML. (def: safe @@ -176,7 +176,7 @@ (-> URL (Maybe Target) Meta) (let [partial (list ["href" href]) full (case target - (#.Some target) + {#.Some target} (list& ["target" (..target target)] partial) #.None @@ -213,7 +213,7 @@ (def: .public (image source attributes) (-> URL Attributes Image) (|> attributes - (#.Item ["src" source]) + {#.Item ["src" source]} (..simple "img"))) (def: .public (svg attributes content) @@ -267,9 +267,9 @@ (type: .public Shape (Variant - (#Rectangle Rectangle) - (#Circle Circle) - (#Polygon Polygon))) + {#Rectangle Rectangle} + {#Circle Circle} + {#Polygon Polygon})) (template [ ] [(def: ( attributes shape) @@ -286,13 +286,13 @@ (def: (area attributes shape) (-> Attributes Shape (HTML Any)) (case shape - (#Rectangle rectangle) + {#Rectangle rectangle} (..rectangle attributes rectangle) - (#Circle circle) + {#Circle circle} (..circle attributes circle) - (#Polygon polygon) + {#Polygon polygon} (..polygon attributes polygon))) (def: .public (each attributes areas for) @@ -303,7 +303,7 @@ #.End (..empty "map" attributes) - (#.Item head tail) + {#.Item head tail} (..tag "map" attributes (list\mix (function.flipped ..and) head tail))))) @@ -348,7 +348,7 @@ (-> (Maybe Content) Attributes ) (..tag attributes (case description - (#.Some description) + {#.Some description} ($_ ..and (..tag (list) description) content) @@ -469,7 +469,7 @@ #.End (..empty "dl" attributes) - (#.Item head tail) + {#.Item head tail} (..tag "dl" attributes (list\mix (function.flipped ..and) head tail)))) @@ -527,7 +527,7 @@ #.End head - (#.Item first rest) + {#.Item first rest} (..and head (..table_body (list\mix (function.flipped ..and) first rest)))) @@ -535,21 +535,21 @@ #.None content - (#.Some footer) + {#.Some footer} (..and content (..table_foot (..table_row footer)))) content (case columns #.None content - (#.Some columns) + {#.Some columns} (..and (..columns_group columns) content)) content (case caption #.None content - (#.Some caption) + {#.Some caption} (..and (:as HTML caption) content))] (..tag "table" attributes diff --git a/stdlib/source/library/lux/data/format/json.lux b/stdlib/source/library/lux/data/format/json.lux index 052ce1c18..aa6ef2279 100644 --- a/stdlib/source/library/lux/data/format/json.lux +++ b/stdlib/source/library/lux/data/format/json.lux @@ -43,12 +43,12 @@ (type: .public JSON (Rec JSON (Variant - (#Null Null) - (#Boolean Boolean) - (#Number Number) - (#String String) - (#Array (Row JSON)) - (#Object (Dictionary String JSON))))) + {#Null Null} + {#Boolean Boolean} + {#Number Number} + {#String String} + {#Array (Row JSON)} + {#Object (Dictionary String JSON)}))) (template [ ] [(type: .public @@ -85,26 +85,26 @@ (def: (jsonF token) (-> JSON Code) (case token - (#Null _) + {#Null _} (` #..Null) (^template [ ] - [( value) - (` ( (~ ( value))))]) + [{ value} + (` { (~ ( value))})]) ([code.bit #..Boolean] [code.frac #..Number] [code.text #..String]) - (#Array members) - (` (#..Array ((~! row.row) (~+ (row.list (row\each jsonF members)))))) + {#Array members} + (` {#..Array ((~! row.row) (~+ (row.list (row\each jsonF members))))}) - (#Object pairs) - (` (#..Object ((~! dictionary.of_list) + {#Object pairs} + (` {#..Object ((~! dictionary.of_list) (~! text.hash) (list (~+ (|> pairs dictionary.entries (list\each (function (_ [key_name value]) - (` [(~ (code.text key_name)) (~ (jsonF value))]))))))))))) + (` [(~ (code.text key_name)) (~ (jsonF value))])))))))}))) (syntax: .public (json [token ..jsonP]) (in (list (` (: JSON (~ (jsonF token))))))) @@ -112,47 +112,47 @@ (def: .public (fields json) (-> JSON (Try (List String))) (case json - (#Object obj) - (#try.Success (dictionary.keys obj)) + {#Object obj} + {#try.Success (dictionary.keys obj)} _ - (#try.Failure ($_ text\composite "Cannot get the fields of a non-object.")))) + {#try.Failure ($_ text\composite "Cannot get the fields of a non-object.")})) (def: .public (field key json) (-> String JSON (Try JSON)) (case json - (#Object obj) + {#Object obj} (case (dictionary.value key obj) - (#.Some value) - (#try.Success value) + {#.Some value} + {#try.Success value} #.None - (#try.Failure ($_ text\composite "Missing field '" key "' on object."))) + {#try.Failure ($_ text\composite "Missing field '" key "' on object.")}) _ - (#try.Failure ($_ text\composite "Cannot get field '" key "' on a non-object.")))) + {#try.Failure ($_ text\composite "Cannot get field '" key "' on a non-object.")})) (def: .public (has key value json) (-> String JSON JSON (Try JSON)) (case json - (#Object obj) - (#try.Success (#Object (dictionary.has key value obj))) + {#Object obj} + {#try.Success {#Object (dictionary.has key value obj)}} _ - (#try.Failure ($_ text\composite "Cannot set field '" key "' on a non-object.")))) + {#try.Failure ($_ text\composite "Cannot set field '" key "' on a non-object.")})) (template [ ] [(def: .public ( key json) (-> Text JSON (Try )) (case (field key json) - (#try.Success ( value)) - (#try.Success value) + {#try.Success { value}} + {#try.Success value} - (#try.Success _) - (#try.Failure ($_ text\composite "Wrong value type at key: " key)) + {#try.Success _} + {#try.Failure ($_ text\composite "Wrong value type at key: " key)} - (#try.Failure error) - (#try.Failure error)))] + {#try.Failure error} + {#try.Failure error}))] [boolean_field #Boolean Boolean] [number_field #Number Number] @@ -170,13 +170,13 @@ #1 (^template [ ] - [[( x') ( y')] + [[{ x'} { y'}] (\ = x' y')]) ([#Boolean bit.equivalence] [#Number f.equivalence] [#String text.equivalence]) - [(#Array xs) (#Array ys)] + [{#Array xs} {#Array ys}] (and (n.= (row.size xs) (row.size ys)) (list\mix (function (_ idx prev) (and prev @@ -188,13 +188,13 @@ #1 (list.indices (row.size xs)))) - [(#Object xs) (#Object ys)] + [{#Object xs} {#Object ys}] (and (n.= (dictionary.size xs) (dictionary.size ys)) (list\mix (function (_ [xk xv] prev) (and prev (case (dictionary.value xk ys) #.None #0 - (#.Some yv) (= xv yv)))) + {#.Some yv} (= xv yv)))) #1 (dictionary.entries xs))) @@ -273,7 +273,7 @@ (-> JSON Text) (case json (^template [ ] - [( value) + [{ value} ( value)]) ([#Null ..null_format] [#Boolean ..boolean_format] @@ -337,10 +337,10 @@ offset (.many .decimal)] (in ($_ text\composite mark (if signed?' "-" "") offset))))] (case (f\decoded ($_ text\composite (if signed? "-" "") digits "." decimals exp)) - (#try.Failure message) + {#try.Failure message} (<>.failure message) - (#try.Success value) + {#try.Success value} (in value)))) (def: escaped_parser diff --git a/stdlib/source/library/lux/data/format/markdown.lux b/stdlib/source/library/lux/data/format/markdown.lux index 163bb3b20..b04f60806 100644 --- a/stdlib/source/library/lux/data/format/markdown.lux +++ b/stdlib/source/library/lux/data/format/markdown.lux @@ -110,7 +110,7 @@ (list\each (function (_ [idx [summary detail]]) (format "1. " (:representation summary) (case detail - (#.Some detail) + {#.Some detail} (|> detail :representation ..indent @@ -128,7 +128,7 @@ (|>> (list\each (function (_ [summary detail]) (format "* " (:representation summary) (case detail - (#.Some detail) + {#.Some detail} (|> detail :representation ..indent diff --git a/stdlib/source/library/lux/data/format/tar.lux b/stdlib/source/library/lux/data/format/tar.lux index c0864904c..ec7b997e9 100644 --- a/stdlib/source/library/lux/data/format/tar.lux +++ b/stdlib/source/library/lux/data/format/tar.lux @@ -76,7 +76,7 @@ [(def: .public ( value) (-> Nat (Try )) (if (n.< value) - (#try.Success (:abstraction value)) + {#try.Success (:abstraction value)} (exception.except [value]))) (def: .public @@ -230,10 +230,10 @@ (def: (un_padded string) (-> Binary (Try Binary)) (case (binary.size string) - 0 (#try.Success string) + 0 {#try.Success string} size (loop [end (-- size)] (case end - 0 (#try.Success (\ utf8.codec encoded "")) + 0 {#try.Success (\ utf8.codec encoded "")} _ (do try.monad [last_char (binary.read/8! end string)] (`` (case (.nat last_char) @@ -261,7 +261,7 @@ binary.size (n.> )) (exception.except [value]) - (#try.Success (:abstraction value))) + {#try.Success (:abstraction value)}) (exception.except ..not_ascii [value]))) (def: .public @@ -569,10 +569,10 @@ (type: .public Entry (Variant - (#Normal ..Normal) - (#Symbolic_Link ..Symbolic_Link) - (#Directory ..Directory) - (#Contiguous ..Contiguous))) + {#Normal ..Normal} + {#Symbolic_Link ..Symbolic_Link} + {#Directory ..Directory} + {#Contiguous ..Contiguous})) (type: Device Small) @@ -720,10 +720,10 @@ (def: entry_writer (Writer Entry) - (|>> (case> (#Normal value) (..normal_file_writer value) - (#Symbolic_Link value) (..symbolic_link_writer value) - (#Directory value) (..directory_writer value) - (#Contiguous value) (..contiguous_file_writer value)))) + (|>> (case> {#Normal value} (..normal_file_writer value) + {#Symbolic_Link value} (..symbolic_link_writer value) + {#Directory value} (..directory_writer value) + {#Contiguous value} (..contiguous_file_writer value)))) (def: end_of_archive_size Size diff --git a/stdlib/source/library/lux/data/format/xml.lux b/stdlib/source/library/lux/data/format/xml.lux index 5131090ec..90aaa1b1e 100644 --- a/stdlib/source/library/lux/data/format/xml.lux +++ b/stdlib/source/library/lux/data/format/xml.lux @@ -37,8 +37,8 @@ (type: .public XML (Rec XML (Variant - (#Text Text) - (#Node Tag Attrs (List XML))))) + {#Text Text} + {#Node Tag Attrs (List XML)}))) (def: namespace_separator ":") @@ -61,7 +61,7 @@ #.None (<>.codec int.decimal (.many .decimal)) - (#.Some _) + {#.Some _} (<>.codec int.decimal (.many .hexadecimal)))] (in (|> code .nat text.of_char))) (<>.before (.this ";")) @@ -95,7 +95,7 @@ #.None (in ["" first_part]) - (#.Some second_part) + {#.Some second_part} (in [first_part second_part])))) (def: tag^ namespaced_symbol^) @@ -176,18 +176,18 @@ .let [no_children^ ($_ <>.either (do <>.monad [_ (.this "/>")] - (in (#Node tag attrs (list)))) + (in {#Node tag attrs (list)})) (do <>.monad [_ (.this ">") _ (<>.some (<>.either .space ..comment^)) _ (..close_tag^ tag)] - (in (#Node tag attrs (list))))) + (in {#Node tag attrs (list)}))) with_children^ (do <>.monad [_ (.this ">") children (<>.many node^) _ (..close_tag^ tag)] - (in (#Node tag attrs children)))]] + (in {#Node tag attrs children}))]] ($_ <>.either no_children^ with_children^)) @@ -245,10 +245,10 @@ (loop [prefix "" input input] (case input - (#Text value) + {#Text value} (sanitize_value value) - (^ (#Node xml_tag xml_attrs (list (#Text value)))) + (^ {#Node xml_tag xml_attrs (list {#Text value})}) (let [tag (..tag xml_tag) attrs (if (dictionary.empty? xml_attrs) "" @@ -258,7 +258,7 @@ (sanitize_value value) "")) - (#Node xml_tag xml_attrs xml_children) + {#Node xml_tag xml_attrs xml_children} (let [tag (..tag xml_tag) attrs (if (dictionary.empty? xml_attrs) "" @@ -279,11 +279,11 @@ (def: (= reference sample) (case [reference sample] - [(#Text reference/value) (#Text sample/value)] + [{#Text reference/value} {#Text sample/value}] (text\= reference/value sample/value) - [(#Node reference/tag reference/attrs reference/children) - (#Node sample/tag sample/attrs sample/children)] + [{#Node reference/tag reference/attrs reference/children} + {#Node sample/tag sample/attrs sample/children}] (and (name\= reference/tag sample/tag) (\ (dictionary.equivalence text.equivalence) = reference/attrs sample/attrs) (n.= (list.size reference/children) diff --git a/stdlib/source/library/lux/data/name.lux b/stdlib/source/library/lux/data/name.lux index 64d1f19ff..79d1feef3 100644 --- a/stdlib/source/library/lux/data/name.lux +++ b/stdlib/source/library/lux/data/name.lux @@ -53,10 +53,10 @@ (def: (decoded input) (case (text.all_split_by ..separator input) (^ (list short)) - (#.Right ["" short]) + {#.Right ["" short]} (^ (list module short)) - (#.Right [module short]) + {#.Right [module short]} _ - (#.Left (text\composite "Invalid format for Name: " input))))) + {#.Left (text\composite "Invalid format for Name: " input)}))) diff --git a/stdlib/source/library/lux/data/sum.lux b/stdlib/source/library/lux/data/sum.lux index 85d27f12b..174a2936f 100644 --- a/stdlib/source/library/lux/data/sum.lux +++ b/stdlib/source/library/lux/data/sum.lux @@ -9,7 +9,7 @@ [(def: .public ( value) (All (_ left right) (-> (Or left right))) - (0 value))] + {0 value})] [#0 left] [#1 right]) @@ -20,8 +20,8 @@ (-> (Or a b) c))) (function (_ input) (case input - (0 #0 l) (on_left l) - (0 #1 r) (on_right r)))) + {0 #0 l} (on_left l) + {0 #1 r} (on_right r)))) (def: .public (then on_left on_right) (All (_ l l' r r') @@ -29,8 +29,8 @@ (-> (Or l r) (Or l' r')))) (function (_ input) (case input - (0 #0 l) (0 #0 (on_left l)) - (0 #1 r) (0 #1 (on_right r))))) + {0 #0 l} {0 #0 (on_left l)} + {0 #1 r} {0 #1 (on_right r)}))) (template [ ] [(def: .public ( items) @@ -39,10 +39,10 @@ #.End #.End - (#.Item (0 x) items') - (#.Item [x ( items')]) + {#.Item {0 x} items'} + {#.Item [x ( items')]} - (#.Item _ items') + {#.Item _ items'} ( items')))] [lefts a #0] @@ -55,21 +55,21 @@ #.End [#.End #.End] - (#.Item x xs') + {#.Item x xs'} (let [[lefts rights] (partition xs')] (case x - (0 #0 x') [(#.Item x' lefts) rights] - (0 #1 x') [lefts (#.Item x' rights)])))) + {0 #0 x'} [{#.Item x' lefts} rights] + {0 #1 x'} [lefts {#.Item x' rights}])))) (def: .public (equivalence left right) (All (_ l r) (-> (Equivalence l) (Equivalence r) (Equivalence (Or l r)))) (implementation (def: (= reference sample) (case [reference sample] - [(#.Left reference) (#.Left sample)] + [{#.Left reference} {#.Left sample}] (\ left = reference sample) - [(#.Right reference) (#.Right sample)] + [{#.Right reference} {#.Right sample}] (\ right = reference sample) _ @@ -83,8 +83,8 @@ (\ right &equivalence))) (def: (hash value) (case value - (#.Left value) + {#.Left value} (\ left hash value) - (#.Right value) + {#.Right value} (\ right hash value))))) diff --git a/stdlib/source/library/lux/data/text.lux b/stdlib/source/library/lux/data/text.lux index b3961edc4..7823bd333 100644 --- a/stdlib/source/library/lux/data/text.lux +++ b/stdlib/source/library/lux/data/text.lux @@ -53,7 +53,7 @@ (def: .public (char index input) (-> Nat Text (Maybe Char)) (if (n.< ("lux text size" input) index) - (#.Some ("lux text char" index input)) + {#.Some ("lux text char" index input)} #.None)) (def: .public (index_since offset pattern input) @@ -74,13 +74,13 @@ #.None output - (#.Some offset') + {#.Some offset'} (recur (++ offset') output'))))) (def: .public (starts_with? prefix x) (-> Text Text Bit) (case (index prefix x) - (#.Some 0) + {#.Some 0} true _ @@ -89,7 +89,7 @@ (def: .public (ends_with? postfix x) (-> Text Text Bit) (case (last_index postfix x) - (#.Some n) + {#.Some n} (n.= (size x) (n.+ (size postfix) n)) @@ -104,7 +104,7 @@ (def: .public (contains? sub text) (-> Text Text Bit) (case ("lux text index" 0 sub text) - (#.Some _) + {#.Some _} true _ @@ -134,20 +134,20 @@ (-> Nat Nat Text (Maybe Text)) (if (|> size (n.+ offset) (n.> ("lux text size" input))) #.None - (#.Some ("lux text clip" offset size input)))) + {#.Some ("lux text clip" offset size input)})) (def: .public (clip_since offset input) (-> Nat Text (Maybe Text)) (let [size ("lux text size" input)] (if (n.> size offset) #.None - (#.Some ("lux text clip" offset (n.- offset size) input))))) + {#.Some ("lux text clip" offset (n.- offset size) input)}))) (def: .public (split_at at x) (-> Nat Text (Maybe [Text Text])) (case [(..clip 0 at x) (..clip_since at x)] - [(#.Some pre) (#.Some post)] - (#.Some [pre post]) + [{#.Some pre} {#.Some post}] + {#.Some [pre post]} _ #.None)) @@ -165,14 +165,14 @@ (loop [input sample output (: (List Text) (list))] (case (..split_by token input) - (#.Some [pre post]) + {#.Some [pre post]} (|> output - (#.Item pre) + {#.Item pre} (recur post)) #.None (|> output - (#.Item input) + {#.Item input} list.reversed)))) (def: .public (replaced/1 pattern replacement template) @@ -219,7 +219,7 @@ (loop [left "" right template] (case (..split_by pattern right) - (#.Some [pre post]) + {#.Some [pre post]} (recur ($_ "lux text concat" left pre replacement) post) #.None diff --git a/stdlib/source/library/lux/data/text/encoding/utf8.lux b/stdlib/source/library/lux/data/text/encoding/utf8.lux index 817288316..fc063228e 100644 --- a/stdlib/source/library/lux/data/text/encoding/utf8.lux +++ b/stdlib/source/library/lux/data/text/encoding/utf8.lux @@ -113,7 +113,7 @@ (def: (decoded value) (-> Binary (Try Text)) - (with_expansions [ (#try.Success (java/lang/String::new value (//.name //.utf_8)))] + (with_expansions [ {#try.Success (java/lang/String::new value (//.name //.utf_8))}] (for [@.old @.jvm @@ -137,7 +137,7 @@ (try (:as Text ("python object do" "decode" (:expected value) "utf-8"))) @.lua - (#try.Success ("lua utf8 decode" value)) + {#try.Success ("lua utf8 decode" value)} @.ruby (|> value diff --git a/stdlib/source/library/lux/data/text/escape.lux b/stdlib/source/library/lux/data/text/escape.lux index db706cc42..422239a27 100644 --- a/stdlib/source/library/lux/data/text/escape.lux +++ b/stdlib/source/library/lux/data/text/escape.lux @@ -182,15 +182,15 @@ (case (|> current ("lux text clip" (n.+ ..ascii_escape_offset offset) ..code_size) (\ n.hex decoded)) - (#try.Success char) + {#try.Success char} (let [limit' (|> limit (n.- offset) (n.- ..unicode_escape_offset))] - (#try.Success [(format previous + {#try.Success [(format previous ("lux text clip" 0 offset current) (//.of_char char)) ("lux text clip" (n.+ ..unicode_escape_offset offset) limit' current) - limit'])) + limit']}) - (#try.Failure error) + {#try.Failure error} (exception.except ..invalid_unicode_escape [current offset]))) (def: .public (un_escaped text) @@ -234,14 +234,14 @@ _ (recur (++ offset) previous current limit)) - (#try.Success (case previous + {#try.Success (case previous "" current - _ (format previous current)))))) + _ (format previous current))}))) (syntax: .public (literal [literal .text]) (case (..un_escaped literal) - (#try.Success un_escaped) + {#try.Success un_escaped} (in (list (code.text un_escaped))) - (#try.Failure error) + {#try.Failure error} (meta.failure error))) diff --git a/stdlib/source/library/lux/data/text/format.lux b/stdlib/source/library/lux/data/text/format.lux index 759ccb847..b22f3ce00 100644 --- a/stdlib/source/library/lux/data/text/format.lux +++ b/stdlib/source/library/lux/data/text/format.lux @@ -128,5 +128,5 @@ #.None "#.None" - (#.Some value) - (..format "(#.Some " (format value) ")")))) + {#.Some value} + (..format "{#.Some " (format value) "}")))) diff --git a/stdlib/source/library/lux/data/text/regex.lux b/stdlib/source/library/lux/data/text/regex.lux index 94fd16694..63b112bb4 100644 --- a/stdlib/source/library/lux/data/text/regex.lux +++ b/stdlib/source/library/lux/data/text/regex.lux @@ -110,7 +110,7 @@ re_range^ re_options^))] (in (case negate? - (#.Some _) (` ((~! .not) ($_ ((~! <>.either)) (~+ parts)))) + {#.Some _} (` ((~! .not) ($_ ((~! <>.either)) (~+ parts)))) #.None (` ($_ ((~! <>.either)) (~+ parts))))))) (def: re_user_class^ @@ -273,7 +273,7 @@ (type: Re_Group (Variant #Non_Capturing - (#Capturing [(Maybe Text) Nat]))) + {#Capturing [(Maybe Text) Nat]})) (def: (re_sequential^ capturing? re_scoped^ current_module) (-> Bit @@ -290,16 +290,16 @@ [Nat (List Code) (List (List Code))]) (function (_ part [idx names steps]) (case part - (^or (#.Left complex) (#.Right [#Non_Capturing complex])) + (^or {#.Left complex} {#.Right [#Non_Capturing complex]}) [idx names (list& (list g!temp complex (` .let) (` [(~ g!total) (\ (~! //.monoid) (~' composite) (~ g!total) (~ g!temp))])) steps)] - (#.Right [(#Capturing [?name num_captures]) scoped]) + {#.Right [{#Capturing [?name num_captures]} scoped]} (let [[idx! name!] (case ?name - (#.Some _name) + {#.Some _name} [idx (code.identifier ["" _name])] #.None @@ -334,31 +334,31 @@ (All (_ l r) (-> (Parser [Text l]) (Parser [Text r]) (Parser [Text (Or l r)]))) (function (_ input) (case (left input) - (#try.Success [input' [lt lv]]) - (#try.Success [input' [lt (0 #0 lv)]]) + {#try.Success [input' [lt lv]]} + {#try.Success [input' [lt {0 #0 lv}]]} - (#try.Failure _) + {#try.Failure _} (case (right input) - (#try.Success [input' [rt rv]]) - (#try.Success [input' [rt (0 #1 rv)]]) + {#try.Success [input' [rt rv]]} + {#try.Success [input' [rt {0 #1 rv}]]} - (#try.Failure error) - (#try.Failure error))))) + {#try.Failure error} + {#try.Failure error})))) (def: (|||_^ left right) (All (_ l r) (-> (Parser [Text l]) (Parser [Text r]) (Parser Text))) (function (_ input) (case (left input) - (#try.Success [input' [lt lv]]) - (#try.Success [input' lt]) + {#try.Success [input' [lt lv]]} + {#try.Success [input' lt]} - (#try.Failure _) + {#try.Failure _} (case (right input) - (#try.Success [input' [rt rv]]) - (#try.Success [input' rt]) + {#try.Success [input' [rt rv]]} + {#try.Success [input' rt]} - (#try.Failure error) - (#try.Failure error))))) + {#try.Failure error} + {#try.Failure error})))) (def: (prep_alternative [num_captures alt]) (-> [Nat Code] Code) @@ -401,12 +401,12 @@ _ (.this ">") [num_captures pattern] (re_alternative^ #1 re_scoped^ current_module) _ (.this ")")] - (in [(#Capturing [(#.Some captured_name) num_captures]) pattern])) + (in [{#Capturing [{#.Some captured_name} num_captures]} pattern])) (do <>.monad [_ (.this "(") [num_captures pattern] (re_alternative^ #1 re_scoped^ current_module) _ (.this ")")] - (in [(#Capturing [#.None num_captures]) pattern])))) + (in [{#Capturing [#.None num_captures]} pattern])))) (def: (regex^ current_module) (-> Text (Parser Code)) @@ -417,11 +417,11 @@ [current_module meta.current_module_name] (case (.result (regex^ current_module) pattern) - (#try.Failure error) + {#try.Failure error} (meta.failure (format "Error while parsing regular-expression:" //.new_line error)) - (#try.Success regex) + {#try.Success regex} (in (list regex))))) (syntax: .public (^regex [[pattern bindings] (.form (<>.and .text (<>.maybe .any))) @@ -430,6 +430,6 @@ (with_identifiers [g!temp] (in (list& (` (^multi (~ g!temp) [((~! .result) (..regex (~ (code.text pattern))) (~ g!temp)) - (#try.Success (~ (maybe.else g!temp bindings)))])) + {#try.Success (~ (maybe.else g!temp bindings))}])) body branches)))) diff --git a/stdlib/source/library/lux/data/text/unicode/set.lux b/stdlib/source/library/lux/data/text/unicode/set.lux index b47505a09..32a05b3a4 100644 --- a/stdlib/source/library/lux/data/text/unicode/set.lux +++ b/stdlib/source/library/lux/data/text/unicode/set.lux @@ -217,10 +217,10 @@ (loop [tree (:representation set)] (if (//block.within? (tree.tag tree) character) (case (tree.root tree) - (0 #0 _) + {0 #0 _} true - (0 #1 left right) + {0 #1 left right} (or (recur left) (recur right))) false))) diff --git a/stdlib/source/library/lux/debug.lux b/stdlib/source/library/lux/debug.lux index 8f3245ea2..7b107d8e5 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 (++ idx))))))))] + {#.Item member (recur (++ idx))})))))] (as_is)) (def: (tuple_inspection inspection) @@ -145,7 +145,7 @@ (with_expansions [ (let [object (:as java/lang/Object value)] (`` (<| (~~ (template [ ] [(case (ffi.check object) - (#.Some value) + {#.Some value} (`` (|> value (~~ (template.spliced )))) #.None)] @@ -155,16 +155,16 @@ [java/lang/String [(:as .Text) %.text]] )) (case (ffi.check [java/lang/Object] object) - (#.Some value) + {#.Some value} (let [value (:as (array.Array java/lang/Object) value)] (case (array.read! 0 value) - (^multi (#.Some tag) + (^multi {#.Some tag} [(ffi.check java/lang/Integer tag) - (#.Some tag)] + {#.Some tag}] [[(array.read! 1 value) (array.read! 2 value)] - [last? (#.Some choice)]]) + [last? {#.Some choice}]]) (let [last? (case last? - (#.Some _) #1 + {#.Some _} #1 #.None #0)] (|> (%.format (%.nat (.nat (java/lang/Integer::longValue tag))) " " (%.bit last?) @@ -256,8 +256,8 @@ "number" (case (math::type [value]) - (#.Some "integer") (|> value (:as .Int) %.int) - (#.Some "float") (|> value (:as .Frac) %.frac) + {#.Some "integer"} (|> value (:as .Int) %.int) + {#.Some "float"} (|> value (:as .Frac) %.frac) _ (..tostring value)) @@ -447,18 +447,18 @@ representations membersR+ variantV variantV] (case representations - (#.Item leftR (#.Item rightR extraR+)) + {#.Item leftR {#.Item rightR extraR+}} (case (:as (Or Any Any) variantV) - (#.Left left) + {#.Left left} [lefts #0 (leftR left)] - (#.Right right) + {#.Right right} (case extraR+ #.End [lefts #1 (rightR right)] _ - (recur (++ lefts) (#.Item rightR extraR+) right))) + (recur (++ lefts) {#.Item rightR extraR+} right))) _ (undefined)))] @@ -475,10 +475,10 @@ #.End "" - (#.Item lastR #.End) + {#.Item lastR #.End} (lastR tupleV) - (#.Item headR tailR) + {#.Item headR tailR} (let [[leftV rightV] (:as [Any Any] tupleV)] (%.format (headR leftV) " " (recur tailR rightV)))))] (%.format "[" tuple_body "]")))))) @@ -496,7 +496,7 @@ (do <>.monad [[funcT inputsT+] (.applied (<>.and .any (<>.many .any)))] (case (type.applied inputsT+ funcT) - (#.Some outputT) + {#.Some outputT} (.local (list outputT) representation) #.None @@ -512,10 +512,10 @@ (def: .public (representation type value) (-> Type Any (Try Text)) (case (.result ..representation_parser type) - (#try.Success representation) - (#try.Success (representation value)) + {#try.Success representation} + {#try.Success (representation value)} - (#try.Failure _) + {#try.Failure _} (exception.except ..cannot_represent_value type))) (syntax: .public (private [definition .identifier]) @@ -589,7 +589,7 @@ #.None (` (~! ..inspection)) - (#.Some format) + {#.Some format} format)] (` [(~ (code.text name)) ((~ format) (~ (code.local_identifier name)))]))) diff --git a/stdlib/source/library/lux/documentation.lux b/stdlib/source/library/lux/documentation.lux index f523c3335..7ebe3cfdf 100644 --- a/stdlib/source/library/lux/documentation.lux +++ b/stdlib/source/library/lux/documentation.lux @@ -35,12 +35,12 @@ ["[0]" syntax]]]]]]]) (template: (|recursion_dummy|) - [(#.Primitive "" #.End)]) + [{#.Primitive "" #.End}]) (type: Fragment (Variant - (#Comment Text) - (#Code Code))) + {#Comment Text} + {#Code Code})) (def: fragment (Parser Fragment) @@ -51,7 +51,7 @@ (-> Code Nat) (case code (^template [] - [[[_ _ column] ( _)] + [[[_ _ column] { _}] column]) ([#.Bit] [#.Nat] @@ -63,7 +63,7 @@ [#.Tag]) (^template [] - [[[_ _ column] ( members)] + [[[_ _ column] { members}] (|> members (list\each reference_column) (list\mix n.min column))]) @@ -89,7 +89,7 @@ (-> Text Location Nat Code [Location Text]) (case example (^template [ ] - [[new_location ( [module short])] + [[new_location { [module short]}] (let [documentation (<| (text.prefix ) (cond (text\= expected_module module) short @@ -106,7 +106,7 @@ [#.Tag syntax.sigil]) (^template [ ] - [[new_location ( value)] + [[new_location { value}] (let [documentation (`` (|> value (~~ (template.spliced ))))] [(revised@ #.column (n.+ (text.size documentation)) new_location) (format (padding reference_column old_location new_location) @@ -119,7 +119,7 @@ [#.Text [%.text]]) (^template [|<| |>| ] - [[group_location ( members)] + [[group_location { members}] (let [[group_location' members_documentation] (list\mix (function (_ part [last_location text_accum]) (let [[member_location member_documentation] (code_documentation expected_module last_location reference_column part)] [member_location (format text_accum member_documentation)])) @@ -144,10 +144,10 @@ (def: (fragment_documentation module fragment) (-> Text Fragment Text) (case fragment - (#Comment comment) + {#Comment comment} (..single_line_comment comment) - (#Code example) + {#Code example} (let [reference_column (..reference_column example) [location _] example] (|> example @@ -161,7 +161,7 @@ (-> Nat Text) (format "_" (%.nat id)) ... (case (text.char id ..parameter_name_options) - ... (#.Some char) + ... {#.Some char} ... (text.of_char char) ... #.None @@ -192,7 +192,7 @@ (if (type_parameter? id) (let [parameter_id (..parameter_id level id)] (case (list.item parameter_id type_function_arguments) - (#.Some found) + {#.Some found} found _ @@ -222,29 +222,29 @@ (def: (%type' level type_function_name nestable? module type) (-> Nat Text Bit Text Type Text) (case type - (#.Primitive name params) + {#.Primitive name params} (|> params (list\each (|>> (%type' level type_function_name false module) (format " "))) - (#.Item (%.text name)) + {#.Item (%.text name)} text.together (text.enclosed ["(primitive " ")"])) - (#.Sum _) + {#.Sum _} (|> type type.flat_variant (list\each (%type' level type_function_name false module)) (text.interposed " ") (text.enclosed ["(Or " ")"])) - (#.Product _) + {#.Product _} (|> type type.flat_tuple (list\each (%type' level type_function_name false module)) (text.interposed " ") (text.enclosed ["[" "]"])) - (#.Function input output) + {#.Function input output} (let [[ins out] (type.flat_function type)] (format "(-> " (|> ins (list\each (%type' level type_function_name false module)) (text.interposed " ")) @@ -252,17 +252,17 @@ (%type' level type_function_name false module out) ")")) - (#.Parameter idx) + {#.Parameter idx} (parameter_name [type_function_name (list)] level idx) (^template [
 ]
-      [( id)
+      [{ id}
        (format 
 (%.nat id) )])
     ([#.Var "⌈" "⌋"]
      [#.Ex  "⟨" "⟩"])
 
     (^template [  ]
-      [( _)
+      [{ _}
        (let [[level' body] ( type)
              args (level_parameters level level')
              body_doc (%type' (n.+ level level') type_function_name nestable? module body)]
@@ -274,15 +274,15 @@
     ([#.UnivQ "All" type.flat_univ_q]
      [#.ExQ   "Ex"  type.flat_ex_q])
 
-    (^ (#.Apply (|recursion_dummy|) (#.Parameter 0)))
+    (^ {#.Apply (|recursion_dummy|) {#.Parameter 0}})
     type_function_name
 
-    (^ (#.Apply (|recursion_dummy|) (#.UnivQ _ body)))
+    (^ {#.Apply (|recursion_dummy|) {#.UnivQ _ body}})
     (format "(Rec " type_function_name
             \n (nested " " (%type' level type_function_name nestable? module body))
             ")")
 
-    (#.Apply param fun)
+    {#.Apply param fun}
     (let [[type_func type_arguments] (type.flat_application type)]
       (format  "(" (%type' level type_function_name false module type_func)
                " " (|> type_arguments
@@ -290,7 +290,7 @@
                        (text.interposed " "))
                ")"))
 
-    (#.Named [_module _name] type)
+    {#.Named [_module _name] type}
     (cond (text\= module _module)
           _name
 
@@ -308,9 +308,9 @@
 (def: (parameterized_type arity type)
   (-> Nat Type (Maybe Type))
   (case arity
-    0 (#.Some type)
+    0 {#.Some type}
     _ (case type
-        (#.UnivQ _env _type)
+        {#.UnivQ _env _type}
         (parameterized_type (-- arity) _type)
 
         _
@@ -325,7 +325,7 @@
 
     _
     (case type
-      (#.Primitive name params)
+      {#.Primitive name params}
       (case params
         #.End
         (format "(primitive " (%.text name) ")")
@@ -333,7 +333,7 @@
         _
         (format "(primitive " (%.text name) " " (|> params (list\each (type_definition' false level arity type_function_info #.None module)) (text.interposed " ")) ")"))
 
-      (#.Sum _)
+      {#.Sum _}
       (let [members (type.flat_variant type)]
         (case tags
           #.End
@@ -348,20 +348,20 @@
               (list.zipped/2 tags)
               (list\each (function (_ [t_name type])
                            (case type
-                             (#.Product _)
+                             {#.Product _}
                              (let [types (type.flat_tuple type)]
-                               (format " (#" t_name " "
+                               (format " {#" t_name " "
                                        (|> types
                                            (list\each (type_definition' false level arity type_function_info #.None module))
                                            (text.interposed " "))
-                                       ")"))
+                                       "}"))
 
                              _
-                             (format " (#" t_name " " (type_definition' false level arity type_function_info #.None module type) ")"))))
+                             (format " {#" t_name " " (type_definition' false level arity type_function_info #.None module type) "}"))))
               (text.interposed \n)
               (text.enclosed [(format "(Variant" \n) ")"]))))
 
-      (#.Product _)
+      {#.Product _}
       (let [members (type.flat_tuple type)]
         (case tags
           #.End
@@ -376,24 +376,24 @@
               (text.enclosed [" [" "]"])
               (text.enclosed [(format "(Record" \n) ")"]))))
 
-      (#.Function input output)
+      {#.Function input output}
       (let [[ins out] (type.flat_function type)]
         (format  "(-> " (|> ins (list\each (type_definition' false level arity type_function_info #.None module)) (text.interposed " "))
                  " "
                  (type_definition' false level arity type_function_info #.None module out)
                  ")"))
 
-      (#.Parameter idx)
+      {#.Parameter idx}
       (parameter_name type_function_info level idx)
 
       (^template [ 
]
-        [( id)
+        [{ id}
          (format 
 (%.nat id))])
       ([#.Var "-"]
        [#.Ex  "+"])
 
       (^template [  ]
-        [( _)
+        [{ _}
          (let [[level' body] ( type)
                args (level_parameters (n.- arity level) level')
                body_doc (type_definition' nestable? (n.+ level level') arity type_function_info tags module body)
@@ -409,10 +409,10 @@
        [#.ExQ   "Ex"  type.flat_ex_q])
 
       ... Recursive call
-      (^ (#.Apply (|recursion_dummy|) (#.Parameter 0)))
+      (^ {#.Apply (|recursion_dummy|) {#.Parameter 0}})
       (product.left type_function_info)
 
-      (^ (#.Apply (|recursion_dummy|) (#.UnivQ _ body)))
+      (^ {#.Apply (|recursion_dummy|) {#.UnivQ _ body}})
       (|> (type_definition' nestable? level arity type_function_info tags module body)
           (text.all_split_by \n)
           (list\each (text.prefix " "))
@@ -420,7 +420,7 @@
           (text.enclosed [(format "(Rec " (product.left type_function_info) \n)
                           ")"]))
 
-      (#.Apply param fun)
+      {#.Apply param fun}
       (let [[type_func type_arguments] (type.flat_application type)]
         (format  "(" (type_definition' false level arity type_function_info tags module type_func)
                  " " (|> type_arguments
@@ -428,7 +428,7 @@
                          (text.interposed " "))
                  ")"))
 
-      (#.Named [_module _name] type)
+      {#.Named [_module _name] type}
       (cond (text\= module _module)
             _name
 
@@ -443,7 +443,7 @@
   (-> Text [Text (List Text)] (List Text) Type Text)
   (let [arity (list.size parameters)]
     (case (parameterized_type arity type)
-      (#.Some type)
+      {#.Some type}
       (type_definition' true (-- arity) arity [name parameters] tags module type)
 
       #.None
@@ -552,7 +552,7 @@
                        (~+ (list\each code.local_identifier parameters))))
                      ... Description
                      (~+ (case description
-                           (#.Some description)
+                           {#.Some description}
                            (list (` (<| ((~! md.paragraph))
                                         ((~! md.text))
                                         (~ description))))
diff --git a/stdlib/source/library/lux/extension.lux b/stdlib/source/library/lux/extension.lux
index 885c32fbc..e4b320a27 100644
--- a/stdlib/source/library/lux/extension.lux
+++ b/stdlib/source/library/lux/extension.lux
@@ -51,10 +51,10 @@
                                                (~ g!_) ]
                                               (.\ (~! <>.monad) (~' in) (~ body)))
                                              (~ g!inputs))
-                                       (#.Right (~ g!_))
+                                       {#.Right (~ g!_)}
                                        (~ g!_)
 
-                                       (#.Left (~ g!error))
+                                       {#.Left (~ g!error)}
                                        ((~! phase.failure) (~ g!error)))
                                      ))))))))]
 
diff --git a/stdlib/source/library/lux/ffi.js.lux b/stdlib/source/library/lux/ffi.js.lux
index b8a1dbf58..57f346903 100644
--- a/stdlib/source/library/lux/ffi.js.lux
+++ b/stdlib/source/library/lux/ffi.js.lux
@@ -93,8 +93,8 @@
 
 (type: Method
   (Variant
-   (#Static Static_Method)
-   (#Virtual Virtual_Method)))
+   {#Static Static_Method}
+   {#Virtual Virtual_Method}))
 
 (def: common_method
   (Parser Common_Method)
@@ -116,9 +116,9 @@
 
 (type: Member
   (Variant
-   (#Constructor Constructor)
-   (#Field Field)
-   (#Method Method)))
+   {#Constructor Constructor}
+   {#Field Field}
+   {#Method Method}))
 
 (def: member
   (Parser Member)
@@ -144,7 +144,7 @@
   (-> Code [Bit Code] Code)
   (if nullable?
     (` (case (~ input)
-         (#.Some (~ g!temp))
+         {#.Some (~ g!temp)}
          (~ g!temp)
 
          #.None
@@ -165,7 +165,7 @@
     (` (let [(~ g!temp) (~ output)]
          (if ("js object null?" (~ g!temp))
            #.None
-           (#.Some (~ g!temp)))))
+           {#.Some (~ g!temp)})))
     (` (let [(~ g!temp) (~ output)]
          (if (not ("js object null?" (~ g!temp)))
            (~ g!temp)
@@ -176,8 +176,8 @@
 
 (type: Import
   (Variant
-   (#Class [Class_Declaration Text (List Member)])
-   (#Function Static_Method)))
+   {#Class [Class_Declaration Text (List Member)]}
+   {#Function Static_Method}))
 
 (def: class_declaration
   (Parser Class_Declaration)
@@ -238,7 +238,7 @@
 (syntax: .public (import: [import ..import])
   (with_identifiers [g!temp g!_]
     (case import
-      (#Class [[class_name class_parameters] format members])
+      {#Class [[class_name class_parameters] format members]}
       (with_identifiers [g!object]
         (let [qualify (: (-> Text Code)
                          (function (_ member_name)
@@ -254,7 +254,7 @@
                           (..Object (primitive (~ (code.text real_class))))))
                      (list\each (function (_ member)
                                   (case member
-                                    (#Constructor inputsT)
+                                    {#Constructor inputsT}
                                     (let [g!inputs (input_variables inputsT)]
                                       (` (def: ((~ (qualify "new"))
                                                 [(~+ (list\each product.right g!inputs))])
@@ -266,7 +266,7 @@
                                              ("js constant" (~ (code.text real_class)))
                                              [(~+ (list\each (with_null g!temp) g!inputs))])))))
                                     
-                                    (#Field [static? field fieldT])
+                                    {#Field [static? field fieldT]}
                                     (if static?
                                       (` ((~! syntax:) ((~ (qualify field)) [])
                                           (\ (~! meta.monad) (~' in)
@@ -280,9 +280,9 @@
                                            (:expected
                                             (~ (without_null g!temp fieldT (` ("js object get" (~ (code.text field)) (~ g!object)))))))))
                                     
-                                    (#Method method)
+                                    {#Method method}
                                     (case method
-                                      (#Static [method alias inputsT io? try? outputT])
+                                      {#Static [method alias inputsT io? try? outputT]}
                                       (..make_function (qualify (maybe.else method alias))
                                                        g!temp
                                                        (%.format real_class "." method)
@@ -291,7 +291,7 @@
                                                        try?
                                                        outputT)
                                       
-                                      (#Virtual [method alias inputsT io? try? outputT])
+                                      {#Virtual [method alias inputsT io? try? outputT]}
                                       (let [g!inputs (input_variables inputsT)]
                                         (` (def: ((~ (qualify (maybe.else method alias)))
                                                   [(~+ (list\each product.right g!inputs))]
@@ -312,7 +312,7 @@
                                                          [(~+ (list\each (with_null g!temp) g!inputs))])))))))))))
                                 members)))))
       
-      (#Function [name alias inputsT io? try? outputT])
+      {#Function [name alias inputsT io? try? outputT]}
       (in (list (..make_function (code.local_identifier (maybe.else name alias))
                                  g!temp
                                  name
@@ -337,9 +337,9 @@
                           #.None
 
                           (~ g!_)
-                          (#.Some (:as (~ type) (~ constant))))))))
+                          {#.Some (:as (~ type) (~ constant))})))))
         
-        (#.Item [next tail])
+        {#.Item [next tail]}
         (let [separator "."]
           (in (list (` (: (.Maybe (~ type))
                           (case (..type_of (~ constant))
@@ -355,7 +355,7 @@
      #.None
      .false
 
-     (#.Some _)
+     {#.Some _}
      .true)])
 
 (template [ ]
@@ -370,7 +370,7 @@
 (def: .public on_node_js?
   Bit
   (case (..constant (Object Any) [process])
-    (#.Some process)
+    {#.Some process}
     (case (:as Text
                ("js apply" ("js constant" "Object.prototype.toString.call") process))
       "[object process]"
diff --git a/stdlib/source/library/lux/ffi.jvm.lux b/stdlib/source/library/lux/ffi.jvm.lux
index fd9e9d111..0ccc11f86 100644
--- a/stdlib/source/library/lux/ffi.jvm.lux
+++ b/stdlib/source/library/lux/ffi.jvm.lux
@@ -56,7 +56,7 @@
 (template [ ]
   [(`` (def: .public 
          .Type
-         (#.Primitive  #.End)))]
+         {#.Primitive  #.End}))]
 
   [Boolean   box.boolean]
   [Byte      box.byte]
@@ -71,7 +71,7 @@
 (template [ ]
   [(`` (def: .public 
          .Type
-         (#.Primitive (reflection.reflection ) #.End)))]
+         {#.Primitive (reflection.reflection ) #.End}))]
 
   ... Primitives
   [boolean   reflection.boolean]
@@ -227,8 +227,8 @@
 
 (type: FieldDecl
   (Variant
-   (#ConstantField (Type Value) Code)
-   (#VariableField State (Type Value))))
+   {#ConstantField (Type Value) Code}
+   {#VariableField State (Type Value)}))
 
 (type: MethodDecl
   (Record
@@ -239,43 +239,43 @@
 
 (type: Method_Definition
   (Variant
-   (#ConstructorMethod [Bit
+   {#ConstructorMethod [Bit
                         (List (Type Var))
                         Text
                         (List Argument)
                         (List (Typed Code))
                         Code
-                        (List (Type Class))])
-   (#VirtualMethod [Bit
+                        (List (Type Class))]}
+   {#VirtualMethod [Bit
                     Bit
                     (List (Type Var))
                     Text
                     (List Argument)
                     (Type Return)
                     Code
-                    (List (Type Class))])
-   (#OverridenMethod [Bit
+                    (List (Type Class))]}
+   {#OverridenMethod [Bit
                       (Type Declaration)
                       (List (Type Var))
                       Text
                       (List Argument)
                       (Type Return)
                       Code
-                      (List (Type Class))])
-   (#StaticMethod [Bit
+                      (List (Type Class))]}
+   {#StaticMethod [Bit
                    (List (Type Var))
                    (List Argument)
                    (Type Return)
                    Code
-                   (List (Type Class))])
-   (#AbstractMethod [(List (Type Var))
+                   (List (Type Class))]}
+   {#AbstractMethod [(List (Type Var))
                      (List Argument)
                      (Type Return)
-                     (List (Type Class))])
-   (#NativeMethod [(List (Type Var))
+                     (List (Type Class))]}
+   {#NativeMethod [(List (Type Var))
                    (List Argument)
                    (Type Return)
-                   (List (Type Class))])))
+                   (List (Type Class))]}))
 
 (type: Partial_Call
   (Record
@@ -318,10 +318,10 @@
 
 (type: Import_Member_Declaration
   (Variant
-   (#EnumDecl        (List Text))
-   (#ConstructorDecl [ImportMethodCommons ImportConstructorDecl])
-   (#MethodDecl      [ImportMethodCommons ImportMethodDecl])
-   (#FieldAccessDecl ImportFieldDecl)))
+   {#EnumDecl        (List Text)}
+   {#ConstructorDecl [ImportMethodCommons ImportConstructorDecl]}
+   {#MethodDecl      [ImportMethodCommons ImportMethodDecl]}
+   {#FieldAccessDecl ImportFieldDecl}))
 
 (def: (primitive_type mode type)
   (-> Primitive_Mode (Type Primitive) Code)
@@ -362,7 +362,7 @@
   (-> (Type Parameter) Code)
   (`` (<| (~~ (template [  ]
                 [(case ( type)
-                   (#.Some )
+                   {#.Some }
                    
 
                    #.None)]
@@ -382,7 +382,7 @@
   (-> Primitive_Mode (Type Value) Code)
   (`` (<| (~~ (template [  ]
                 [(case ( type)
-                   (#.Some )
+                   {#.Some }
                    
 
                    #.None)]
@@ -390,12 +390,12 @@
                 [parser.parameter? type (parameter_type type)]
                 [parser.primitive? type (primitive_type mode type)]
                 [parser.array? elementT (case (parser.primitive? elementT)
-                                          (#.Some elementT)
-                                          (` (#.Primitive (~ (code.text (..reflection (type.array elementT)))) #.End))
+                                          {#.Some elementT}
+                                          (` {#.Primitive (~ (code.text (..reflection (type.array elementT)))) #.End})
                                           
                                           #.None
-                                          (` (#.Primitive (~ (code.text array.type_name))
-                                                          (#.Item (~ (value_type mode elementT)) #.End))))]))
+                                          (` {#.Primitive (~ (code.text array.type_name))
+                                              {#.Item (~ (value_type mode elementT)) #.End}}))]))
           (undefined)
           )))
 
@@ -433,8 +433,8 @@
   (-> (-> Code Code) Code Code)
   (case (f input)
     (^template []
-      [[meta ( parts)]
-       [meta ( (list\each (replaced f) parts))]])
+      [[meta { parts}]
+       [meta { (list\each (replaced f) parts)}]])
     ([#.Form]
      [#.Variant]
      [#.Tuple])
@@ -445,7 +445,7 @@
 (def: (parser->replacer p ast)
   (-> (Parser Code) (-> Code Code))
   (case (<>.result p (list ast))
-    (#.Right [#.End ast'])
+    {#.Right [#.End ast']}
     ast'
 
     _
@@ -455,10 +455,10 @@
 (def: (field->parser class_name self_name [[field_name _ _] field])
   (-> Text Text [Member_Declaration FieldDecl] (Parser Code))
   (case field
-    (#ConstantField _)
+    {#ConstantField _}
     (get_const_parser class_name field_name)
     
-    (#VariableField _)
+    {#VariableField _}
     (<>.either (get_var_parser class_name field_name self_name)
                (put_var_parser class_name field_name self_name))))
 
@@ -510,22 +510,22 @@
 (def: (method->parser class_name [[method_name _ _] meth_def])
   (-> Text [Member_Declaration Method_Definition] (Parser Code))
   (case meth_def
-    (#ConstructorMethod strict? type_vars self_name args constructor_args return_expr exs)
+    {#ConstructorMethod strict? type_vars self_name args constructor_args return_expr exs}
     (constructor_parser class_name args)
     
-    (#StaticMethod strict? type_vars args return_type return_expr exs)
+    {#StaticMethod strict? type_vars args return_type return_expr exs}
     (static_method_parser class_name method_name args)
 
-    (#VirtualMethod final? strict? type_vars self_name args return_type return_expr exs)
+    {#VirtualMethod final? strict? type_vars self_name args return_type return_expr exs}
     (virtual_method_parser class_name method_name args self_name)
     
-    (#OverridenMethod strict? owner_class type_vars self_name args return_type return_expr exs)
+    {#OverridenMethod strict? owner_class type_vars self_name args return_type return_expr exs}
     (special_method_parser class_name method_name args self_name)
 
-    (#AbstractMethod type_vars args return_type exs)
+    {#AbstractMethod type_vars args return_type exs}
     (virtual_method_parser class_name method_name args "")
 
-    (#NativeMethod type_vars args return_type exs)
+    {#NativeMethod type_vars args return_type exs}
     (virtual_method_parser class_name method_name args "")))
 
 (def: privacy_modifier^
@@ -754,14 +754,14 @@
                              anns ..annotations^
                              type (..type^ type_vars)
                              body .any]
-                            (in [[name #PublicP anns] (#ConstantField [type body])])))
+                            (in [[name #PublicP anns] {#ConstantField [type body]}])))
              (.form (do <>.monad
                             [pm privacy_modifier^
                              sm state_modifier^
                              name .local_identifier
                              anns ..annotations^
                              type (..type^ type_vars)]
-                            (in [[name pm anns] (#VariableField [sm type])])))))
+                            (in [[name pm anns] {#VariableField [sm type]}])))))
 
 (def: (argument^ type_vars)
   (-> (List (Type Var)) (Parser Argument))
@@ -798,7 +798,7 @@
                  (in [[#member_name constructor_method_name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#ConstructorMethod strict_fp? method_vars self_name arguments constructor_args body exs)]))))
+                      {#ConstructorMethod strict_fp? method_vars self_name arguments constructor_args body exs}]))))
 
 (def: (virtual_method_def^ class_vars)
   (-> (List (Type Var)) (Parser [Member_Declaration Method_Definition]))
@@ -819,7 +819,7 @@
                  (in [[#member_name name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#VirtualMethod final? strict_fp? method_vars self_name arguments return_type body exs)]))))
+                      {#VirtualMethod final? strict_fp? method_vars self_name arguments return_type body exs}]))))
 
 (def: overriden_method_def^
   (Parser [Member_Declaration Method_Definition])
@@ -840,7 +840,7 @@
                  (in [[#member_name name
                        #member_privacy #PublicP
                        #member_anns annotations]
-                      (#OverridenMethod strict_fp? owner_class method_vars self_name arguments return_type body exs)]))))
+                      {#OverridenMethod strict_fp? owner_class method_vars self_name arguments return_type body exs}]))))
 
 (def: static_method_def^
   (Parser [Member_Declaration Method_Definition])
@@ -859,7 +859,7 @@
                  (in [[#member_name name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#StaticMethod strict_fp? method_vars arguments return_type body exs)]))))
+                      {#StaticMethod strict_fp? method_vars arguments return_type body exs}]))))
 
 (def: abstract_method_def^
   (Parser [Member_Declaration Method_Definition])
@@ -876,7 +876,7 @@
                  (in [[#member_name name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#AbstractMethod method_vars arguments return_type exs)]))))
+                      {#AbstractMethod method_vars arguments return_type exs}]))))
 
 (def: native_method_def^
   (Parser [Member_Declaration Method_Definition])
@@ -893,7 +893,7 @@
                  (in [[#member_name name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#NativeMethod method_vars arguments return_type exs)]))))
+                      {#NativeMethod method_vars arguments return_type exs}]))))
 
 (def: (method_def^ class_vars)
   (-> (List (Type Var)) (Parser [Member_Declaration Method_Definition]))
@@ -938,7 +938,7 @@
       (.form (do <>.monad
                      [_ (.this! (' "enum"))
                       enum_members (<>.some .local_identifier)]
-                     (in (#EnumDecl enum_members))))
+                     (in {#EnumDecl enum_members})))
       (.form (do <>.monad
                      [tvars (<>.else (list) ..vars^)
                       _ (.identifier! ["" "new"])
@@ -947,7 +947,7 @@
                       ?prim_mode (<>.maybe primitive_mode^)
                       args (..import_member_args^ total_vars)
                       [io? try? maybe?] import_member_return_flags^]
-                     (in (#ConstructorDecl [[#import_member_mode    (maybe.else #AutoPrM ?prim_mode)
+                     (in {#ConstructorDecl [[#import_member_mode    (maybe.else #AutoPrM ?prim_mode)
                                              #import_member_alias   (maybe.else "new" ?alias)
                                              #import_member_kind    #VirtualIMK
                                              #import_member_tvars   tvars
@@ -955,7 +955,7 @@
                                              #import_member_maybe?  maybe?
                                              #import_member_try?    try?
                                              #import_member_io?     io?]
-                                            []]))
+                                            []]})
                      ))
       (.form (do <>.monad
                      [kind (: (Parser ImportMethodKind)
@@ -969,7 +969,7 @@
                       args (..import_member_args^ total_vars)
                       [io? try? maybe?] import_member_return_flags^
                       return (..return^ total_vars)]
-                     (in (#MethodDecl [[#import_member_mode    (maybe.else #AutoPrM ?prim_mode)
+                     (in {#MethodDecl [[#import_member_mode    (maybe.else #AutoPrM ?prim_mode)
                                         #import_member_alias   (maybe.else name ?alias)
                                         #import_member_kind    kind
                                         #import_member_tvars   tvars
@@ -978,7 +978,7 @@
                                         #import_member_try?    try?
                                         #import_member_io?     io?]
                                        [#import_method_name    name
-                                        #import_method_return  return]]))))
+                                        #import_method_return  return]]})))
       (.form (do <>.monad
                      [static? (<>.parses? (.this! (' "static")))
                       name .local_identifier
@@ -986,12 +986,12 @@
                       gtype (..type^ owner_vars)
                       maybe? (<>.parses? (.this! (' "?")))
                       setter? (<>.parses? (.this! (' #!)))]
-                     (in (#FieldAccessDecl [#import_field_mode    (maybe.else #AutoPrM ?prim_mode)
+                     (in {#FieldAccessDecl [#import_field_mode    (maybe.else #AutoPrM ?prim_mode)
                                             #import_field_name    name
                                             #import_field_static? static?
                                             #import_field_maybe?  maybe?
                                             #import_field_setter? setter?
-                                            #import_field_type    gtype]))))
+                                            #import_field_type    gtype]})))
       ))
 
 (def: bundle
@@ -1061,14 +1061,14 @@
 (def: (field_decl$ [[name pm anns] field])
   (-> [Member_Declaration FieldDecl] Code)
   (case field
-    (#ConstantField class value)
+    {#ConstantField class value}
     (` ("constant" (~ (code.text name))
         [(~+ (list\each annotation$ anns))]
         (~ (value$ class))
         (~ value)
         ))
 
-    (#VariableField sm class)
+    {#VariableField sm class}
     (` ("variable" (~ (code.text name))
         (~ (privacy_modifier$ pm))
         (~ (state_modifier$ sm))
@@ -1088,7 +1088,7 @@
 (def: (method_def$ fully_qualified_class_name method_parser super_class fields [[name pm anns] method_def])
   (-> External (Parser Code) (Type Class) (List [Member_Declaration FieldDecl]) [Member_Declaration Method_Definition] Code)
   (case method_def
-    (#ConstructorMethod strict_fp? type_vars self_name arguments constructor_args body exs)
+    {#ConstructorMethod strict_fp? type_vars self_name arguments constructor_args body exs}
     (let [replacer (|> (list\each (field->parser fully_qualified_class_name self_name) fields)
                        (list\mix <>.either method_parser)
                        parser->replacer)]
@@ -1104,7 +1104,7 @@
           (~ (replaced replacer body))
           )))
     
-    (#VirtualMethod final? strict_fp? type_vars self_name arguments return_type body exs)
+    {#VirtualMethod final? strict_fp? type_vars self_name arguments return_type body exs}
     (let [replacer (|> (list\each (field->parser fully_qualified_class_name self_name) fields)
                        (list\mix <>.either method_parser)
                        parser->replacer)]
@@ -1121,7 +1121,7 @@
           [(~+ (list\each class$ exs))]
           (~ (replaced replacer body)))))
     
-    (#OverridenMethod strict_fp? declaration type_vars self_name arguments return_type body exs)
+    {#OverridenMethod strict_fp? declaration type_vars self_name arguments return_type body exs}
     (let [replacer (|> (list\each (field->parser fully_qualified_class_name self_name) fields)
                        (list\mix <>.either method_parser)
                        parser->replacer)
@@ -1150,7 +1150,7 @@
                  (replaced super_replacer)))
           )))
 
-    (#StaticMethod strict_fp? type_vars arguments return_type body exs)
+    {#StaticMethod strict_fp? type_vars arguments return_type body exs}
     (let [replacer (parser->replacer (<>.failure ""))]
       (` ("static"
           (~ (code.text name))
@@ -1163,7 +1163,7 @@
           [(~+ (list\each class$ exs))]
           (~ (replaced replacer body)))))
 
-    (#AbstractMethod type_vars arguments return_type exs)
+    {#AbstractMethod type_vars arguments return_type exs}
     (` ("abstract"
         (~ (code.text name))
         (~ (privacy_modifier$ pm))
@@ -1173,7 +1173,7 @@
         (~ (return$ return_type))
         [(~+ (list\each class$ exs))]))
 
-    (#NativeMethod type_vars arguments return_type exs)
+    {#NativeMethod type_vars arguments return_type exs}
     (` ("native"
         (~ (code.text name))
         (~ (privacy_modifier$ pm))
@@ -1255,12 +1255,12 @@
     (in (list (` (let [(~ g!temp) (~ expr)]
                    (if ("jvm object null?" (~ g!temp))
                      #.None
-                     (#.Some (~ g!temp)))))))))
+                     {#.Some (~ g!temp)})))))))
 
 (syntax: .public (!!! [expr .any])
   (with_identifiers [g!value]
     (in (list (` (.case (~ expr)
-                   (#.Some (~ g!value))
+                   {#.Some (~ g!value)}
                    (~ g!value)
 
                    #.None
@@ -1273,11 +1273,11 @@
           class_type (` (.primitive (~ (code.text class_name))))
           check_type (` (.Maybe (~ class_type)))
           check_code (` (if ("jvm object instance?" (~ (code.text class_name)) (~ g!unchecked))
-                          (#.Some (.:as (~ class_type)
-                                        (~ g!unchecked)))
+                          {#.Some (.:as (~ class_type)
+                                        (~ g!unchecked))}
                           #.None))]
       (case unchecked
-        (#.Some unchecked)
+        {#.Some unchecked}
         (in (list (` (: (~ check_type)
                         (let [(~ g!unchecked) (~ unchecked)]
                           (~ check_code))))))
@@ -1314,10 +1314,10 @@
 (def: (member_type_vars class_tvars member)
   (-> (List (Type Var)) Import_Member_Declaration (List (Type Var)))
   (case member
-    (#ConstructorDecl [commons _])
+    {#ConstructorDecl [commons _]}
     (list\composite class_tvars (value@ #import_member_tvars commons))
 
-    (#MethodDecl [commons _])
+    {#MethodDecl [commons _]}
     (case (value@ #import_member_kind commons)
       #StaticIMK
       (value@ #import_member_tvars commons)
@@ -1331,7 +1331,7 @@
 (def: (member_def_arg_bindings vars member)
   (-> (List (Type Var)) Import_Member_Declaration (Meta [(List [Bit Code]) (List (Type Value)) (List Code)]))
   (case member
-    (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _]))
+    (^or {#ConstructorDecl [commons _]} {#MethodDecl [commons _]})
     (let [(^slots [#import_member_tvars #import_member_args]) commons]
       (do [! meta.monad]
         [arg_inputs (monad.each !
@@ -1356,7 +1356,7 @@
 (def: (with_return_maybe member never_null? unboxed return_term)
   (-> Import_Member_Declaration Bit (Type Value) Code Code)
   (case member
-    (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _]))
+    (^or {#ConstructorDecl [commons _]} {#MethodDecl [commons _]})
     (cond (or never_null?
               (dictionary.key? ..boxes unboxed))
           return_term
@@ -1379,7 +1379,7 @@
   [(def: ( member return_term)
      (-> Import_Member_Declaration Code Code)
      (case member
-       (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _]))
+       (^or {#ConstructorDecl [commons _]} {#MethodDecl [commons _]})
        (if (value@  commons)
          
          return_term)
@@ -1420,7 +1420,7 @@
                                                   raw)
                                                 (list)]))))
            unboxed/boxed (case (dictionary.value unboxed ..boxes)
-                           (#.Some boxed)
+                           {#.Some boxed}
                            ( unboxed boxed refined)
                            
                            #.None
@@ -1490,7 +1490,7 @@
   (-> (List (Type Var)) Class_Kind (Type Declaration) [(List [Bit Code]) (List (Type Value)) (List Code)] Import_Member_Declaration Text Text (Meta (List Code)))
   (let [[full_name class_tvars] (parser.declaration class)]
     (case member
-      (#EnumDecl enum_members)
+      {#EnumDecl enum_members}
       (with_identifiers [g!_]
         (do meta.monad
           [.let [enum_type (: Code
@@ -1509,7 +1509,7 @@
                                             (~ (get_static_field full_name name)))))))]]
           (in (list\each getter_interop enum_members))))
       
-      (#ConstructorDecl [commons _])
+      {#ConstructorDecl [commons _]}
       (do meta.monad
         [.let [classT (type.class full_name (list))
                def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))])
@@ -1528,7 +1528,7 @@
         (in (list (` ((~! syntax:) ((~ def_name) [(~+ (syntax_inputs (list\each product.right arg_function_inputs)))])
                       ((~' in) (.list (.` (~ jvm_interop)))))))))
 
-      (#MethodDecl [commons method])
+      {#MethodDecl [commons method]}
       (with_identifiers [g!obj]
         (do meta.monad
           [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))])
@@ -1566,7 +1566,7 @@
                                       (list\each ..decorate_input))))))
                  jvm_interop (: Code
                                 (case (type.void? method_return)
-                                  (#.Left method_return)
+                                  {#.Left method_return}
                                   (|> [method_return
                                        callC]
                                       (with_automatic_output_conversion (value@ #import_member_mode commons))
@@ -1575,7 +1575,7 @@
                                       (with_return_io member))
                                   
                                   
-                                  (#.Right method_return)
+                                  {#.Right method_return}
                                   (|> callC
                                       (with_return_try member)
                                       (with_return_io member))))]]
@@ -1583,7 +1583,7 @@
                                                     (~+ (syntax_inputs object_ast))])
                         ((~' in) (.list (.` (~ jvm_interop))))))))))
 
-      (#FieldAccessDecl fad)
+      {#FieldAccessDecl fad}
       (do meta.monad
         [.let [(^open "[0]") fad
                getter_name (code.identifier ["" (..import_name import_format method_prefix import_field_name)])
@@ -1655,12 +1655,12 @@
   (-> (Type Declaration) (Meta Class_Kind))
   (let [[class_name _] (parser.declaration declaration)]
     (case (load_class class_name)
-      (#.Right class)
+      {#.Right class}
       (\ meta.monad in (if (interface? class)
                          #Interface
                          #Class))
 
-      (#.Left _)
+      {#.Left _}
       (meta.failure (format "Unknown class: " class_name)))))
 
 (syntax: .public (import: [declaration ..declaration^
@@ -1708,7 +1708,7 @@
     (if (lux_type\= .Any type)
       (\ meta.monad in $Object)
       (case type
-        (#.Primitive name params)
+        {#.Primitive name params}
         (`` (cond (~~ (template []
                         [(text\= (..reflection ) name)
                          (case params
@@ -1747,7 +1747,7 @@
 
                   (text\= array.type_name name)
                   (case params
-                    (#.Item elementLT #.End)
+                    {#.Item elementLT #.End}
                     (\ meta.monad each type.array
                        (lux_type->jvm_type elementLT))
 
@@ -1759,7 +1759,7 @@
                     #.End
                     (let [[_ unprefixed] (maybe.trusted (text.split_by descriptor.array_prefix name))]
                       (\ meta.monad each type.array
-                         (lux_type->jvm_type (#.Primitive unprefixed (list)))))
+                         (lux_type->jvm_type {#.Primitive unprefixed (list)})))
 
                     _
                     )
@@ -1772,22 +1772,22 @@
                                       (do meta.monad
                                         [paramJT (lux_type->jvm_type paramLT)]
                                         (case (parser.parameter? paramJT)
-                                          (#.Some paramJT)
+                                          {#.Some paramJT}
                                           (in paramJT)
 
                                           #.None
                                           )))
                                     params)))))
 
-        (#.Apply A F)
+        {#.Apply A F}
         (case (lux_type.applied (list A) F)
           #.None
           
 
-          (#.Some type')
+          {#.Some type'}
           (lux_type->jvm_type type'))
         
-        (#.Named _ type')
+        {#.Named _ type'}
         (lux_type->jvm_type type')
 
         _
@@ -1795,7 +1795,7 @@
 
 (syntax: .public (length [array .any])
   (case array
-    [_ (#.Identifier array_name)]
+    [_ {#.Identifier array_name}]
     (do meta.monad
       [array_type (meta.type array_name)
        array_jvm_type (lux_type->jvm_type array_type)
@@ -1830,7 +1830,7 @@
 (syntax: .public (read! [idx .any
                          array .any])
   (case array
-    [_ (#.Identifier array_name)]
+    [_ {#.Identifier array_name}]
     (do meta.monad
       [array_type (meta.type array_name)
        array_jvm_type (lux_type->jvm_type array_type)
@@ -1868,7 +1868,7 @@
                           value .any
                           array .any])
   (case array
-    [_ (#.Identifier array_name)]
+    [_ {#.Identifier array_name}]
     (do meta.monad
       [array_type (meta.type array_name)
        array_jvm_type (lux_type->jvm_type array_type)
@@ -1918,7 +1918,7 @@
                        object .any])
   (case [(parser.array? type)
          (parser.class? type)]
-    (^or [(#.Some _) _] [_ (#.Some _)])
+    (^or [{#.Some _} _] [_ {#.Some _}])
     (in (list (` (.: (~ (..value_type #ManualPrM type))
                      ("jvm object cast" (~ object))))))
 
diff --git a/stdlib/source/library/lux/ffi.lua.lux b/stdlib/source/library/lux/ffi.lua.lux
index 91f5b598c..8760b35f0 100644
--- a/stdlib/source/library/lux/ffi.lua.lux
+++ b/stdlib/source/library/lux/ffi.lua.lux
@@ -91,8 +91,8 @@
 
 (type: Method
   (Variant
-   (#Static Static_Method)
-   (#Virtual Virtual_Method)))
+   {#Static Static_Method}
+   {#Virtual Virtual_Method}))
 
 (def: common_method
   (Parser Common_Method)
@@ -114,8 +114,8 @@
 
 (type: Member
   (Variant
-   (#Field Field)
-   (#Method Method)))
+   {#Field Field}
+   {#Method Method}))
 
 (def: member
   (Parser Member)
@@ -140,7 +140,7 @@
   (-> Code [Bit Code] Code)
   (if nilable?
     (` (case (~ input)
-         (#.Some (~ g!temp))
+         {#.Some (~ g!temp)}
          (~ g!temp)
 
          #.None
@@ -153,7 +153,7 @@
     (` (let [(~ g!temp) (~ output)]
          (if ("lua object nil?" (~ g!temp))
            #.None
-           (#.Some (~ g!temp)))))
+           {#.Some (~ g!temp)})))
     (` (let [(~ g!temp) (~ output)]
          (if (not ("lua object nil?" (~ g!temp)))
            (~ g!temp)
@@ -161,9 +161,9 @@
 
 (type: Import
   (Variant
-   (#Class [Text Text (List Member)])
-   (#Function Static_Method)
-   (#Constant Field)))
+   {#Class [Text Text (List Member)]}
+   {#Function Static_Method}
+   {#Constant Field}))
 
 (def: import
   ($_ <>.or
@@ -221,7 +221,7 @@
   ...                 (import: (os/getenv [..String] "io" "?" ..String)))}
   (with_identifiers [g!temp]
     (case import
-      (#Class [class format members])
+      {#Class [class format members]}
       (with_identifiers [g!object]
         (let [qualify (: (-> Text Code)
                          (function (_ member_name)
@@ -232,7 +232,7 @@
               g!type (code.local_identifier class)
               real_class (text.replaced "/" "." class)
               imported (case (text.all_split_by "/" class)
-                         (#.Item head tail)
+                         {#.Item head tail}
                          (list\mix (function (_ sub super)
                                      (` ("lua object get" (~ (code.text sub))
                                          (:as (..Object .Any) (~ super)))))
@@ -245,7 +245,7 @@
                           (..Object (primitive (~ (code.text real_class))))))
                      (list\each (function (_ member)
                                   (case member
-                                    (#Field [static? field fieldT])
+                                    {#Field [static? field fieldT]}
                                     (if static?
                                       (` ((~! syntax:) ((~ (qualify field)) [])
                                           (\ (~! meta.monad) (~' in)
@@ -260,9 +260,9 @@
                                             (~ (without_nil g!temp fieldT (` ("lua object get" (~ (code.text field))
                                                                               (:as (..Object .Any) (~ g!object))))))))))
                                     
-                                    (#Method method)
+                                    {#Method method}
                                     (case method
-                                      (#Static [method alias inputsT io? try? outputT])
+                                      {#Static [method alias inputsT io? try? outputT]}
                                       (..make_function (qualify (maybe.else method alias))
                                                        g!temp
                                                        (` ("lua object get" (~ (code.text method))
@@ -272,7 +272,7 @@
                                                        try?
                                                        outputT)
                                       
-                                      (#Virtual [method alias inputsT io? try? outputT])
+                                      {#Virtual [method alias inputsT io? try? outputT]}
                                       (let [g!inputs (input_variables inputsT)]
                                         (` (def: ((~ (qualify (maybe.else method alias)))
                                                   [(~+ (list\each product.right g!inputs))]
@@ -292,7 +292,7 @@
                                                          (~+ (list\each (with_nil g!temp) g!inputs)))))))))))))
                                 members)))))
       
-      (#Function [name alias inputsT io? try? outputT])
+      {#Function [name alias inputsT io? try? outputT]}
       (in (list (..make_function (code.local_identifier (maybe.else name alias))
                                  g!temp
                                  (` ("lua constant" (~ (code.text (text.replaced "/" "." name)))))
@@ -301,7 +301,7 @@
                                  try?
                                  outputT)))
 
-      (#Constant [_ name fieldT])
+      {#Constant [_ name fieldT]}
       (in (list (` ((~! syntax:) ((~ (code.local_identifier name)) [])
                     (\ (~! meta.monad) (~' in)
                        (list (` (.:as (~ (nilable_type fieldT))
diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux
index 6e77cb642..ce87fcbec 100644
--- a/stdlib/source/library/lux/ffi.old.lux
+++ b/stdlib/source/library/lux/ffi.old.lux
@@ -78,10 +78,10 @@
 (type: GenericType
   (Rec GenericType
     (Variant
-     (#GenericTypeVar Text)
-     (#GenericClass [Text (List GenericType)])
-     (#GenericArray GenericType)
-     (#GenericWildcard (Maybe [BoundKind GenericType])))))
+     {#GenericTypeVar Text}
+     {#GenericClass [Text (List GenericType)]}
+     {#GenericArray GenericType}
+     {#GenericWildcard (Maybe [BoundKind GenericType])})))
 
 (type: Type_Parameter
   [Text (List GenericType)])
@@ -147,8 +147,8 @@
 
 (type: FieldDecl
   (Variant
-   (#ConstantField GenericType Code)
-   (#VariableField State GenericType)))
+   {#ConstantField GenericType Code}
+   {#VariableField State GenericType}))
 
 (type: MethodDecl
   (Record
@@ -167,42 +167,42 @@
 
 (type: Method_Definition
   (Variant
-   (#ConstructorMethod [Bit
+   {#ConstructorMethod [Bit
                         (List Type_Parameter)
                         (List ArgDecl)
                         (List ConstructorArg)
                         Code
-                        (List GenericType)])
-   (#VirtualMethod [Bit
+                        (List GenericType)]}
+   {#VirtualMethod [Bit
                     Bit
                     (List Type_Parameter)
                     Text
                     (List ArgDecl)
                     GenericType
                     Code
-                    (List GenericType)])
-   (#OverridenMethod [Bit
+                    (List GenericType)]}
+   {#OverridenMethod [Bit
                       Class_Declaration
                       (List Type_Parameter)
                       Text
                       (List ArgDecl)
                       GenericType
                       Code
-                      (List GenericType)])
-   (#StaticMethod [Bit
+                      (List GenericType)]}
+   {#StaticMethod [Bit
                    (List Type_Parameter)
                    (List ArgDecl)
                    GenericType
                    Code
-                   (List GenericType)])
-   (#AbstractMethod [(List Type_Parameter)
+                   (List GenericType)]}
+   {#AbstractMethod [(List Type_Parameter)
                      (List ArgDecl)
                      GenericType
-                     (List GenericType)])
-   (#NativeMethod [(List Type_Parameter)
+                     (List GenericType)]}
+   {#NativeMethod [(List Type_Parameter)
                    (List ArgDecl)
                    GenericType
-                   (List GenericType)])))
+                   (List GenericType)]}))
 
 (type: Partial_Call
   (Record
@@ -245,10 +245,10 @@
 
 (type: Import_Member_Declaration
   (Variant
-   (#EnumDecl        (List Text))
-   (#ConstructorDecl [ImportMethodCommons ImportConstructorDecl])
-   (#MethodDecl      [ImportMethodCommons ImportMethodDecl])
-   (#FieldAccessDecl ImportFieldDecl)))
+   {#EnumDecl        (List Text)}
+   {#ConstructorDecl [ImportMethodCommons ImportConstructorDecl]}
+   {#MethodDecl      [ImportMethodCommons ImportMethodDecl]}
+   {#FieldAccessDecl ImportFieldDecl}))
 
 ... Utils
 (def: (manual_primitive_type class)
@@ -256,7 +256,7 @@
   (case class
     (^template [ ]
       [
-       (#.Some (' ))])
+       {#.Some (' )}])
     (["boolean" (primitive "java.lang.Boolean")]
      ["byte"    (primitive "java.lang.Byte")]
      ["short"   (primitive "java.lang.Short")]
@@ -275,7 +275,7 @@
   (case class
     (^template [ ]
       [
-       (#.Some (' ))])
+       {#.Some (' )}])
     (["boolean" .Bit]
      ["byte"    .Int]
      ["short"   .Int]
@@ -300,12 +300,12 @@
   (case [name+params mode in_array?]
     (^multi [[prim #.End] #ManualPrM #0]
             [(manual_primitive_type prim)
-             (#.Some output)])
+             {#.Some output}])
     output
 
     (^multi [[prim #.End] #AutoPrM #0]
             [(auto_primitive_type prim)
-             (#.Some output)])
+             {#.Some output}])
     output
     
     [[name params] _ _]
@@ -316,7 +316,7 @@
 (def: (class_type' mode type_params in_array? class)
   (-> Primitive_Mode (List Type_Parameter) Bit GenericType Code)
   (case class
-    (#GenericTypeVar name)
+    {#GenericTypeVar name}
     (case (list.example (function (_ [pname pbounds])
                           (and (text\= name pname)
                                (not (list.empty? pbounds))))
@@ -324,21 +324,21 @@
       #.None
       (code.identifier ["" name])
 
-      (#.Some [pname pbounds])
+      {#.Some [pname pbounds]}
       (class_type' mode type_params in_array? (maybe.trusted (list.head pbounds))))
     
-    (#GenericClass name+params)
+    {#GenericClass name+params}
     (generic_class_type' mode type_params in_array? name+params
                          class_type')
 
-    (#GenericArray param)
+    {#GenericArray param}
     (let [=param (class_type' mode type_params #1 param)]
       (` ((~! array.Array) (~ =param))))
 
-    (^or (#GenericWildcard #.None) (#GenericWildcard (#.Some [#LowerBound _])))
+    (^or {#GenericWildcard #.None} {#GenericWildcard {#.Some [#LowerBound _]}})
     (` .Any)
 
-    (#GenericWildcard (#.Some [#UpperBound upper_bound]))
+    {#GenericWildcard {#.Some [#UpperBound upper_bound]}}
     (class_type' mode type_params in_array? upper_bound)
     ))
 
@@ -358,7 +358,7 @@
                                   #.End
                                   (code.identifier ["" pname])
 
-                                  (#.Item bound1 _)
+                                  {#.Item bound1 _}
                                   (class_type #ManualPrM class_params bound1))))
                            class_params)]
     (` (primitive (~ (code.text (safe class_name)))
@@ -369,7 +369,7 @@
 (def: (simple_class$ env class)
   (-> (List Type_Parameter) GenericType Text)
   (case class
-    (#GenericTypeVar name)
+    {#GenericTypeVar name}
     (case (list.example (function (_ [pname pbounds])
                           (and (text\= name pname)
                                (not (list.empty? pbounds))))
@@ -377,25 +377,25 @@
       #.None
       type_var_class
 
-      (#.Some [pname pbounds])
+      {#.Some [pname pbounds]}
       (simple_class$ env (maybe.trusted (list.head pbounds))))
 
-    (^or (#GenericWildcard #.None) (#GenericWildcard (#.Some [#LowerBound _])))
+    (^or {#GenericWildcard #.None} {#GenericWildcard {#.Some [#LowerBound _]}})
     type_var_class
     
-    (#GenericWildcard (#.Some [#UpperBound upper_bound]))
+    {#GenericWildcard {#.Some [#UpperBound upper_bound]}}
     (simple_class$ env upper_bound)
     
-    (#GenericClass name env)
+    {#GenericClass name env}
     (safe name)
 
-    (#GenericArray param')
+    {#GenericArray param'}
     (case param'
-      (#GenericArray param)
+      {#GenericArray param}
       (format "[" (simple_class$ env param))
       
       (^template [ ]
-        [(#GenericClass  #.End)
+        [{#GenericClass  #.End}
          ])
       (["boolean" "[Z"]
        ["byte"    "[B"]
@@ -436,8 +436,8 @@
   (-> (-> Code Code) Code Code)
   (case (f input)
     (^template []
-      [[meta ( parts)]
-       [meta ( (list\each (pre_walk_replace f) parts))]])
+      [[meta { parts}]
+       [meta { (list\each (pre_walk_replace f) parts)}]])
     ([#.Form]
      [#.Variant]
      [#.Tuple])
@@ -448,7 +448,7 @@
 (def: (parser_replacer p ast)
   (-> (Parser Code) (-> Code Code))
   (case (<>.result p (list ast))
-    (#.Right [#.End ast'])
+    {#.Right [#.End ast']}
     ast'
 
     _
@@ -458,10 +458,10 @@
 (def: (field_parser class_name [[field_name _ _] field])
   (-> Text [Member_Declaration FieldDecl] (Parser Code))
   (case field
-    (#ConstantField _)
+    {#ConstantField _}
     (get_const_parser class_name field_name)
     
-    (#VariableField _)
+    {#VariableField _}
     (<>.either (get_var_parser class_name field_name)
                (put_var_parser class_name field_name))))
 
@@ -505,20 +505,20 @@
 (def: (method_parser params class_name [[method_name _ _] meth_def])
   (-> (List Type_Parameter) Text [Member_Declaration Method_Definition] (Parser Code))
   (case meth_def
-    (#ConstructorMethod strict? type_vars args constructor_args return_expr exs)
+    {#ConstructorMethod strict? type_vars args constructor_args return_expr exs}
     (constructor_parser params class_name args)
     
-    (#StaticMethod strict? type_vars args return_type return_expr exs)
+    {#StaticMethod strict? type_vars args return_type return_expr exs}
     (static_method_parser params class_name method_name args)
     
-    (^or (#VirtualMethod final? strict? type_vars self_name args return_type return_expr exs)
-         (#OverridenMethod strict? owner_class type_vars self_name args return_type return_expr exs))
+    (^or {#VirtualMethod final? strict? type_vars self_name args return_type return_expr exs}
+         {#OverridenMethod strict? owner_class type_vars self_name args return_type return_expr exs})
     (special_method_parser params class_name method_name args)
 
-    (#AbstractMethod type_vars args return_type exs)
+    {#AbstractMethod type_vars args return_type exs}
     (virtual_method_parser params class_name method_name args)
 
-    (#NativeMethod type_vars args return_type exs)
+    {#NativeMethod type_vars args return_type exs}
     (virtual_method_parser params class_name method_name args)))
 
 ... Parsers
@@ -556,24 +556,24 @@
      ($_ <>.either
          (do <>.monad
            [_ (.this! (' ?))]
-           (in (#GenericWildcard #.None)))
+           (in {#GenericWildcard #.None}))
          (.tuple (do <>.monad
                          [_ (.this! (' ?))
                           bound_kind bound_kind^
                           bound recur^]
-                         (in (#GenericWildcard (#.Some [bound_kind bound])))))
+                         (in {#GenericWildcard {#.Some [bound_kind bound]}})))
          (do <>.monad
            [name .local_identifier
             _ (no_periods_assertion name)]
            (if (list.member? text.equivalence (list\each product.left type_vars) name)
-             (in (#GenericTypeVar name))
-             (in (#GenericClass name (list)))))
+             (in {#GenericTypeVar name})
+             (in {#GenericClass name (list)})))
          (.tuple (do <>.monad
                          [component recur^]
                          (case component
                            (^template [ ]
-                             [(#GenericClass  #.End)
-                              (in (#GenericClass  (list)))])
+                             [{#GenericClass  #.End}
+                              (in {#GenericClass  (list)})])
                            (["[Z" "boolean"]
                             ["[B" "byte"]
                             ["[S" "short"]
@@ -584,14 +584,14 @@
                             ["[C" "char"])
 
                            _
-                           (in (#GenericArray component)))))
+                           (in {#GenericArray component}))))
          (.form (do <>.monad
                         [name .local_identifier
                          _ (no_periods_assertion name)
                          params (<>.some recur^)
                          _ (<>.assertion (format name " cannot be a type-parameter!")
                                          (not (list.member? text.equivalence (list\each product.left type_vars) name)))]
-                        (in (#GenericClass name params))))
+                        (in {#GenericClass name params})))
          ))))
 
 (def: type_param^
@@ -702,14 +702,14 @@
                              anns ..annotations^
                              type (..generic_type^ type_vars)
                              body .any]
-                            (in [[name #PublicP anns] (#ConstantField [type body])])))
+                            (in [[name #PublicP anns] {#ConstantField [type body]}])))
              (.form (do <>.monad
                             [pm privacy_modifier^
                              sm state_modifier^
                              name .local_identifier
                              anns ..annotations^
                              type (..generic_type^ type_vars)]
-                            (in [[name pm anns] (#VariableField [sm type])])))))
+                            (in [[name pm anns] {#VariableField [sm type]}])))))
 
 (def: (arg_decl^ type_vars)
   (-> (List Type_Parameter) (Parser ArgDecl))
@@ -744,7 +744,7 @@
                  (in [[#member_name constructor_method_name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#ConstructorMethod strict_fp? method_vars arg_decls constructor_args body exs)]))))
+                      {#ConstructorMethod strict_fp? method_vars arg_decls constructor_args body exs}]))))
 
 (def: (virtual_method_def^ class_vars)
   (-> (List Type_Parameter) (Parser [Member_Declaration Method_Definition]))
@@ -765,10 +765,10 @@
                  (in [[#member_name name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#VirtualMethod final? strict_fp?
-                                      method_vars
-                                      this_name arg_decls return_type
-                                      body exs)]))))
+                      {#VirtualMethod final? strict_fp?
+                       method_vars
+                       this_name arg_decls return_type
+                       body exs}]))))
 
 (def: overriden_method_def^
   (Parser [Member_Declaration Method_Definition])
@@ -788,10 +788,10 @@
                  (in [[#member_name name
                        #member_privacy #PublicP
                        #member_anns annotations]
-                      (#OverridenMethod strict_fp?
-                                        owner_class method_vars
-                                        this_name arg_decls return_type
-                                        body exs)]))))
+                      {#OverridenMethod strict_fp?
+                       owner_class method_vars
+                       this_name arg_decls return_type
+                       body exs}]))))
 
 (def: static_method_def^
   (Parser [Member_Declaration Method_Definition])
@@ -810,7 +810,7 @@
                  (in [[#member_name name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#StaticMethod strict_fp? method_vars arg_decls return_type body exs)]))))
+                      {#StaticMethod strict_fp? method_vars arg_decls return_type body exs}]))))
 
 (def: abstract_method_def^
   (Parser [Member_Declaration Method_Definition])
@@ -827,7 +827,7 @@
                  (in [[#member_name name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#AbstractMethod method_vars arg_decls return_type exs)]))))
+                      {#AbstractMethod method_vars arg_decls return_type exs}]))))
 
 (def: native_method_def^
   (Parser [Member_Declaration Method_Definition])
@@ -844,7 +844,7 @@
                  (in [[#member_name name
                        #member_privacy pm
                        #member_anns annotations]
-                      (#NativeMethod method_vars arg_decls return_type exs)]))))
+                      {#NativeMethod method_vars arg_decls return_type exs}]))))
 
 (def: (method_def^ class_vars)
   (-> (List Type_Parameter) (Parser [Member_Declaration Method_Definition]))
@@ -885,7 +885,7 @@
       (.form (do <>.monad
                      [_ (.this! (' "enum"))
                       enum_members (<>.some .local_identifier)]
-                     (in (#EnumDecl enum_members))))
+                     (in {#EnumDecl enum_members})))
       (.form (do <>.monad
                      [tvars ..type_params^
                       _ (.this! (' new))
@@ -894,7 +894,7 @@
                       ?prim_mode (<>.maybe primitive_mode^)
                       args (..import_member_args^ total_vars)
                       [io? try? maybe?] import_member_return_flags^]
-                     (in (#ConstructorDecl [[#import_member_mode    (maybe.else #AutoPrM ?prim_mode)
+                     (in {#ConstructorDecl [[#import_member_mode    (maybe.else #AutoPrM ?prim_mode)
                                              #import_member_alias   (maybe.else "new" ?alias)
                                              #import_member_kind    #VirtualIMK
                                              #import_member_tvars   tvars
@@ -902,7 +902,7 @@
                                              #import_member_maybe?  maybe?
                                              #import_member_try?    try?
                                              #import_member_io?     io?]
-                                            []]))))
+                                            []]})))
       (.form (do <>.monad
                      [kind (: (Parser ImportMethodKind)
                               (<>.or (.this! (' "static"))
@@ -915,7 +915,7 @@
                       args (..import_member_args^ total_vars)
                       [io? try? maybe?] import_member_return_flags^
                       return (..generic_type^ total_vars)]
-                     (in (#MethodDecl [[#import_member_mode    (maybe.else #AutoPrM ?prim_mode)
+                     (in {#MethodDecl [[#import_member_mode    (maybe.else #AutoPrM ?prim_mode)
                                         #import_member_alias   (maybe.else name ?alias)
                                         #import_member_kind    kind
                                         #import_member_tvars   tvars
@@ -924,7 +924,7 @@
                                         #import_member_try?    try?
                                         #import_member_io?     io?]
                                        [#import_method_name    name
-                                        #import_method_return  return]]))))
+                                        #import_method_return  return]]})))
       (.form (do <>.monad
                      [static? (<>.parses? (.this! (' "static")))
                       name .local_identifier
@@ -932,12 +932,12 @@
                       gtype (..generic_type^ owner_vars)
                       maybe? (<>.parses? (.this! (' "?")))
                       setter? (<>.parses? (.this! (' #!)))]
-                     (in (#FieldAccessDecl [#import_field_mode    (maybe.else #AutoPrM ?prim_mode)
+                     (in {#FieldAccessDecl [#import_field_mode    (maybe.else #AutoPrM ?prim_mode)
                                             #import_field_name    name
                                             #import_field_static? static?
                                             #import_field_maybe?  maybe?
                                             #import_field_setter? setter?
-                                            #import_field_type    gtype]))))
+                                            #import_field_type    gtype]})))
       ))
 
 (def: bundle
@@ -992,19 +992,19 @@
 (def: (generic_type$ gtype)
   (-> GenericType JVM_Code)
   (case gtype
-    (#GenericTypeVar name)
+    {#GenericTypeVar name}
     name
 
-    (#GenericClass name params)
+    {#GenericClass name params}
     (format "(" (safe name) " " (spaced (list\each generic_type$ params)) ")")
     
-    (#GenericArray param)
+    {#GenericArray param}
     (format "(" array.type_name " " (generic_type$ param) ")")
     
-    (#GenericWildcard #.None)
+    {#GenericWildcard #.None}
     "?"
 
-    (#GenericWildcard (#.Some [bound_kind bound]))
+    {#GenericWildcard {#.Some [bound_kind bound]}}
     (format (bound_kind$ bound_kind) (generic_type$ bound))))
 
 (def: (type_param$ [name bounds])
@@ -1041,7 +1041,7 @@
 (def: (field_decl$ [[name pm anns] field])
   (-> [Member_Declaration FieldDecl] JVM_Code)
   (case field
-    (#ConstantField class value)
+    {#ConstantField class value}
     (with_parens
       (spaced (list "constant" name
                     (with_brackets (spaced (list\each annotation$ anns)))
@@ -1049,7 +1049,7 @@
                     (code.format value))
               ))
 
-    (#VariableField sm class)
+    {#VariableField sm class}
     (with_parens
       (spaced (list "variable" name
                     (privacy_modifier$ pm)
@@ -1072,7 +1072,7 @@
 (def: (method_def$ replacer super_class [[name pm anns] method_def])
   (-> (-> Code Code) Super_Class_Decl [Member_Declaration Method_Definition] JVM_Code)
   (case method_def
-    (#ConstructorMethod strict_fp? type_vars arg_decls constructor_args body exs)
+    {#ConstructorMethod strict_fp? type_vars arg_decls constructor_args body exs}
     (with_parens
       (spaced (list "init"
                     (privacy_modifier$ pm)
@@ -1085,7 +1085,7 @@
                     (code.format (pre_walk_replace replacer body))
                     )))
     
-    (#VirtualMethod final? strict_fp? type_vars this_name arg_decls return_type body exs)
+    {#VirtualMethod final? strict_fp? type_vars this_name arg_decls return_type body exs}
     (with_parens
       (spaced (list "virtual"
                     name
@@ -1100,7 +1100,7 @@
                     (code.format (pre_walk_replace replacer (` (let [(~ (code.local_identifier this_name)) (~' _jvm_this)]
                                                                  (~ body))))))))
     
-    (#OverridenMethod strict_fp? class_decl type_vars this_name arg_decls return_type body exs)
+    {#OverridenMethod strict_fp? class_decl type_vars this_name arg_decls return_type body exs}
     (let [super_replacer (parser_replacer (.form (do <>.monad
                                                          [_ (.this! (' ::super!))
                                                           args (.tuple (<>.exactly (list.size arg_decls) .any))
@@ -1128,7 +1128,7 @@
                           (code.format))
                       ))))
 
-    (#StaticMethod strict_fp? type_vars arg_decls return_type body exs)
+    {#StaticMethod strict_fp? type_vars arg_decls return_type body exs}
     (with_parens
       (spaced (list "static"
                     name
@@ -1141,7 +1141,7 @@
                     (generic_type$ return_type)
                     (code.format (pre_walk_replace replacer body)))))
 
-    (#AbstractMethod type_vars arg_decls return_type exs)
+    {#AbstractMethod type_vars arg_decls return_type exs}
     (with_parens
       (spaced (list "abstract"
                     name
@@ -1152,7 +1152,7 @@
                     (with_brackets (spaced (list\each arg_decl$ arg_decls)))
                     (generic_type$ return_type))))
 
-    (#NativeMethod type_vars arg_decls return_type exs)
+    {#NativeMethod type_vars arg_decls return_type exs}
     (with_parens
       (spaced (list "native"
                     name
@@ -1242,12 +1242,12 @@
     (in (list (` (let [(~ g!temp) (~ expr)]
                    (if ("jvm object null?" (~ g!temp))
                      #.None
-                     (#.Some (~ g!temp)))))))))
+                     {#.Some (~ g!temp)})))))))
 
 (syntax: .public (!!! [expr .any])
   (with_identifiers [g!value]
     (in (list (` (.case (~ expr)
-                   (#.Some (~ g!value))
+                   {#.Some (~ g!value)}
                    (~ g!value)
 
                    #.None
@@ -1260,11 +1260,11 @@
           class_type (` (.primitive (~ (code.text class_name))))
           check_type (` (.Maybe (~ class_type)))
           check_code (` (if ((~ (code.text (format "jvm instanceof" ":" class_name))) (~ g!unchecked))
-                          (#.Some (.:as (~ class_type)
-                                        (~ g!unchecked)))
+                          {#.Some (.:as (~ class_type)
+                                        (~ g!unchecked))}
                           #.None))]
       (case unchecked
-        (#.Some unchecked)
+        {#.Some unchecked}
         (in (list (` (: (~ check_type)
                         (let [(~ g!unchecked) (~ unchecked)]
                           (~ check_code))))))
@@ -1299,10 +1299,10 @@
 (def: (member_type_vars class_tvars member)
   (-> (List Type_Parameter) Import_Member_Declaration (List Type_Parameter))
   (case member
-    (#ConstructorDecl [commons _])
+    {#ConstructorDecl [commons _]}
     (list\composite class_tvars (value@ #import_member_tvars commons))
 
-    (#MethodDecl [commons _])
+    {#MethodDecl [commons _]}
     (case (value@ #import_member_kind commons)
       #StaticIMK
       (value@ #import_member_tvars commons)
@@ -1316,7 +1316,7 @@
 (def: (member_def_arg_bindings type_params class member)
   (-> (List Type_Parameter) Class_Declaration Import_Member_Declaration (Meta [(List [Bit Code]) (List Text) (List Code)]))
   (case member
-    (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _]))
+    (^or {#ConstructorDecl [commons _]} {#MethodDecl [commons _]})
     (let [(^slots [#import_member_tvars #import_member_args]) commons]
       (do [! meta.monad]
         [arg_inputs (monad.each !
@@ -1343,7 +1343,7 @@
 (def: (decorate_return_maybe class member return_term)
   (-> Class_Declaration Import_Member_Declaration Code Code)
   (case member
-    (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _]))
+    (^or {#ConstructorDecl [commons _]} {#MethodDecl [commons _]})
     (if (value@ #import_member_maybe? commons)
       (` (??? (~ return_term)))
       (let [g!temp (` ((~' ~') (~ (code.identifier ["" " Ω "]))))]
@@ -1362,7 +1362,7 @@
   [(def: ( member return_term)
      (-> Import_Member_Declaration Code Code)
      (case member
-       (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _]))
+       (^or {#ConstructorDecl [commons _]} {#MethodDecl [commons _]})
        (if (value@  commons)
          
          return_term)
@@ -1437,7 +1437,7 @@
                        (list.only free_type_param?)
                        (list\each lux_type_parameter))]
     (case member
-      (#EnumDecl enum_members)
+      {#EnumDecl enum_members}
       (macro.with_identifiers [g!_]
         (do [! meta.monad]
           [.let [enum_type (: Code
@@ -1458,7 +1458,7 @@
                                             ((~ (code.text (format "jvm getstatic" ":" full_name ":" name)))))))))]]
           (in (list\each getter_interop enum_members))))
       
-      (#ConstructorDecl [commons _])
+      {#ConstructorDecl [commons _]}
       (do meta.monad
         [.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)))
@@ -1470,7 +1470,7 @@
         (in (list (` ((~! syntax:) ((~ def_name) [(~+ (syntax_inputs (list\each product.right arg_function_inputs)))])
                       ((~' in) (.list (.` (~ jvm_interop)))))))))
 
-      (#MethodDecl [commons method])
+      {#MethodDecl [commons method]}
       (with_identifiers [g!obj]
         (do meta.monad
           [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))])
@@ -1504,7 +1504,7 @@
                                                     (~+ (syntax_inputs object_ast))])
                         ((~' in) (.list (.` (~ jvm_interop))))))))))
 
-      (#FieldAccessDecl fad)
+      {#FieldAccessDecl fad}
       (do meta.monad
         [.let [(^open "[0]") fad
                base_gtype (class_type import_field_mode type_params import_field_type)
@@ -1583,12 +1583,12 @@
   (-> Class_Declaration (Meta Class_Kind))
   (let [class_name (..safe class_name)]
     (case (..load_class class_name)
-      (#try.Success class)
+      {#try.Success class}
       (\ meta.monad in (if (interface? class)
                          #Interface
                          #Class))
 
-      (#try.Failure error)
+      {#try.Failure error}
       (meta.failure (format "Cannot load class: " class_name text.new_line
                             error)))))
 
@@ -1607,7 +1607,7 @@
                          size .any])
   (case type
     (^template [ ]
-      [(^ (#GenericClass  (list)))
+      [(^ {#GenericClass  (list)})
        (in (list (` ( (~ size)))))])
     (["boolean" "jvm znewarray"]
      ["byte"    "jvm bnewarray"]
@@ -1629,18 +1629,18 @@
   (if (type\= Any type)
     (\ meta.monad in "java.lang.Object")
     (case type
-      (#.Primitive name params)
+      {#.Primitive name params}
       (\ meta.monad in name)
 
-      (#.Apply A F)
+      {#.Apply A F}
       (case (type.applied (list A) F)
         #.None
         (meta.failure (format "Cannot apply type: " (type.format F) " to " (type.format A)))
 
-        (#.Some type')
+        {#.Some type'}
         (type_class_name type'))
       
-      (#.Named _ type')
+      {#.Named _ type'}
       (type_class_name type')
 
       _
@@ -1649,7 +1649,7 @@
 (syntax: .public (read! [idx .any
                          array .any])
   (case array
-    [_ (#.Identifier array_name)]
+    [_ {#.Identifier array_name}]
     (do meta.monad
       [array_type (meta.type array_name)
        array_jvm_type (type_class_name array_type)]
@@ -1678,7 +1678,7 @@
                           value .any
                           array .any])
   (case array
-    [_ (#.Identifier array_name)]
+    [_ {#.Identifier array_name}]
     (do meta.monad
       [array_type (meta.type array_name)
        array_jvm_type (type_class_name array_type)]
diff --git a/stdlib/source/library/lux/ffi.php.lux b/stdlib/source/library/lux/ffi.php.lux
index 78d75f269..ae8e4b347 100644
--- a/stdlib/source/library/lux/ffi.php.lux
+++ b/stdlib/source/library/lux/ffi.php.lux
@@ -99,8 +99,8 @@
 
 (type: Method
   (Variant
-   (#Static Static_Method)
-   (#Virtual Virtual_Method)))
+   {#Static Static_Method}
+   {#Virtual Virtual_Method}))
 
 (def: common_method
   (Parser Common_Method)
@@ -122,8 +122,8 @@
 
 (type: Member
   (Variant
-   (#Field Field)
-   (#Method Method)))
+   {#Field Field}
+   {#Method Method}))
 
 (def: member
   (Parser Member)
@@ -148,7 +148,7 @@
   (-> Code [Bit Code] Code)
   (if nullable?
     (` (case (~ input)
-         (#.Some (~ g!temp))
+         {#.Some (~ g!temp)}
          (~ g!temp)
 
          #.Null
@@ -161,7 +161,7 @@
     (` (let [(~ g!temp) (~ output)]
          (if ("php object null?" (~ g!temp))
            #.None
-           (#.Some (~ g!temp)))))
+           {#.Some (~ g!temp)})))
     (` (let [(~ g!temp) (~ output)]
          (if (not ("php object null?" (~ g!temp)))
            (~ g!temp)
@@ -169,9 +169,9 @@
 
 (type: Import
   (Variant
-   (#Class Text (Maybe Alias) Text (List Member))
-   (#Function Static_Method)
-   (#Constant Field)))
+   {#Class Text (Maybe Alias) Text (List Member)}
+   {#Function Static_Method}
+   {#Constant Field}))
 
 (def: import
   (Parser Import)
@@ -188,10 +188,10 @@
 
 (syntax: .public (try [expression .any])
   ... {#.doc (example (case (try (risky_computation input))
-  ...                   (#.Right success)
+  ...                   {#.Right success}
   ...                   (do_something success)
 
-  ...                   (#.Left error)
+  ...                   {#.Left error}
   ...                   (recover_from_failure error)))}
   (in (list (` ("lux try" ((~! io.io) (~ expression)))))))
 
@@ -239,7 +239,7 @@
 (syntax: .public (import: [import ..import])
   (with_identifiers [g!temp]
     (case import
-      (#Class [class alias format members])
+      {#Class [class alias format members]}
       (with_identifiers [g!object]
         (let [qualify (: (-> Text Code)
                          (function (_ member_name)
@@ -253,7 +253,7 @@
                           (..Object (primitive (~ (code.text class))))))
                      (list\each (function (_ member)
                                   (case member
-                                    (#Field [static? field alias fieldT])
+                                    {#Field [static? field alias fieldT]}
                                     (if static?
                                       (` ((~! syntax:) ((~ (qualify (maybe.else field alias))) [])
                                           (\ (~! meta.monad) (~' in)
@@ -267,9 +267,9 @@
                                             (~ (without_null g!temp fieldT (` ("php object get" (~ (code.text field))
                                                                                (:as (..Object .Any) (~ g!object))))))))))
                                     
-                                    (#Method method)
+                                    {#Method method}
                                     (case method
-                                      (#Static [method alias inputsT io? try? outputT])
+                                      {#Static [method alias inputsT io? try? outputT]}
                                       (..make_function (qualify (maybe.else method alias))
                                                        g!temp
                                                        (` ("php object get" (~ (code.text method))
@@ -280,7 +280,7 @@
                                                        try?
                                                        outputT)
                                       
-                                      (#Virtual [method alias inputsT io? try? outputT])
+                                      {#Virtual [method alias inputsT io? try? outputT]}
                                       (let [g!inputs (input_variables inputsT)]
                                         (` (def: ((~ (qualify (maybe.else method alias)))
                                                   [(~+ (list\each product.right g!inputs))]
@@ -300,7 +300,7 @@
                                                          (~+ (list\each (with_null g!temp) g!inputs)))))))))))))
                                 members)))))
       
-      (#Function [name alias inputsT io? try? outputT])
+      {#Function [name alias inputsT io? try? outputT]}
       (let [imported (` ("php constant" (~ (code.text name))))]
         (in (list (..make_function (code.local_identifier (maybe.else name alias))
                                    g!temp
@@ -310,7 +310,7 @@
                                    try?
                                    outputT))))
 
-      (#Constant [_ name alias fieldT])
+      {#Constant [_ name alias fieldT]}
       (let [imported (` ("php constant" (~ (code.text name))))]
         (in (list (` ((~! syntax:) ((~ (code.local_identifier (maybe.else name alias))) [])
                       (\ (~! meta.monad) (~' in)
diff --git a/stdlib/source/library/lux/ffi.py.lux b/stdlib/source/library/lux/ffi.py.lux
index d5f1e23a2..ccee694ae 100644
--- a/stdlib/source/library/lux/ffi.py.lux
+++ b/stdlib/source/library/lux/ffi.py.lux
@@ -92,8 +92,8 @@
 
 (type: Method
   (Variant
-   (#Static Static_Method)
-   (#Virtual Virtual_Method)))
+   {#Static Static_Method}
+   {#Virtual Virtual_Method}))
 
 (def: common_method
   (Parser Common_Method)
@@ -115,9 +115,9 @@
 
 (type: Member
   (Variant
-   (#Constructor Constructor)
-   (#Field Field)
-   (#Method Method)))
+   {#Constructor Constructor}
+   {#Field Field}
+   {#Method Method}))
 
 (def: member
   (Parser Member)
@@ -143,7 +143,7 @@
   (-> Code [Bit Code] Code)
   (if noneable?
     (` (case (~ input)
-         (#.Some (~ g!temp))
+         {#.Some (~ g!temp)}
          (~ g!temp)
 
          #.None
@@ -156,7 +156,7 @@
     (` (let [(~ g!temp) (~ output)]
          (if ("python object none?" (~ g!temp))
            #.None
-           (#.Some (~ g!temp)))))
+           {#.Some (~ g!temp)})))
     (` (let [(~ g!temp) (~ output)]
          (if (not ("python object none?" (~ g!temp)))
            (~ g!temp)
@@ -164,8 +164,8 @@
 
 (type: Import
   (Variant
-   (#Class [Text Text (List Member)])
-   (#Function Static_Method)))
+   {#Class [Text Text (List Member)]}
+   {#Function Static_Method}))
 
 (def: import
   (Parser Import)
@@ -241,7 +241,7 @@
   ...                    ("static" getmtime [..String] "io" "try" ..Float)]))}
   (with_identifiers [g!temp]
     (case import
-      (#Class [class format members])
+      {#Class [class format members]}
       (with_identifiers [g!object]
         (let [qualify (: (-> Text Code)
                          (function (_ member_name)
@@ -252,7 +252,7 @@
               g!type (code.local_identifier class)
               real_class (text.replaced "/" "." class)
               imported (case (text.all_split_by "/" class)
-                         (#.Item head tail)
+                         {#.Item head tail}
                          (list\mix (function (_ sub super)
                                      (` ("python object get" (~ (code.text sub))
                                          (:as (..Object .Any) (~ super)))))
@@ -265,7 +265,7 @@
                           (..Object (primitive (~ (code.text real_class))))))
                      (list\each (function (_ member)
                                   (case member
-                                    (#Constructor inputsT)
+                                    {#Constructor inputsT}
                                     (let [g!inputs (input_variables inputsT)]
                                       (` (def: ((~ (qualify "new"))
                                                 [(~+ (list\each product.right g!inputs))])
@@ -276,7 +276,7 @@
                                              (:as ..Function (~ imported))
                                              (~+ (list\each (with_none g!temp) g!inputs)))))))
                                     
-                                    (#Field [static? field fieldT])
+                                    {#Field [static? field fieldT]}
                                     (if static?
                                       (` ((~! syntax:) ((~ (qualify field)) [])
                                           (\ (~! meta.monad) (~' in)
@@ -291,9 +291,9 @@
                                             (~ (without_none g!temp fieldT (` ("python object get" (~ (code.text field))
                                                                                (:as (..Object .Any) (~ g!object))))))))))
                                     
-                                    (#Method method)
+                                    {#Method method}
                                     (case method
-                                      (#Static [method alias inputsT io? try? outputT])
+                                      {#Static [method alias inputsT io? try? outputT]}
                                       (..make_function (qualify (maybe.else method alias))
                                                        g!temp
                                                        (` ("python object get" (~ (code.text method))
@@ -303,7 +303,7 @@
                                                        try?
                                                        outputT)
                                       
-                                      (#Virtual [method alias inputsT io? try? outputT])
+                                      {#Virtual [method alias inputsT io? try? outputT]}
                                       (let [g!inputs (input_variables inputsT)]
                                         (` (def: ((~ (qualify (maybe.else method alias)))
                                                   [(~+ (list\each product.right g!inputs))]
@@ -323,7 +323,7 @@
                                                          (~+ (list\each (with_none g!temp) g!inputs)))))))))))))
                                 members)))))
       
-      (#Function [name alias inputsT io? try? outputT])
+      {#Function [name alias inputsT io? try? outputT]}
       (in (list (..make_function (code.local_identifier (maybe.else name alias))
                                  g!temp
                                  (` ("python constant" (~ (code.text name))))
diff --git a/stdlib/source/library/lux/ffi.rb.lux b/stdlib/source/library/lux/ffi.rb.lux
index 62620c6af..c2d06bb78 100644
--- a/stdlib/source/library/lux/ffi.rb.lux
+++ b/stdlib/source/library/lux/ffi.rb.lux
@@ -99,8 +99,8 @@
 
 (type: Method
   (Variant
-   (#Static Static_Method)
-   (#Virtual Virtual_Method)))
+   {#Static Static_Method}
+   {#Virtual Virtual_Method}))
 
 (def: common_method
   (Parser Common_Method)
@@ -122,8 +122,8 @@
 
 (type: Member
   (Variant
-   (#Field Field)
-   (#Method Method)))
+   {#Field Field}
+   {#Method Method}))
 
 (def: member
   (Parser Member)
@@ -148,7 +148,7 @@
   (-> Code [Bit Code] Code)
   (if nilable?
     (` (case (~ input)
-         (#.Some (~ g!temp))
+         {#.Some (~ g!temp)}
          (~ g!temp)
 
          #.None
@@ -161,7 +161,7 @@
     (` (let [(~ g!temp) (~ output)]
          (if ("ruby object nil?" (~ g!temp))
            #.None
-           (#.Some (~ g!temp)))))
+           {#.Some (~ g!temp)})))
     (` (let [(~ g!temp) (~ output)]
          (if (not ("ruby object nil?" (~ g!temp)))
            (~ g!temp)
@@ -169,9 +169,9 @@
 
 (type: Import
   (Variant
-   (#Class Text (Maybe Alias) Text (List Member))
-   (#Function Static_Method)
-   (#Constant Field)))
+   {#Class Text (Maybe Alias) Text (List Member)}
+   {#Function Static_Method}
+   {#Constant Field}))
 
 (def: import
   (Parser [(Maybe Text) Import])
@@ -232,7 +232,7 @@
 (syntax: .public (import: [[?module import] ..import])
   (with_identifiers [g!temp]
     (case import
-      (#Class [class alias format members])
+      {#Class [class alias format members]}
       (with_identifiers [g!object]
         (let [qualify (: (-> Text Code)
                          (function (_ member_name)
@@ -243,7 +243,7 @@
               g!type (code.local_identifier (maybe.else class alias))
               module_import (: (List Code)
                                (case ?module
-                                 (#.Some module)
+                                 {#.Some module}
                                  (list (` ("ruby import" (~ (code.text module)))))
 
                                  #.None
@@ -253,7 +253,7 @@
                           (..Object (primitive (~ (code.text class))))))
                      (list\each (function (_ member)
                                   (case member
-                                    (#Field [static? field alias fieldT])
+                                    {#Field [static? field alias fieldT]}
                                     (if static?
                                       (` ((~! syntax:) ((~ (qualify (maybe.else field alias))) [])
                                           (\ (~! meta.monad) (~' in)
@@ -269,9 +269,9 @@
                                             (~ (without_nil g!temp fieldT (` ("ruby object get" (~ (code.text field))
                                                                               (:as (..Object .Any) (~ g!object))))))))))
                                     
-                                    (#Method method)
+                                    {#Method method}
                                     (case method
-                                      (#Static [method alias inputsT io? try? outputT])
+                                      {#Static [method alias inputsT io? try? outputT]}
                                       (..make_function (qualify (maybe.else method alias))
                                                        g!temp
                                                        (` ("ruby object get" (~ (code.text method))
@@ -284,7 +284,7 @@
                                                        try?
                                                        outputT)
                                       
-                                      (#Virtual [method alias inputsT io? try? outputT])
+                                      {#Virtual [method alias inputsT io? try? outputT]}
                                       (let [g!inputs (input_variables inputsT)]
                                         (` (def: ((~ (qualify (maybe.else method alias)))
                                                   [(~+ (list\each product.right g!inputs))]
@@ -304,10 +304,10 @@
                                                          (~+ (list\each (with_nil g!temp) g!inputs)))))))))))))
                                 members)))))
       
-      (#Function [name alias inputsT io? try? outputT])
+      {#Function [name alias inputsT io? try? outputT]}
       (let [imported (` (.exec
                           (~+ (case ?module
-                                (#.Some module)
+                                {#.Some module}
                                 (list (` ("ruby import" (~ (code.text module)))))
 
                                 #.None
@@ -321,10 +321,10 @@
                                    try?
                                    outputT))))
 
-      (#Constant [_ name alias fieldT])
+      {#Constant [_ name alias fieldT]}
       (let [imported (` (.exec
                           (~+ (case ?module
-                                (#.Some module)
+                                {#.Some module}
                                 (list (` ("ruby import" (~ (code.text module)))))
 
                                 #.None
diff --git a/stdlib/source/library/lux/ffi.scm.lux b/stdlib/source/library/lux/ffi.scm.lux
index 0862942c1..18800df0a 100644
--- a/stdlib/source/library/lux/ffi.scm.lux
+++ b/stdlib/source/library/lux/ffi.scm.lux
@@ -120,7 +120,7 @@
   (-> Code [Bit Code] Code)
   (if nilable?
     (` (case (~ input)
-         (#.Some (~ g!temp))
+         {#.Some (~ g!temp)}
          (~ g!temp)
 
          #.None
@@ -133,7 +133,7 @@
     (` (let [(~ g!temp) (~ output)]
          (if ("scheme object nil?" (~ g!temp))
            #.None
-           (#.Some (~ g!temp)))))
+           {#.Some (~ g!temp)})))
     (` (let [(~ g!temp) (~ output)]
          (if (not ("scheme object nil?" (~ g!temp)))
            (~ g!temp)
@@ -141,8 +141,8 @@
 
 (type: Import
   (Variant
-   (#Function Common_Method)
-   (#Constant Field)))
+   {#Function Common_Method}
+   {#Constant Field}))
 
 (def: import
   (Parser Import)
@@ -153,10 +153,10 @@
 
 (syntax: .public (try [expression .any])
   ... {#.doc (example (case (try (risky_computation input))
-  ...                   (#.Right success)
+  ...                   {#.Right success}
   ...                   (do_something success)
 
-  ...                   (#.Left error)
+  ...                   {#.Left error}
   ...                   (recover_from_failure error)))}
   (in (list (` ("lux try" ((~! io.io) (~ expression)))))))
 
@@ -204,7 +204,7 @@
 (syntax: .public (import: [import ..import])
   (with_identifiers [g!temp]
     (case import
-      (#Function [name alias inputsT io? try? outputT])
+      {#Function [name alias inputsT io? try? outputT]}
       (let [imported (` ("scheme constant" (~ (code.text name))))]
         (in (list (..make_function (code.local_identifier (maybe.else name alias))
                                    g!temp
@@ -214,7 +214,7 @@
                                    try?
                                    outputT))))
 
-      (#Constant [_ name alias fieldT])
+      {#Constant [_ name alias fieldT]}
       (let [imported (` ("scheme constant" (~ (code.text name))))]
         (in (list (` ((~! syntax:) ((~ (code.local_identifier (maybe.else name alias))))
                       (\ (~! meta.monad) (~' in)
diff --git a/stdlib/source/library/lux/macro.lux b/stdlib/source/library/lux/macro.lux
index 46d2ada34..5962e36fa 100644
--- a/stdlib/source/library/lux/macro.lux
+++ b/stdlib/source/library/lux/macro.lux
@@ -21,11 +21,11 @@
 (def: .public (single_expansion syntax)
   (-> Code (Meta (List Code)))
   (case syntax
-    [_ (#.Form (#.Item [[_ (#.Identifier name)] args]))]
+    [_ {#.Form {#.Item [[_ {#.Identifier name}] args]}}]
     (do //.monad
       [?macro (//.macro name)]
       (case ?macro
-        (#.Some macro)
+        {#.Some macro}
         ((:as Macro' macro) args)
         
         #.None
@@ -37,11 +37,11 @@
 (def: .public (expansion syntax)
   (-> Code (Meta (List Code)))
   (case syntax
-    [_ (#.Form (#.Item [[_ (#.Identifier name)] args]))]
+    [_ {#.Form {#.Item [[_ {#.Identifier name}] args]}}]
     (do //.monad
       [?macro (//.macro name)]
       (case ?macro
-        (#.Some macro)
+        {#.Some macro}
         (do [! //.monad]
           [top_level_expansion ((:as Macro' macro) args)]
           (|> top_level_expansion
@@ -57,11 +57,11 @@
 (def: .public (full_expansion syntax)
   (-> Code (Meta (List Code)))
   (case syntax
-    [_ (#.Form (#.Item [[_ (#.Identifier name)] args]))]
+    [_ {#.Form {#.Item [[_ {#.Identifier name}] args]}}]
     (do //.monad
       [?macro (//.macro name)]
       (case ?macro
-        (#.Some macro)
+        {#.Some macro}
         (do //.monad
           [expansion ((:as Macro' macro) args)
            expansion' (monad.each //.monad full_expansion expansion)]
@@ -72,18 +72,18 @@
           [parts' (monad.each //.monad full_expansion (list& (code.identifier name) args))]
           (in (list (code.form (list\conjoint parts')))))))
 
-    [_ (#.Form (#.Item [harg targs]))]
+    [_ {#.Form {#.Item [harg targs]}}]
     (do //.monad
       [harg+ (full_expansion harg)
        targs+ (monad.each //.monad full_expansion targs)]
       (in (list (code.form (list\composite harg+ (list\conjoint (: (List (List Code)) targs+)))))))
 
-    [_ (#.Variant members)]
+    [_ {#.Variant members}]
     (do //.monad
       [members' (monad.each //.monad full_expansion members)]
       (in (list (code.variant (list\conjoint members')))))
 
-    [_ (#.Tuple members)]
+    [_ {#.Tuple members}]
     (do //.monad
       [members' (monad.each //.monad full_expansion members)]
       (in (list (code.tuple (list\conjoint members')))))
@@ -103,7 +103,7 @@
 (def: (local_identifier ast)
   (-> Code (Meta Text))
   (case ast
-    [_ (#.Identifier [_ name])]
+    [_ {#.Identifier [_ name]}]
     (\ //.monad in name)
 
     _
@@ -117,7 +117,7 @@
 
 (macro: .public (with_identifiers tokens)
   (case tokens
-    (^ (list [_ (#.Tuple identifiers)] body))
+    (^ (list [_ {#.Tuple identifiers}] body))
     (do [! //.monad]
       [identifier_names (monad.each ! ..local_identifier identifiers)
        .let [identifier_defs (list\conjoint (list\each (: (-> Text (List Code))
@@ -148,16 +148,16 @@
            macro_name [module short]]
        (case (: (Maybe [Bit Code])
                 (case tokens
-                  (^ (list [_ (#.Text "omit")]
+                  (^ (list [_ {#.Text "omit"}]
                            token))
-                  (#.Some [#1 token])
+                  {#.Some [#1 token]}
 
                   (^ (list token))
-                  (#.Some [#0 token])
+                  {#.Some [#0 token]}
 
                   _
                   #.None))
-         (#.Some [omit? token])
+         {#.Some [omit? token]}
          (do //.monad
            [location //.location
             output ( token)
diff --git a/stdlib/source/library/lux/macro/code.lux b/stdlib/source/library/lux/macro/code.lux
index b80a1a418..aaa054c96 100644
--- a/stdlib/source/library/lux/macro/code.lux
+++ b/stdlib/source/library/lux/macro/code.lux
@@ -20,17 +20,17 @@
      ["[0]" location]]]])
 
 ... (type: (Code' w)
-...   (#.Bit Bit)
-...   (#.Nat Nat)
-...   (#.Int Int)
-...   (#.Rev Rev)
-...   (#.Frac Frac)
-...   (#.Text Text)
-...   (#.Identifier Name)
-...   (#.Tag Name)
-...   (#.Form (List (w (Code' w))))
-...   (#.Variant (List (w (Code' w))))
-...   (#.Tuple (List (w (Code' w)))))
+...   {#.Bit Bit}
+...   {#.Nat Nat}
+...   {#.Int Int}
+...   {#.Rev Rev}
+...   {#.Frac Frac}
+...   {#.Text Text}
+...   {#.Identifier Name}
+...   {#.Tag Name}
+...   {#.Form (List (w (Code' w)))}
+...   {#.Variant (List (w (Code' w)))}
+...   {#.Tuple (List (w (Code' w)))})
 
 ... (type: Code
 ...   (Ann Location (Code' (Ann Location))))
@@ -38,7 +38,7 @@
 (template [  ]
   [(def: .public ( x)
      (->  Code)
-     [location.dummy ( x)])]
+     [location.dummy { x}])]
   
   [bit        Bit                #.Bit]
   [nat        Nat                #.Nat]
@@ -56,7 +56,7 @@
 (template [ ]
   [(def: .public ( name)
      (-> Text Code)
-     [location.dummy ( ["" name])])]
+     [location.dummy { ["" name]}])]
 
   [local_identifier #.Identifier]
   [local_tag        #.Tag])
@@ -67,7 +67,7 @@
   (def: (= x y)
     (case [x y]
       (^template [ ]
-        [[[_ ( x')] [_ ( y')]]
+        [[[_ { x'}] [_ { y'}]]
          (\  = x' y')])
       ([#.Bit        bit.equivalence]
        [#.Nat        nat.equivalence]
@@ -79,7 +79,7 @@
        [#.Tag        name.equivalence])
 
       (^template []
-        [[[_ ( xs')] [_ ( ys')]]
+        [[[_ { xs'}] [_ { ys'}]]
          (\ (list.equivalence =) = xs' ys')])
       ([#.Form]
        [#.Variant]
@@ -92,7 +92,7 @@
   (-> Code Text)
   (case ast
     (^template [ ]
-      [[_ ( value)]
+      [[_ { value}]
        (\  encoded value)])
     ([#.Bit        bit.codec]
      [#.Nat        nat.decimal]
@@ -101,14 +101,14 @@
      [#.Frac       frac.decimal]
      [#.Identifier name.codec])
 
-    [_ (#.Text value)]
+    [_ {#.Text value}]
     (text.format value)
 
-    [_ (#.Tag name)]
+    [_ {#.Tag name}]
     (text\composite  "#" (\ name.codec encoded name))
 
     (^template [  ]
-      [[_ ( members)]
+      [[_ { members}]
        ($_ text\composite
            
            (list\mix (function (_ next prev)
@@ -130,8 +130,8 @@
     substitute
     (case ast
       (^template []
-        [[location ( parts)]
-         [location ( (list\each (replaced original substitute) parts))]])
+        [[location { parts}]
+         [location { (list\each (replaced original substitute) parts)}]])
       ([#.Form]
        [#.Variant]
        [#.Tuple])
diff --git a/stdlib/source/library/lux/macro/local.lux b/stdlib/source/library/lux/macro/local.lux
index ca48592af..f53a6473b 100644
--- a/stdlib/source/library/lux/macro/local.lux
+++ b/stdlib/source/library/lux/macro/local.lux
@@ -36,14 +36,14 @@
   (All (_ a) (-> Text (-> Module (Try [Module a])) (Meta a)))
   (function (_ compiler)
     (case (|> compiler (value@ #.modules) (plist.value name))
-      (#.Some module)
+      {#.Some module}
       (case (body module)
-        (#try.Success [module' output])
-        (#try.Success [(revised@ #.modules (plist.has name module') compiler)
-                       output])
+        {#try.Success [module' output]}
+        {#try.Success [(revised@ #.modules (plist.has name module') compiler)
+                       output]}
         
-        (#try.Failure error)
-        (#try.Failure error))
+        {#try.Failure error}
+        {#try.Failure error})
 
       #.None
       (exception.except ..unknown_module [name]))))
@@ -52,17 +52,17 @@
   (-> [Name Macro] (Meta Any))
   (do meta.monad
     [[module_name definition_name] (meta.normal name)
-     .let [definition (: Global (#.Definition [false .Macro macro]))
+     .let [definition (: Global {#.Definition [false .Macro macro]})
            add_macro! (: (-> (PList Global) (PList Global))
                          (plist.has definition_name definition))]]
     (..with_module module_name
       (function (_ module)
         (case (|> module (value@ #.definitions) (plist.value definition_name))
           #.None
-          (#try.Success [(revised@ #.definitions add_macro! module)
-                         []])
+          {#try.Success [(revised@ #.definitions add_macro! module)
+                         []]}
           
-          (#.Some _)
+          {#.Some _}
           (exception.except ..cannot_shadow_definition [module_name definition_name]))))))
 
 (def: (pop_one name)
@@ -74,9 +74,9 @@
     (..with_module module_name
       (function (_ module)
         (case (|> module (value@ #.definitions) (plist.value definition_name))
-          (#.Some _)
-          (#try.Success [(revised@ #.definitions lacks_macro! module)
-                         []])
+          {#.Some _}
+          {#try.Success [(revised@ #.definitions lacks_macro! module)
+                         []]}
 
           #.None
           (exception.except ..unknown_definition [module_name definition_name]))))))
@@ -90,7 +90,7 @@
         _ (..pop_one self)
         compiler meta.compiler_state]
        (in (case (value@ #.expected compiler)
-             (#.Some _)
+             {#.Some _}
              (list (' []))
              
              #.None
diff --git a/stdlib/source/library/lux/macro/syntax.lux b/stdlib/source/library/lux/macro/syntax.lux
index efdb15f1f..3b885c86a 100644
--- a/stdlib/source/library/lux/macro/syntax.lux
+++ b/stdlib/source/library/lux/macro/syntax.lux
@@ -29,19 +29,19 @@
   (All (_ a) (-> Code (Parser a) (Parser a)))
   (function (_ tokens)
     (case (parser tokens)
-      (#try.Success [tokens output])
-      (#try.Success [tokens output])
+      {#try.Success [tokens output]}
+      {#try.Success [tokens output]}
       
-      (#try.Failure error)
-      (#try.Failure ($_ text\composite
+      {#try.Failure error}
+      {#try.Failure ($_ text\composite
                         "Failed to parse: " (code.format binding) text.new_line
-                        error)))))
+                        error)})))
 
 (def: (un_paired pairs)
   (All (_ a) (-> (List [a a]) (List a)))
   (case pairs
     #.End                   #.End
-    (#.Item [[x y] pairs']) (list& x y (un_paired pairs'))))
+    {#.Item [[x y] pairs']} (list& x y (un_paired pairs'))))
 
 (def: syntax
   (Parser [Code [Text (List Code)] Code])
@@ -54,7 +54,7 @@
 
 (macro: .public (syntax: tokens)
   (case (.result ..syntax tokens)
-    (#try.Success [export_policy [name args] body])
+    {#try.Success [export_policy [name args] body]}
     (with_identifiers [g!tokens g!body g!error]
       (do [! meta.monad]
         [_ (if (|> args list.size nat.even?)
@@ -67,10 +67,10 @@
                                                                         (` ((~! ..self_documenting) (' (~ var))
                                                                             (~ parser)))])]
                                          (case var
-                                           [_ (#.Identifier ["" _])]
+                                           [_ {#.Identifier ["" _]}]
                                            
 
-                                           [_ (#.Identifier _)]
+                                           [_ {#.Identifier _}]
                                            (in [var parser])
 
                                            _
@@ -86,11 +86,11 @@
                                    [(~+ (..un_paired vars+parsers))]
                                    ((~' in) (~ body))))
                                (~ g!tokens))
-                         (#try.Success (~ g!body))
+                         {#try.Success (~ g!body)}
                          ((~ g!body) (~ g!state))
 
-                         (#try.Failure (~ g!error))
-                         (#try.Failure ((~! text.interposed) (~! text.new_line) (list (~ error_msg) (~ g!error)))))))))))
+                         {#try.Failure (~ g!error)}
+                         {#try.Failure ((~! text.interposed) (~! text.new_line) (list (~ error_msg) (~ g!error)))})))))))
     
-    (#try.Failure error)
+    {#try.Failure error}
     (meta.failure (macro.wrong_syntax_error (name_of ..syntax:)))))
diff --git a/stdlib/source/library/lux/macro/syntax/definition.lux b/stdlib/source/library/lux/macro/syntax/definition.lux
index 707c44ea2..9cbe2fb1a 100644
--- a/stdlib/source/library/lux/macro/syntax/definition.lux
+++ b/stdlib/source/library/lux/macro/syntax/definition.lux
@@ -56,10 +56,10 @@
   (` ((~ (code.text ..extension))
       (~ (code.local_identifier name))
       (~ (case value
-           (#.Left check)
+           {#.Left check}
            (//check.format check)
 
-           (#.Right value)
+           {#.Right value}
            value))
       (~ (code.bit export?)))))
 
@@ -90,9 +90,9 @@
   (do <>.monad
     [definition (..parser compiler)
      _ (case (value@ #value definition)
-         (#.Left _)
+         {#.Left _}
          (in [])
 
-         (#.Right _)
+         {#.Right _}
          (<>.lifted (exception.except ..lacks_type [definition])))]
     (in definition)))
diff --git a/stdlib/source/library/lux/macro/syntax/export.lux b/stdlib/source/library/lux/macro/syntax/export.lux
index 91428bb7e..2d33f7098 100644
--- a/stdlib/source/library/lux/macro/syntax/export.lux
+++ b/stdlib/source/library/lux/macro/syntax/export.lux
@@ -16,11 +16,11 @@
   (do [! <>.monad]
     [candiate .next]
     (case candiate
-      [_ (#.Identifier ["" _])]
+      [_ {#.Identifier ["" _]}]
       (in default_policy)
       
-      (^or [_ (#.Bit _)]
-           [_ (#.Identifier _)])
+      (^or [_ {#.Bit _}]
+           [_ {#.Identifier _}])
       (do !
         [_ .any]
         (in candiate))
diff --git a/stdlib/source/library/lux/macro/template.lux b/stdlib/source/library/lux/macro/template.lux
index 2f690935b..8be738131 100644
--- a/stdlib/source/library/lux/macro/template.lux
+++ b/stdlib/source/library/lux/macro/template.lux
@@ -86,11 +86,11 @@
   [(syntax: .public ( [name (<>.or (<>.and (..part true) (..part false))
                                          (..part false))])
      (case name
-       (#.Left [simple complex])
+       {#.Left [simple complex]}
        (in (list ( [(text.interposed "" simple)
                              (text.interposed "" complex)])))
        
-       (#.Right simple)
+       {#.Right simple}
        (in (list (|> simple (text.interposed "") )))))]
 
   [identifier code.local_identifier code.identifier]
@@ -103,17 +103,17 @@
 (def: (applied env template)
   (-> Environment Code Code)
   (case template
-    [_ (#.Identifier "" name)]
+    [_ {#.Identifier "" name}]
     (case (dictionary.value name env)
-      (#.Some substitute)
+      {#.Some substitute}
       substitute
 
       #.None
       template)
 
     (^template []
-      [[meta ( elems)]
-       [meta ( (list\each (applied env) elems))]])
+      [[meta { elems}]
+       [meta { (list\each (applied env) elems)}]])
     ([#.Form]
      [#.Variant]
      [#.Tuple])
@@ -143,7 +143,7 @@
          (.let [environment (: Environment
                                (|> (list.zipped/2 parameters inputs)
                                    (dictionary.of_list text.hash)))]
-           (#.Right [compiler (list\each (..applied environment) template)]))
+           {#.Right [compiler (list\each (..applied environment) template)]})
          (exception.except ..irregular_arguments [parameters_amount inputs_amount]))))))
 
 (def: local
@@ -162,12 +162,12 @@
     [here_name meta.current_module_name
      expression? (: (Meta Bit)
                     (function (_ lux)
-                      (#try.Success [lux (case (value@ #.expected lux)
+                      {#try.Success [lux (case (value@ #.expected lux)
                                            #.None
                                            false
 
-                                           (#.Some _)
-                                           true)])))
+                                           {#.Some _}
+                                           true)]}))
      g!pop (local.push (list\each (function (_ local)
                                     [[here_name (value@ #name local)]
                                      (..macro local)])
diff --git a/stdlib/source/library/lux/math/infix.lux b/stdlib/source/library/lux/math/infix.lux
index 616c62709..de54af790 100644
--- a/stdlib/source/library/lux/math/infix.lux
+++ b/stdlib/source/library/lux/math/infix.lux
@@ -21,10 +21,10 @@
 (type: Infix
   (Rec Infix
     (Variant
-     (#Const Code)
-     (#Call (List Code))
-     (#Unary Code Infix)
-     (#Binary Infix Code Infix))))
+     {#Const Code}
+     {#Call (List Code)}
+     {#Unary Code Infix}
+     {#Binary Infix Code Infix})))
 
 (def: literal
   (Parser Code)
@@ -51,7 +51,7 @@
                            init_param expression
                            steps (<>.some (<>.and .any expression))]
                           (in (list\mix (function (_ [op param] [_subject _op _param])
-                                          [(#Binary _subject _op _param) op param])
+                                          [{#Binary _subject _op _param} op param])
                                         [init_subject init_op init_param]
                                         steps))))
           )))
@@ -59,16 +59,16 @@
 (def: (prefix infix)
   (-> Infix Code)
   (case infix
-    (#Const value)
+    {#Const value}
     value
     
-    (#Call parts)
+    {#Call parts}
     (code.form parts)
 
-    (#Unary op subject)
+    {#Unary op subject}
     (` ((~ op) (~ (prefix subject))))
     
-    (#Binary left op right)
+    {#Binary left op right}
     (` ((~ op) (~ (prefix right)) (~ (prefix left))))))
 
 (syntax: .public (infix [expr ..expression])
diff --git a/stdlib/source/library/lux/math/modular.lux b/stdlib/source/library/lux/math/modular.lux
index 189a4b060..e82f222cc 100644
--- a/stdlib/source/library/lux/math/modular.lux
+++ b/stdlib/source/library/lux/math/modular.lux
@@ -136,7 +136,7 @@
      (let [[modulus value] (:representation modular)
            [[vk mk] gcd] (i.extended_gcd value (//.divisor modulus))]
        (case gcd
-         +1 (#.Some (..modular modulus vk))
+         +1 {#.Some (..modular modulus vk)}
          _ #.None)))]
   )
 
@@ -151,6 +151,6 @@
     (-> (Modulus r%) (Modulus s%)
         (Try (-> (Mod s%) (Mod r%)))))
   (if (//.= reference subject)
-    (#try.Success (|>> ..value
-                       (..modular reference)))
+    {#try.Success (|>> ..value
+                       (..modular reference))}
     (exception.except ..moduli_are_not_equal [reference subject])))
diff --git a/stdlib/source/library/lux/math/modulus.lux b/stdlib/source/library/lux/math/modulus.lux
index 4a4b000df..0d3c4fb7f 100644
--- a/stdlib/source/library/lux/math/modulus.lux
+++ b/stdlib/source/library/lux/math/modulus.lux
@@ -27,7 +27,7 @@
      (Ex (_ %) (-> Int (Try (Modulus %))))
      (if (i.= +0 value)
        (exception.except ..zero_cannot_be_a_modulus [])
-       (#try.Success (:abstraction value))))
+       {#try.Success (:abstraction value)}))
 
    (def: .public divisor
      (All (_ %) (-> (Modulus %) Int))
diff --git a/stdlib/source/library/lux/math/number.lux b/stdlib/source/library/lux/math/number.lux
index 2f0338817..4c20fd9fd 100644
--- a/stdlib/source/library/lux/math/number.lux
+++ b/stdlib/source/library/lux/math/number.lux
@@ -19,7 +19,7 @@
 (def: (separator_prefixed? number)
   (-> Text Bit)
   (case ("lux text index" 0 ..separator number)
-    (#.Some 0)
+    {#.Some 0}
     #1
 
     _
@@ -32,34 +32,34 @@
 (template [     ]
   [(macro: .public ( tokens state)
      (case tokens
-       (#.Item [meta (#.Text repr')] #.End)
+       {#.Item [meta {#.Text repr'}] #.End}
        (if (..separator_prefixed? repr')
-         (#try.Failure )
+         {#try.Failure }
          (let [repr (..without_separators repr')]
            (case (\  decoded repr)
-             (#try.Success value)
-             (#try.Success [state (list [meta (#.Nat value)])])
+             {#try.Success value}
+             {#try.Success [state (list [meta {#.Nat value}])]}
 
-             (^multi (#try.Failure _)
+             (^multi {#try.Failure _}
                      [(\  decoded repr)
-                      (#try.Success value)])
-             (#try.Success [state (list [meta (#.Int value)])])
+                      {#try.Success value}])
+             {#try.Success [state (list [meta {#.Int value}])]}
 
-             (^multi (#try.Failure _)
+             (^multi {#try.Failure _}
                      [(\  decoded repr)
-                      (#try.Success value)])
-             (#try.Success [state (list [meta (#.Rev value)])])
+                      {#try.Success value}])
+             {#try.Success [state (list [meta {#.Rev value}])]}
 
-             (^multi (#try.Failure _)
+             (^multi {#try.Failure _}
                      [(\  decoded repr)
-                      (#try.Success value)])
-             (#try.Success [state (list [meta (#.Frac value)])])
+                      {#try.Success value}])
+             {#try.Success [state (list [meta {#.Frac value}])]}
 
              _
-             (#try.Failure ))))
+             {#try.Failure })))
 
        _
-       (#try.Failure )))]
+       {#try.Failure }))]
 
   [bin /nat.binary /int.binary /rev.binary /frac.binary "Invalid binary syntax."]
   [oct /nat.octal  /int.octal  /rev.octal  /frac.octal "Invalid octal syntax."]
diff --git a/stdlib/source/library/lux/math/number/frac.lux b/stdlib/source/library/lux/math/number/frac.lux
index c919e8ab5..230f18c1d 100644
--- a/stdlib/source/library/lux/math/number/frac.lux
+++ b/stdlib/source/library/lux/math/number/frac.lux
@@ -201,11 +201,11 @@
 
   (def: (decoded input)
     (case ("lux f64 decode" input)
-      (#.Some value)
-      (#try.Success value)
+      {#.Some value}
+      {#try.Success value}
 
       #.None
-      (#try.Failure "Could not decode Frac"))))
+      {#try.Failure "Could not decode Frac"})))
 
 (def: log/2
   (-> Frac Frac)
@@ -355,13 +355,13 @@
                        (\ codec decoded))]
          (in [("lux text clip" 0 split_index representation)
               (//int.*  (.int exponent))]))])
-    ([+1 (^or [(#.Some split_index) #.None #.None #.None]
-              [#.None (#.Some split_index) #.None #.None])]
-     [-1 (^or [#.None #.None (#.Some split_index) #.None]
-              [#.None #.None #.None (#.Some split_index)])])
+    ([+1 (^or [{#.Some split_index} #.None #.None #.None]
+              [#.None {#.Some split_index} #.None #.None])]
+     [-1 (^or [#.None #.None {#.Some split_index} #.None]
+              [#.None #.None #.None {#.Some split_index}])])
     
     _
-    (#try.Success [representation +0])))
+    {#try.Success [representation +0]}))
 
 (template [   ]
   [(implementation: .public 
@@ -388,7 +388,7 @@
            (do [! try.monad]
              [[mantissa exponent] (..representation_exponent  representation)
               [whole decimal] (case ("lux text index" 0 "." mantissa)
-                                (#.Some split_index)
+                                {#.Some split_index}
                                 (do !
                                   [.let [after_offset (++ split_index)
                                          after_length (//nat.- after_offset ("lux text size" mantissa))]
@@ -399,7 +399,7 @@
                                        decimal]))
 
                                 #.None
-                                (#try.Failure ("lux text concat"  representation)))
+                                {#try.Failure ("lux text concat"  representation)})
               .let [whole ("lux text clip" 1 (-- ("lux text size" whole)) whole)]
               mantissa (\  decoded (case decimal
                                           0 whole
@@ -410,7 +410,7 @@
                       (//i64.left_shifted ..sign_offset (.i64 sign))
                       (//i64.left_shifted ..mantissa_size (.i64 (//int.+ (.int ..double_bias) exponent)))
                       (//i64.zero ..mantissa_size (.i64 mantissa))))))
-           (#try.Failure ("lux text concat"  representation))))))]
+           {#try.Failure ("lux text concat"  representation)}))))]
 
   [binary //nat.binary //int.binary "Invalid binary syntax: "]
   [octal //nat.octal //int.octal "Invalid octaladecimal syntax: "]
diff --git a/stdlib/source/library/lux/math/number/i64.lux b/stdlib/source/library/lux/math/number/i64.lux
index 4fbab4334..8ccf4b8c8 100644
--- a/stdlib/source/library/lux/math/number/i64.lux
+++ b/stdlib/source/library/lux/math/number/i64.lux
@@ -197,7 +197,7 @@
           sign (..bit (-- width))
           mantissa (..mask (-- width))
           co_mantissa (..xor (.i64 -1) mantissa)]
-      (#.Some (: Sub
+      {#.Some (: Sub
                  (implementation
                   (def: &equivalence ..equivalence)
                   (def: width width)
@@ -207,5 +207,5 @@
                   (def: (wide value)
                     (.i64 (case (.nat (..and sign value))
                             0 value
-                            _ (..or co_mantissa value))))))))
+                            _ (..or co_mantissa value))))))})
     #.None))
diff --git a/stdlib/source/library/lux/math/number/int.lux b/stdlib/source/library/lux/math/number/int.lux
index 0e515f8a5..5c4ff3cd6 100644
--- a/stdlib/source/library/lux/math/number/int.lux
+++ b/stdlib/source/library/lux/math/number/int.lux
@@ -229,8 +229,8 @@
                  (\ try.functor each (|>> -- .int ..opposite --)))
              
              _
-             (#try.Failure ))
-           (#try.Failure )))))]
+             {#try.Failure })
+           {#try.Failure }))))]
 
   [binary  //nat.binary  "Invalid binary syntax for Int: "]
   [octal   //nat.octal   "Invalid octal syntax for Int: "]
diff --git a/stdlib/source/library/lux/math/number/nat.lux b/stdlib/source/library/lux/math/number/nat.lux
index 3efe7f197..0b0bf4105 100644
--- a/stdlib/source/library/lux/math/number/nat.lux
+++ b/stdlib/source/library/lux/math/number/nat.lux
@@ -191,8 +191,8 @@
 (def: (binary_value digit)
   (-> Nat (Maybe Nat))
   (case digit
-    (^ (char "0")) (#.Some 0)
-    (^ (char "1")) (#.Some 1)
+    (^ (char "0")) {#.Some 0}
+    (^ (char "1")) {#.Some 1}
     _ #.None))
 
 (def: (octal_character value)
@@ -211,14 +211,14 @@
 (def: (octal_value digit)
   (-> Nat (Maybe Nat))
   (case digit
-    (^ (char "0")) (#.Some 0)
-    (^ (char "1")) (#.Some 1)
-    (^ (char "2")) (#.Some 2)
-    (^ (char "3")) (#.Some 3)
-    (^ (char "4")) (#.Some 4)
-    (^ (char "5")) (#.Some 5)
-    (^ (char "6")) (#.Some 6)
-    (^ (char "7")) (#.Some 7)
+    (^ (char "0")) {#.Some 0}
+    (^ (char "1")) {#.Some 1}
+    (^ (char "2")) {#.Some 2}
+    (^ (char "3")) {#.Some 3}
+    (^ (char "4")) {#.Some 4}
+    (^ (char "5")) {#.Some 5}
+    (^ (char "6")) {#.Some 6}
+    (^ (char "7")) {#.Some 7}
     _ #.None))
 
 (def: (decimal_character value)
@@ -239,16 +239,16 @@
 (def: (decimal_value digit)
   (-> Nat (Maybe Nat))
   (case digit
-    (^ (char "0")) (#.Some 0)
-    (^ (char "1")) (#.Some 1)
-    (^ (char "2")) (#.Some 2)
-    (^ (char "3")) (#.Some 3)
-    (^ (char "4")) (#.Some 4)
-    (^ (char "5")) (#.Some 5)
-    (^ (char "6")) (#.Some 6)
-    (^ (char "7")) (#.Some 7)
-    (^ (char "8")) (#.Some 8)
-    (^ (char "9")) (#.Some 9)
+    (^ (char "0")) {#.Some 0}
+    (^ (char "1")) {#.Some 1}
+    (^ (char "2")) {#.Some 2}
+    (^ (char "3")) {#.Some 3}
+    (^ (char "4")) {#.Some 4}
+    (^ (char "5")) {#.Some 5}
+    (^ (char "6")) {#.Some 6}
+    (^ (char "7")) {#.Some 7}
+    (^ (char "8")) {#.Some 8}
+    (^ (char "9")) {#.Some 9}
     _ #.None))
 
 (def: (hexadecimal_character value)
@@ -276,12 +276,12 @@
   (-> Nat (Maybe Nat))
   (case digit
     (^template [ ]
-      [(^ (char )) (#.Some )])
+      [(^ (char )) {#.Some }])
     (["0" 0] ["1" 1] ["2" 2] ["3" 3] ["4" 4]
      ["5" 5] ["6" 6] ["7" 7] ["8" 8] ["9" 9])
 
     (^template [  ]
-      [(^or (^ (char )) (^ (char ))) (#.Some )])
+      [(^or (^ (char )) (^ (char ))) {#.Some }])
     (["a" "A" 10] ["b" "B" 11] ["c" "C" 12]
      ["d" "D" 13] ["e" "E" 14] ["f" "F" 15])
     _ #.None))
@@ -312,16 +312,16 @@
                   output 0]
              (if (..< input_size idx)
                (case ( ("lux text char" idx repr))
-                 (#.Some digit_value)
+                 {#.Some digit_value}
                  (recur (++ idx)
                         (|> output
                             ("lux i64 left-shift" )
                             ("lux i64 or" digit_value)))
 
                  _
-                 (#try.Failure ("lux text concat"  repr)))
-               (#try.Success output)))
-           (#try.Failure ("lux text concat"  repr))))))]
+                 {#try.Failure ("lux text concat"  repr)})
+               {#try.Success output}))
+           {#try.Failure ("lux text concat"  repr)}))))]
 
   [1 binary binary_character      binary_value      "Invalid binary syntax for Nat: "]
   [3 octal  octal_character       octal_value       "Invalid octal syntax for Nat: "]
@@ -345,7 +345,7 @@
 
   (def: (decoded repr)
     (let [input_size ("lux text size" repr)]
-      (with_expansions [ (#try.Failure ("lux text concat" "Invalid decimal syntax for Nat: " repr))]
+      (with_expansions [ {#try.Failure ("lux text concat" "Invalid decimal syntax for Nat: " repr)}]
         (if (..> 0 input_size)
           (loop [idx 0
                  output 0]
@@ -354,10 +354,10 @@
                 #.None
                 
 
-                (#.Some digit_value)
+                {#.Some digit_value}
                 (recur (++ idx)
                        (|> output (..* 10) (..+ digit_value))))
-              (#try.Success output)))
+              {#try.Success output}))
           )))))
 
 (implementation: .public hash
diff --git a/stdlib/source/library/lux/math/number/ratio.lux b/stdlib/source/library/lux/math/number/ratio.lux
index 1e6aff940..be5bb235a 100644
--- a/stdlib/source/library/lux/math/number/ratio.lux
+++ b/stdlib/source/library/lux/math/number/ratio.lux
@@ -30,7 +30,7 @@
 (def: .public (nat value)
   (-> Ratio (Maybe Nat))
   (case (value@ #denominator value)
-    1 (#.Some (value@ #numerator value))
+    1 {#.Some (value@ #numerator value)}
     _ #.None))
 
 (def: (normal (^slots [#numerator #denominator]))
@@ -136,7 +136,7 @@
 
   (def: (decoded input)
     (case (text.split_by ..separator input)
-      (#.Some [num denom])
+      {#.Some [num denom]}
       (do try.monad
         [numerator (n\decoded num)
          denominator (n\decoded denom)]
@@ -144,7 +144,7 @@
                      #denominator denominator])))
       
       #.None
-      (#.Left (text\composite "Invalid syntax for ratio: " input)))))
+      {#.Left (text\composite "Invalid syntax for ratio: " input)})))
 
 (template [  ]
   [(implementation: .public 
diff --git a/stdlib/source/library/lux/math/number/rev.lux b/stdlib/source/library/lux/math/number/rev.lux
index 07013dc94..a652d3913 100644
--- a/stdlib/source/library/lux/math/number/rev.lux
+++ b/stdlib/source/library/lux/math/number/rev.lux
@@ -225,7 +225,7 @@
   ("lux text clip" 1 (-- ("lux text size" input)) input))
 
 (template [   ]
-  [(with_expansions [ (as_is (#try.Failure ("lux text concat"  repr)))]
+  [(with_expansions [ (as_is {#try.Failure ("lux text concat"  repr)})]
      (implementation: .public 
        (Codec Text Rev)
        
@@ -253,8 +253,8 @@
              (case ("lux text char" 0 repr)
                (^ (char "."))
                (case (\  decoded (..decimals repr))
-                 (#try.Success output)
-                 (#try.Success (.rev output))
+                 {#try.Success output}
+                 {#try.Success (.rev output)}
 
                  _
                  )
@@ -365,10 +365,10 @@
             #.None
             #.None
 
-            (#.Some digit)
+            {#.Some digit}
             (recur (++ idx)
                    (digits\put! idx digit output)))
-          (#.Some output))))))
+          {#.Some output})))))
 
 (def: (digits\< param subject)
   (-> Digits Digits Bit)
@@ -425,7 +425,7 @@
 
   (def: (decoded input)
     (let [dotted? (case ("lux text index" 0 "." input)
-                    (#.Some 0)
+                    {#.Some 0}
                     true
 
                     _
@@ -435,7 +435,7 @@
                              (//nat.<= (++ //i64.width)))]
       (if (and dotted? within_limits?)
         (case (|> input ..decimals ..text_digits)
-          (#.Some digits)
+          {#.Some digits}
           (loop [digits digits
                  idx 0
                  output 0]
@@ -447,9 +447,9 @@
                   (recur (digits\-! power digits)
                          (++ idx)
                          (//i64.one (//nat.- idx (-- //i64.width)) output))))
-              (#try.Success (.rev output))))
+              {#try.Success (.rev output)}))
 
           #.None
-          (#try.Failure ("lux text concat" "Wrong syntax for Rev: " input)))
-        (#try.Failure ("lux text concat" "Wrong syntax for Rev: " input))))
+          {#try.Failure ("lux text concat" "Wrong syntax for Rev: " input)})
+        {#try.Failure ("lux text concat" "Wrong syntax for Rev: " input)}))
     ))
diff --git a/stdlib/source/library/lux/math/random.lux b/stdlib/source/library/lux/math/random.lux
index 348482e63..b7dd727d7 100644
--- a/stdlib/source/library/lux/math/random.lux
+++ b/stdlib/source/library/lux/math/random.lux
@@ -91,7 +91,7 @@
   (do ..monad
     [sample random]
     (case (check sample)
-      (#.Some output)
+      {#.Some output}
       (in output)
 
       #.None
@@ -102,7 +102,7 @@
   (do ..monad
     [sample gen]
     (case (refiner sample)
-      (#.Some refined)
+      {#.Some refined}
       (in refined)
 
       #.None
@@ -207,10 +207,10 @@
     (if ?
       (do !
         [=left left]
-        (in (0 #0 =left)))
+        (in {0 #0 =left}))
       (do !
         [=right right]
-        (in (0 #1 =right))))))
+        (in {0 #1 =right})))))
 
 (def: .public (either left right)
   (All (_ a) (-> (Random a) (Random a) (Random a)))
@@ -233,22 +233,26 @@
     (if some?
       (do !
         [value value_gen]
-        (in (#.Some value)))
+        (in {#.Some value}))
       (in #.None))))
 
-(template [   ]
-  [(def: .public ( size value_gen)
-     (All (_ a) (-> Nat (Random a) (Random ( a))))
-     (if (n.> 0 size)
-       (do ..monad
-         [x value_gen
-          xs ( (-- size) value_gen)]
-         (in ( x xs)))
-       (\ ..monad in )))]
-
-  [list List (.list)   #.Item]
-  [row  Row  row.empty row.suffix]
-  )
+(def: .public (list size value_gen)
+  (All (_ a) (-> Nat (Random a) (Random (List a))))
+  (if (n.> 0 size)
+    (do ..monad
+      [x value_gen
+       xs (list (-- size) value_gen)]
+      (in {#.Item x xs}))
+    (\ ..monad in (.list))))
+
+(def: .public (row size value_gen)
+  (All (_ a) (-> Nat (Random a) (Random (Row a))))
+  (if (n.> 0 size)
+    (do ..monad
+      [x value_gen
+       xs (row (-- size) value_gen)]
+      (in (row.suffix x xs)))
+    (\ ..monad in row.empty)))
 
 (template [  ]
   [(def: .public ( size value_gen)
diff --git a/stdlib/source/library/lux/meta.lux b/stdlib/source/library/lux/meta.lux
index 122dde3ca..433d76d91 100644
--- a/stdlib/source/library/lux/meta.lux
+++ b/stdlib/source/library/lux/meta.lux
@@ -34,11 +34,11 @@
   (def: (each f fa)
     (function (_ lux)
       (case (fa lux)
-        (#try.Failure msg)
-        (#try.Failure msg)
+        {#try.Failure msg}
+        {#try.Failure msg}
 
-        (#try.Success [lux' a])
-        (#try.Success [lux' (f a)])))))
+        {#try.Success [lux' a]}
+        {#try.Success [lux' (f a)]}))))
 
 (implementation: .public apply
   (Apply Meta)
@@ -48,16 +48,16 @@
   (def: (on fa ff)
     (function (_ lux)
       (case (ff lux)
-        (#try.Success [lux' f])
+        {#try.Success [lux' f]}
         (case (fa lux')
-          (#try.Success [lux'' a])
-          (#try.Success [lux'' (f a)])
+          {#try.Success [lux'' a]}
+          {#try.Success [lux'' (f a)]}
 
-          (#try.Failure msg)
-          (#try.Failure msg))
+          {#try.Failure msg}
+          {#try.Failure msg})
 
-        (#try.Failure msg)
-        (#try.Failure msg)))))
+        {#try.Failure msg}
+        {#try.Failure msg}))))
 
 (implementation: .public monad
   (Monad Meta)
@@ -66,15 +66,15 @@
 
   (def: (in x)
     (function (_ lux)
-      (#try.Success [lux x])))
+      {#try.Success [lux x]}))
   
   (def: (conjoint mma)
     (function (_ lux)
       (case (mma lux)
-        (#try.Failure msg)
-        (#try.Failure msg)
+        {#try.Failure msg}
+        {#try.Failure msg}
 
-        (#try.Success [lux' ma])
+        {#try.Success [lux' ma]}
         (ma lux')))))
 
 (def: .public (result' lux action)
@@ -84,54 +84,54 @@
 (def: .public (result lux action)
   (All (_ a) (-> Lux (Meta a) (Try a)))
   (case (action lux)
-    (#try.Failure error)
-    (#try.Failure error)
+    {#try.Failure error}
+    {#try.Failure error}
 
-    (#try.Success [_ output])
-    (#try.Success output)))
+    {#try.Success [_ output]}
+    {#try.Success output}))
 
 (def: .public (either left right)
   (All (_ a) (-> (Meta a) (Meta a) (Meta a)))
   (function (_ lux)
     (case (left lux)
-      (#try.Failure error)
+      {#try.Failure error}
       (right lux)
 
-      (#try.Success [lux' output])
-      (#try.Success [lux' output]))))
+      {#try.Success [lux' output]}
+      {#try.Success [lux' output]})))
 
 (def: .public (assertion message test)
   (-> Text Bit (Meta Any))
   (function (_ lux)
     (if test
-      (#try.Success [lux []])
-      (#try.Failure message))))
+      {#try.Success [lux []]}
+      {#try.Failure message})))
 
 (def: .public (failure error)
   (All (_ a)
     (-> Text (Meta a)))
   (function (_ state)
-    (#try.Failure (location.with (value@ #.location state) error))))
+    {#try.Failure (location.with (value@ #.location state) error)}))
 
 (def: .public (module name)
   (-> Text (Meta Module))
   (function (_ lux)
     (case (plist.value name (value@ #.modules lux))
-      (#.Some module)
-      (#try.Success [lux module])
+      {#.Some module}
+      {#try.Success [lux module]}
 
       _
-      (#try.Failure ($_ text\composite "Unknown module: " name)))))
+      {#try.Failure ($_ text\composite "Unknown module: " name)})))
 
 (def: .public current_module_name
   (Meta Text)
   (function (_ lux)
     (case (value@ #.current_module lux)
-      (#.Some current_module)
-      (#try.Success [lux current_module])
+      {#.Some current_module}
+      {#try.Success [lux current_module]}
 
       _
-      (#try.Failure "No current module."))))
+      {#try.Failure "No current module."})))
 
 (def: .public current_module
   (Meta Module)
@@ -143,7 +143,7 @@
 (def: (macro_type? type)
   (-> Type Bit)
   (`` (case type
-        (#.Named [(~~ (static .prelude_module)) "Macro"] (#.Primitive "#Macro" #.End))
+        {#.Named [(~~ (static .prelude_module)) "Macro"] {#.Primitive "#Macro" #.End}}
         true
 
         _
@@ -166,12 +166,12 @@
     [[module name] (..normal full_name)]
     (: (Meta (Maybe Macro))
        (function (_ lux)
-         (#try.Success [lux
+         {#try.Success [lux
                         (case (..current_module_name lux)
-                          (#try.Failure error)
+                          {#try.Failure error}
                           #.None
 
-                          (#try.Success [_ this_module])
+                          {#try.Success [_ this_module]}
                           (let [modules (value@ #.modules lux)]
                             (loop [module module
                                    name name]
@@ -183,45 +183,45 @@
                                                    (value@ #.definitions)
                                                    (plist.value name)))]
                                 (case definition
-                                  (#.Alias [r_module r_name])
+                                  {#.Alias [r_module r_name]}
                                   (recur r_module r_name)
                                   
-                                  (#.Definition [exported? def_type def_value])
+                                  {#.Definition [exported? def_type def_value]}
                                   (if (macro_type? def_type)
-                                    (#.Some (:as Macro def_value))
+                                    {#.Some (:as Macro def_value)}
                                     #.None)
 
-                                  (#.Type [exported? type labels])
+                                  {#.Type [exported? type labels]}
                                   #.None
 
-                                  (#.Label _)
+                                  {#.Label _}
                                   #.None
 
-                                  (#.Slot _)
-                                  #.None)))))])))))
+                                  {#.Slot _}
+                                  #.None)))))]}))))
 
 (def: .public seed
   (Meta Nat)
   (function (_ lux)
-    (#try.Success [(revised@ #.seed ++ lux)
-                   (value@ #.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 (value@ #.modules lux))
-                         (#.Some _)
+    {#try.Success [lux (case (plist.value module (value@ #.modules lux))
+                         {#.Some _}
                          #1
                          
                          #.None
-                         #0)])))
+                         #0)]}))
 
 (def: (on_either f x1 x2)
   (All (_ a b)
     (-> (-> a (Maybe b)) a a (Maybe b)))
   (case (f x1)
     #.None     (f x2)
-    (#.Some y) (#.Some y)))
+    {#.Some y} {#.Some y}))
 
 (def: (type_variable idx bindings)
   (-> Nat (List [Nat (Maybe Type)]) (Maybe Type))
@@ -229,7 +229,7 @@
     #.End
     #.None
     
-    (#.Item [var bound] bindings')
+    {#.Item [var bound] bindings'}
     (if (n.= idx var)
       bound
       (type_variable idx bindings'))))
@@ -237,16 +237,16 @@
 (def: (clean_type type)
   (-> Type (Meta Type))
   (case type
-    (#.Var var)
+    {#.Var var}
     (function (_ lux)
       (case (|> lux
                 (value@ [#.type_context #.var_bindings])
                 (type_variable var))
-        (^or #.None (#.Some (#.Var _)))
-        (#try.Success [lux type])
+        (^or #.None {#.Some {#.Var _}})
+        {#try.Success [lux type]}
 
-        (#.Some type')
-        (#try.Success [lux type'])))
+        {#.Some type'}
+        {#try.Success [lux type']}))
 
     _
     (\ ..monad in type)))
@@ -269,11 +269,11 @@
                                        (: (List [Text [Type Any]])
                                           (value@ [#.captured #.mappings] scope)))]
               (in type))
-        (#.Some var_type)
+        {#.Some var_type}
         ((clean_type var_type) lux)
 
         #.None
-        (#try.Failure ($_ text\composite "Unknown variable: " name))))))
+        {#try.Failure ($_ text\composite "Unknown variable: " name)}))))
 
 (def: without_lux_runtime
   (-> (List Text) (List Text))
@@ -303,8 +303,8 @@
                                                (value@ #.modules)
                                                (plist.value normal_module))]
                  (plist.value normal_short definitions)))
-        (#.Some definition)
-        (#try.Success [lux definition])
+        {#.Some definition}
+        {#try.Success [lux definition]}
 
         _
         (let [current_module (|> lux (value@ #.current_module) (maybe.else "???"))
@@ -312,11 +312,11 @@
                                     (value@ #.modules)
                                     (list\each product.left)
                                     ..module_listing)]
-          (#try.Failure ($_ text\composite
+          {#try.Failure ($_ text\composite
                             "Unknown definition: " (name\encoded name) text.new_line
                             "    Current module: " current_module text.new_line
                             (case (plist.value current_module (value@ #.modules lux))
-                              (#.Some this_module)
+                              {#.Some this_module}
                               (let [candidates (|> lux
                                                    (value@ #.modules)
                                                    (list\each (function (_ [module_name module])
@@ -324,20 +324,20 @@
                                                                     (value@ #.definitions)
                                                                     (list.all (function (_ [def_name global])
                                                                                 (case global
-                                                                                  (^or (#.Definition [exported? _])
-                                                                                       (#.Type [exported? _]))
+                                                                                  (^or {#.Definition [exported? _]}
+                                                                                       {#.Type [exported? _]})
                                                                                   (if (and exported?
                                                                                            (text\= normal_short def_name))
-                                                                                    (#.Some (name\encoded [module_name def_name]))
+                                                                                    {#.Some (name\encoded [module_name def_name])}
                                                                                     #.None)
 
-                                                                                  (#.Alias _)
+                                                                                  {#.Alias _}
                                                                                   #.None
 
-                                                                                  (#.Label _)
+                                                                                  {#.Label _}
                                                                                   #.None
 
-                                                                                  (#.Slot _)
+                                                                                  {#.Slot _}
                                                                                   #.None))))))
                                                    list.together
                                                    (list.sorted text\<)
@@ -357,35 +357,35 @@
 
                               _
                               "")
-                            " All known modules: " all_known_modules text.new_line)))))))
+                            " All known modules: " all_known_modules text.new_line)})))))
 
 (def: .public (export name)
   (-> Name (Meta Definition))
   (do ..monad
     [definition (..definition name)]
     (case definition
-      (#.Definition definition)
+      {#.Definition definition}
       (let [[exported? def_type def_value] definition]
         (if exported?
           (in definition)
           (failure ($_ text\composite "Definition is not an export: " (name\encoded name)))))
 
-      (#.Type [exported? type labels])
+      {#.Type [exported? type labels]}
       (if exported?
         (in [exported? .Type type])
         (failure ($_ text\composite "Type is not an export: " (name\encoded name))))
 
-      (#.Alias de_aliased)
+      {#.Alias de_aliased}
       (failure ($_ text\composite
                    "Aliases are not considered exports: "
                    (name\encoded name)))
 
-      (#.Label _)
+      {#.Label _}
       (failure ($_ text\composite
                    "Tags are not considered exports: "
                    (name\encoded name)))
 
-      (#.Slot _)
+      {#.Slot _}
       (failure ($_ text\composite
                    "Slots are not considered exports: "
                    (name\encoded name))))))
@@ -395,21 +395,21 @@
   (do ..monad
     [definition (definition name)]
     (case definition
-      (#.Alias de_aliased)
+      {#.Alias de_aliased}
       (definition_type de_aliased)
       
-      (#.Definition [exported? def_type def_value])
+      {#.Definition [exported? def_type def_value]}
       (clean_type def_type)
 
-      (#.Type [exported? type labels])
+      {#.Type [exported? type labels]}
       (in .Type)
 
-      (#.Label _)
+      {#.Label _}
       (failure ($_ text\composite
                    "Tags have no type: "
                    (name\encoded name)))
 
-      (#.Slot _)
+      {#.Slot _}
       (failure ($_ text\composite
                    "Slots have no type: "
                    (name\encoded name))))))
@@ -429,10 +429,10 @@
   (do ..monad
     [definition (definition name)]
     (case definition
-      (#.Alias de_aliased)
+      {#.Alias de_aliased}
       (type_definition de_aliased)
       
-      (#.Definition [exported? def_type def_value])
+      {#.Definition [exported? def_type def_value]}
       (let [type_code (`` ("lux in-module" (~~ (static .prelude_module)) .type_code))]
         (if (or (same? .Type def_type)
                 (\ code.equivalence =
@@ -441,13 +441,13 @@
           (in (:as Type def_value))
           (..failure ($_ text\composite "Definition is not a type: " (name\encoded name)))))
 
-      (#.Type [exported? type labels])
+      {#.Type [exported? type labels]}
       (in type)
 
-      (#.Label _)
+      {#.Label _}
       (..failure ($_ text\composite "Tag is not a type: " (name\encoded name)))
 
-      (#.Slot _)
+      {#.Slot _}
       (..failure ($_ text\composite "Slot is not a type: " (name\encoded name))))))
 
 (def: .public (globals module)
@@ -455,29 +455,29 @@
   (function (_ lux)
     (case (plist.value module (value@ #.modules lux))
       #.None
-      (#try.Failure ($_ text\composite "Unknown module: " module))
+      {#try.Failure ($_ text\composite "Unknown module: " module)}
       
-      (#.Some module)
-      (#try.Success [lux (value@ #.definitions module)]))))
+      {#.Some module}
+      {#try.Success [lux (value@ #.definitions module)]})))
 
 (def: .public (definitions module)
   (-> Text (Meta (List [Text Definition])))
   (\ ..monad each
      (list.all (function (_ [name global])
                  (case global
-                   (#.Alias de_aliased)
+                   {#.Alias de_aliased}
                    #.None
                    
-                   (#.Definition definition)
-                   (#.Some [name definition])
+                   {#.Definition definition}
+                   {#.Some [name definition]}
 
-                   (#.Type [exported? type labels])
-                   (#.Some [name [exported? .Type type]])
+                   {#.Type [exported? type labels]}
+                   {#.Some [name [exported? .Type type]]}
 
-                   (#.Label _)
+                   {#.Label _}
                    #.None
 
-                   (#.Slot _)
+                   {#.Slot _}
                    #.None)))
      (..globals module)))
 
@@ -505,12 +505,12 @@
     [.let [[module_name name] type_name]
      module (..module module_name)]
     (case (plist.value name (value@ #.definitions module))
-      (#.Some (#.Type [exported? type labels]))
+      {#.Some {#.Type [exported? type labels]}}
       (case labels
-        (^or (#.Left labels)
-             (#.Right labels))
-        (in (#.Some (list\each (|>> [module_name])
-                               (#.Item labels)))))
+        (^or {#.Left labels}
+             {#.Right labels})
+        (in {#.Some (list\each (|>> [module_name])
+                               {#.Item labels})}))
 
       _
       (in #.None))))
@@ -518,17 +518,17 @@
 (def: .public location
   (Meta Location)
   (function (_ lux)
-    (#try.Success [lux (value@ #.location lux)])))
+    {#try.Success [lux (value@ #.location lux)]}))
 
 (def: .public expected_type
   (Meta Type)
   (function (_ lux)
     (case (value@ #.expected lux)
-      (#.Some type)
-      (#try.Success [lux type])
+      {#.Some type}
+      {#try.Success [lux type]}
 
       #.None
-      (#try.Failure "Not expecting any type."))))
+      {#try.Failure "Not expecting any type."})))
 
 (def: .public (imported_modules module_name)
   (-> Text (Meta (List Text)))
@@ -556,7 +556,7 @@
         =module (..module module)
         this_module_name ..current_module_name]
        (case (plist.value (text\composite "#" name) (value@ #.definitions =module))
-         (#.Some ( [exported? type group idx]))
+         {#.Some { [exported? type group idx]}}
          (if (or (text\= this_module_name module)
                  exported?)
            (in [idx (list\each (|>> [module]) group) type])
@@ -577,17 +577,17 @@
      this_module_name ..current_module_name]
     (in (list.all (function (_ [short global])
                     (case global
-                      (#.Type [exported? type labels])
+                      {#.Type [exported? type labels]}
                       (if (or exported?
                               (text\= this_module_name module))
-                        (#.Some [(list\each (|>> [module])
+                        {#.Some [(list\each (|>> [module])
                                             (case labels
-                                              (#.Left tags)
-                                              (#.Item tags)
+                                              {#.Left tags}
+                                              {#.Item tags}
                                               
-                                              (#.Right slots)
-                                              (#.Item slots)))
-                                 type])
+                                              {#.Right slots}
+                                              {#.Item slots}))
+                                 type]}
                         #.None)
 
                       _
@@ -599,52 +599,52 @@
   (function (_ lux)
     (case (list.inits (value@ #.scopes lux))
       #.None
-      (#try.Failure "No local environment")
+      {#try.Failure "No local environment"}
 
-      (#.Some scopes)
-      (#try.Success [lux
+      {#.Some scopes}
+      {#try.Success [lux
                      (list\each (|>> (value@ [#.locals #.mappings])
                                      (list\each (function (_ [name [type _]])
                                                   [name type])))
-                                scopes)]))))
+                                scopes)]})))
 
 (def: .public (de_aliased def_name)
   (-> Name (Meta Name))
   (do ..monad
     [constant (..definition def_name)]
     (in (case constant
-          (#.Alias real_def_name)
+          {#.Alias real_def_name}
           real_def_name
 
-          (#.Definition _)
+          {#.Definition _}
           def_name
 
-          (#.Type _)
+          {#.Type _}
           def_name
 
-          (#.Label _)
+          {#.Label _}
           def_name
 
-          (#.Slot _)
+          {#.Slot _}
           def_name))))
 
 (def: .public compiler_state
   (Meta Lux)
   (function (_ lux)
-    (#try.Success [lux lux])))
+    {#try.Success [lux lux]}))
 
 (def: .public type_context
   (Meta Type_Context)
   (function (_ lux)
-    (#try.Success [lux (value@ #.type_context lux)])))
+    {#try.Success [lux (value@ #.type_context lux)]}))
 
 (def: .public (lifted result)
   (All (_ a) (-> (Try a) (Meta a)))
   (case result
-    (#try.Success output)
+    {#try.Success output}
     (\ ..monad in output)
 
-    (#try.Failure error)
+    {#try.Failure error}
     (..failure error)))
 
 (def: .public (eval type code)
@@ -658,8 +658,8 @@
   (All (_ it) (-> (Meta it) (Meta (Try it))))
   (function (_ lux)
     (case (computation lux)
-      (#try.Success [lux' output])
-      (#try.Success [lux' (#try.Success output)])
+      {#try.Success [lux' output]}
+      {#try.Success [lux' {#try.Success output}]}
 
-      (#try.Failure error)
-      (#try.Success [lux (#try.Failure error)]))))
+      {#try.Failure error}
+      {#try.Success [lux {#try.Failure error}]})))
diff --git a/stdlib/source/library/lux/meta/location.lux b/stdlib/source/library/lux/meta/location.lux
index 7f37b4d77..3c797eda0 100644
--- a/stdlib/source/library/lux/meta/location.lux
+++ b/stdlib/source/library/lux/meta/location.lux
@@ -22,14 +22,14 @@
   (case tokens
     #.End
     (let [location (value@ #.location compiler)]
-      (#.Right [compiler
+      {#.Right [compiler
                 (list (` (.: .Location
-                             [(~ [..dummy (#.Text (value@ #.module location))])
-                              (~ [..dummy (#.Nat (value@ #.line location))])
-                              (~ [..dummy (#.Nat (value@ #.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))))))
+    {#.Left (`` (("lux in-module" (~~ (static .prelude_module)) wrong_syntax_error) (name_of ..here)))}))
 
 (def: .public (format it)
   (-> Location Text)
diff --git a/stdlib/source/library/lux/program.lux b/stdlib/source/library/lux/program.lux
index 7b81afa69..844da6654 100644
--- a/stdlib/source/library/lux/program.lux
+++ b/stdlib/source/library/lux/program.lux
@@ -21,8 +21,8 @@
 
 (type: Arguments
   (Variant
-   (#Raw Text)
-   (#Parsed (List Code))))
+   {#Raw Text}
+   {#Parsed (List Code)}))
 
 (def: arguments^
   (.Parser Arguments)
@@ -43,11 +43,11 @@
               ((~' in) (~ g!output))))]
       (in (list (` ("lux def program"
                     (~ (case args
-                         (#Raw args)
+                         {#Raw args}
                          (` (.function ((~ g!program) (~ (code.identifier ["" args])))
                               (~ initialization+event_loop)))
                          
-                         (#Parsed args)
+                         {#Parsed args}
                          (` (.function ((~ g!program) (~ g!args))
                               (case ((~! .result) (: (~! (.Parser (io.IO .Any)))
                                                           ((~! do) (~! <>.monad)
@@ -55,8 +55,8 @@
                                                             (~ g!_) (~! .end)]
                                                            ((~' in) (~ initialization+event_loop))))
                                      (~ g!args))
-                                (#.Right (~ g!output))
+                                {#.Right (~ g!output)}
                                 (~ g!output)
 
-                                (#.Left (~ g!message))
+                                {#.Left (~ g!message)}
                                 (.panic! (~ g!message))))))))))))))
diff --git a/stdlib/source/library/lux/target/common_lisp.lux b/stdlib/source/library/lux/target/common_lisp.lux
index a208ba0ff..1a14f8d6e 100644
--- a/stdlib/source/library/lux/target/common_lisp.lux
+++ b/stdlib/source/library/lux/target/common_lisp.lux
@@ -156,7 +156,7 @@
            #.End
            ""
            
-           (#.Item _)
+           {#.Item _}
            (|> singles
                (list\each ..code)
                (text.interposed " ")
@@ -174,7 +174,7 @@
 
    (def: .public (call/* func)
      (-> (Expression Any) (-> (List (Expression Any)) (Computation Any)))
-     (|>> (#.Item func) ..form))
+     (|>> {#.Item func} ..form))
    
    (template [ ]
      [(def: .public 
@@ -406,7 +406,7 @@
           #.End
           expression
           
-          (#.Item single #.End)
+          {#.Item single #.End}
           (:abstraction
            (format  single " " (:representation expression)))
           
diff --git a/stdlib/source/library/lux/target/js.lux b/stdlib/source/library/lux/target/js.lux
index c648d5bf2..662f0c3a4 100644
--- a/stdlib/source/library/lux/target/js.lux
+++ b/stdlib/source/library/lux/target/js.lux
@@ -406,7 +406,7 @@
                                            (text.interposed text.new_line))
                                        text.new_line
                                        (case default
-                                         (#.Some default)
+                                         {#.Some default}
                                          (format "default:"
                                                  (..nested (:representation default)))
                                          
diff --git a/stdlib/source/library/lux/target/jvm.lux b/stdlib/source/library/lux/target/jvm.lux
index e32769bbc..0d07ab2aa 100644
--- a/stdlib/source/library/lux/target/jvm.lux
+++ b/stdlib/source/library/lux/target/jvm.lux
@@ -11,18 +11,18 @@
 
 (type: .public Literal
   (Variant
-   (#Boolean Bit)
-   (#Int Int)
-   (#Long Int)
-   (#Double Frac)
-   (#Char Nat)
-   (#String Text)))
+   {#Boolean Bit}
+   {#Int Int}
+   {#Long Int}
+   {#Double Frac}
+   {#Char Nat}
+   {#String Text}))
 
 (type: .public Constant
   (Variant
-   (#BIPUSH Int)
+   {#BIPUSH Int}
    
-   (#SIPUSH Int)
+   {#SIPUSH Int}
 
    #ICONST_M1
    #ICONST_0
@@ -44,7 +44,7 @@
    
    #ACONST_NULL
 
-   (#LDC Literal)))
+   {#LDC Literal}))
 
 (type: .public Int_Arithmetic
   (Variant
@@ -84,10 +84,10 @@
 
 (type: .public Arithmetic
   (Variant
-   (#Int_Arithmetic Int_Arithmetic)
-   (#Long_Arithmetic Long_Arithmetic)
-   (#Float_Arithmetic Float_Arithmetic)
-   (#Double_Arithmetic Double_Arithmetic)))
+   {#Int_Arithmetic Int_Arithmetic}
+   {#Long_Arithmetic Long_Arithmetic}
+   {#Float_Arithmetic Float_Arithmetic}
+   {#Double_Arithmetic Double_Arithmetic}))
 
 (type: .public Int_Bitwise
   (Variant
@@ -109,8 +109,8 @@
 
 (type: .public Bitwise
   (Variant
-   (#Int_Bitwise Int_Bitwise)
-   (#Long_Bitwise Long_Bitwise)))
+   {#Int_Bitwise Int_Bitwise}
+   {#Long_Bitwise Long_Bitwise}))
 
 (type: .public Conversion
   (Variant
@@ -137,8 +137,8 @@
   (Variant
    #ARRAYLENGTH
 
-   (#NEWARRAY (Type Primitive))
-   (#ANEWARRAY (Type category.Object))
+   {#NEWARRAY (Type Primitive)}
+   {#ANEWARRAY (Type category.Object)}
 
    #BALOAD
    #BASTORE
@@ -166,58 +166,58 @@
 
 (type: .public Object
   (Variant
-   (#GETSTATIC (Type Class) Text (Type Value))
-   (#PUTSTATIC (Type Class) Text (Type Value))
+   {#GETSTATIC (Type Class) Text (Type Value)}
+   {#PUTSTATIC (Type Class) Text (Type Value)}
 
-   (#NEW (Type Class))
+   {#NEW (Type Class)}
    
-   (#INSTANCEOF (Type Class))
-   (#CHECKCAST (Type category.Object))
+   {#INSTANCEOF (Type Class)}
+   {#CHECKCAST (Type category.Object)}
 
-   (#GETFIELD (Type Class) Text (Type Value))
-   (#PUTFIELD (Type Class) Text (Type Value))
+   {#GETFIELD (Type Class) Text (Type Value)}
+   {#PUTFIELD (Type Class) Text (Type Value)}
    
-   (#INVOKEINTERFACE (Type Class) Text (Type Method))
-   (#INVOKESPECIAL (Type Class) Text (Type Method))
-   (#INVOKESTATIC (Type Class) Text (Type Method))
-   (#INVOKEVIRTUAL (Type Class) Text (Type Method))))
+   {#INVOKEINTERFACE (Type Class) Text (Type Method)}
+   {#INVOKESPECIAL (Type Class) Text (Type Method)}
+   {#INVOKESTATIC (Type Class) Text (Type Method)}
+   {#INVOKEVIRTUAL (Type Class) Text (Type Method)}))
 
 (type: .public Register
   Nat)
 
 (type: .public Local_Int
   (Variant
-   (#ILOAD Register)
-   (#ISTORE Register)))
+   {#ILOAD Register}
+   {#ISTORE Register}))
 
 (type: .public Local_Long
   (Variant
-   (#LLOAD Register)
-   (#LSTORE Register)))
+   {#LLOAD Register}
+   {#LSTORE Register}))
 
 (type: .public Local_Float
   (Variant
-   (#FLOAD Register)
-   (#FSTORE Register)))
+   {#FLOAD Register}
+   {#FSTORE Register}))
 
 (type: .public Local_Double
   (Variant
-   (#DLOAD Register)
-   (#DSTORE Register)))
+   {#DLOAD Register}
+   {#DSTORE Register}))
 
 (type: .public Local_Object
   (Variant
-   (#ALOAD Register)
-   (#ASTORE Register)))
+   {#ALOAD Register}
+   {#ASTORE Register}))
 
 (type: .public Local
   (Variant
-   (#Local_Int Local_Int)
-   (#IINC Register)
-   (#Local_Long Local_Long)
-   (#Local_Float Local_Float)
-   (#Local_Double Local_Double)
-   (#Local_Object Local_Object)))
+   {#Local_Int Local_Int}
+   {#IINC Register}
+   {#Local_Long Local_Long}
+   {#Local_Float Local_Float}
+   {#Local_Double Local_Double}
+   {#Local_Object Local_Object}))
 
 (type: .public Stack
   (Variant
@@ -246,30 +246,30 @@
 
 (type: .public (Branching label)
   (Variant
-   (#IF_ICMPEQ label)
-   (#IF_ICMPGE label)
-   (#IF_ICMPGT label)
-   (#IF_ICMPLE label)
-   (#IF_ICMPLT label)
-   (#IF_ICMPNE label)
-   (#IFEQ label)
-   (#IFNE label)
-   (#IFGE label)
-   (#IFGT label)
-   (#IFLE label)
-   (#IFLT label)
-
-   (#TABLESWITCH Int Int label (List label))
-   (#LOOKUPSWITCH label (List [Int label]))
-
-   (#IF_ACMPEQ label)
-   (#IF_ACMPNE label)
-   (#IFNONNULL label)
-   (#IFNULL label)))
+   {#IF_ICMPEQ label}
+   {#IF_ICMPGE label}
+   {#IF_ICMPGT label}
+   {#IF_ICMPLE label}
+   {#IF_ICMPLT label}
+   {#IF_ICMPNE label}
+   {#IFEQ label}
+   {#IFNE label}
+   {#IFGE label}
+   {#IFGT label}
+   {#IFLE label}
+   {#IFLT label}
+
+   {#TABLESWITCH Int Int label (List label)}
+   {#LOOKUPSWITCH label (List [Int label])}
+
+   {#IF_ACMPEQ label}
+   {#IF_ACMPNE label}
+   {#IFNONNULL label}
+   {#IFNULL label}))
 
 (type: .public (Exception label)
   (Variant
-   (#Try label label label (Type Class))
+   {#Try label label label (Type Class)}
    #ATHROW))
 
 (type: .public Concurrency
@@ -288,26 +288,26 @@
 
 (type: .public (Control label)
   (Variant
-   (#GOTO label)
-   (#Branching (Branching label))
-   (#Exception (Exception label))
-   (#Concurrency Concurrency)
-   (#Return Return)))
+   {#GOTO label}
+   {#Branching (Branching label)}
+   {#Exception (Exception label)}
+   {#Concurrency Concurrency}
+   {#Return Return}))
 
 (type: .public (Instruction embedded label)
   (Variant
    #NOP
-   (#Constant Constant)
-   (#Arithmetic Arithmetic)
-   (#Bitwise Bitwise)
-   (#Conversion Conversion)
-   (#Array Array)
-   (#Object Object)
-   (#Local Local)
-   (#Stack Stack)
-   (#Comparison Comparison)
-   (#Control (Control label))
-   (#Embedded embedded)))
+   {#Constant Constant}
+   {#Arithmetic Arithmetic}
+   {#Bitwise Bitwise}
+   {#Conversion Conversion}
+   {#Array Array}
+   {#Object Object}
+   {#Local Local}
+   {#Stack Stack}
+   {#Comparison Comparison}
+   {#Control (Control label)}
+   {#Embedded embedded}))
 
 (type: .public (Bytecode embedded label)
   (Row (Instruction embedded label)))
diff --git a/stdlib/source/library/lux/target/jvm/attribute.lux b/stdlib/source/library/lux/target/jvm/attribute.lux
index 78ce1854d..ed10a42c6 100644
--- a/stdlib/source/library/lux/target/jvm/attribute.lux
+++ b/stdlib/source/library/lux/target/jvm/attribute.lux
@@ -55,8 +55,8 @@
   (type: .public Attribute
     (Rec Attribute
       (Variant
-       (#Constant (Info (Constant Any)))
-       (#Code (Info )))))
+       {#Constant (Info (Constant Any))}
+       {#Code (Info )})))
 
   (type: .public Code
     )
@@ -82,16 +82,16 @@
   (-> Attribute Nat)
   (case attribute
     (^template []
-      [( [name length info])
+      [{ [name length info]}
        (|> length //unsigned.value (n.+ ..common_attribute_length))])
     ([#Constant] [#Code])))
 
 ... TODO: Inline ASAP
 (def: (constant' @name index)
   (-> (Index UTF8) (Constant Any) Attribute)
-  (#Constant [#name @name
+  {#Constant [#name @name
               #length (|> /constant.length //unsigned.u4 try.trusted)
-              #info index]))
+              #info index]})
 
 (def: .public (constant index)
   (-> (Constant Any) (Resource Attribute))
@@ -102,13 +102,13 @@
 ... TODO: Inline ASAP
 (def: (code' @name specification)
   (-> (Index UTF8) Code Attribute)
-  (#Code [#name @name
+  {#Code [#name @name
           ... https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3
           #length (|> specification
                       (/code.length ..length)
                       //unsigned.u4
                       try.trusted)
-          #info specification]))
+          #info specification]})
 
 (def: .public (code specification)
   (-> Code (Resource Attribute))
@@ -119,8 +119,8 @@
 (def: .public (writer value)
   (Writer Attribute)
   (case value
-    (#Constant attribute)
+    {#Constant attribute}
     ((info_writer /constant.writer) attribute)
     
-    (#Code attribute)
+    {#Code attribute}
     ((info_writer (/code.writer writer)) attribute)))
diff --git a/stdlib/source/library/lux/target/jvm/bytecode.lux b/stdlib/source/library/lux/target/jvm/bytecode.lux
index 85fa58c78..d999f5320 100644
--- a/stdlib/source/library/lux/target/jvm/bytecode.lux
+++ b/stdlib/source/library/lux/target/jvm/bytecode.lux
@@ -78,7 +78,7 @@
 
 (def: relative_identity
   Relative
-  (function.constant (#try.Success [..no_exceptions _.empty])))
+  (function.constant {#try.Success [..no_exceptions _.empty]}))
 
 (implementation: relative_monoid
   (Monoid Relative)
@@ -106,11 +106,11 @@
 (def: .public new_label
   (Bytecode Label)
   (function (_ [pool environment tracker])
-    (#try.Success [[pool
+    {#try.Success [[pool
                     environment
                     (revised@ #next ++ tracker)]
                    [..relative_identity
-                    (value@ #next tracker)]])))
+                    (value@ #next tracker)]]}))
 
 (exception: .public (label_has_already_been_set [label Label])
   (exception.report
@@ -131,7 +131,7 @@
 (with_expansions [ (as_is (in [[pool
                                          environment
                                          (revised@ #known
-                                                   (dictionary.has label [actual (#.Some @here)])
+                                                   (dictionary.has label [actual {#.Some @here}])
                                                    tracker)]
                                         [..relative_identity
                                          []]]))]
@@ -140,10 +140,10 @@
     (function (_ [pool environment tracker])
       (let [@here (value@ #program_counter tracker)]
         (case (dictionary.value label (value@ #known tracker))
-          (#.Some [expected (#.Some address)])
+          {#.Some [expected {#.Some address}]}
           (exception.except ..label_has_already_been_set [label])
           
-          (#.Some [expected #.None])
+          {#.Some [expected #.None]}
           (do try.monad
             [[actual environment] (/environment.continue expected environment)]
             )
@@ -455,10 +455,10 @@
   (do ..monad
     [index (..lifted (//constant/pool.string value))]
     (case (|> index //index.value //unsigned.value //unsigned.u1)
-      (#try.Success index)
+      {#try.Success index}
       (..bytecode $0 $1 @_ _.ldc [index])
 
-      (#try.Failure _)
+      {#try.Failure _}
       (..bytecode $0 $1 @_ _.ldc_w/string [index]))))
 
 (import: java/lang/Float
@@ -480,10 +480,10 @@
        _ (do ..monad
            [index (..lifted ( ( value)))]
            (case (|> index //index.value //unsigned.value //unsigned.u1)
-             (#try.Success index)
+             {#try.Success index}
              (..bytecode $0 $1 @_ _.ldc [index])
 
-             (#try.Failure _)
+             {#try.Failure _}
              (..bytecode $0 $1 @_  [index])))))]
 
   [int I32 //constant.integer //constant/pool.integer _.ldc_w/integer
@@ -502,10 +502,10 @@
   (do ..monad
     [index (..lifted (//constant/pool.float (//constant.float value)))]
     (case (|> index //index.value //unsigned.value //unsigned.u1)
-      (#try.Success index)
+      {#try.Success index}
       (..bytecode $0 $1 @_ _.ldc [index])
 
-      (#try.Failure _)
+      {#try.Failure _}
       (..bytecode $0 $1 @_ _.ldc_w/float [index]))))
 
 (def: float_bits
@@ -583,10 +583,10 @@
 (def: (register id)
   (-> Nat (Bytecode Register))
   (case (//unsigned.u1 id)
-    (#try.Success register)
+    {#try.Success register}
     (\ ..monad in register)
     
-    (#try.Failure error)
+    {#try.Failure error}
     (..except ..invalid_register [id])))
 
 (template [    ]
@@ -715,10 +715,10 @@
 (def: (resolve_label label resolver)
   (-> Label Resolver (Try [Stack Address]))
   (case (dictionary.value label resolver)
-    (#.Some [actual (#.Some address)])
-    (#try.Success [actual address])
+    {#.Some [actual {#.Some address}]}
+    {#try.Success [actual address]}
 
-    (#.Some [actual #.None])
+    {#.Some [actual #.None]}
     (exception.except ..unset_label [label])
     
     #.None
@@ -727,7 +727,7 @@
 (def: (acknowledge_label stack label tracker)
   (-> Stack Label Tracker Tracker)
   (case (dictionary.value label (value@ #known tracker))
-    (#.Some _)
+    {#.Some _}
     tracker
 
     #.None
@@ -757,10 +757,10 @@
                                                  (\ /stack.equivalence = expected actual))
                           jump (..jump @from @to)]
                          (case jump
-                           (#.Left jump)
+                           {#.Left jump}
                            (exception.except ..cannot_do_a_big_jump [label @from jump])
 
-                           (#.Right jump)
+                           {#.Right jump}
                            (in [..no_exceptions (bytecode jump)]))))
                      []]])))))))]
 
@@ -802,19 +802,19 @@
                        (with@ #program_counter program_counter'))]
                   [(function (_ resolver)
                      (case (dictionary.value label resolver)
-                       (#.Some [expected (#.Some @to)])
+                       {#.Some [expected {#.Some @to}]}
                        (do try.monad
                          [_ (exception.assertion ..mismatched_environments [(name_of ) label @here expected actual]
                                                  (\ /stack.equivalence = expected actual))
                           jump (..jump @from @to)]
                          (case jump
-                           (#.Left jump)
+                           {#.Left jump}
                            
 
-                           (#.Right jump)
+                           {#.Right jump}
                            ))
 
-                       (#.Some [expected #.None])
+                       {#.Some [expected #.None]}
                        (exception.except ..unset_label [label])
 
                        #.None
@@ -832,10 +832,10 @@
 (def: (big_jump jump)
   (-> Any_Jump Big_Jump)
   (case jump
-    (#.Left big)
+    {#.Left big}
     big
 
-    (#.Right small)
+    {#.Right small}
     (/jump.lifted small)))
 
 (exception: .public invalid_tableswitch)
@@ -865,7 +865,7 @@
                                              (monad.each ! get)
                                              (monad.then ! (monad.each ! product.right)))]
                             (in [@default @at_minimum @afterwards]))
-                      (#.Some [@default @at_minimum @afterwards])
+                      {#.Some [@default @at_minimum @afterwards]}
                       (do [! try.monad]
                         [>default (\ ! each ..big_jump (..jump @from @default))
                          >at_minimum (\ ! each ..big_jump (..jump @from @at_minimum))
@@ -907,7 +907,7 @@
                                         (monad.each ! (|>> product.right get))
                                         (monad.then ! (monad.each ! product.right)))]
                             (in [@default @cases]))
-                      (#.Some [@default @cases])
+                      {#.Some [@default @cases]}
                       (do [! try.monad]
                         [>default (\ ! each ..big_jump (..jump @from @default))
                          >cases (|> @cases
@@ -1025,7 +1025,7 @@
   (do ..monad
     [@catch (..lifted (//constant/pool.class (//name.internal (..reflection catch))))]
     (function (_ [pool environment tracker])
-      (#try.Success
+      {#try.Success
        [[pool
          environment
          (..acknowledge_label /stack.catch @handler tracker)]
@@ -1042,7 +1042,7 @@
                             #//exception.handler @handler
                             #//exception.catch @catch])
                   _.empty])))
-         []]]))))
+         []]]})))
 
 (def: .public (composite pre post)
   (All (_ pre post)
diff --git a/stdlib/source/library/lux/target/jvm/bytecode/environment.lux b/stdlib/source/library/lux/target/jvm/bytecode/environment.lux
index 9ba2ca0d4..c7b6481fb 100644
--- a/stdlib/source/library/lux/target/jvm/bytecode/environment.lux
+++ b/stdlib/source/library/lux/target/jvm/bytecode/environment.lux
@@ -28,7 +28,7 @@
      (do try.monad
        [limit ( type)]
        (in [#limit limit
-            #stack (#.Some /stack.empty)])))]
+            #stack {#.Some /stack.empty}])))]
 
   [static /limit.static]
   [virtual /limit.virtual]
@@ -53,8 +53,8 @@
 (def: .public (stack environment)
   (-> Environment (Try Stack))
   (case (value@ #..stack environment)
-    (#.Some stack)
-    (#try.Success stack)
+    {#.Some stack}
+    {#try.Success stack}
 
     #.None
     (exception.except ..discontinuity [])))
@@ -72,13 +72,13 @@
 (def: .public (continue expected environment)
   (-> Stack Environment (Try [Stack Environment]))
   (case (value@ #..stack environment)
-    (#.Some actual)
+    {#.Some actual}
     (if (\ /stack.equivalence = expected actual)
-      (#try.Success [actual environment])
+      {#try.Success [actual environment]}
       (exception.except ..mismatched_stacks [expected actual]))
 
     #.None
-    (#try.Success [expected (with@ #..stack (#.Some expected) environment)])))
+    {#try.Success [expected (with@ #..stack {#.Some expected} environment)]}))
 
 (def: .public (consumes amount)
   (-> U2 Condition)
@@ -88,7 +88,7 @@
     (do try.monad
       [previous (..stack environment)
        current (/stack.pop amount previous)]
-      (in (with@ #..stack (#.Some current) environment)))))
+      (in (with@ #..stack {#.Some current} environment)))))
 
 (def: .public (produces amount)
   (-> U2 Condition)
@@ -100,7 +100,7 @@
                        (value@ [#..limit #/limit.stack])
                        (/stack.max current))]]
       (in (|> environment
-              (with@ #..stack (#.Some current))
+              (with@ #..stack {#.Some current})
               (with@ [#..limit #/limit.stack] limit))))))
 
 (def: .public (has registry)
diff --git a/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux b/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux
index 9fe36c303..646278f35 100644
--- a/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux
+++ b/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux
@@ -634,12 +634,12 @@
                                                 _ (binary.write/32! offset (///signed.value maximum) binary)]
                                                (loop [offset (n.+ (///unsigned.value ..integer_size) offset)
                                                       afterwards (: (List Big_Jump)
-                                                                    (#.Item at_minimum afterwards))]
+                                                                    {#.Item at_minimum afterwards})]
                                                  (case afterwards
                                                    #.End
                                                    (in binary)
                                                    
-                                                   (#.Item head tail)
+                                                   {#.Item head tail}
                                                    (do !
                                                      [_ (binary.write/32! offset (///signed.value head) binary)]
                                                      (recur (n.+ (///unsigned.value ..big_jump_size) offset)
@@ -698,7 +698,7 @@
                                                     #.End
                                                     (in binary)
                                                     
-                                                    (#.Item [value jump] tail)
+                                                    {#.Item [value jump] tail}
                                                     (do !
                                                       [_ (binary.write/32! offset (///signed.value value) binary)
                                                        _ (binary.write/32! (n.+ (///unsigned.value ..integer_size) offset) (///signed.value jump) binary)]
diff --git a/stdlib/source/library/lux/target/jvm/constant.lux b/stdlib/source/library/lux/target/jvm/constant.lux
index d1e9b2122..27efe496d 100644
--- a/stdlib/source/library/lux/target/jvm/constant.lux
+++ b/stdlib/source/library/lux/target/jvm/constant.lux
@@ -157,22 +157,22 @@
 
 (type: .public Constant
   (Variant
-   (#UTF8 UTF8)
-   (#Integer Integer)
-   (#Float Float)
-   (#Long Long)
-   (#Double Double)
-   (#Class Class)
-   (#String String)
-   (#Field (Reference //category.Value))
-   (#Method (Reference //category.Method))
-   (#Interface_Method (Reference //category.Method))
-   (#Name_And_Type (Name_And_Type Any))))
+   {#UTF8 UTF8}
+   {#Integer Integer}
+   {#Float Float}
+   {#Long Long}
+   {#Double Double}
+   {#Class Class}
+   {#String String}
+   {#Field (Reference //category.Value)}
+   {#Method (Reference //category.Method)}
+   {#Interface_Method (Reference //category.Method)}
+   {#Name_And_Type (Name_And_Type Any)}))
 
 (def: .public (size constant)
   (-> Constant Nat)
   (case constant
-    (^or (#Long _) (#Double _))
+    (^or {#Long _} {#Double _})
     2
 
     _
@@ -186,7 +186,7 @@
    (def: (= reference sample)
      (case [reference sample]
        (^template [ ]
-         [[( reference) ( sample)]
+         [[{ reference} { sample}]
           (\  = reference sample)])
        ([#UTF8 text.equivalence]
         [#Integer (..value_equivalence i32.equivalence)]
@@ -244,7 +244,7 @@
     (function (_ value)
       (case value
         (^template [  ]
-          [( value)
+          [{ value}
            (binaryF\composite (/tag.writer )
                               ( value))])
         ()
diff --git a/stdlib/source/library/lux/target/jvm/constant/pool.lux b/stdlib/source/library/lux/target/jvm/constant/pool.lux
index 2ae78260d..41ff5ad26 100644
--- a/stdlib/source/library/lux/target/jvm/constant/pool.lux
+++ b/stdlib/source/library/lux/target/jvm/constant/pool.lux
@@ -57,19 +57,19 @@
        (with_expansions [ (as_is (recur (.++ idx)))]
          (loop [idx 0]
            (case (row.item idx pool)
-             (#try.Success entry)
+             {#try.Success entry}
              (case entry
-               [index ( reference)]
+               [index { reference}]
                (if (\  = reference ')
-                 (#try.Success [[current pool]
-                                index])
+                 {#try.Success [[current pool]
+                                index]}
                  )
                
                _
                )
              
-             (#try.Failure _)
-             (let [new ( ')]
+             {#try.Failure _}
+             (let [new { '}]
                (do [! try.monad]
                  [@new (//unsigned.u2 (//.size new))
                   next (: (Try Index)
diff --git a/stdlib/source/library/lux/target/jvm/encoding/signed.lux b/stdlib/source/library/lux/target/jvm/encoding/signed.lux
index 3bafb4bfc..5d4f124a6 100644
--- a/stdlib/source/library/lux/target/jvm/encoding/signed.lux
+++ b/stdlib/source/library/lux/target/jvm/encoding/signed.lux
@@ -67,7 +67,7 @@
                        (i64.or negative value)
                        (i64.and positive value))
                      value)
-              (#try.Success (:abstraction value))
+              {#try.Success (:abstraction value)}
               (exception.except ..value_exceeds_the_scope [value ])))))
 
       (template [ ]
diff --git a/stdlib/source/library/lux/target/jvm/encoding/unsigned.lux b/stdlib/source/library/lux/target/jvm/encoding/unsigned.lux
index df550075b..097265bcf 100644
--- a/stdlib/source/library/lux/target/jvm/encoding/unsigned.lux
+++ b/stdlib/source/library/lux/target/jvm/encoding/unsigned.lux
@@ -74,7 +74,7 @@
         (-> Nat (Try ))
         (if (n.> (:representation ) value)
           (exception.except ..value_exceeds_the_maximum [(name_of ) value ])
-          (#try.Success (:abstraction value))))
+          {#try.Success (:abstraction value)}))
 
       (def: .public (<+> parameter subject)
         (->   (Try ))
@@ -88,7 +88,7 @@
               subject' (:representation subject)]
           (if (n.> subject' parameter')
             (exception.except ..subtraction_cannot_yield_negative_value [(name_of ) parameter subject])
-            (#try.Success (:abstraction (n.- parameter' subject'))))))
+            {#try.Success (:abstraction (n.- parameter' subject'))})))
 
       (def: .public ( left right)
         (->   )
diff --git a/stdlib/source/library/lux/target/jvm/loader.lux b/stdlib/source/library/lux/target/jvm/loader.lux
index 1d5eda342..82999be00 100644
--- a/stdlib/source/library/lux/target/jvm/loader.lux
+++ b/stdlib/source/library/lux/target/jvm/loader.lux
@@ -116,12 +116,12 @@
                                  (let [class_name (:as Text class_name)
                                        classes (|> library atom.read! io.run!)]
                                    (case (dictionary.value class_name classes)
-                                     (#.Some bytecode)
+                                     {#.Some bytecode}
                                      (case (..define class_name bytecode (<|  self))
-                                       (#try.Success class)
+                                       {#try.Success class}
                                        (:expected class)
 
-                                       (#try.Failure error)
+                                       {#try.Failure error}
                                        (panic! (exception.error ..cannot_define [class_name error])))
 
                                      #.None
@@ -135,7 +135,7 @@
       (in (exception.except ..already_stored name))
       (do !
         [_ (atom.update! (dictionary.has name bytecode) library)]
-        (in (#try.Success []))))))
+        (in {#try.Success []})))))
 
 (def: .public (load name loader)
   (-> Text java/lang/ClassLoader
diff --git a/stdlib/source/library/lux/target/jvm/method.lux b/stdlib/source/library/lux/target/jvm/method.lux
index 11e8e1c06..a56b732c3 100644
--- a/stdlib/source/library/lux/target/jvm/method.lux
+++ b/stdlib/source/library/lux/target/jvm/method.lux
@@ -59,16 +59,16 @@
                     (monad.all !)
                     (\ ! each row.of_list))
      attributes (case code
-                  (#.Some code)
+                  {#.Some code}
                   (do !
                     [environment (case (if (//modifier.has? static modifier)
                                          (//bytecode/environment.static type)
                                          (//bytecode/environment.virtual type))
-                                   (#try.Success environment)
+                                   {#try.Success environment}
                                    (in environment)
                                    
-                                   (#try.Failure error)
-                                   (function (_ _) (#try.Failure error)))
+                                   {#try.Failure error}
+                                   (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 (value@ #//bytecode/environment.limit environment)
diff --git a/stdlib/source/library/lux/target/jvm/reflection.lux b/stdlib/source/library/lux/target/jvm/reflection.lux
index 740d43c63..59a3d72d6 100644
--- a/stdlib/source/library/lux/target/jvm/reflection.lux
+++ b/stdlib/source/library/lux/target/jvm/reflection.lux
@@ -128,10 +128,10 @@
 (def: .public (load class_loader name)
   (-> java/lang/ClassLoader External (Try (java/lang/Class java/lang/Object)))
   (case (java/lang/Class::forName name false class_loader)
-    (#try.Success class)
-    (#try.Success class)
+    {#try.Success class}
+    {#try.Success class}
 
-    (#try.Failure _)
+    {#try.Failure _}
     (exception.except ..unknown_class [name])))
 
 (def: .public (sub? class_loader super sub)
@@ -146,7 +146,7 @@
       java/lang/reflect/Type
       (Try (/.Type Class)))
   (<| (case (ffi.check java/lang/Class reflection)
-        (#.Some class)
+        {#.Some class}
         (let [class_name (|> class
                              (:as (java/lang/Class java/lang/Object))
                              java/lang/Class::getName)]
@@ -164,13 +164,13 @@
                             [/reflection.char]))
                       (text.starts_with? /descriptor.array_prefix class_name))
                 (exception.except ..not_a_class reflection)
-                (#try.Success (/.class class_name (list))))))
+                {#try.Success (/.class class_name (list))})))
         _)
       (case (ffi.check java/lang/reflect/ParameterizedType reflection)
-        (#.Some reflection)
+        {#.Some reflection}
         (let [raw (java/lang/reflect/ParameterizedType::getRawType reflection)]
           (case (ffi.check java/lang/Class raw)
-            (#.Some raw)
+            {#.Some raw}
             (do [! try.monad]
               [paramsT (|> reflection
                            java/lang/reflect/ParameterizedType::getActualTypeArguments
@@ -190,11 +190,11 @@
 (def: .public (parameter reflection)
   (-> java/lang/reflect/Type (Try (/.Type Parameter)))
   (<| (case (ffi.check java/lang/reflect/TypeVariable reflection)
-        (#.Some reflection)
-        (#try.Success (/.var (java/lang/reflect/TypeVariable::getName reflection)))
+        {#.Some reflection}
+        {#try.Success (/.var (java/lang/reflect/TypeVariable::getName reflection))}
         _)
       (case (ffi.check java/lang/reflect/WildcardType reflection)
-        (#.Some reflection)
+        {#.Some reflection}
         ... TODO: Instead of having single lower/upper bounds, should
         ... allow for multiple ones.
         (case [(array.read! 0 (java/lang/reflect/WildcardType::getLowerBounds reflection))
@@ -202,18 +202,18 @@
           (^template [ ]
             [
              (case (ffi.check java/lang/reflect/GenericArrayType bound)
-               (#.Some _)
+               {#.Some _}
                ... TODO: Array bounds should not be "erased" as they
                ... are right now.
-               (#try.Success /.wildcard)
+               {#try.Success /.wildcard}
 
                _
                (\ try.monad each  (..class' parameter bound)))])
-          ([[_ (#.Some bound)] /.upper]
-           [[(#.Some bound) _] /.lower])
+          ([[_ {#.Some bound}] /.upper]
+           [[{#.Some bound} _] /.lower])
           
           _
-          (#try.Success /.wildcard))
+          {#try.Success /.wildcard})
         _)
       (..class' parameter reflection)))
 
@@ -225,14 +225,14 @@
 (def: .public (type reflection)
   (-> java/lang/reflect/Type (Try (/.Type Value)))
   (<| (case (ffi.check java/lang/Class reflection)
-        (#.Some reflection)
+        {#.Some reflection}
         (let [class_name (|> reflection
                              (:as (java/lang/Class java/lang/Object))
                              java/lang/Class::getName)]
           (`` (cond (~~ (template [ ]
                           [(text\= (/reflection.reflection )
                                    class_name)
-                           (#try.Success )]
+                           {#try.Success }]
 
                           [/reflection.boolean /.boolean]
                           [/reflection.byte /.byte]
@@ -244,10 +244,10 @@
                           [/reflection.char /.char]))
                     (if (text.starts_with? /descriptor.array_prefix class_name)
                       (.result /parser.value (|> class_name //name.internal //name.read))
-                      (#try.Success (/.class class_name (list)))))))
+                      {#try.Success (/.class class_name (list))}))))
         _)
       (case (ffi.check java/lang/reflect/GenericArrayType reflection)
-        (#.Some reflection)
+        {#.Some reflection}
         (|> reflection
             java/lang/reflect/GenericArrayType::getGenericComponentType
             type
@@ -260,13 +260,13 @@
   (-> java/lang/reflect/Type (Try (/.Type Return)))
   (with_expansions [ (as_is (..type reflection))]
     (case (ffi.check java/lang/Class reflection)
-      (#.Some class)
+      {#.Some class}
       (let [class_name (|> reflection
                            (:as (java/lang/Class java/lang/Object))
                            java/lang/Class::getName)]
         (if (text\= (/reflection.reflection /reflection.void)
                     class_name)
-          (#try.Success /.void)
+          {#try.Success /.void}
           ))
 
       #.None
@@ -295,7 +295,7 @@
 (def: .public (correspond class type)
   (-> (java/lang/Class java/lang/Object) Type (Try Mapping))
   (case type
-    (#.Primitive name params)
+    {#.Primitive name params}
     (let [class_name (java/lang/Class::getName class)
           class_params (array.list #.None (java/lang/Class::getTypeParameters class))
           num_class_params (list.size class_params)
@@ -312,12 +312,12 @@
           (exception.except ..type_parameter_mismatch [num_class_params num_type_params class type]))
         (exception.except ..cannot_correspond [class type])))
 
-    (#.Named name anonymousT)
+    {#.Named name anonymousT}
     (correspond class anonymousT)
 
-    (#.Apply inputT abstractionT)
+    {#.Apply inputT abstractionT}
     (case (type.applied (list inputT) abstractionT)
-      (#.Some outputT)
+      {#.Some outputT}
       (correspond class outputT)
 
       #.None
@@ -349,13 +349,13 @@
 (def: .public (field field target)
   (-> Text (java/lang/Class java/lang/Object) (Try java/lang/reflect/Field))
   (case (java/lang/Class::getDeclaredField field target)
-    (#try.Success field)
+    {#try.Success field}
     (let [owner (java/lang/reflect/Field::getDeclaringClass field)]
       (if (same? owner target)
-        (#try.Success field)
+        {#try.Success field}
         (exception.except ..mistaken_field_owner [field owner target])))
 
-    (#try.Failure _)
+    {#try.Failure _}
     (exception.except ..unknown_field [field target])))
 
 (def: .public deprecated?
diff --git a/stdlib/source/library/lux/target/jvm/type/lux.lux b/stdlib/source/library/lux/target/jvm/type/lux.lux
index 023d844e8..d144ac6fe 100644
--- a/stdlib/source/library/lux/target/jvm/type/lux.lux
+++ b/stdlib/source/library/lux/target/jvm/type/lux.lux
@@ -55,7 +55,7 @@
   [(def: 
      (Parser (Check Type))
      (<>.after 
-               (<>\in (check\in (#.Primitive (//reflection.reflection ) #.End)))))]
+               (<>\in (check\in {#.Primitive (//reflection.reflection ) #.End}))))]
 
   [boolean //parser.boolean //reflection.boolean]
   [byte //parser.byte //reflection.byte]
@@ -71,7 +71,7 @@
   [(def: 
      (Parser (Check Type))
      (<>.after 
-               (<>\in (check\in (#.Primitive  #.End)))))]
+               (<>\in (check\in {#.Primitive  #.End}))))]
 
   [boxed_boolean //parser.boolean //box.boolean]
   [boxed_byte //parser.byte //box.byte]
@@ -123,7 +123,7 @@
           #.None
           (check.except ..unknown_var [var])
           
-          (#.Some type)
+          {#.Some type}
           (check\in type)))))
 
 (def: (class' parameter)
@@ -136,7 +136,7 @@
                         (<>.else (list)))]
         (in (do [! check.monad]
               [parameters (monad.all ! parameters)]
-              (in (#.Primitive name parameters)))))
+              (in {#.Primitive name parameters}))))
       (<>.after (.this //descriptor.class_prefix))
       (<>.before (.this //descriptor.class_suffix))))
 
@@ -173,7 +173,7 @@
   (-> (Parser (Check Type)) (Parser (Check Type)))
   (|>> (<>\each (check\each (function (_ elementT)
                               (case elementT
-                                (#.Primitive name #.End)
+                                {#.Primitive name #.End}
                                 (if (`` (or (~~ (template []
                                                   [(text\= (//reflection.reflection ) name)]
 
@@ -185,7 +185,7 @@
                                                   [//reflection.float]
                                                   [//reflection.double]
                                                   [//reflection.char]))))
-                                  (#.Primitive (|> name //reflection.class //reflection.array //reflection.reflection) #.End)
+                                  {#.Primitive (|> name //reflection.class //reflection.array //reflection.reflection) #.End}
                                   (|> elementT array.Array .type))
 
                                 _
@@ -229,8 +229,8 @@
 (def: .public (check operation input)
   (All (_ a) (-> (Parser (Check a)) Text (Check a)))
   (case (.result operation input)
-    (#try.Success check)
+    {#try.Success check}
     check
     
-    (#try.Failure error)
+    {#try.Failure error}
     (check.failure error)))
diff --git a/stdlib/source/library/lux/target/python.lux b/stdlib/source/library/lux/target/python.lux
index af0514a76..a649fbcf1 100644
--- a/stdlib/source/library/lux/target/python.lux
+++ b/stdlib/source/library/lux/target/python.lux
@@ -371,7 +371,7 @@
       (format "while " (:representation test) ":"
               (..nested (:representation body!))
               (case else!
-                (#.Some else!)
+                {#.Some else!}
                 (format text.new_line "else:"
                         (..nested (:representation else!)))
                 
@@ -424,7 +424,7 @@
    (def: .public (exec code globals)
      (-> (Expression Any) (Maybe (Expression Any)) (Statement Any))
      (let [extra (case globals
-                   (#.Some globals)
+                   {#.Some globals}
                    (.list globals)
 
                    #.None
diff --git a/stdlib/source/library/lux/target/ruby.lux b/stdlib/source/library/lux/target/ruby.lux
index acc560f31..85a3c92c3 100644
--- a/stdlib/source/library/lux/target/ruby.lux
+++ b/stdlib/source/library/lux/target/ruby.lux
@@ -373,7 +373,7 @@
              #.None
              proc
              
-             (#.Some name)
+             {#.Some name}
              (format (:representation name) " = " proc))
            (text.enclosed ["(" ")"])
            :abstraction)))
diff --git a/stdlib/source/library/lux/target/scheme.lux b/stdlib/source/library/lux/target/scheme.lux
index 285d934ad..390a43867 100644
--- a/stdlib/source/library/lux/target/scheme.lux
+++ b/stdlib/source/library/lux/target/scheme.lux
@@ -76,7 +76,7 @@
    (def: (arguments [mandatory rest])
      (-> Arguments (Code Any))
      (case rest
-       (#.Some rest)
+       {#.Some rest}
        (case mandatory
          #.End
          rest
@@ -159,17 +159,17 @@
        (|>> (case> #.End
                    (:abstraction "()")
                    
-                   (#.Item head tail)
+                   {#.Item head tail}
                    (|> tail
                        (list\each (|>> :representation ..nested))
-                       (#.Item (:representation head))
+                       {#.Item (:representation head)}
                        (text.interposed nested_new_line)
                        (text.enclosed ["(" ")"])
                        :abstraction)))))
    
    (def: .public (apply/* args func)
      (-> (List Expression) Expression Computation)
-     (..form (#.Item func args)))
+     (..form {#.Item func args}))
    
    (template [ ]
      [(def: .public ( members)
@@ -340,7 +340,7 @@
      (-> Var Arguments Expression Computation)
      (..form (list (..var "define")
                    (|> arguments
-                       (revised@ #mandatory (|>> (#.Item name)))
+                       (revised@ #mandatory (|>> {#.Item name}))
                        ..arguments)
                    body)))
 
@@ -350,7 +350,7 @@
 
    (def: .public begin
      (-> (List Expression) Computation)
-     (|>> (#.Item (..var "begin")) ..form))
+     (|>> {#.Item (..var "begin")} ..form))
 
    (def: .public (set! name value)
      (-> Var Expression Computation)
@@ -371,7 +371,7 @@
                                  #.None
                                  (list)
                                  
-                                 (#.Some else)
+                                 {#.Some else}
                                  (list (..form (list (..var "else") else))))
                                (list\composite (list\each (function (_ [when then])
                                                             (..form (list when then)))
diff --git a/stdlib/source/library/lux/test.lux b/stdlib/source/library/lux/test.lux
index ae72ceb48..6aebcaadc 100644
--- a/stdlib/source/library/lux/test.lux
+++ b/stdlib/source/library/lux/test.lux
@@ -306,7 +306,7 @@
   (loop [remaining encoding
          output (set.of_list name.hash (list))]
     (case (text.split_by ..coverage_separator remaining)
-      (#.Some [head tail])
+      {#.Some [head tail]}
       (recur tail (set.has [module head] output))
       
       #.None
@@ -353,7 +353,7 @@
      .let [coverage (|> definitions
                         (list\mix (function (_ [short [exported? _]] aggregate)
                                     (if exported?
-                                      (#.Item short aggregate)
+                                      {#.Item short aggregate}
                                       aggregate))
                                   #.End)
                         ..encoded_coverage)]]
@@ -381,10 +381,10 @@
                           product.right
                           (function (_ _))
                           "lux try"
-                          (case> (#try.Success output)
+                          (case> {#try.Success output}
                                  output
                                  
-                                 (#try.Failure error)
+                                 {#try.Failure error}
                                  (..assertion (exception.error ..error_during_execution [error]) false))
                           io.io
                           async.future
diff --git a/stdlib/source/library/lux/time.lux b/stdlib/source/library/lux/time.lux
index de7525d42..f87a8f6f6 100644
--- a/stdlib/source/library/lux/time.lux
+++ b/stdlib/source/library/lux/time.lux
@@ -86,7 +86,7 @@
    (def: .public (of_millis milli_seconds)
      (-> Nat (Try Time))
      (if (n.< ..limit milli_seconds)
-       (#try.Success (:abstraction milli_seconds))
+       {#try.Success (:abstraction milli_seconds)}
        (exception.except ..time_exceeds_a_day [milli_seconds])))
 
    (def: .public millis
diff --git a/stdlib/source/library/lux/time/date.lux b/stdlib/source/library/lux/time/date.lux
index a739ff6f5..7053a71e1 100644
--- a/stdlib/source/library/lux/time/date.lux
+++ b/stdlib/source/library/lux/time/date.lux
@@ -79,11 +79,11 @@
      (-> Year Month Nat (Try Date))
      (if (..invalid_day? year month day_of_month)
        (exception.except ..invalid_day [year month day_of_month])
-       (#try.Success
+       {#try.Success
         (:abstraction
          [#year year
           #month month
-          #day day_of_month]))))
+          #day day_of_month])}))
 
    (def: .public epoch
      Date
diff --git a/stdlib/source/library/lux/time/day.lux b/stdlib/source/library/lux/time/day.lux
index ecdbc79ab..aee0a9f33 100644
--- a/stdlib/source/library/lux/time/day.lux
+++ b/stdlib/source/library/lux/time/day.lux
@@ -112,7 +112,7 @@
   (def: (decoded value)
     (case value
       (^template []
-        [(^ (template.text [])) (#try.Success )])
+        [(^ (template.text [])) {#try.Success }])
       ([#..Monday]
        [#..Tuesday]
        [#..Wednesday]
@@ -158,7 +158,7 @@
     (-> Nat (Try Day))
     (case number
       (^template [ ]
-        [ (#try.Success )])
+        [ {#try.Success }])
       ()
       _ (exception.except ..invalid_day [number])))
   )
diff --git a/stdlib/source/library/lux/time/duration.lux b/stdlib/source/library/lux/time/duration.lux
index 2361a23f8..d0c044d39 100644
--- a/stdlib/source/library/lux/time/duration.lux
+++ b/stdlib/source/library/lux/time/duration.lux
@@ -178,8 +178,8 @@
                       (..merged (..up seconds ..second))
                       (..merged (..up millis ..milli_second)))]]
       (in (case sign
-            (#.Left _) (..inverse span)
-            (#.Right _) span)))))
+            {#.Left _} (..inverse span)
+            {#.Right _} span)))))
 
 (implementation: .public codec
   (Codec Text Duration)
diff --git a/stdlib/source/library/lux/time/month.lux b/stdlib/source/library/lux/time/month.lux
index 57724be44..e2936b80e 100644
--- a/stdlib/source/library/lux/time/month.lux
+++ b/stdlib/source/library/lux/time/month.lux
@@ -88,7 +88,7 @@
     (-> Nat (Try Month))
     (case number
       (^template [ ]
-        [ (#try.Success )])
+        [ {#try.Success }])
       ()
       _ (exception.except ..invalid_month [number])))
   )
@@ -226,7 +226,7 @@
   (def: (decoded value)
     (case value
       (^template []
-        [(^ (template.text [])) (#try.Success )])
+        [(^ (template.text [])) {#try.Success }])
       ([#..January]
        [#..February]
        [#..March]
diff --git a/stdlib/source/library/lux/time/year.lux b/stdlib/source/library/lux/time/year.lux
index 5a621bac3..9b69e84d6 100644
--- a/stdlib/source/library/lux/time/year.lux
+++ b/stdlib/source/library/lux/time/year.lux
@@ -42,7 +42,7 @@
      (-> Int (Try Year))
      (case value
        +0 (exception.except ..there_is_no_year_0 [])
-       _ (#try.Success (:abstraction (..internal value)))))
+       _ {#try.Success (:abstraction (..internal value))}))
 
    (def: .public value
      (-> Year Int)
@@ -118,8 +118,8 @@
      digits (.many .decimal)
      raw_year (<>.codec i.decimal (in (text\composite "+" digits)))]
     (<>.lifted (..year (case sign
-                         (#.Left _)  (i.* -1 raw_year)
-                         (#.Right _) raw_year)))))
+                         {#.Left _}  (i.* -1 raw_year)
+                         {#.Right _} raw_year)))))
 
 (implementation: .public codec
   (Codec Text Year)
diff --git a/stdlib/source/library/lux/tool/compiler/default/init.lux b/stdlib/source/library/lux/tool/compiler/default/init.lux
index 35759ca87..a43b9a4d9 100644
--- a/stdlib/source/library/lux/tool/compiler/default/init.lux
+++ b/stdlib/source/library/lux/tool/compiler/default/init.lux
@@ -94,22 +94,22 @@
 (def: (reader current_module aliases [location offset source_code])
   (-> Module Aliases Source (///analysis.Operation Reader))
   (function (_ [bundle state])
-    (#try.Success [[bundle state]
-                   (///syntax.parse current_module aliases ("lux text size" source_code))])))
+    {#try.Success [[bundle state]
+                   (///syntax.parse current_module aliases ("lux text size" source_code))]}))
 
 (def: (read source reader)
   (-> Source Reader (///analysis.Operation [Source Code]))
   (function (_ [bundle compiler])
     (case (reader source)
-      (#.Left [source' error])
-      (#try.Failure error)
+      {#.Left [source' error]}
+      {#try.Failure error}
 
-      (#.Right [source' output])
+      {#.Right [source' output]}
       (let [[location _] output]
-        (#try.Success [[bundle (|> compiler
+        {#try.Success [[bundle (|> compiler
                                    (with@ #.source source')
                                    (with@ #.location location))]
-                       [source' output]])))))
+                       [source' output]]}))))
 
 (type: (Operation a)
   (All (_ anchor expression directive)
@@ -209,13 +209,13 @@
              (..reader module aliases source))]
     (function (_ state)
       (case (///phase.result' state (..iteration' wrapper archive expander reader source pre_payload))
-        (#try.Success [state source&requirements&buffer])
-        (#try.Success [state (#.Some source&requirements&buffer)])
+        {#try.Success [state source&requirements&buffer]}
+        {#try.Success [state {#.Some source&requirements&buffer}]}
 
-        (#try.Failure error)
+        {#try.Failure error}
         (if (exception.match? ///syntax.end_of_file error)
-          (#try.Success [state #.None])
-          (exception.with ///.cannot_compile module (#try.Failure error)))))))
+          {#try.Success [state #.None]}
+          (exception.with ///.cannot_compile module {#try.Failure error}))))))
 
 (def: (default_dependencies prelude input)
   (-> Module ///.Input (List Module))
@@ -257,16 +257,16 @@
                                                      #descriptor.state #.Compiled
                                                      #descriptor.registry final_registry]]]
                                   (in [state
-                                       (#.Right [descriptor
+                                       {#.Right [descriptor
                                                  (document.write key analysis_module)
                                                  (row\each (function (_ [artifact_id custom directive])
                                                              [artifact_id custom (write_directive directive)])
-                                                           final_buffer)])]))
+                                                           final_buffer)]}]))
 
-                                (#.Some [source requirements temporary_payload])
+                                {#.Some [source requirements temporary_payload]}
                                 (let [[temporary_buffer temporary_registry] temporary_payload]
                                   (in [state
-                                       (#.Left [#///.dependencies (|> requirements
+                                       {#.Left [#///.dependencies (|> requirements
                                                                       (value@ #///directive.imports)
                                                                       (list\each product.left))
                                                 #///.process (function (_ state archive)
@@ -284,5 +284,5 @@
                                                                                    (value@ #///directive.referrals)
                                                                                    (monad.each ! (execute! archive)))
                                                                              temporary_payload (..get_current_payload temporary_payload)]
-                                                                            (..iteration wrapper archive expander module source temporary_payload (..module_aliases analysis_module))))))])]))
+                                                                            (..iteration wrapper 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 d24ad8f33..f884282eb 100644
--- a/stdlib/source/library/lux/tool/compiler/default/platform.lux
+++ b/stdlib/source/library/lux/tool/compiler/default/platform.lux
@@ -382,7 +382,7 @@
             (exception.except ..cannot_import_circular_dependency [importer importee])
 
             ... else
-            (#try.Success [])))
+            {#try.Success []}))
 
     (with_expansions [ (as_is [Archive ])
                        (as_is (Try ))
@@ -423,20 +423,20 @@
                                                                [[_ dependence] (stm.update (..depend importer module) dependence)]
                                                                (in dependence)))]
                                                (case (..verify_dependencies importer module dependence)
-                                                 (#try.Failure error)
-                                                 (in [(async.resolved (#try.Failure error))
+                                                 {#try.Failure error}
+                                                 (in [(async.resolved {#try.Failure error})
                                                       #.None])
 
-                                                 (#try.Success _)
+                                                 {#try.Success _}
                                                  (do !
                                                    [[archive state] (stm.read current)]
                                                    (if (archive.archived? archive module)
-                                                     (in [(async\in (#try.Success [archive state]))
+                                                     (in [(async\in {#try.Success [archive state]})
                                                           #.None])
                                                      (do !
                                                        [@pending (stm.read pending)]
                                                        (case (dictionary.value module @pending)
-                                                         (#.Some [return signal])
+                                                         {#.Some [return signal]}
                                                          (in [return
                                                               #.None])
                                                          
@@ -446,7 +446,7 @@
                                                                    [module_id (archive.id module archive)]
                                                                    (in [module_id archive]))
                                                                  (archive.reserve module archive))
-                                                           (#try.Success [module_id archive])
+                                                           {#try.Success [module_id archive]}
                                                            (do !
                                                              [_ (stm.write [archive state] current)
                                                               .let [[return signal] (:sharing []
@@ -457,31 +457,31 @@
                                                                                               (async.async []))]
                                                               _ (stm.update (dictionary.has module [return signal]) pending)]
                                                              (in [return
-                                                                  (#.Some [[archive state]
+                                                                  {#.Some [[archive state]
                                                                            module_id
-                                                                           signal])]))
+                                                                           signal]}]))
                                                            
-                                                           (#try.Failure error)
-                                                           (in [(async\in (#try.Failure error))
+                                                           {#try.Failure error}
+                                                           (in [(async\in {#try.Failure error})
                                                                 #.None])))))))))))
                  _ (case signal
                      #.None
                      (in [])
                      
-                     (#.Some [context module_id resolver])
+                     {#.Some [context module_id resolver]}
                      (do !
                        [result (compile importer import! module_id context module)
                         result (case result
-                                 (#try.Failure error)
+                                 {#try.Failure error}
                                  (in result)
 
-                                 (#try.Success [resulting_archive resulting_state])
+                                 {#try.Success [resulting_archive resulting_state]}
                                  (stm.commit! (do stm.monad
                                                 [[_ [merged_archive _]] (stm.update (function (_ [archive state])
                                                                                       [(archive.merged resulting_archive archive)
                                                                                        state])
                                                                                     current)]
-                                                (in (#try.Success [merged_archive resulting_state])))))
+                                                (in {#try.Success [merged_archive resulting_state]}))))
                         _ (async.future (resolver result))]
                        (in [])))]
                 return)))))
@@ -579,7 +579,7 @@
                                                      #.End
                                                      (in [archive state])
 
-                                                     (#.Item _)
+                                                     {#.Item _}
                                                      (do !
                                                        [archive,document+ (|> new_dependencies
                                                                               (list\each (import! module))
@@ -598,27 +598,27 @@
                                            try.trusted
                                            product.left)
                                        archive)
-                                  (#try.Success [state more|done])
+                                  {#try.Success [state more|done]}
                                   (case more|done
-                                    (#.Left more)
+                                    {#.Left more}
                                     (continue! [archive state] more all_dependencies)
 
-                                    (#.Right [descriptor document output])
+                                    {#.Right [descriptor document output]}
                                     (do !
                                       [.let [_ (debug.log! (..module_compilation_log module state))
                                              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)
+                                        {#try.Success archive}
                                         (in [archive
                                              (..with_reset_log state)])
                                         
-                                        (#try.Failure error)
-                                        (async\in (#try.Failure error)))))
+                                        {#try.Failure error}
+                                        (async\in {#try.Failure error}))))
 
-                                  (#try.Failure error)
+                                  {#try.Failure error}
                                   (do !
                                     [_ (ioW.freeze (value@ #&file_system platform) static archive)]
-                                    (async\in (#try.Failure error)))))))))]
+                                    (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 35c150116..fb9566948 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux
@@ -38,12 +38,12 @@
 (type: .public Primitive
   (.Variant
    #Unit
-   (#Bit Bit)
-   (#Nat Nat)
-   (#Int Int)
-   (#Rev Rev)
-   (#Frac Frac)
-   (#Text Text)))
+   {#Bit Bit}
+   {#Nat Nat}
+   {#Int Int}
+   {#Rev Rev}
+   {#Frac Frac}
+   {#Text Text}))
 
 (type: .public Tag
   Nat)
@@ -77,15 +77,15 @@
 
 (type: .public (Composite a)
   (.Variant
-   (#Variant (Variant a))
-   (#Tuple (Tuple a))))
+   {#Variant (Variant a)}
+   {#Tuple (Tuple a)}))
 
 (type: .public Pattern
   (Rec Pattern
     (.Variant
-     (#Simple Primitive)
-     (#Complex (Composite Pattern))
-     (#Bind Register))))
+     {#Simple Primitive}
+     {#Complex (Composite Pattern)}
+     {#Bind Register})))
 
 (type: .public (Branch' e)
   (Record
@@ -101,13 +101,13 @@
 (type: .public Analysis
   (Rec Analysis
     (.Variant
-     (#Primitive Primitive)
-     (#Structure (Composite Analysis))
-     (#Reference Reference)
-     (#Case Analysis (Match' Analysis))
-     (#Function (Environment Analysis) Analysis)
-     (#Apply Analysis Analysis)
-     (#Extension (Extension Analysis)))))
+     {#Primitive Primitive}
+     {#Structure (Composite Analysis)}
+     {#Reference Reference}
+     {#Case Analysis (Match' Analysis)}
+     {#Function (Environment Analysis) Analysis}
+     {#Apply Analysis Analysis}
+     {#Extension (Extension Analysis)})))
 
 (type: .public Branch
   (Branch' Analysis))
@@ -124,7 +124,7 @@
       true
       
       (^template [ <=>]
-        [[( reference) ( sample)]
+        [[{ reference} { sample}]
          (<=> reference sample)])
       ([#Bit bit\=]
        [#Nat n.=]
@@ -141,13 +141,13 @@
   
   (def: (= reference sample)
     (case [reference sample]
-      [(#Variant [reference_lefts reference_right? reference_value])
-       (#Variant [sample_lefts sample_right? sample_value])]
+      [{#Variant [reference_lefts reference_right? reference_value]}
+       {#Variant [sample_lefts sample_right? sample_value]}]
       (and (n.= reference_lefts sample_lefts)
            (bit\= reference_right? sample_right?)
            (/\= reference_value sample_value))
       
-      [(#Tuple reference) (#Tuple sample)]
+      [{#Tuple reference} {#Tuple sample}]
       (\ (list.equivalence /\=) = reference sample)
 
       _
@@ -161,13 +161,13 @@
   
   (def: (hash value)
     (case value
-      (#Variant [lefts right? value])
+      {#Variant [lefts right? value]}
       ($_ n.* 2
           (\ n.hash hash lefts)
           (\ bit.hash hash right?)
           (\ super hash value))
       
-      (#Tuple members)
+      {#Tuple members}
       ($_ n.* 3
           (\ (list.hash super) hash members))
       )))
@@ -177,13 +177,13 @@
 
   (def: (= reference sample)
     (case [reference sample]
-      [(#Simple reference) (#Simple sample)]
+      [{#Simple reference} {#Simple sample}]
       (\ primitive_equivalence = reference sample)
       
-      [(#Complex reference) (#Complex sample)]
+      [{#Complex reference} {#Complex sample}]
       (\ (composite_equivalence =) = reference sample)
 
-      [(#Bind reference) (#Bind sample)]
+      [{#Bind reference} {#Bind sample}]
       (n.= reference sample)
 
       _
@@ -201,31 +201,31 @@
 
   (def: (= reference sample)
     (case [reference sample]
-      [(#Primitive reference) (#Primitive sample)]
+      [{#Primitive reference} {#Primitive sample}]
       (\ primitive_equivalence = reference sample)
 
-      [(#Structure reference) (#Structure sample)]
+      [{#Structure reference} {#Structure sample}]
       (\ (composite_equivalence =) = reference sample)
 
-      [(#Reference reference) (#Reference sample)]
+      [{#Reference reference} {#Reference sample}]
       (\ reference.equivalence = reference sample)
 
-      [(#Case [reference_analysis reference_match])
-       (#Case [sample_analysis sample_match])]
+      [{#Case [reference_analysis reference_match]}
+       {#Case [sample_analysis sample_match]}]
       (and (= reference_analysis sample_analysis)
-           (\ (list.equivalence (branch_equivalence =)) = (#.Item reference_match) (#.Item sample_match)))
+           (\ (list.equivalence (branch_equivalence =)) = {#.Item reference_match} {#.Item sample_match}))
 
-      [(#Function [reference_environment reference_analysis])
-       (#Function [sample_environment sample_analysis])]
+      [{#Function [reference_environment reference_analysis]}
+       {#Function [sample_environment sample_analysis]}]
       (and (= reference_analysis sample_analysis)
            (\ (list.equivalence =) = reference_environment sample_environment))
 
-      [(#Apply [reference_input reference_abstraction])
-       (#Apply [sample_input sample_abstraction])]
+      [{#Apply [reference_input reference_abstraction]}
+       {#Apply [sample_input sample_abstraction]}]
       (and (= reference_input sample_input)
            (= reference_abstraction sample_abstraction))
 
-      [(#Extension reference) (#Extension sample)]
+      [{#Extension reference} {#Extension sample}]
       (\ (extension.equivalence =) = reference sample)
 
       _
@@ -239,11 +239,11 @@
   )
 
 (template: .public (unit)
-  [(#..Primitive #..Unit)])
+  [{#..Primitive #..Unit}])
 
 (template [ ]
   [(template: .public ( value)
-     [(#..Primitive ( value))])]
+     [{#..Primitive { value}}])]
 
   [bit  #..Bit]
   [nat  #..Nat]
@@ -264,14 +264,17 @@
   (n.= (-- size) tag))
 
 (template: .public (no_op value)
-  [(|> 1 #variable.Local #reference.Variable #..Reference
-       (#..Function (list))
-       (#..Apply value))])
+  [(|> 1
+       {#variable.Local}
+       {#reference.Variable}
+       {#..Reference}
+       {#..Function (list)}
+       {#..Apply value})])
 
 (def: .public (apply [abstraction inputs])
   (-> (Application Analysis) Analysis)
   (list\mix (function (_ input abstraction')
-              (#Apply input abstraction'))
+              {#Apply input abstraction'})
             abstraction
             inputs))
 
@@ -280,39 +283,39 @@
   (loop [abstraction analysis
          inputs (list)]
     (case abstraction
-      (#Apply input next)
-      (recur next (#.Item input inputs))
+      {#Apply input next}
+      (recur next {#.Item input inputs})
 
       _
       [abstraction inputs])))
 
 (template [ ]
   [(template: .public ( content)
-     [(.<| #..Reference
+     [(.<| {#..Reference}
            
            content)])]
 
-  [variable         #reference.Variable]
-  [constant         #reference.Constant]
+  [variable         {#reference.Variable}]
+  [constant         {#reference.Constant}]
 
-  [variable/local   reference.local]
-  [variable/foreign reference.foreign]
+  [variable/local   (reference.local)]
+  [variable/foreign (reference.foreign)]
   )
 
 (template [ ]
   [(template: .public ( content)
-     [(.<| #..Complex
+     [(.<| {#..Complex}
            
            content)])]
 
-  [pattern/variant #..Variant]
-  [pattern/tuple   #..Tuple]
+  [pattern/variant {#..Variant}]
+  [pattern/tuple   {#..Tuple}]
   )
 
 (template [ ]
   [(template: .public ( content)
-     [(.<| #..Structure
-           
+     [(.<| {#..Structure}
+           {}
            content)])]
 
   [variant #..Variant]
@@ -320,11 +323,11 @@
   )
 
 (template: .public (pattern/unit)
-  [(#..Simple #..Unit)])
+  [{#..Simple #..Unit}])
 
 (template [ ]
   [(template: .public ( content)
-     [(#..Simple ( content))])]
+     [{#..Simple { content}}])]
   
   [pattern/bit  #..Bit]
   [pattern/nat  #..Nat]
@@ -335,18 +338,18 @@
   )
 
 (template: .public (pattern/bind register)
-  [(#..Bind register)])
+  [{#..Bind register}])
 
 (def: .public (%analysis analysis)
   (Format Analysis)
   (case analysis
-    (#Primitive primitive)
+    {#Primitive primitive}
     (case primitive
       #Unit
       "[]"
 
       (^template [ ]
-        [( value)
+        [{ value}
          ( value)])
       ([#Bit %.bit]
        [#Nat %.nat]
@@ -355,24 +358,24 @@
        [#Frac %.frac]
        [#Text %.text]))
     
-    (#Structure structure)
+    {#Structure structure}
     (case structure
-      (#Variant [lefts right? value])
+      {#Variant [lefts right? value]}
       (format "(" (%.nat lefts) " " (%.bit right?) " " (%analysis value) ")")
       
-      (#Tuple members)
+      {#Tuple members}
       (|> members
           (list\each %analysis)
           (text.interposed " ")
           (text.enclosed ["[" "]"])))
     
-    (#Reference reference)
+    {#Reference reference}
     (reference.format reference)
     
-    (#Case analysis match)
+    {#Case analysis match}
     "{?}"
     
-    (#Function environment body)
+    {#Function environment body}
     (|> (%analysis body)
         (format " ")
         (format (|> environment
@@ -381,15 +384,15 @@
                     (text.enclosed ["[" "]"])))
         (text.enclosed ["(" ")"]))
     
-    (#Apply _)
+    {#Apply _}
     (|> analysis
         ..application
-        #.Item
+        {#.Item}
         (list\each %analysis)
         (text.interposed " ")
         (text.enclosed ["(" ")"]))
     
-    (#Extension name parameters)
+    {#Extension name parameters}
     (|> parameters
         (list\each %analysis)
         (text.interposed " ")
@@ -412,12 +415,12 @@
   (function (_ [bundle state])
     (let [old_source (value@ #.source state)]
       (case (action [bundle (with@ #.source source state)])
-        (#try.Success [[bundle' state'] output])
-        (#try.Success [[bundle' (with@ #.source old_source state')]
-                       output])
+        {#try.Success [[bundle' state'] output]}
+        {#try.Success [[bundle' (with@ #.source old_source state')]
+                       output]}
 
-        (#try.Failure error)
-        (#try.Failure error)))))
+        {#try.Failure error}
+        {#try.Failure error}))))
 
 (def: fresh_bindings
   (All (_ k v) (Bindings k v))
@@ -434,18 +437,18 @@
 (def: .public (with_scope action)
   (All (_ a) (-> (Operation a) (Operation [Scope a])))
   (function (_ [bundle state])
-    (case (action [bundle (revised@ #.scopes (|>> (#.Item fresh_scope)) state)])
-      (#try.Success [[bundle' state'] output])
+    (case (action [bundle (revised@ #.scopes (|>> {#.Item fresh_scope}) state)])
+      {#try.Success [[bundle' state'] output]}
       (case (value@ #.scopes state')
-        (#.Item head tail)
-        (#try.Success [[bundle' (with@ #.scopes tail state')]
-                       [head output]])
+        {#.Item head tail}
+        {#try.Success [[bundle' (with@ #.scopes tail state')]
+                       [head output]]}
 
         #.End
-        (#try.Failure "Impossible error: Drained scopes!"))
+        {#try.Failure "Impossible error: Drained scopes!"})
 
-      (#try.Failure error)
-      (#try.Failure error))))
+      {#try.Failure error}
+      {#try.Failure error})))
 
 (def: scope_reset
   (List Scope)
@@ -455,18 +458,18 @@
   (All (_ a) (-> (Operation a) (Operation a)))
   (function (_ [bundle state])
     (case (action [bundle (with@ #.scopes ..scope_reset state)])
-      (#try.Success [[bundle' state'] output])
-      (#try.Success [[bundle' (with@ #.scopes (value@ #.scopes state) state')]
-                     output])
+      {#try.Success [[bundle' state'] output]}
+      {#try.Success [[bundle' (with@ #.scopes (value@ #.scopes state) state')]
+                     output]}
 
-      (#try.Failure error)
-      (#try.Failure error))))
+      {#try.Failure error}
+      {#try.Failure error})))
 
 (def: .public (with_current_module name)
   (All (_ a) (-> Text (Operation a) (Operation a)))
   (extension.localized (value@ #.current_module)
                        (with@ #.current_module)
-                       (function.constant (#.Some name))))
+                       (function.constant {#.Some name})))
 
 (def: .public (with_location location action)
   (All (_ a) (-> Location (Operation a) (Operation a)))
@@ -475,12 +478,12 @@
     (function (_ [bundle state])
       (let [old_location (value@ #.location state)]
         (case (action [bundle (with@ #.location location state)])
-          (#try.Success [[bundle' state'] output])
-          (#try.Success [[bundle' (with@ #.location old_location state')]
-                         output])
+          {#try.Success [[bundle' state'] output]}
+          {#try.Success [[bundle' (with@ #.location old_location state')]
+                         output]}
 
-          (#try.Failure error)
-          (#try.Failure error))))))
+          {#try.Failure error}
+          {#try.Failure error})))))
 
 (def: (locate_error location error)
   (-> Location Text Text)
@@ -490,7 +493,7 @@
 (def: .public (failure error)
   (-> Text Operation)
   (function (_ [bundle state])
-    (#try.Failure (locate_error (value@ #.location state) error))))
+    {#try.Failure (locate_error (value@ #.location state) error)}))
 
 (def: .public (except exception parameters)
   (All (_ e) (-> (Exception e) e Operation))
@@ -505,7 +508,7 @@
 (def: .public (failure' error)
   (-> Text (phase.Operation Lux))
   (function (_ state)
-    (#try.Failure (locate_error (value@ #.location state) error))))
+    {#try.Failure (locate_error (value@ #.location state) error)}))
 
 (def: .public (except' exception parameters)
   (All (_ e) (-> (Exception e) e (phase.Operation Lux)))
@@ -516,18 +519,18 @@
   (function (_ bundle,state)
     (case (exception.with exception message
             (action bundle,state))
-      (#try.Success output)
-      (#try.Success output)
+      {#try.Success output}
+      {#try.Success output}
       
-      (#try.Failure error)
+      {#try.Failure error}
       (let [[bundle state] bundle,state]
-        (#try.Failure (locate_error (value@ #.location state) error))))))
+        {#try.Failure (locate_error (value@ #.location state) error)}))))
 
 (def: .public (install state)
   (-> .Lux (Operation Any))
   (function (_ [bundle _])
-    (#try.Success [[bundle state]
-                   []])))
+    {#try.Success [[bundle state]
+                   []]}))
 
 (template [   ]
   [(def: .public ( value)
@@ -535,7 +538,7 @@
      (extension.update (with@  )))]
 
   [set_source_code    Source   #.source         value]
-  [set_current_module Text     #.current_module (#.Some value)]
+  [set_current_module Text     #.current_module {#.Some value}]
   [set_location       Location #.location       value]
   )
 
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/analysis/macro.lux b/stdlib/source/library/lux/tool/compiler/language/lux/analysis/macro.lux
index 0b9e317fe..ed5983d14 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/analysis/macro.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/analysis/macro.lux
@@ -38,10 +38,10 @@
     (do try.monad
       [output (expander macro inputs state)]
       (case output
-        (#try.Success output)
-        (#try.Success output)
+        {#try.Success output}
+        {#try.Success output}
         
-        (#try.Failure error)
+        {#try.Failure error}
         ((meta.failure (exception.error ..expansion_failed [name inputs error])) state)))))
 
 (def: .public (expand_one expander name macro inputs)
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 dd8d86836..cd74d94f4 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux
@@ -70,7 +70,7 @@
      (All (_ anchor expression directive)
        (Operation anchor expression directive ))
      (function (_ [bundle state])
-       (#try.Success [[bundle state] (value@ [ #..phase] state)])))]
+       {#try.Success [[bundle state] (value@ [ #..phase] state)]}))]
 
   [analysis   #..analysis   analysis.Phase]
   [synthesis  #..synthesis  synthesis.Phase]
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 7ed71e658..72a086650 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux
@@ -115,21 +115,21 @@
      (All (_ anchor expression directive output) )
      (function (_ body)
        (function (_ [bundle state])
-         (case (body [bundle (with@  (#.Some ) state)])
-           (#try.Success [[bundle' state'] output])
-           (#try.Success [[bundle' (with@  (value@  state) state')]
-                          output])
+         (case (body [bundle (with@  {#.Some } state)])
+           {#try.Success [[bundle' state'] output]}
+           {#try.Success [[bundle' (with@  (value@  state) state')]
+                          output]}
 
-           (#try.Failure error)
-           (#try.Failure error)))))
+           {#try.Failure error}
+           {#try.Failure error}))))
 
    (def: .public 
      (All (_ anchor expression directive)
        (Operation anchor expression directive ))
      (function (_ (^@ stateE [bundle state]))
        (case (value@  state)
-         (#.Some output)
-         (#try.Success [stateE output])
+         {#.Some output}
+         {#try.Success [stateE output]}
 
          #.None
          (exception.except  []))))
@@ -138,8 +138,8 @@
      (All (_ anchor expression directive)
        (->  (Operation anchor expression directive Any)))
      (function (_ [bundle state])
-       (#try.Success [[bundle (with@  (#.Some value) state)]
-                      []])))]
+       {#try.Success [[bundle (with@  {#.Some value} state)]
+                      []]}))]
 
   [#anchor
    (with_anchor anchor)
@@ -160,14 +160,14 @@
   (All (_ anchor expression directive)
     (Operation anchor expression directive artifact.Registry))
   (function (_ (^@ stateE [bundle state]))
-    (#try.Success [stateE (value@ #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 (with@ #registry value state)]
-                   []])))
+    {#try.Success [[bundle (with@ #registry value state)]
+                   []]}))
 
 (def: .public next
   (All (_ anchor expression directive)
@@ -197,10 +197,10 @@
     (-> Context expression (Operation anchor expression directive Any)))
   (function (_ (^@ state+ [bundle state]))
     (case (\ (value@ #host state) evaluate! label code)
-      (#try.Success output)
-      (#try.Success [state+ output])
+      {#try.Success output}
+      {#try.Success [state+ output]}
 
-      (#try.Failure error)
+      {#try.Failure error}
       (exception.except ..cannot_interpret error))))
 
 (def: .public (execute! code)
@@ -208,10 +208,10 @@
     (-> directive (Operation anchor expression directive Any)))
   (function (_ (^@ state+ [bundle state]))
     (case (\ (value@ #host state) execute! code)
-      (#try.Success output)
-      (#try.Success [state+ output])
+      {#try.Success output}
+      {#try.Success [state+ output]}
 
-      (#try.Failure error)
+      {#try.Failure error}
       (exception.except ..cannot_interpret error))))
 
 (def: .public (define! context custom code)
@@ -219,10 +219,10 @@
     (-> Context (Maybe Text) expression (Operation anchor expression directive [Text Any directive])))
   (function (_ (^@ stateE [bundle state]))
     (case (\ (value@ #host state) define! context custom code)
-      (#try.Success output)
-      (#try.Success [stateE output])
+      {#try.Success output}
+      {#try.Success [stateE output]}
 
-      (#try.Failure error)
+      {#try.Failure error}
       (exception.except ..cannot_interpret error))))
 
 (def: .public (save! artifact_id custom code)
@@ -231,11 +231,11 @@
   (do [! phase.monad]
     [?buffer (extension.read (value@ #buffer))]
     (case ?buffer
-      (#.Some 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 (with@ #buffer (#.Some (row.suffix [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]))))
@@ -246,8 +246,8 @@
        (-> Text (Operation anchor expression directive artifact.ID)))
      (function (_ (^@ stateE [bundle state]))
        (let [[id registry'] ( name (value@ #registry state))]
-         (#try.Success [[bundle (with@ #registry registry' state)]
-                        id]))))]
+         {#try.Success [[bundle (with@ #registry registry' state)]
+                        id]})))]
 
   [learn artifact.definition]
   [learn_custom artifact.custom]
@@ -272,16 +272,16 @@
       (do try.monad
         [module_id (archive.id _module archive)
          registry (if (text\= (value@ #module state) _module)
-                    (#try.Success (value@ #registry state))
+                    {#try.Success (value@ #registry state)}
                     (do try.monad
                       [[descriptor document] (archive.find _module archive)]
-                      (#try.Success (value@ #descriptor.registry descriptor))))]
+                      {#try.Success (value@ #descriptor.registry descriptor)}))]
         (case (artifact.remember _name registry)
           #.None
           (exception.except ..unknown_definition [name (artifact.definitions registry)])
           
-          (#.Some id)
-          (#try.Success [stateE [module_id id]]))))))
+          {#.Some id}
+          {#try.Success [stateE [module_id id]]})))))
 
 (exception: .public no_context)
 
@@ -301,7 +301,7 @@
       #.None
       (exception.except ..no_context [])
       
-      (#.Some id)
+      {#.Some id}
       (do try.monad
         [module_id (archive.id (value@ #module state) archive)]
         (in [stateE [module_id id]])))))
@@ -313,7 +313,7 @@
         (Operation anchor expression directive a)))
   (function (_ [bundle state])
     (do try.monad
-      [[[bundle' state'] output] (body [bundle (with@ #context (#.Some id) state)])]
+      [[[bundle' state'] output] (body [bundle (with@ #context {#.Some id} state)])]
       (in [[bundle' (with@ #context (value@ #context state) state')]
            output]))))
 
@@ -326,7 +326,7 @@
       (do try.monad
         [[[bundle' state'] output] (body [bundle (|> state
                                                      (with@ #registry registry')
-                                                     (with@ #context (#.Some id)))])
+                                                     (with@ #context {#.Some id}))])
          module_id (archive.id (value@ #module state) archive)]
         (in [[bundle' (with@ #context (value@ #context state) state')]
              [[module_id id]
@@ -336,6 +336,6 @@
   (All (_ anchor expression directive a)
     (-> Text (Operation anchor expression directive Any)))
   (function (_ [bundle state])
-    (#try.Success [[bundle
+    {#try.Success [[bundle
                     (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 c8c2b9fd3..53968905c 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
@@ -41,7 +41,7 @@
   (-> Archive Phase (Fix (-> (Code' (Ann Location)) (Operation Analysis))))
   (case code'
     (^template [ ]
-      [( value)
+      [{ value}
        ( value)])
     ([#.Bit  /primitive.bit]
      [#.Nat  /primitive.nat]
@@ -50,28 +50,28 @@
      [#.Frac /primitive.frac]
      [#.Text /primitive.text])
 
-    (^ (#.Form (list& [_ (#.Tag tag)]
-                      values)))
+    (^ {#.Form (list& [_ {#.Tag tag}]
+                      values)})
     (case values
-      (#.Item value #.End)
+      {#.Item value #.End}
       (/structure.tagged_sum compile tag archive value)
 
       _
       (/structure.tagged_sum compile tag archive (` [(~+ values)])))
 
-    (^ (#.Form (list& [_ (#.Nat lefts)] [_ (#.Bit right?)]
-                      values)))
+    (^ {#.Form (list& [_ {#.Nat lefts}] [_ {#.Bit right?}]
+                      values)})
     (case values
-      (#.Item value #.End)
+      {#.Item value #.End}
       (/structure.sum compile lefts right? archive value)
 
       _
       (/structure.sum compile lefts right? archive (` [(~+ values)])))
 
-    (#.Tag tag)
+    {#.Tag tag}
     (/structure.tagged_sum compile tag archive (' []))
 
-    (^ (#.Tuple elems))
+    (^ {#.Tuple elems})
     (/structure.record archive compile elems)
 
     _
@@ -80,30 +80,30 @@
 (def: (compile|others expander archive compile code')
   (-> Expander Archive Phase (-> (Code' (Ann Location)) (Operation Analysis)))
   (case code'
-    (#.Identifier reference)
+    {#.Identifier reference}
     (/reference.reference reference)
 
-    (^ (#.Form (list [_ (#.Record branches)] input)))
+    (^ {#.Form (list [_ {#.Record branches}] input)})
     (/case.case compile branches archive input)
 
-    (^ (#.Form (list& [_ (#.Text extension_name)] extension_args)))
+    (^ {#.Form (list& [_ {#.Text extension_name}] extension_args)})
     (//extension.apply archive compile [extension_name extension_args])
 
-    (^ (#.Form (list [_ (#.Tuple (list [_ (#.Identifier ["" function_name])]
-                                       [_ (#.Identifier ["" arg_name])]))]
-                     body)))
+    (^ {#.Form (list [_ {#.Tuple (list [_ {#.Identifier ["" function_name]}]
+                                       [_ {#.Identifier ["" arg_name]}])}]
+                     body)})
     (/function.function compile function_name arg_name archive body)
 
-    (^ (#.Form (list& functionC argsC+)))
+    (^ {#.Form (list& functionC argsC+)})
     (do [! //.monad]
       [[functionT functionA] (/type.with_inference
                                (compile archive functionC))]
       (case functionA
-        (#/.Reference (#reference.Constant def_name))
+        {#/.Reference {#reference.Constant def_name}}
         (do !
           [?macro (//extension.lifted (meta.macro def_name))]
           (case ?macro
-            (#.Some macro)
+            {#.Some macro}
             (do !
               [expansion (//extension.lifted (/macro.expand_one expander def_name macro argsC+))]
               (compile archive expansion))
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 ec8fb396e..d7a7bf6ab 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
@@ -69,8 +69,8 @@
     #.End
     baseT
 
-    (#.Item head tail)
-    (re_quantify tail (#.UnivQ head baseT))))
+    {#.Item head tail}
+    (re_quantify tail {#.UnivQ head baseT})))
 
 ... Type-checking on the input value is done during the analysis of a
 ... "case" expression, to ensure that the patterns being used make
@@ -85,53 +85,53 @@
                  (list))
          caseT caseT]
     (.case caseT
-      (#.Var id)
+      {#.Var id}
       (do ///.monad
         [?caseT' (//type.with_env
                    (check.peek id))]
         (.case ?caseT'
-          (#.Some caseT')
+          {#.Some caseT'}
           (recur envs caseT')
 
           _
           (/.except ..cannot_simplify_for_pattern_matching caseT)))
 
-      (#.Named name unnamedT)
+      {#.Named name unnamedT}
       (recur envs unnamedT)
 
-      (#.UnivQ env unquantifiedT)
-      (recur (#.Item env envs) unquantifiedT)
+      {#.UnivQ env unquantifiedT}
+      (recur {#.Item env envs} unquantifiedT)
 
-      (#.ExQ _)
+      {#.ExQ _}
       (do ///.monad
         [[var_id varT] (//type.with_env
                          check.var)]
         (recur envs (maybe.trusted (type.applied (list varT) caseT))))
 
-      (#.Apply inputT funcT)
+      {#.Apply inputT funcT}
       (.case funcT
-        (#.Var funcT_id)
+        {#.Var funcT_id}
         (do ///.monad
           [funcT' (//type.with_env
                     (do check.monad
                       [?funct' (check.peek funcT_id)]
                       (.case ?funct'
-                        (#.Some funct')
+                        {#.Some funct'}
                         (in funct')
 
                         _
                         (check.except ..cannot_simplify_for_pattern_matching caseT))))]
-          (recur envs (#.Apply inputT funcT')))
+          (recur envs {#.Apply inputT funcT'}))
 
         _
         (.case (type.applied (list inputT) funcT)
-          (#.Some outputT)
+          {#.Some outputT}
           (recur envs outputT)
 
           #.None
           (/.except ..cannot_simplify_for_pattern_matching caseT)))
 
-      (#.Product _)
+      {#.Product _}
       (|> caseT
           type.flat_tuple
           (list\each (re_quantify envs))
@@ -169,56 +169,56 @@
 (def: (analyse_pattern num_tags inputT pattern next)
   (All (_ a) (-> (Maybe Nat) Type Code (Operation a) (Operation [Pattern a])))
   (.case pattern
-    [location (#.Identifier ["" name])]
+    [location {#.Identifier ["" name]}]
     (/.with_location location
       (do ///.monad
         [outputA (//scope.with_local [name inputT]
                    next)
          idx //scope.next_local]
-        (in [(#/.Bind idx) outputA])))
+        (in [{#/.Bind idx} outputA])))
 
     (^template [  ]
       [[location ]
-       (analyse_primitive  inputT location (#/.Simple ) next)])
-    ([Bit  (#.Bit pattern_value)  (#/.Bit pattern_value)]
-     [Nat  (#.Nat pattern_value)  (#/.Nat pattern_value)]
-     [Int  (#.Int pattern_value)  (#/.Int pattern_value)]
-     [Rev  (#.Rev pattern_value)  (#/.Rev pattern_value)]
-     [Frac (#.Frac pattern_value) (#/.Frac pattern_value)]
-     [Text (#.Text pattern_value) (#/.Text pattern_value)]
-     [Any  (#.Tuple #.End)        #/.Unit])
+       (analyse_primitive  inputT location {#/.Simple } next)])
+    ([Bit  {#.Bit pattern_value}  {#/.Bit pattern_value}]
+     [Nat  {#.Nat pattern_value}  {#/.Nat pattern_value}]
+     [Int  {#.Int pattern_value}  {#/.Int pattern_value}]
+     [Rev  {#.Rev pattern_value}  {#/.Rev pattern_value}]
+     [Frac {#.Frac pattern_value} {#/.Frac pattern_value}]
+     [Text {#.Text pattern_value} {#/.Text pattern_value}]
+     [Any  {#.Tuple #.End}        #/.Unit])
     
-    (^ [location (#.Tuple (list singleton))])
+    (^ [location {#.Tuple (list singleton)}])
     (analyse_pattern #.None inputT singleton next)
     
-    [location (#.Tuple sub_patterns)]
+    [location {#.Tuple sub_patterns}]
     (do [! ///.monad]
       [record (//structure.normal sub_patterns)
        record_size,members,recordT (: (Operation (Maybe [Nat (List Code) Type]))
                                       (.case record
-                                        (#.Some record)
+                                        {#.Some record}
                                         (//structure.order record)
 
                                         #.None
                                         (in #.None)))]
       (.case record_size,members,recordT
-        (#.Some [record_size members recordT])
+        {#.Some [record_size members recordT]}
         (do !
           [_ (.case inputT
-               (#.Var _id)
+               {#.Var _id}
                (//type.with_env
                  (check.check inputT recordT))
 
                _
                (in []))]
-          (analyse_pattern (#.Some record_size) inputT [location (#.Tuple members)] next))
+          (analyse_pattern {#.Some record_size} inputT [location {#.Tuple members}] next))
         
         #.None
         (/.with_location location
           (do [! ///.monad]
             [inputT' (simplify_case inputT)]
             (.case inputT'
-              (#.Product _)
+              {#.Product _}
               (let [matches (loop [types (type.flat_tuple inputT')
                                    patterns sub_patterns
                                    output (: (List [Type Code])
@@ -227,17 +227,17 @@
                                 [#.End #.End]
                                 output
 
-                                [(#.Item headT #.End) (#.Item headP #.End)]
-                                (#.Item [headT headP] output)
+                                [{#.Item headT #.End} {#.Item headP #.End}]
+                                {#.Item [headT headP] output}
 
-                                [remainingT (#.Item headP #.End)]
-                                (#.Item [(type.tuple remainingT) headP] output)
+                                [remainingT {#.Item headP #.End}]
+                                {#.Item [(type.tuple remainingT) headP] output}
 
-                                [(#.Item headT #.End) remainingP]
-                                (#.Item [headT (code.tuple remainingP)] output)
+                                [{#.Item headT #.End} remainingP]
+                                {#.Item [headT (code.tuple remainingP)] output}
                                 
-                                [(#.Item headT tailT) (#.Item headP tailP)]
-                                (recur tailT tailP (#.Item [headT headP] output))
+                                [{#.Item headT tailT} {#.Item headP tailP}]
+                                (recur tailT tailP {#.Item [headT headP] output})
 
                                 _
                                 (undefined)))]
@@ -261,22 +261,22 @@
               _
               (/.except ..cannot_match_with_pattern [inputT' pattern]))))))
 
-    [location (#.Tag tag)]
+    [location {#.Tag tag}]
     (/.with_location location
       (analyse_pattern #.None inputT (` ((~ pattern))) next))
 
-    (^ [location (#.Form (list& [_ (#.Nat lefts)] [_ (#.Bit right?)] values))])
+    (^ [location {#.Form (list& [_ {#.Nat lefts}] [_ {#.Bit right?}] values)}])
     (/.with_location location
       (do ///.monad
         [inputT' (simplify_case inputT)]
         (.case inputT'
-          (#.Sum _)
+          {#.Sum _}
           (let [flat_sum (type.flat_variant inputT')
                 size_sum (list.size flat_sum)
                 num_cases (maybe.else size_sum num_tags)
                 idx (/.tag lefts right?)]
             (.case (list.item idx flat_sum)
-              (^multi (#.Some caseT)
+              (^multi {#.Some caseT}
                       (n.< num_cases idx))
               (do ///.monad
                 [[testP nextA] (if (and (n.> num_cases size_sum)
@@ -292,7 +292,7 @@
               _
               (/.except ..sum_has_no_case [idx inputT])))
 
-          (#.UnivQ _)
+          {#.UnivQ _}
           (do ///.monad
             [[ex_id exT] (//type.with_env
                            check.existential)]
@@ -304,7 +304,7 @@
           _
           (/.except ..cannot_match_with_pattern [inputT' pattern]))))
 
-    (^ [location (#.Form (list& [_ (#.Tag tag)] values))])
+    (^ [location {#.Form (list& [_ {#.Tag tag}] values)}])
     (/.with_location location
       (do ///.monad
         [tag (///extension.lifted (meta.normal tag))
@@ -312,7 +312,7 @@
          _ (//type.with_env
              (check.check inputT variantT))
          .let [[lefts right?] (/.choice (list.size group) idx)]]
-        (analyse_pattern (#.Some (list.size group)) inputT (` ((~ (code.nat lefts)) (~ (code.bit right?)) (~+ values))) next)))
+        (analyse_pattern {#.Some (list.size group)} inputT (` ((~ (code.nat lefts)) (~ (code.bit right?)) (~+ values))) next)))
 
     _
     (/.except ..not_a_pattern pattern)
@@ -321,7 +321,7 @@
 (def: .public (case analyse branches archive inputC)
   (-> Phase (List [Code Code]) Phase)
   (.case branches
-    (#.Item [patternH bodyH] branchesT)
+    {#.Item [patternH bodyH] branchesT}
     (do [! ///.monad]
       [[inputT inputA] (//type.with_inference
                          (analyse archive inputC))
@@ -333,13 +333,13 @@
        outputHC (|> outputH product.left /coverage.determine)
        outputTC (monad.each ! (|>> product.left /coverage.determine) outputT)
        _ (.case (monad.mix try.monad /coverage.merged outputHC outputTC)
-           (#try.Success coverage)
+           {#try.Success coverage}
            (///.assertion non_exhaustive_pattern_matching [inputC branches coverage]
                           (/coverage.exhaustive? coverage))
 
-           (#try.Failure error)
+           {#try.Failure error}
            (/.failure error))]
-      (in (#/.Case inputA [outputH outputT])))
+      (in {#/.Case inputA [outputH outputT]}))
 
     #.End
     (/.except ..cannot_have_empty_branches "")))
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 5dcedd669..70623af8a 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
@@ -51,16 +51,16 @@
   (Rec Coverage
     (.Variant
      #Partial
-     (#Bit Bit)
-     (#Variant (Maybe Nat) (Dictionary Nat Coverage))
-     (#Seq Coverage Coverage)
-     (#Alt Coverage Coverage)
+     {#Bit Bit}
+     {#Variant (Maybe Nat) (Dictionary Nat Coverage)}
+     {#Seq Coverage Coverage}
+     {#Alt Coverage Coverage}
      #Exhaustive)))
 
 (def: .public (exhaustive? coverage)
   (-> Coverage Bit)
   (case coverage
-    (#Exhaustive _)
+    {#Exhaustive _}
     #1
 
     _
@@ -72,12 +72,12 @@
     #Partial
     "#Partial"
     
-    (#Bit value')
+    {#Bit value'}
     (|> value'
         %.bit
-        (text.enclosed ["(#Bit " ")"]))
+        (text.enclosed ["{#Bit " "}"]))
     
-    (#Variant ?max_cases cases)
+    {#Variant ?max_cases cases}
     (|> cases
         dictionary.entries
         (list\each (function (_ [idx coverage])
@@ -85,13 +85,13 @@
         (text.interposed " ")
         (text.enclosed ["{" "}"])
         (format (%.nat (..cases ?max_cases)) " ")
-        (text.enclosed ["(#Variant " ")"]))
+        (text.enclosed ["{#Variant " "}"]))
 
-    (#Seq left right)
-    (format "(#Seq " (%coverage left) " " (%coverage right) ")")
+    {#Seq left right}
+    (format "{#Seq " (%coverage left) " " (%coverage right) "}")
     
-    (#Alt left right)
-    (format "(#Alt " (%coverage left) " " (%coverage right) ")")
+    {#Alt left right}
+    (format "{#Alt " (%coverage left) " " (%coverage right) "}")
 
     #Exhaustive
     "#Exhaustive"))
@@ -99,14 +99,14 @@
 (def: .public (determine pattern)
   (-> Pattern (Operation Coverage))
   (case pattern
-    (^or (#/.Simple #/.Unit)
-         (#/.Bind _))
+    (^or {#/.Simple #/.Unit}
+         {#/.Bind _})
     (////\in #Exhaustive)
 
     ... Primitive patterns always have partial coverage because there
     ... are too many possibilities as far as values go.
     (^template []
-      [(#/.Simple ( _))
+      [{#/.Simple { _}}
        (////\in #Partial)])
     ([#/.Nat]
      [#/.Int]
@@ -117,17 +117,17 @@
     ... Bits are the exception, since there is only "#1" and
     ... "#0", which means it is possible for bit
     ... pattern-matching to become exhaustive if complementary parts meet.
-    (#/.Simple (#/.Bit value))
-    (////\in (#Bit value))
+    {#/.Simple {#/.Bit value}}
+    (////\in {#Bit value})
 
     ... Tuple patterns can be exhaustive if there is exhaustiveness for all of
     ... their sub-patterns.
-    (#/.Complex (#/.Tuple membersP+))
+    {#/.Complex {#/.Tuple membersP+}}
     (case (list.reversed membersP+)
-      (^or #.End (#.Item _ #.End))
+      (^or #.End {#.Item _ #.End})
       (/.except ..invalid_tuple_pattern [])
       
-      (#.Item lastP prevsP+)
+      {#.Item lastP prevsP+}
       (do ////.monad
         [lastC (determine lastP)]
         (monad.mix ////.monad
@@ -139,22 +139,22 @@
                          (in leftC)
 
                          _
-                         (in (#Seq leftC rightC)))))
+                         (in {#Seq leftC rightC}))))
                    lastC prevsP+)))
 
     ... Variant patterns can be shown to be exhaustive if all the possible
     ... cases are handled exhaustively.
-    (#/.Complex (#/.Variant [lefts right? value]))
+    {#/.Complex {#/.Variant [lefts right? value]}}
     (do ////.monad
       [value_coverage (determine value)
        .let [idx (if right?
                    (++ lefts)
                    lefts)]]
-      (in (#Variant (if right?
-                      (#.Some idx)
+      (in {#Variant (if right?
+                      {#.Some idx}
                       #.None)
-                    (|> (dictionary.empty n.hash)
-                        (dictionary.has idx value_coverage)))))))
+           (|> (dictionary.empty n.hash)
+               (dictionary.has idx value_coverage))}))))
 
 (def: (xor left right)
   (-> Bit Bit Bit)
@@ -176,7 +176,7 @@
 (def: (flat_alt coverage)
   (-> Coverage (List Coverage))
   (case coverage
-    (#Alt left right)
+    {#Alt left right}
     (list& left (flat_alt right))
 
     _
@@ -188,19 +188,19 @@
       [#Exhaustive #Exhaustive]
       #1
 
-      [(#Bit sideR) (#Bit sideS)]
+      [{#Bit sideR} {#Bit sideS}]
       (bit\= sideR sideS)
 
-      [(#Variant allR casesR) (#Variant allS casesS)]
+      [{#Variant allR casesR} {#Variant allS casesS}]
       (and (n.= (cases allR)
                 (cases allS))
            (\ (dictionary.equivalence =) = casesR casesS))
       
-      [(#Seq leftR rightR) (#Seq leftS rightS)]
+      [{#Seq leftR rightR} {#Seq leftS rightS}]
       (and (= leftR leftS)
            (= rightR rightS))
 
-      [(#Alt _) (#Alt _)]
+      [{#Alt _} {#Alt _}]
       (let [flatR (flat_alt reference)
             flatS (flat_alt sample)]
         (and (n.= (list.size flatR) (list.size flatS))
@@ -230,11 +230,11 @@
     (try\in #Partial)
 
     ... 2 bit coverages are exhaustive if they complement one another.
-    (^multi [(#Bit sideA) (#Bit sideSF)]
+    (^multi [{#Bit sideA} {#Bit sideSF}]
             (xor sideA sideSF))
     (try\in #Exhaustive)
 
-    [(#Variant allA casesA) (#Variant allSF casesSF)]
+    [{#Variant allA casesA} {#Variant allSF casesSF}]
     (let [addition_cases (cases allSF)
           so_far_cases (cases allA)]
       (cond (and (known_cases? addition_cases)
@@ -250,7 +250,7 @@
               [casesM (monad.mix !
                                  (function (_ [tagA coverageA] casesSF')
                                    (case (dictionary.value tagA casesSF')
-                                     (#.Some coverageSF)
+                                     {#.Some coverageSF}
                                      (do !
                                        [coverageM (merged coverageA coverageSF)]
                                        (in (dictionary.has tagA coverageM casesSF')))
@@ -264,15 +264,15 @@
                                 (dictionary.size casesM))
                            (list.every? exhaustive? (dictionary.values casesM)))
                     #Exhaustive
-                    (#Variant (case allSF
-                                (#.Some _)
+                    {#Variant (case allSF
+                                {#.Some _}
                                 allSF
 
                                 _
                                 allA)
-                              casesM))))))
+                     casesM})))))
 
-    [(#Seq leftA rightA) (#Seq leftSF rightSF)]
+    [{#Seq leftA rightA} {#Seq leftSF rightSF}]
     (case [(coverage/= leftSF leftA) (coverage/= rightSF rightA)]
       ... Same prefix
       [#1 #0]
@@ -283,17 +283,17 @@
           ... (since only the "left" part would influence whether the
           ... merged coverage is exhaustive or not).
           (in leftSF)
-          (in (#Seq leftSF rightM))))
+          (in {#Seq leftSF rightM})))
 
       ... Same suffix
       [#0 #1]
       (do try.monad
         [leftM (merged leftA leftSF)]
-        (in (#Seq leftM rightA)))
+        (in {#Seq leftM rightA}))
 
       ... The 2 sequences cannot possibly be merged.
       [#0 #0]
-      (try\in (#Alt so_far addition))
+      (try\in {#Alt so_far addition})
 
       ... There is nothing the addition adds to the coverage.
       [#1 #1]
@@ -308,12 +308,12 @@
     (try\in #Exhaustive)
     
     ... The left part will always match, so the addition is redundant.
-    (^multi [(#Seq left right) single]
+    (^multi [{#Seq left right} single]
             (coverage/= left single))
     (exception.except ..redundant_pattern [so_far addition])
 
     ... The right part is not necessary, since it can always match the left.
-    (^multi [single (#Seq left right)]
+    (^multi [single {#Seq left right}]
             (coverage/= left single))
     (try\in single)
 
@@ -326,7 +326,7 @@
     ... other ones in the original Alt.
     ... This process must be repeated until no further productive
     ... merges can be done.
-    [_ (#Alt leftS rightS)]
+    [_ {#Alt leftS rightS}]
     (do [! try.monad]
       [.let [fuse_once (: (-> Coverage (List Coverage)
                               (Try [(Maybe Coverage)
@@ -337,34 +337,34 @@
                                 #.End
                                 (in [#.None (list coverageA)])
                                 
-                                (#.Item altSF altsSF')
+                                {#.Item altSF altsSF'}
                                 (case (merged coverageA altSF)
-                                  (#try.Success altMSF)
+                                  {#try.Success altMSF}
                                   (case altMSF
-                                    (#Alt _)
+                                    {#Alt _}
                                     (do !
                                       [[success altsSF+] (recur altsSF')]
-                                      (in [success (#.Item altSF altsSF+)]))
+                                      (in [success {#.Item altSF altsSF+}]))
 
                                     _
-                                    (in [(#.Some altMSF) altsSF']))
+                                    (in [{#.Some altMSF} altsSF']))
                                   
-                                  (#try.Failure error)
-                                  (#try.Failure error))
+                                  {#try.Failure error}
+                                  {#try.Failure error})
                                 ))))]
        [successA possibilitiesSF] (fuse_once addition (flat_alt so_far))]
       (loop [successA successA
              possibilitiesSF possibilitiesSF]
         (case successA
-          (#.Some coverageA')
+          {#.Some coverageA'}
           (do !
             [[successA' possibilitiesSF'] (fuse_once coverageA' possibilitiesSF)]
             (recur successA' possibilitiesSF'))
           
           #.None
           (case (list.reversed possibilitiesSF)
-            (#.Item last prevs)
-            (in (list\mix (function (_ left right) (#Alt left right))
+            {#.Item last prevs}
+            (in (list\mix (function (_ left right) {#Alt left right})
                           last
                           prevs))
 
@@ -376,4 +376,4 @@
       ... The addition cannot possibly improve the coverage.
       (exception.except ..redundant_pattern [so_far addition])
       ... There are now 2 alternative paths.
-      (try\in (#Alt so_far addition)))))
+      (try\in {#Alt so_far addition}))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/function.lux
index fe0a32584..c0733c07a 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/function.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/function.lux
@@ -54,31 +54,31 @@
     (loop [expectedT functionT]
       (/.with_stack ..cannot_analyse [expectedT function_name arg_name body]
         (case expectedT
-          (#.Named name unnamedT)
+          {#.Named name unnamedT}
           (recur unnamedT)
 
-          (#.Apply argT funT)
+          {#.Apply argT funT}
           (case (type.applied (list argT) funT)
-            (#.Some value)
+            {#.Some value}
             (recur value)
 
             #.None
             (/.failure (ex.error cannot_analyse [expectedT function_name arg_name body])))
 
           (^template [ ]
-            [( _)
+            [{ _}
              (do !
                [[_ instanceT] (//type.with_env )]
                (recur (maybe.trusted (type.applied (list instanceT) expectedT))))])
           ([#.UnivQ check.existential]
            [#.ExQ check.var])
           
-          (#.Var id)
+          {#.Var id}
           (do !
             [?expectedT' (//type.with_env
                            (check.peek id))]
             (case ?expectedT'
-              (#.Some expectedT')
+              {#.Some expectedT'}
               (recur expectedT')
 
               ... Inference
@@ -86,17 +86,17 @@
               (do !
                 [[input_id inputT] (//type.with_env check.var)
                  [output_id outputT] (//type.with_env check.var)
-                 .let [functionT (#.Function inputT outputT)]
+                 .let [functionT {#.Function inputT outputT}]
                  functionA (recur functionT)
                  _ (//type.with_env
                      (check.check expectedT functionT))]
                 (in functionA))))
 
-          (#.Function inputT outputT)
+          {#.Function inputT outputT}
           (<| (\ ! each (.function (_ [scope bodyA])
-                          (#/.Function (list\each (|>> /.variable)
+                          {#/.Function (list\each (|>> /.variable)
                                                   (//scope.environment scope))
-                                       bodyA)))
+                           bodyA}))
               /.with_scope
               ... Functions have access not only to their argument, but
               ... also to themselves, through a local variable.
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 b6d610a7f..47768945d 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
@@ -66,27 +66,28 @@
 (def: (replace parameter_idx replacement type)
   (-> Nat Type Type Type)
   (case type
-    (#.Primitive name params)
-    (#.Primitive name (list\each (replace parameter_idx replacement) params))
+    {#.Primitive name params}
+    {#.Primitive name (list\each (replace parameter_idx replacement) params)}
 
     (^template []
-      [( left right)
-       ( (replace parameter_idx replacement left)
-              (replace parameter_idx replacement right))])
+      [{ left right}
+       {
+        (replace parameter_idx replacement left)
+        (replace parameter_idx replacement right)}])
     ([#.Sum]
      [#.Product]
      [#.Function]
      [#.Apply])
     
-    (#.Parameter idx)
+    {#.Parameter idx}
     (if (n.= parameter_idx idx)
       replacement
       type)
 
     (^template []
-      [( env quantified)
-       ( (list\each (replace parameter_idx replacement) env)
-              (replace (n.+ 2 parameter_idx) replacement quantified))])
+      [{ env quantified}
+       { (list\each (replace parameter_idx replacement) env)
+        (replace (n.+ 2 parameter_idx) replacement quantified)}])
     ([#.UnivQ]
      [#.ExQ])
     
@@ -96,7 +97,7 @@
 (def: (named_type location id)
   (-> Location Nat Type)
   (let [name (format "{New Type " (%.location location) " " (%.nat id) "}")]
-    (#.Primitive name (list))))
+    {#.Primitive name (list)}))
 
 (def: new_named_type
   (Operation Type)
@@ -120,17 +121,17 @@
       [_ (//type.infer inferT)]
       (in [inferT (list)]))
     
-    (#.Item argC args')
+    {#.Item argC args'}
     (case inferT
-      (#.Named name unnamedT)
+      {#.Named name unnamedT}
       (general archive analyse unnamedT args)
 
-      (#.UnivQ _)
+      {#.UnivQ _}
       (do ///.monad
         [[var_id varT] (//type.with_env check.var)]
         (general archive analyse (maybe.trusted (type.applied (list varT) inferT)) args))
 
-      (#.ExQ _)
+      {#.ExQ _}
       (do [! ///.monad]
         [[var_id varT] (//type.with_env check.var)
          output (general archive analyse
@@ -146,9 +147,9 @@
                  (check.check varT newT))))]
         (in output))
 
-      (#.Apply inputT transT)
+      {#.Apply inputT transT}
       (case (type.applied (list inputT) transT)
-        (#.Some outputT)
+        {#.Some outputT}
         (general archive analyse outputT args)
 
         #.None
@@ -161,7 +162,7 @@
       ... By inferring back-to-front, a lot of type-annotations can be
       ... avoided in Lux code, since the inference algorithm can piece
       ... things together more easily.
-      (#.Function inputT outputT)
+      {#.Function inputT outputT}
       (do ///.monad
         [[outputT' args'A] (general archive analyse outputT args')
          argA (<| (/.with_stack ..cannot_infer_argument [inputT argC])
@@ -169,12 +170,12 @@
                   (analyse archive argC))]
         (in [outputT' (list& argA args'A)]))
 
-      (#.Var infer_id)
+      {#.Var infer_id}
       (do ///.monad
         [?inferT' (//type.with_env
                     (check.peek infer_id))]
         (case ?inferT'
-          (#.Some inferT')
+          {#.Some inferT'}
           (general archive analyse inferT' args)
 
           _
@@ -188,22 +189,22 @@
   (-> Nat Type Type Type)
   (function (recur base)
     (case base
-      (#.Primitive name parameters)
-      (#.Primitive name (list\each recur parameters))
+      {#.Primitive name parameters}
+      {#.Primitive name (list\each recur parameters)}
 
       (^template []
-        [( left right)
-         ( (recur left) (recur right))])
+        [{ left right}
+         { (recur left) (recur right)}])
       ([#.Sum] [#.Product] [#.Function] [#.Apply])
       
-      (#.Parameter index)
+      {#.Parameter index}
       (if (n.= target index)
         sub
         base)
 
       (^template []
-        [( environment quantified)
-         ( (list\each recur environment) quantified)])
+        [{ environment quantified}
+         { (list\each recur environment) quantified}])
       ([#.UnivQ] [#.ExQ])
 
       _
@@ -213,26 +214,26 @@
 (def: (record' record_size target originalT inferT)
   (-> Nat Nat Type Type (Operation Type))
   (case inferT
-    (#.Named name unnamedT)
+    {#.Named name unnamedT}
     (record' record_size target originalT unnamedT)
 
     (^template []
-      [( env bodyT)
+      [{ env bodyT}
        (do ///.monad
          [bodyT+ (record' record_size (n.+ 2 target) originalT bodyT)]
-         (in ( env bodyT+)))])
+         (in { env bodyT+}))])
     ([#.UnivQ]
      [#.ExQ])
 
-    (#.Apply inputT funcT)
+    {#.Apply inputT funcT}
     (case (type.applied (list inputT) funcT)
-      (#.Some outputT)
+      {#.Some outputT}
       (record' record_size target originalT outputT)
 
       #.None
       (/.except ..invalid_type_application inferT))
 
-    (#.Product _)
+    {#.Product _}
     (let [[lefts right] (list.split_at (-- record_size) (type.flat_tuple inferT))]
       (///\in (|> inferT
                   (type.function (list\composite lefts (list (type.tuple right))))
@@ -251,20 +252,20 @@
   (loop [depth 0
          currentT inferT]
     (case currentT
-      (#.Named name unnamedT)
+      {#.Named name unnamedT}
       (do ///.monad
         [unnamedT+ (recur depth unnamedT)]
         (in unnamedT+))
 
       (^template []
-        [( env bodyT)
+        [{ env bodyT}
          (do ///.monad
            [bodyT+ (recur (++ depth) bodyT)]
-           (in ( env bodyT+)))])
+           (in { env bodyT+}))])
       ([#.UnivQ]
        [#.ExQ])
 
-      (#.Sum _)
+      {#.Sum _}
       (let [cases (type.flat_variant currentT)
             actual_size (list.size cases)
             boundary (-- expected_size)]
@@ -272,7 +273,7 @@
                   (and (n.> expected_size actual_size)
                        (n.< boundary tag)))
               (case (list.item tag cases)
-                (#.Some caseT)
+                {#.Some caseT}
                 (///\in (if (n.= 0 depth)
                           (type.function (list caseT) currentT)
                           (let [replace' (replace (|> depth -- (n.* 2)) inferT)]
@@ -296,9 +297,9 @@
               ... else
               (/.except ..variant_tag_out_of_bounds [expected_size tag inferT])))
 
-      (#.Apply inputT funcT)
+      {#.Apply inputT funcT}
       (case (type.applied (list inputT) funcT)
-        (#.Some outputT)
+        {#.Some outputT}
         (variant tag expected_size outputT)
 
         #.None
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 31ace4429..84124d32f 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
@@ -44,19 +44,19 @@
   (exception.report
    ["Definition" (%.name name)]
    ["Original" (case already_existing
-                 (#.Alias alias)
+                 {#.Alias alias}
                  (format "alias " (%.name alias))
                  
-                 (#.Definition definition)
+                 {#.Definition definition}
                  (format "definition " (%.name name))
 
-                 (#.Type _)
+                 {#.Type _}
                  (format "type " (%.name name))
 
-                 (#.Label _)
+                 {#.Label _}
                  (format "tag " (%.name name))
 
-                 (#.Slot _)
+                 {#.Slot _}
                  (format "slot " (%.name name)))]))
 
 (exception: .public (can_only_change_state_of_active_module [module Text
@@ -82,14 +82,14 @@
    (do ///.monad
      [self_name meta.current_module_name]
      (function (_ state)
-       (#try.Success [(revised@ #.modules
+       {#try.Success [(revised@ #.modules
                                 (plist.revised self_name (revised@ #.imports (function (_ current)
                                                                                (if (list.any? (text\= module)
                                                                                               current)
                                                                                  current
-                                                                                 (#.Item module current)))))
+                                                                                 {#.Item module current}))))
                                 state)
-                      []])))))
+                      []]}))))
 
 (def: .public (alias alias module)
   (-> Text Text (Operation Any))
@@ -97,11 +97,11 @@
    (do ///.monad
      [self_name meta.current_module_name]
      (function (_ state)
-       (#try.Success [(revised@ #.modules
+       {#try.Success [(revised@ #.modules
                                 (plist.revised self_name (revised@ #.module_aliases (: (-> (List [Text Text]) (List [Text Text]))
-                                                                                       (|>> (#.Item [alias module])))))
+                                                                                       (|>> {#.Item [alias module]}))))
                                 state)
-                      []])))))
+                      []]}))))
 
 (def: .public (exists? module)
   (-> Text (Operation Bit))
@@ -110,8 +110,8 @@
      (|> state
          (value@ #.modules)
          (plist.value module)
-         (case> (#.Some _) #1 #.None #0)
-         [state] #try.Success))))
+         (case> {#.Some _} #1 #.None #0)
+         [state] {#try.Success}))))
 
 (def: .public (define name definition)
   (-> Text Global (Operation Any))
@@ -122,26 +122,26 @@
      (function (_ state)
        (case (plist.value name (value@ #.definitions self))
          #.None
-         (#try.Success [(revised@ #.modules
+         {#try.Success [(revised@ #.modules
                                   (plist.has self_name
                                              (revised@ #.definitions
                                                        (: (-> (List [Text Global]) (List [Text Global]))
-                                                          (|>> (#.Item [name definition])))
+                                                          (|>> {#.Item [name definition]}))
                                                        self))
                                   state)
-                        []])
+                        []]}
 
-         (#.Some already_existing)
+         {#.Some already_existing}
          ((/.except' ..cannot_define_more_than_once [[self_name name] already_existing]) state))))))
 
 (def: .public (create hash name)
   (-> Nat Text (Operation Any))
   (///extension.lifted
    (function (_ state)
-     (#try.Success [(revised@ #.modules
+     {#try.Success [(revised@ #.modules
                               (plist.has name (..empty hash))
                               state)
-                    []]))))
+                    []]})))
 
 (def: .public (with_module hash name action)
   (All (_ a) (-> Nat Text (Operation a) (Operation [Module a])))
@@ -158,15 +158,15 @@
      (///extension.lifted
       (function (_ state)
         (case (|> state (value@ #.modules) (plist.value module_name))
-          (#.Some module)
+          {#.Some module}
           (let [active? (case (value@ #.module_state module)
                           #.Active #1
                           _        #0)]
             (if active?
-              (#try.Success [(revised@ #.modules
+              {#try.Success [(revised@ #.modules
                                        (plist.has module_name (with@ #.module_state  module))
                                        state)
-                             []])
+                             []]}
               ((/.except' can_only_change_state_of_active_module [module_name ])
                state)))
 
@@ -178,11 +178,11 @@
      (///extension.lifted
       (function (_ state)
         (case (|> state (value@ #.modules) (plist.value module_name))
-          (#.Some module)
-          (#try.Success [state
+          {#.Some module}
+          {#try.Success [state
                          (case (value@ #.module_state module)
                             #1
-                           _     #0)])
+                           _     #0)]}
 
           #.None
           ((/.except' unknown_module module_name) state)))))]
@@ -197,8 +197,8 @@
   (///extension.lifted
    (function (_ state)
      (case (|> state (value@ #.modules) (plist.value module_name))
-       (#.Some module)
-       (#try.Success [state (value@ #.module_hash module)])
+       {#.Some module}
+       {#try.Success [state (value@ #.module_hash module)]}
 
        #.None
        ((/.except' unknown_module module_name) state)))))
@@ -208,7 +208,7 @@
   (do [! ///.monad]
     [self_name (///extension.lifted meta.current_module_name)
      [type_module type_name] (case type
-                               (#.Named type_name _)
+                               {#.Named type_name _}
                                (in type_name)
 
                                _
@@ -218,6 +218,6 @@
     (monad.each ! (function (_ [index short])
                     (..define (format "#" short)
                               (if record?
-                                (#.Slot [exported? type tags index])
-                                (#.Label [exported? type tags index]))))
+                                {#.Slot [exported? type tags index]}
+                                {#.Label [exported? type tags index]})))
                 (list.enumeration tags))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/primitive.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/primitive.lux
index 17b41ba71..ad481b931 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/primitive.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/primitive.lux
@@ -16,7 +16,7 @@
      (->  (Operation Analysis))
      (do ///.monad
        [_ (//type.infer )]
-       (in (#/.Primitive ( value)))))]
+       (in {#/.Primitive { value}})))]
 
   [bit  .Bit  #/.Bit]
   [nat  .Nat  #/.Nat]
@@ -30,4 +30,4 @@
   (Operation Analysis)
   (do ///.monad
     [_ (//type.infer .Any)]
-    (in (#/.Primitive #/.Unit))))
+    (in {#/.Primitive #/.Unit})))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/reference.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/reference.lux
index f3bc9d282..26946da08 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/reference.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/reference.lux
@@ -40,10 +40,10 @@
     (do [! ///.monad]
       [constant (///extension.lifted (meta.definition def_name))]
       (case constant
-        (#.Alias real_def_name)
+        {#.Alias real_def_name}
         (definition real_def_name)
         
-        (#.Definition [exported? actualT _])
+        {#.Definition [exported? actualT _]}
         (do !
           [_ (//type.infer actualT)
            (^@ def_name [::module ::name]) (///extension.lifted (meta.normal def_name))
@@ -58,7 +58,7 @@
                   (/.except foreign_module_has_not_been_imported [current ::module])))
               (/.except definition_has_not_been_exported def_name))))
 
-        (#.Type [exported? value labels])
+        {#.Type [exported? value labels]}
         (do !
           [_ (//type.infer .Type)
            (^@ def_name [::module ::name]) (///extension.lifted (meta.normal def_name))
@@ -73,10 +73,10 @@
                   (/.except foreign_module_has_not_been_imported [current ::module])))
               (/.except definition_has_not_been_exported def_name))))
 
-        (#.Label _)
+        {#.Label _}
         (/.except labels_are_not_definitions [def_name])
         
-        (#.Slot _)
+        {#.Slot _}
         (/.except labels_are_not_definitions [def_name])))))
 
 (def: (variable var_name)
@@ -84,10 +84,10 @@
   (do [! ///.monad]
     [?var (//scope.find var_name)]
     (case ?var
-      (#.Some [actualT ref])
+      {#.Some [actualT ref]}
       (do !
         [_ (//type.infer actualT)]
-        (in (#.Some (|> ref ///reference.variable #/.Reference))))
+        (in {#.Some (|> ref ///reference.variable #/.Reference)}))
 
       #.None
       (in #.None))))
@@ -99,7 +99,7 @@
     (do [! ///.monad]
       [?var (variable simple_name)]
       (case ?var
-        (#.Some varA)
+        {#.Some varA}
         (in varA)
 
         #.None
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 aa452e685..2b3e9f411 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
@@ -41,7 +41,7 @@
       (value@ [#.locals #.mappings])
       (plist.value name)
       (maybe\each (function (_ [type value])
-                    [type (#variable.Local value)]))))
+                    [type {#variable.Local value}]))))
 
 (def: (captured? name scope)
   (-> Text Scope Bit)
@@ -54,9 +54,9 @@
   (loop [idx 0
          mappings (value@ [#.captured #.mappings] scope)]
     (case mappings
-      (#.Item [_name [_source_type _source_ref]] mappings')
+      {#.Item [_name [_source_type _source_ref]] mappings'}
       (if (text\= name _name)
-        (#.Some [_source_type (#variable.Foreign idx)])
+        {#.Some [_source_type {#variable.Foreign idx}]}
         (recur (++ idx) mappings'))
 
       #.End
@@ -70,8 +70,8 @@
 (def: (reference name scope)
   (-> Text Scope (Maybe [Type Variable]))
   (case (..local name scope)
-    (#.Some type)
-    (#.Some type)
+    {#.Some type}
+    {#.Some type}
 
     _
     (..captured name scope)))
@@ -85,25 +85,25 @@
                              (list.split_when (|>> (reference? name))))]
        (case outer
          #.End
-         (#.Right [state #.None])
+         {#.Right [state #.None]}
 
-         (#.Item top_outer _)
+         {#.Item top_outer _}
          (let [[ref_type init_ref] (maybe.else (undefined)
                                                (..reference name top_outer))
                [ref inner'] (list\mix (: (-> Scope [Variable (List Scope)] [Variable (List Scope)])
                                          (function (_ scope ref+inner)
-                                           [(#variable.Foreign (value@ [#.captured #.counter] scope))
-                                            (#.Item (revised@ #.captured
+                                           [{#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))]))
+                                             (product.right ref+inner)}]))
                                       [init_ref #.End]
                                       (list.reversed inner))
                scopes (list\composite inner' outer)]
-           (#.Right [(with@ #.scopes scopes state)
-                     (#.Some [ref_type ref])]))
+           {#.Right [(with@ #.scopes scopes state)
+                     {#.Some [ref_type ref]}]})
          )))))
 
 (exception: .public cannot_create_local_binding_without_a_scope)
@@ -113,7 +113,7 @@
   (All (_ a) (-> [Text Type] (Operation a) (Operation a)))
   (function (_ [bundle state])
     (case (value@ #.scopes state)
-      (#.Item head tail)
+      {#.Item head tail}
       (let [old_mappings (value@ [#.locals #.mappings] head)
             new_var_id (value@ [#.locals #.counter] head)
             new_head (revised@ #.locals
@@ -121,21 +121,21 @@
                                   (|>> (revised@ #.counter ++)
                                        (revised@ #.mappings (plist.has name [type new_var_id]))))
                                head)]
-        (case (///.result' [bundle (with@ #.scopes (#.Item new_head tail) state)]
+        (case (///.result' [bundle (with@ #.scopes {#.Item new_head tail} state)]
                            action)
-          (#try.Success [[bundle' state'] output])
+          {#try.Success [[bundle' state'] output]}
           (case (value@ #.scopes state')
-            (#.Item head' tail')
-            (let [scopes' (#.Item (with@ #.locals (value@ #.locals head) head')
-                                  tail')]
-              (#try.Success [[bundle' (with@ #.scopes scopes' state')]
-                             output]))
+            {#.Item head' tail'}
+            (let [scopes' {#.Item (with@ #.locals (value@ #.locals head) head')
+                           tail'}]
+              {#try.Success [[bundle' (with@ #.scopes scopes' state')]
+                             output]})
 
             _
             (exception.except ..invalid_scope_alteration []))
 
-          (#try.Failure error)
-          (#try.Failure error)))
+          {#try.Failure error}
+          {#try.Failure error}))
 
       _
       (exception.except ..cannot_create_local_binding_without_a_scope []))
@@ -165,19 +165,19 @@
                         #.End
                         (list)
                         
-                        (#.Item top _)
+                        {#.Item top _}
                         (value@ #.name top))]
       (case (action [bundle (revised@ #.scopes
-                                      (|>> (#.Item (scope parent_name name)))
+                                      (|>> {#.Item (scope parent_name name)})
                                       state)])
-        (#try.Success [[bundle' state'] output])
-        (#try.Success [[bundle' (revised@ #.scopes
+        {#try.Success [[bundle' state'] output]}
+        {#try.Success [[bundle' (revised@ #.scopes
                                           (|>> list.tail (maybe.else (list)))
                                           state')]
-                       output])
+                       output]}
 
-        (#try.Failure error)
-        (#try.Failure error)))))
+        {#try.Failure error}
+        {#try.Failure error}))))
 
 (exception: .public cannot_get_next_reference_when_there_is_no_scope)
 
@@ -186,8 +186,8 @@
   (///extension.lifted
    (function (_ state)
      (case (value@ #.scopes state)
-       (#.Item top _)
-       (#try.Success [state (value@ [#.locals #.counter] top)])
+       {#.Item top _}
+       {#try.Success [state (value@ [#.locals #.counter] top)]}
 
        #.End
        (exception.except ..cannot_get_next_reference_when_there_is_no_scope [])))))
@@ -195,11 +195,11 @@
 (def: (ref_variable ref)
   (-> Ref Variable)
   (case ref
-    (#.Local register)
-    (#variable.Local register)
+    {#.Local register}
+    {#variable.Local register}
     
-    (#.Captured register)
-    (#variable.Foreign register)))
+    {#.Captured register}
+    {#variable.Foreign register}))
 
 (def: .public (environment scope)
   (-> Scope (List Variable))
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 f6c226e9a..417fe9709 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
@@ -113,10 +113,10 @@
                       (check.clean expectedT))]
         (/.with_stack ..cannot_analyse_variant [expectedT' tag valueC]
           (case expectedT
-            (#.Sum _)
+            {#.Sum _}
             (let [flat (type.flat_variant expectedT)]
               (case (list.item tag flat)
-                (#.Some variant_type)
+                {#.Some variant_type}
                 (do !
                   [valueA (//type.with_type variant_type
                             (analyse archive valueC))]
@@ -125,16 +125,16 @@
                 #.None
                 (/.except //inference.variant_tag_out_of_bounds [(list.size flat) tag expectedT])))
 
-            (#.Named name unnamedT)
+            {#.Named name unnamedT}
             (//type.with_type unnamedT
               (recur valueC))
 
-            (#.Var id)
+            {#.Var id}
             (do !
               [?expectedT' (//type.with_env
                              (check.peek id))]
               (case ?expectedT'
-                (#.Some expectedT')
+                {#.Some expectedT'}
                 (//type.with_type expectedT'
                   (recur valueC))
 
@@ -145,7 +145,7 @@
                 (/.except ..cannot_infer_numeric_tag [expectedT tag valueC])))
 
             (^template [ ]
-              [( _)
+              [{ _}
                (do !
                  [[instance_id instanceT] (//type.with_env )]
                  (//type.with_type (maybe.trusted (type.applied (list instanceT) expectedT))
@@ -153,15 +153,15 @@
             ([#.UnivQ check.existential]
              [#.ExQ check.var])
 
-            (#.Apply inputT funT)
+            {#.Apply inputT funT}
             (case funT
-              (#.Var funT_id)
+              {#.Var funT_id}
               (do !
                 [?funT' (//type.with_env
                           (check.peek funT_id))]
                 (case ?funT'
-                  (#.Some funT')
-                  (//type.with_type (#.Apply inputT funT')
+                  {#.Some funT'}
+                  (//type.with_type {#.Apply inputT funT'}
                     (recur valueC))
 
                   _
@@ -169,7 +169,7 @@
 
               _
               (case (type.applied (list inputT) funT)
-                (#.Some outputT)
+                {#.Some outputT}
                 (//type.with_type outputT
                   (recur valueC))
 
@@ -187,26 +187,26 @@
                   (loop [membersT+ (type.flat_tuple expectedT)
                          membersC+ members]
                     (case [membersT+ membersC+]
-                      [(#.Item memberT #.End) (#.Item memberC #.End)]
+                      [{#.Item memberT #.End} {#.Item memberC #.End}]
                       (do !
                         [memberA (//type.with_type memberT
                                    (analyse archive memberC))]
                         (in (list memberA)))
                       
-                      [(#.Item memberT #.End) _]
+                      [{#.Item memberT #.End} _]
                       (//type.with_type memberT
                         (\ ! each (|>> list) (analyse archive (code.tuple membersC+))))
                       
-                      [_ (#.Item memberC #.End)]
+                      [_ {#.Item memberC #.End}]
                       (//type.with_type (type.tuple membersT+)
                         (\ ! each (|>> list) (analyse archive memberC)))
                       
-                      [(#.Item memberT membersT+') (#.Item memberC membersC+')]
+                      [{#.Item memberT membersT+'} {#.Item memberC membersC+'}]
                       (do !
                         [memberA (//type.with_type memberT
                                    (analyse archive memberC))
                          memberA+ (recur membersT+' membersC+')]
-                        (in (#.Item memberA memberA+)))
+                        (in {#.Item memberA memberA+}))
                       
                       _
                       (/.except ..cannot_analyse_tuple [expectedT members]))))]
@@ -218,19 +218,19 @@
     [expectedT (///extension.lifted meta.expected_type)]
     (/.with_stack ..cannot_analyse_tuple [expectedT membersC]
       (case expectedT
-        (#.Product _)
+        {#.Product _}
         (..typed_product archive analyse membersC)
 
-        (#.Named name unnamedT)
+        {#.Named name unnamedT}
         (//type.with_type unnamedT
           (product archive analyse membersC))
 
-        (#.Var id)
+        {#.Var id}
         (do !
           [?expectedT' (//type.with_env
                          (check.peek id))]
           (case ?expectedT'
-            (#.Some expectedT')
+            {#.Some expectedT'}
             (//type.with_type expectedT'
               (product archive analyse membersC))
 
@@ -245,7 +245,7 @@
               (in (/.tuple (list\each product.right membersTA))))))
 
         (^template [ ]
-          [( _)
+          [{ _}
            (do !
              [[instance_id instanceT] (//type.with_env )]
              (//type.with_type (maybe.trusted (type.applied (list instanceT) expectedT))
@@ -253,15 +253,15 @@
         ([#.UnivQ check.existential]
          [#.ExQ check.var])
 
-        (#.Apply inputT funT)
+        {#.Apply inputT funT}
         (case funT
-          (#.Var funT_id)
+          {#.Var funT_id}
           (do !
             [?funT' (//type.with_env
                       (check.peek funT_id))]
             (case ?funT'
-              (#.Some funT')
-              (//type.with_type (#.Apply inputT funT')
+              {#.Some funT'}
+              (//type.with_type {#.Apply inputT funT'}
                 (product archive analyse membersC))
 
               _
@@ -269,7 +269,7 @@
 
           _
           (case (type.applied (list inputT) funT)
-            (#.Some outputT)
+            {#.Some outputT}
             (//type.with_type outputT
               (product archive analyse membersC))
 
@@ -289,7 +289,7 @@
            [lefts right?] (/.choice case_size idx)]
      expectedT (///extension.lifted meta.expected_type)]
     (case expectedT
-      (#.Var _)
+      {#.Var _}
       (do !
         [inferenceT (//inference.variant idx case_size variantT)
          [inferredT valueA+] (//inference.general archive analyse inferenceT (list valueC))]
@@ -308,13 +308,13 @@
          output (: (List [Name Code])
                    #.End)]
     (case input
-      (^ (list& [_ (#.Tag slotH)] valueH tail))
+      (^ (list& [_ {#.Tag slotH}] valueH tail))
       (do ///.monad
         [slotH (///extension.lifted (meta.normal slotH))]
-        (recur tail (#.Item [slotH valueH] output)))
+        (recur tail {#.Item [slotH valueH] output}))
 
       #.End
-      (\ ///.monad in (#.Some output))
+      (\ ///.monad in {#.Some output})
 
       _
       (\ ///.monad in #.None))))
@@ -327,16 +327,16 @@
   (case record
     ... empty_record = empty_tuple = unit/any = []
     #.End
-    (\ ///.monad in (#.Some [0 (list) Any]))
+    (\ ///.monad in {#.Some [0 (list) Any]})
 
-    (#.Item [head_k head_v] _)
+    {#.Item [head_k head_v] _}
     (do [! ///.monad]
       [slotH' (///extension.lifted
                (do meta.monad
                  [head_k (meta.normal head_k)]
                  (meta.try (meta.slot head_k))))]
       (case slotH'
-        (#try.Success [_ slot_set recordT])
+        {#try.Success [_ slot_set recordT]}
         (do !
           [.let [size_record (list.size record)
                  size_ts (list.size slot_set)]
@@ -350,7 +350,7 @@
                                  (do !
                                    [key (///extension.lifted (meta.normal key))]
                                    (case (dictionary.value key tag->idx)
-                                     (#.Some idx)
+                                     {#.Some idx}
                                      (if (dictionary.key? idx->val idx)
                                        (/.except ..cannot_repeat_tag [key record])
                                        (in (dictionary.has idx val idx->val)))
@@ -363,9 +363,9 @@
            .let [ordered_tuple (list\each (function (_ idx)
                                             (maybe.trusted (dictionary.value idx idx->val)))
                                           tuple_range)]]
-          (in (#.Some [size_ts ordered_tuple recordT])))
+          (in {#.Some [size_ts ordered_tuple recordT]}))
 
-        (#try.Failure error)
+        {#try.Failure error}
         (in #.None)))
     ))
 
@@ -378,12 +378,12 @@
     (^ (list singletonC))
     (analyse archive singletonC)
 
-    (^ (list [_ (#.Tag pseudo_slot)] singletonC))
+    (^ (list [_ {#.Tag pseudo_slot}] singletonC))
     (do [! ///.monad]
       [head_k (///extension.lifted (meta.normal pseudo_slot))
        slot (///extension.lifted (meta.try (meta.slot head_k)))]
       (case slot
-        (#try.Success [_ slot_set recordT])
+        {#try.Success [_ slot_set recordT]}
         (case (list.size slot_set)
           1 (analyse archive singletonC)
           _ (..product archive analyse members))
@@ -398,18 +398,18 @@
         #.None
         (..product archive analyse members)
 
-        (#.Some slots)
+        {#.Some slots}
         (do !
           [record_size,membersC,recordT (..order slots)]
           (case record_size,membersC,recordT
             #.None
             (..product archive analyse members)
 
-            (#.Some [record_size membersC recordT])
+            {#.Some [record_size membersC recordT]}
             (do !
               [expectedT (///extension.lifted meta.expected_type)]
               (case expectedT
-                (#.Var _)
+                {#.Var _}
                 (do !
                   [inferenceT (//inference.record record_size recordT)
                    [inferredT membersA] (//inference.general archive analyse inferenceT membersC)]
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 7a5bde817..33a8715d5 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
@@ -19,17 +19,17 @@
 (def: .public (with_type expected)
   (All (_ a) (-> Type (Operation a) (Operation a)))
   (///extension.localized (value@ #.expected) (with@ #.expected)
-                          (function.constant (#.Some expected))))
+                          (function.constant {#.Some expected})))
 
 (def: .public (with_env action)
   (All (_ a) (-> (Check a) (Operation a)))
   (function (_ (^@ stateE [bundle state]))
     (case (action (value@ #.type_context state))
-      (#try.Success [context' output])
-      (#try.Success [[bundle (with@ #.type_context context' state)]
-                     output])
+      {#try.Success [context' output]}
+      {#try.Success [[bundle (with@ #.type_context context' state)]
+                     output]}
 
-      (#try.Failure error)
+      {#try.Failure error}
       ((/.failure error) stateE))))
 
 (def: .public with_fresh_env
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 3d3163553..dc47f7039 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
@@ -48,13 +48,13 @@
       Eval)
   (function (_ type code lux)
     (case (compiler_eval archive type code [bundle lux])
-      (#try.Success [[_bundle lux'] value])
-      (#try.Success [lux' value])
+      {#try.Success [[_bundle lux'] value]}
+      {#try.Success [lux' value]}
       
-      (#try.Failure error)
-      (#try.Failure error))))
+      {#try.Failure error}
+      {#try.Failure error})))
 
-(with_expansions [ (as_is [|form_location| (#.Form (list& [|text_location| (#.Text "lux def module")] annotations))])]
+(with_expansions [ (as_is [|form_location| {#.Form (list& [|text_location| {#.Text "lux def module"}] annotations)}])]
   (def: .public (phase wrapper expander)
     (-> //.Wrapper Expander Phase)
     (let [analysis (//analysis.phase expander)]
@@ -70,10 +70,10 @@
                  extension_eval (:as Eval (wrapper (:expected compiler_eval)))]
            _ (//.set_state (with@ [#//extension.state #/.analysis #/.state #//extension.state #.eval] extension_eval state))]
           (case code
-            (^ [_ (#.Form (list& [_ (#.Text name)] inputs))])
+            (^ [_ {#.Form (list& [_ {#.Text name}] inputs)}])
             (//extension.apply archive recur [name inputs])
 
-            (^ [_ (#.Form (list& macro inputs))])
+            (^ [_ {#.Form (list& macro inputs)}])
             (do !
               [expansion (/.lifted_analysis
                           (do !
@@ -84,7 +84,7 @@
                               (do !
                                 [?macro (//extension.lifted (meta.macro macro_name))
                                  macro (case ?macro
-                                         (#.Some macro)
+                                         {#.Some macro}
                                          (in macro)
                                          
                                          #.None
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension.lux
index d54049e4e..2fd695eef 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension.lux
@@ -98,8 +98,8 @@
   (function (_ [bundle state])
     (case (dictionary.value name bundle)
       #.None
-      (#try.Success [[(dictionary.has name (extender handler) bundle) state]
-                     []])
+      {#try.Success [[(dictionary.has name (extender handler) bundle) state]
+                     []]}
 
       _
       (exception.except ..cannot_overwrite name))))
@@ -119,7 +119,7 @@
     (-> Archive (Phase s i o) (Extension i) (Operation s i o o)))
   (function (_ (^@ stateE [bundle state]))
     (case (dictionary.value name bundle)
-      (#.Some handler)
+      {#.Some handler}
       (((handler name phase) archive parameters)
        stateE)
 
@@ -134,11 +134,11 @@
     (function (_ [bundle state])
       (let [old (get state)]
         (case (operation [bundle (set (transform old) state)])
-          (#try.Success [[bundle' state'] output])
-          (#try.Success [[bundle' (set old state')] output])
+          {#try.Success [[bundle' state'] output]}
+          {#try.Success [[bundle' (set old state')] output]}
 
-          (#try.Failure error)
-          (#try.Failure error))))))
+          {#try.Failure error}
+          {#try.Failure error})))))
 
 (def: .public (temporary transform)
   (All (_ s i o v)
@@ -147,11 +147,11 @@
   (function (_ operation)
     (function (_ [bundle state])
       (case (operation [bundle (transform state)])
-        (#try.Success [[bundle' state'] output])
-        (#try.Success [[bundle' state] output])
+        {#try.Success [[bundle' state'] output]}
+        {#try.Success [[bundle' state] output]}
 
-        (#try.Failure error)
-        (#try.Failure error)))))
+        {#try.Failure error}
+        {#try.Failure error}))))
 
 (def: .public (with_state state)
   (All (_ s i o v)
@@ -162,13 +162,13 @@
   (All (_ s i o v)
     (-> (-> s v) (Operation s i o v)))
   (function (_ [bundle state])
-    (#try.Success [[bundle state] (get state)])))
+    {#try.Success [[bundle state] (get state)]}))
 
 (def: .public (update transform)
   (All (_ s i o)
     (-> (-> s s) (Operation s i o Any)))
   (function (_ [bundle state])
-    (#try.Success [[bundle (transform state)] []])))
+    {#try.Success [[bundle (transform state)] []]}))
 
 (def: .public (lifted action)
   (All (_ s i o v)
@@ -176,8 +176,8 @@
         (//.Operation [(Bundle s i o) s] v)))
   (function (_ [bundle state])
     (case (action state)
-      (#try.Success [state' output])
-      (#try.Success [[bundle state'] output])
+      {#try.Success [state' output]}
+      {#try.Success [[bundle state'] output]}
 
-      (#try.Failure error)
-      (#try.Failure error))))
+      {#try.Failure error}
+      {#try.Failure error})))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/js.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/js.lux
index 66b58bf74..36578eb15 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/js.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/js.lux
@@ -38,7 +38,7 @@
                    (phase archive lengthC))
          [var_id varT] (analysis/type.with_env check.var)
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list lengthA)))))]))
+        (in {#analysis.Extension extension (list lengthA)})))]))
 
 (def: array::length
   Handler
@@ -50,7 +50,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer Nat)]
-        (in (#analysis.Extension extension (list arrayA)))))]))
+        (in {#analysis.Extension extension (list arrayA)})))]))
 
 (def: array::read
   Handler
@@ -64,7 +64,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer varT)]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: array::write
   Handler
@@ -80,7 +80,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA valueA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA valueA arrayA)})))]))
 
 (def: array::delete
   Handler
@@ -94,7 +94,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: bundle::array
   Bundle
@@ -117,7 +117,7 @@
                         (phase archive constructorC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list& constructorA inputsA)))))]))
+        (in {#analysis.Extension extension (list& constructorA inputsA)})))]))
 
 (def: object::get
   Handler
@@ -128,8 +128,8 @@
         [objectA (analysis/type.with_type Any
                    (phase archive objectC))
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list (analysis.text fieldC)
-                                                 objectA)))))]))
+        (in {#analysis.Extension extension (list (analysis.text fieldC)
+                                                 objectA)})))]))
 
 (def: object::do
   Handler
@@ -141,9 +141,9 @@
                    (phase archive objectC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list& (analysis.text methodC)
+        (in {#analysis.Extension extension (list& (analysis.text methodC)
                                                   objectA
-                                                  inputsA)))))]))
+                                                  inputsA)})))]))
 
 (def: bundle::object
   Bundle
@@ -165,7 +165,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: js::apply
   Handler
@@ -177,7 +177,7 @@
                         (phase archive abstractionC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list& abstractionA inputsA)))))]))
+        (in {#analysis.Extension extension (list& abstractionA inputsA)})))]))
 
 (def: js::type_of
   Handler
@@ -188,7 +188,7 @@
         [objectA (analysis/type.with_type Any
                    (phase archive objectC))
          _ (analysis/type.infer .Text)]
-        (in (#analysis.Extension extension (list objectA)))))]))
+        (in {#analysis.Extension extension (list objectA)})))]))
 
 (def: js::function
   Handler
@@ -201,8 +201,8 @@
                         (phase archive abstractionC))
          _ (analysis/type.infer (for [@.js ffi.Function]
                                      Any))]
-        (in (#analysis.Extension extension (list (analysis.nat arity)
-                                                 abstractionA)))))]))
+        (in {#analysis.Extension extension (list (analysis.nat arity)
+                                                 abstractionA)})))]))
 
 (def: .public bundle
   Bundle
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 9ea592c20..bc9151306 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
@@ -161,13 +161,13 @@
 (def: inheritance_relationship_type_name "_jvm_inheritance")
 (def: .public (inheritance_relationship_type class super_class super_interfaces)
   (-> .Type .Type (List .Type) .Type)
-  (#.Primitive ..inheritance_relationship_type_name
-               (list& class super_class super_interfaces)))
+  {#.Primitive ..inheritance_relationship_type_name
+   (list& class super_class super_interfaces)})
 
 ... TODO: Get rid of this template block and use the definition in
 ... lux/ffi.jvm.lux ASAP
 (template [ ]
-  [(def: .public  .Type (#.Primitive  #.End))]
+  [(def: .public  .Type {#.Primitive  #.End})]
 
   ... Boxes
   [Boolean   box.boolean]
@@ -355,23 +355,23 @@
 (def: (jvm_type luxT)
   (-> .Type (Operation (Type Value)))
   (case luxT
-    (#.Named name anonymousT)
+    {#.Named name anonymousT}
     (jvm_type anonymousT)
     
-    (#.Apply inputT abstractionT)
+    {#.Apply inputT abstractionT}
     (case (type.applied (list inputT) abstractionT)
-      (#.Some outputT)
+      {#.Some outputT}
       (jvm_type outputT)
 
       #.None
       (/////analysis.except ..non_jvm_type luxT))
 
-    (^ (#.Primitive (static array.type_name) (list elemT)))
+    (^ {#.Primitive (static array.type_name) (list elemT)})
     (phase\each jvm.array (jvm_type elemT))
 
-    (#.Primitive class parametersT)
+    {#.Primitive class parametersT}
     (case (dictionary.value class ..boxes)
-      (#.Some [_ primitive_type])
+      {#.Some [_ primitive_type]}
       (case parametersT
         #.End
         (phase\in primitive_type)
@@ -387,7 +387,7 @@
                                        (do phase.monad
                                          [parameterJT (jvm_type parameterT)]
                                          (case (jvm_parser.parameter? parameterJT)
-                                           (#.Some parameterJT)
+                                           {#.Some parameterJT}
                                            (in parameterJT)
                                            
                                            #.None
@@ -395,7 +395,7 @@
                                      parametersT))]
         (in (jvm.class class parametersJT))))
 
-    (#.Ex _)
+    {#.Ex _}
     (phase\in (jvm.class ..object_class (list)))
     
     _
@@ -417,11 +417,11 @@
       (^ (list arrayC))
       (do phase.monad
         [_ (typeA.infer ..int)
-         arrayA (typeA.with_type (#.Primitive (|> (jvm.array primitive_type)
+         arrayA (typeA.with_type {#.Primitive (|> (jvm.array primitive_type)
                                                   ..reflection)
-                                              (list))
+                                  (list)}
                   (analyse archive arrayC))]
-        (in (#/////analysis.Extension extension_name (list arrayA))))
+        (in {#/////analysis.Extension extension_name (list arrayA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 1 (list.size args)]))))
@@ -438,8 +438,8 @@
                   (analyse archive arrayC))
          varT (typeA.with_env (check.clean varT))
          arrayJT (jvm_array_type (.type (array.Array varT)))]
-        (in (#/////analysis.Extension extension_name (list (/////analysis.text (..signature arrayJT))
-                                                           arrayA))))
+        (in {#/////analysis.Extension extension_name (list (/////analysis.text (..signature arrayJT))
+                                                           arrayA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 1 (list.size args)]))))
@@ -452,9 +452,9 @@
       (do phase.monad
         [lengthA (typeA.with_type ..int
                    (analyse archive lengthC))
-         _ (typeA.infer (#.Primitive (|> (jvm.array primitive_type) ..reflection)
-                                     (list)))]
-        (in (#/////analysis.Extension extension_name (list lengthA))))
+         _ (typeA.infer {#.Primitive (|> (jvm.array primitive_type) ..reflection)
+                         (list)})]
+        (in {#/////analysis.Extension extension_name (list lengthA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 1 (list.size args)]))))
@@ -470,13 +470,13 @@
          expectedT (///.lifted meta.expected_type)
          expectedJT (jvm_array_type expectedT)
          elementJT (case (jvm_parser.array? expectedJT)
-                     (#.Some elementJT)
+                     {#.Some elementJT}
                      (in elementJT)
                      
                      #.None
                      (/////analysis.except ..non_array expectedT))]
-        (in (#/////analysis.Extension extension_name (list (/////analysis.text (..signature elementJT))
-                                                           lengthA))))
+        (in {#/////analysis.Extension extension_name (list (/////analysis.text (..signature elementJT))
+                                                           lengthA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 1 (list.size args)]))))
@@ -484,11 +484,11 @@
 (def: (check_parameter objectT)
   (-> .Type (Operation (Type Parameter)))
   (case objectT
-    (^ (#.Primitive (static array.type_name)
-                    (list elementT)))
+    (^ {#.Primitive (static array.type_name)
+        (list elementT)})
     (/////analysis.except ..non_parameter objectT)
     
-    (#.Primitive name parameters)
+    {#.Primitive name parameters}
     (`` (cond (or (~~ (template []
                         [(text\= (..reflection ) name)]
 
@@ -506,24 +506,24 @@
               ... else
               (phase\in (jvm.class name (list)))))
 
-    (#.Named name anonymous)
+    {#.Named name anonymous}
     (check_parameter anonymous)
 
     (^template []
-      [( id)
+      [{ id}
        (phase\in (jvm.class ..object_class (list)))])
     ([#.Var]
      [#.Ex])
 
     (^template []
-      [( env unquantified)
+      [{ env unquantified}
        (check_parameter unquantified)])
     ([#.UnivQ]
      [#.ExQ])
 
-    (#.Apply inputT abstractionT)
+    {#.Apply inputT abstractionT}
     (case (type.applied (list inputT) abstractionT)
-      (#.Some outputT)
+      {#.Some outputT}
       (check_parameter outputT)
 
       #.None
@@ -535,7 +535,7 @@
 (def: (check_jvm objectT)
   (-> .Type (Operation (Type Value)))
   (case objectT
-    (#.Primitive name #.End)
+    {#.Primitive name #.End}
     (`` (cond (~~ (template []
                     [(text\= (..reflection ) name)
                      (phase\in )]
@@ -565,34 +565,34 @@
               (text.starts_with? descriptor.array_prefix name)
               (let [[_ unprefixed] (maybe.trusted (text.split_by descriptor.array_prefix name))]
                 (\ phase.monad each jvm.array
-                   (check_jvm (#.Primitive unprefixed (list)))))
+                   (check_jvm {#.Primitive unprefixed (list)})))
 
               ... else
               (phase\in (jvm.class name (list)))))
     
-    (^ (#.Primitive (static array.type_name)
-                    (list elementT)))
+    (^ {#.Primitive (static array.type_name)
+        (list elementT)})
     (|> elementT
         check_jvm
         (phase\each jvm.array))
     
-    (#.Primitive name parameters)
+    {#.Primitive name parameters}
     (do [! phase.monad]
       [parameters (monad.each ! check_parameter parameters)]
       (phase\in (jvm.class name parameters)))
 
-    (#.Named name anonymous)
+    {#.Named name anonymous}
     (check_jvm anonymous)
 
     (^template []
-      [( env unquantified)
+      [{ env unquantified}
        (check_jvm unquantified)])
     ([#.UnivQ]
      [#.ExQ])
 
-    (#.Apply inputT abstractionT)
+    {#.Apply inputT abstractionT}
     (case (type.applied (list inputT) abstractionT)
-      (#.Some outputT)
+      {#.Some outputT}
       (check_jvm outputT)
 
       #.None
@@ -624,10 +624,10 @@
         [_ (typeA.infer lux_type)
          idxA (typeA.with_type ..int
                 (analyse archive idxC))
-         arrayA (typeA.with_type (#.Primitive (|> (jvm.array jvm_type) ..reflection)
-                                              (list))
+         arrayA (typeA.with_type {#.Primitive (|> (jvm.array jvm_type) ..reflection)
+                                  (list)}
                   (analyse archive arrayC))]
-        (in (#/////analysis.Extension extension_name (list idxA arrayA))))
+        (in {#/////analysis.Extension extension_name (list idxA arrayA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 2 (list.size args)]))))
@@ -647,17 +647,17 @@
          arrayJT (jvm_array_type (.type (array.Array varT)))
          idxA (typeA.with_type ..int
                 (analyse archive idxC))]
-        (in (#/////analysis.Extension extension_name (list (/////analysis.text (..signature arrayJT))
+        (in {#/////analysis.Extension extension_name (list (/////analysis.text (..signature arrayJT))
                                                            idxA
-                                                           arrayA))))
+                                                           arrayA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 2 (list.size args)]))))
 
 (def: (write_primitive_array_handler lux_type jvm_type)
   (-> .Type (Type Primitive) Handler)
-  (let [array_type (#.Primitive (|> (jvm.array jvm_type) ..reflection)
-                                (list))]
+  (let [array_type {#.Primitive (|> (jvm.array jvm_type) ..reflection)
+                    (list)}]
     (function (_ extension_name analyse archive args)
       (case args
         (^ (list idxC valueC arrayC))
@@ -669,9 +669,9 @@
                     (analyse archive valueC))
            arrayA (typeA.with_type array_type
                     (analyse archive arrayC))]
-          (in (#/////analysis.Extension extension_name (list idxA
+          (in {#/////analysis.Extension extension_name (list idxA
                                                              valueA
-                                                             arrayA))))
+                                                             arrayA)}))
 
         _
         (/////analysis.except ///.incorrect_arity [extension_name 3 (list.size args)])))))
@@ -693,10 +693,10 @@
                 (analyse archive idxC))
          valueA (typeA.with_type varT
                   (analyse archive valueC))]
-        (in (#/////analysis.Extension extension_name (list (/////analysis.text (..signature arrayJT))
+        (in {#/////analysis.Extension extension_name (list (/////analysis.text (..signature arrayJT))
                                                            idxA
                                                            valueA
-                                                           arrayA))))
+                                                           arrayA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 3 (list.size args)]))))
@@ -759,7 +759,7 @@
       (do phase.monad
         [expectedT (///.lifted meta.expected_type)
          _ (check_object expectedT)]
-        (in (#/////analysis.Extension extension_name (list))))
+        (in {#/////analysis.Extension extension_name (list)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 0 (list.size args)]))))
@@ -774,7 +774,7 @@
          [objectT objectA] (typeA.with_inference
                              (analyse archive objectC))
          _ (check_object objectT)]
-        (in (#/////analysis.Extension extension_name (list objectA))))
+        (in {#/////analysis.Extension extension_name (list objectA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 1 (list.size args)]))))
@@ -789,7 +789,7 @@
                                (analyse archive monitorC))
          _ (check_object monitorT)
          exprA (analyse archive exprC)]
-        (in (#/////analysis.Extension extension_name (list monitorA exprA))))
+        (in {#/////analysis.Extension extension_name (list monitorA exprA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 2 (list.size args)]))))
@@ -809,7 +809,7 @@
               (if ?
                 (in [])
                 (/////analysis.except non_throwable exception_class)))]
-        (in (#/////analysis.Extension extension_name (list exceptionA))))
+        (in {#/////analysis.Extension extension_name (list exceptionA)}))
 
       _
       (/////analysis.except ///.incorrect_arity [extension_name 1 (list.size args)]))))
@@ -820,12 +820,12 @@
     (case args
       (^ (list classC))
       (case classC
-        [_ (#.Text class)]
+        [_ {#.Text class}]
         (do phase.monad
           [_ (..ensure_fresh_class! class_loader class)
-           _ (typeA.infer (#.Primitive "java.lang.Class" (list (#.Primitive class (list)))))
+           _ (typeA.infer {#.Primitive "java.lang.Class" (list {#.Primitive class (list)})})
            _ (phase.lifted (reflection!.load class_loader class))]
-          (in (#/////analysis.Extension extension_name (list (/////analysis.text class)))))
+          (in {#/////analysis.Extension extension_name (list (/////analysis.text class))}))
 
         _
         (/////analysis.except ///.invalid_syntax [extension_name %.code args]))
@@ -846,18 +846,18 @@
          object_class (check_object objectT)
          ? (phase.lifted (reflection!.sub? class_loader object_class sub_class))]
         (if ?
-          (in (#/////analysis.Extension extension_name (list (/////analysis.text sub_class) objectA)))
+          (in {#/////analysis.Extension extension_name (list (/////analysis.text sub_class) objectA)})
           (/////analysis.except cannot_possibly_be_an_instance (format sub_class " !<= "  object_class)))))]))
 
 (template [  ]
   [(def: .public ( mapping typeJ)
      (-> Mapping (Type ) (Operation .Type))
      (case (|> typeJ ..signature (.result ( mapping)))
-       (#try.Success check)
+       {#try.Success check}
        (typeA.with_env
          check)
        
-       (#try.Failure error)
+       {#try.Failure error}
        (phase.failure error)))]
 
   [boxed_reflection_type Value luxT.boxed_type]
@@ -880,19 +880,19 @@
                      superT (reflection_type mapping superJT)]
                     (in [[super_name superT] (java/lang/Class::isAssignableFrom super_class target_class)])))
                 (case (java/lang/Class::getGenericSuperclass source_class)
-                  (#.Some super)
+                  {#.Some super}
                   (list& super (array.list #.None (java/lang/Class::getGenericInterfaces source_class)))
 
                   #.None
                   (if (java/lang/reflect/Modifier::isInterface (java/lang/Class::getModifiers source_class))
-                    (#.Item (:as java/lang/reflect/Type (ffi.class_for java/lang/Object))
-                            (array.list #.None (java/lang/Class::getGenericInterfaces source_class)))
+                    {#.Item (:as java/lang/reflect/Type (ffi.class_for java/lang/Object))
+                     (array.list #.None (java/lang/Class::getGenericInterfaces source_class))}
                     (array.list #.None (java/lang/Class::getGenericInterfaces source_class)))))))
 
 (def: (inheritance_candidate_parents class_loader fromT target_class toT fromC)
   (-> java/lang/ClassLoader .Type (java/lang/Class java/lang/Object) .Type Code (Operation (List [[Text .Type] Bit])))
   (case fromT
-    (^ (#.Primitive _ (list& self_classT super_classT super_interfacesT+)))
+    (^ {#.Primitive _ (list& self_classT super_classT super_interfacesT+)})
     (monad.each phase.monad
                 (function (_ superT)
                   (do [! phase.monad]
@@ -959,15 +959,15 @@
                                         (case (|> candidate_parents
                                                   (list.only product.right)
                                                   (list\each product.left))
-                                          (#.Item [next_name nextT] _)
+                                          {#.Item [next_name nextT] _}
                                           (recur [next_name nextT])
 
                                           #.End
                                           (in false)))))))))]
         (if can_cast?
-          (in (#/////analysis.Extension extension_name (list (/////analysis.text source_name)
+          (in {#/////analysis.Extension extension_name (list (/////analysis.text source_name)
                                                              (/////analysis.text target_name)
-                                                             fromA)))
+                                                             fromA)})
           (/////analysis.except ..cannot_cast [fromT toT fromC])))
 
       _
@@ -1001,7 +1001,7 @@
                             (not deprecated?))
          fieldT (reflection_type luxT.fresh fieldJT)
          _ (typeA.infer fieldT)]
-        (in (<| (#/////analysis.Extension extension_name)
+        (in (<| {#/////analysis.Extension extension_name}
                 (list (/////analysis.text class)
                       (/////analysis.text field)
                       (/////analysis.text (|> fieldJT ..reflection)))))))]))
@@ -1025,7 +1025,7 @@
          fieldT (reflection_type luxT.fresh fieldJT)
          valueA (typeA.with_type fieldT
                   (analyse archive valueC))]
-        (in (<| (#/////analysis.Extension extension_name)
+        (in (<| {#/////analysis.Extension extension_name}
                 (list (/////analysis.text class)
                       (/////analysis.text field)
                       valueA)))))]))
@@ -1049,7 +1049,7 @@
                             (not deprecated?))
          fieldT (reflection_type mapping fieldJT)
          _ (typeA.infer fieldT)]
-        (in (<| (#/////analysis.Extension extension_name)
+        (in (<| {#/////analysis.Extension extension_name}
                 (list (/////analysis.text class)
                       (/////analysis.text field)
                       (/////analysis.text (..reflection fieldJT))
@@ -1078,7 +1078,7 @@
          fieldT (reflection_type mapping fieldJT)
          valueA (typeA.with_type fieldT
                   (analyse archive valueC))]
-        (in (<| (#/////analysis.Extension extension_name)
+        (in (<| {#/////analysis.Extension extension_name}
                 (list (/////analysis.text class)
                       (/////analysis.text field)
                       (/////analysis.text (..reflection fieldJT))
@@ -1122,7 +1122,7 @@
                                           (and prev
                                                (jvm\= expectedJC (: (Type Value)
                                                                     (case (jvm_parser.var? actualJC)
-                                                                      (#.Some name)
+                                                                      {#.Some name}
                                                                       (|> aliasing
                                                                           (dictionary.value name)
                                                                           (maybe.else name)
@@ -1151,7 +1151,7 @@
              (list.every? (function (_ [expectedJC actualJC])
                             (jvm\= expectedJC (: (Type Value)
                                                  (case (jvm_parser.var? actualJC)
-                                                   (#.Some name)
+                                                   {#.Some name}
                                                    (|> aliasing
                                                        (dictionary.value name)
                                                        (maybe.else name)
@@ -1217,7 +1217,7 @@
                                           inputsT
 
                                           _
-                                          (list& (#.Primitive (java/lang/Class::getName owner) owner_tvarsT)
+                                          (list& {#.Primitive (java/lang/Class::getName owner) owner_tvarsT}
                                                  inputsT)))
                          outputT)]]
       (in [methodT
@@ -1245,7 +1245,7 @@
                        (monad.each ! (|>> reflection!.type phase.lifted))
                        (phase\each (monad.each ! (reflection_type mapping)))
                        phase\conjoint)
-       .let [objectT (#.Primitive (java/lang/Class::getName owner) owner_tvarsT)
+       .let [objectT {#.Primitive (java/lang/Class::getName owner) owner_tvarsT}
              constructorT (<| (type.univ_q (dictionary.size mapping))
                               (type.function inputsT)
                               objectT)]]
@@ -1255,14 +1255,14 @@
 
 (type: Evaluation
   (Variant
-   (#Pass Method_Signature)
-   (#Hint Method_Signature)))
+   {#Pass Method_Signature}
+   {#Hint Method_Signature}))
 
 (template [ ]
   [(def: 
      (-> Evaluation (Maybe Method_Signature))
-     (|>> (case> ( output)
-                 (#.Some output)
+     (|>> (case> { output}
+                 {#.Some output}
 
                  _
                  #.None)))]
@@ -1310,7 +1310,7 @@
                                                      (|>> #Hint))
                                             (method_signature method_style method)))))))]
     (case (list.all pass! candidates)
-      (#.Item method #.End)
+      {#.Item method #.End}
       (in method)
 
       #.End
@@ -1340,7 +1340,7 @@
                                          (if passes? (|>> #Pass) (|>> #Hint))
                                          (constructor_signature constructor))))))]
     (case (list.all pass! candidates)
-      (#.Item constructor #.End)
+      {#.Item constructor #.End}
       (in constructor)
 
       #.End
@@ -1387,10 +1387,10 @@
                             (not deprecated?))
          [outputT argsA] (inferenceA.general archive analyse methodT (list\each product.right argsTC))
          outputJT (check_return outputT)]
-        (in (#/////analysis.Extension extension_name (list& (/////analysis.text (..signature (jvm.class class (list))))
+        (in {#/////analysis.Extension extension_name (list& (/////analysis.text (..signature (jvm.class class (list))))
                                                             (/////analysis.text method)
                                                             (/////analysis.text (..signature outputJT))
-                                                            (decorate_inputs argsT argsA))))))]))
+                                                            (decorate_inputs argsT argsA))})))]))
 
 (def: (invoke::virtual class_loader)
   (-> java/lang/ClassLoader Handler)
@@ -1405,17 +1405,17 @@
                             (not deprecated?))
          [outputT allA] (inferenceA.general archive analyse methodT (list& objectC (list\each product.right argsTC)))
          .let [[objectA argsA] (case allA
-                                 (#.Item objectA argsA)
+                                 {#.Item objectA argsA}
                                  [objectA argsA]
 
                                  _
                                  (undefined))]
          outputJT (check_return outputT)]
-        (in (#/////analysis.Extension extension_name (list& (/////analysis.text (..signature (jvm.class class (list))))
+        (in {#/////analysis.Extension extension_name (list& (/////analysis.text (..signature (jvm.class class (list))))
                                                             (/////analysis.text method)
                                                             (/////analysis.text (..signature outputJT))
                                                             objectA
-                                                            (decorate_inputs argsT argsA))))))]))
+                                                            (decorate_inputs argsT argsA))})))]))
 
 (def: (invoke::special class_loader)
   (-> java/lang/ClassLoader Handler)
@@ -1430,10 +1430,10 @@
                             (not deprecated?))
          [outputT argsA] (inferenceA.general archive analyse methodT (list& objectC (list\each product.right argsTC)))
          outputJT (check_return outputT)]
-        (in (#/////analysis.Extension extension_name (list& (/////analysis.text (..signature (jvm.class class (list))))
+        (in {#/////analysis.Extension extension_name (list& (/////analysis.text (..signature (jvm.class class (list))))
                                                             (/////analysis.text method)
                                                             (/////analysis.text (..signature outputJT))
-                                                            (decorate_inputs argsT argsA))))))]))
+                                                            (decorate_inputs argsT argsA))})))]))
 
 (def: (invoke::interface class_loader)
   (-> java/lang/ClassLoader Handler)
@@ -1451,18 +1451,18 @@
                             (not deprecated?))
          [outputT allA] (inferenceA.general archive analyse methodT (list& objectC (list\each product.right argsTC)))
          .let [[objectA argsA] (case allA
-                                 (#.Item objectA argsA)
+                                 {#.Item objectA argsA}
                                  [objectA argsA]
 
                                  _
                                  (undefined))]
          outputJT (check_return outputT)]
-        (in (#/////analysis.Extension extension_name
-                                      (list& (/////analysis.text (..signature (jvm.class class_name (list))))
-                                             (/////analysis.text method)
-                                             (/////analysis.text (..signature outputJT))
-                                             objectA
-                                             (decorate_inputs argsT argsA))))))]))
+        (in {#/////analysis.Extension extension_name
+             (list& (/////analysis.text (..signature (jvm.class class_name (list))))
+                    (/////analysis.text method)
+                    (/////analysis.text (..signature outputJT))
+                    objectA
+                    (decorate_inputs argsT argsA))})))]))
 
 (def: (invoke::constructor class_loader)
   (-> java/lang/ClassLoader Handler)
@@ -1476,8 +1476,8 @@
          _ (phase.assertion ..deprecated_method [class ..constructor_method methodT]
                             (not deprecated?))
          [outputT argsA] (inferenceA.general archive analyse methodT (list\each product.right argsTC))]
-        (in (#/////analysis.Extension extension_name (list& (/////analysis.text (..signature (jvm.class class (list))))
-                                                            (decorate_inputs argsT argsA))))))]))
+        (in {#/////analysis.Extension extension_name (list& (/////analysis.text (..signature (jvm.class class (list))))
+                                                            (decorate_inputs argsT argsA))})))]))
 
 (def: (bundle::member class_loader)
   (-> java/lang/ClassLoader Bundle)
@@ -1693,7 +1693,7 @@
                                   (in [name luxT])))
                               arguments)
        [scope bodyA] (|> arguments'
-                         (#.Item [self_name selfT])
+                         {#.Item [self_name selfT]}
                          list.reversed
                          (list\mix scope.with_local (analyse archive body))
                          (typeA.with_type .Any)
@@ -1707,10 +1707,10 @@
                                      (/////analysis.tuple (list\each ..argument_analysis arguments))
                                      (/////analysis.tuple (list\each class_analysis exceptions))
                                      (/////analysis.tuple (list\each typed_analysis super_arguments))
-                                     (#/////analysis.Function
+                                     {#/////analysis.Function
                                       (list\each (|>> /////analysis.variable)
                                                  (scope.environment scope))
-                                      (/////analysis.tuple (list bodyA)))
+                                      (/////analysis.tuple (list bodyA))}
                                      ))))))
 
 (type: .public (Virtual_Method a)
@@ -1769,7 +1769,7 @@
                                   (in [name luxT])))
                               arguments)
        [scope bodyA] (|> arguments'
-                         (#.Item [self_name selfT])
+                         {#.Item [self_name selfT]}
                          list.reversed
                          (list\mix scope.with_local (analyse archive body))
                          (typeA.with_type returnT)
@@ -1785,10 +1785,10 @@
                                      (/////analysis.tuple (list\each ..argument_analysis arguments))
                                      (return_analysis return)
                                      (/////analysis.tuple (list\each class_analysis exceptions))
-                                     (#/////analysis.Function
+                                     {#/////analysis.Function
                                       (list\each (|>> /////analysis.variable)
                                                  (scope.environment scope))
-                                      (/////analysis.tuple (list bodyA)))
+                                      (/////analysis.tuple (list bodyA))}
                                      ))))))
 
 (type: .public (Static_Method a)
@@ -1857,10 +1857,10 @@
                                      (return_analysis return)
                                      (/////analysis.tuple (list\each class_analysis
                                                                      exceptions))
-                                     (#/////analysis.Function
+                                     {#/////analysis.Function
                                       (list\each (|>> /////analysis.variable)
                                                  (scope.environment scope))
-                                      (/////analysis.tuple (list bodyA)))
+                                      (/////analysis.tuple (list bodyA))}
                                      ))))))
 
 (type: .public (Overriden_Method a)
@@ -1914,10 +1914,10 @@
     (case (list.one (function (_ super)
                       (let [[super_name super_parameters] (jvm_parser.read_class super)]
                         (if (text\= parent_name super_name)
-                          (#.Some super_parameters)
+                          {#.Some super_parameters}
                           #.None)))
                     supers)
-      (#.Some super_parameters)
+      {#.Some super_parameters}
       (let [expected_count (list.size parent_parameters)
             actual_count (list.size super_parameters)]
         (if (n.= expected_count actual_count)
@@ -1966,25 +1966,25 @@
         bodyA
         
         2
-        (#/////analysis.Case (/////analysis.unit)
-                             [[#/////analysis.when
-                               (#/////analysis.Bind 2)
+        {#/////analysis.Case (/////analysis.unit)
+         [[#/////analysis.when
+           {#/////analysis.Bind 2}
                                
-                               #/////analysis.then
-                               bodyA]
-                              (list)])
+           #/////analysis.then
+           bodyA]
+          (list)]}
 
         _
-        (#/////analysis.Case (/////analysis.unit)
-                             [[#/////analysis.when
-                               (#/////analysis.Complex
-                                (#/////analysis.Tuple (|> arity
-                                                          list.indices
-                                                          (list\each (|>> (n.+ 2) #/////analysis.Bind)))))
+        {#/////analysis.Case (/////analysis.unit)
+         [[#/////analysis.when
+           {#/////analysis.Complex
+            {#/////analysis.Tuple (|> arity
+                                      list.indices
+                                      (list\each (|>> (n.+ 2) #/////analysis.Bind)))}}
                                
-                               #/////analysis.then
-                               bodyA]
-                              (list)]))))
+           #/////analysis.then
+           bodyA]
+          (list)]})))
 
 (def: .public (analyse_overriden_method analyse archive selfT mapping supers method)
   (-> Phase Archive .Type Mapping (List (Type Class)) (Overriden_Method Code) (Operation Analysis))
@@ -2012,7 +2012,7 @@
                               arguments)
        returnT (boxed_reflection_return mapping return)
        [scope bodyA] (|> arguments'
-                         (#.Item [self_name selfT])
+                         {#.Item [self_name selfT]}
                          list.reversed
                          (list\mix scope.with_local (analyse archive body))
                          (typeA.with_type returnT)
@@ -2028,15 +2028,15 @@
                                      (return_analysis return)
                                      (/////analysis.tuple (list\each class_analysis
                                                                      exceptions))
-                                     (#/////analysis.Function
+                                     {#/////analysis.Function
                                       (list\each (|>> /////analysis.variable)
                                                  (scope.environment scope))
-                                      (..hide_method_body (list.size arguments) bodyA))
+                                      (..hide_method_body (list.size arguments) bodyA)}
                                      ))))))
 
 (type: .public (Method_Definition a)
   (Variant
-   (#Overriden_Method (Overriden_Method a))))
+   {#Overriden_Method (Overriden_Method a)}))
 
 (def: .public parameter_types
   (-> (List (Type Var)) (Check (List [(Type Var) .Type])))
@@ -2082,7 +2082,7 @@
     (in (|> (list.zipped/2 expected_parameters actual_parameters)
             (list\mix (function (_ [expected actual] mapping)
                         (case (jvm_parser.var? actual)
-                          (#.Some actual)
+                          {#.Some actual}
                           (dictionary.has actual expected mapping)
                           
                           #.None
@@ -2154,7 +2154,7 @@
          selfT (///.lifted (do meta.monad
                              [where meta.current_module_name
                               id meta.seed]
-                             (in (inheritance_relationship_type (#.Primitive (..anonymous_class_name where id) (list))
+                             (in (inheritance_relationship_type {#.Primitive (..anonymous_class_name where id) (list)}
                                                                 super_classT
                                                                 super_interfaceT+))))
          _ (typeA.infer selfT)
@@ -2165,14 +2165,14 @@
                                                        (analyse archive term))]
                                               (in [type termA])))
                                         constructor_args)
-         .let [supers (#.Item super_class super_interfaces)]
+         .let [supers {#.Item super_class super_interfaces}]
          _ (..require_complete_method_concretion class_loader supers methods)
          methodsA (monad.each ! (analyse_overriden_method analyse archive selfT mapping supers) methods)]
-        (in (#/////analysis.Extension extension_name
-                                      (list (class_analysis super_class)
-                                            (/////analysis.tuple (list\each class_analysis super_interfaces))
-                                            (/////analysis.tuple (list\each typed_analysis constructor_argsA+))
-                                            (/////analysis.tuple methodsA))))))]))
+        (in {#/////analysis.Extension extension_name
+             (list (class_analysis super_class)
+                   (/////analysis.tuple (list\each class_analysis super_interfaces))
+                   (/////analysis.tuple (list\each typed_analysis constructor_argsA+))
+                   (/////analysis.tuple methodsA))})))]))
 
 (def: (bundle::class class_loader)
   (-> java/lang/ClassLoader Bundle)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lua.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lua.lux
index f7ed4ed54..c9c1dfb0b 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lua.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lua.lux
@@ -50,7 +50,7 @@
                    (phase archive lengthC))
          [var_id varT] (analysis/type.with_env check.var)
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list lengthA)))))]))
+        (in {#analysis.Extension extension (list lengthA)})))]))
 
 (def: array::length
   Handler
@@ -62,7 +62,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer Nat)]
-        (in (#analysis.Extension extension (list arrayA)))))]))
+        (in {#analysis.Extension extension (list arrayA)})))]))
 
 (def: array::read
   Handler
@@ -76,7 +76,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer varT)]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: array::write
   Handler
@@ -92,7 +92,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA valueA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA valueA arrayA)})))]))
 
 (def: array::delete
   Handler
@@ -106,7 +106,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: bundle::array
   Bundle
@@ -128,8 +128,8 @@
         [objectA (analysis/type.with_type ..Object
                    (phase archive objectC))
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list (analysis.text fieldC)
-                                                 objectA)))))]))
+        (in {#analysis.Extension extension (list (analysis.text fieldC)
+                                                 objectA)})))]))
 
 (def: object::do
   Handler
@@ -141,9 +141,9 @@
                    (phase archive objectC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list& (analysis.text methodC)
+        (in {#analysis.Extension extension (list& (analysis.text methodC)
                                                   objectA
-                                                  inputsA)))))]))
+                                                  inputsA)})))]))
 
 (def: bundle::object
   Bundle
@@ -165,7 +165,7 @@
            [inputA (analysis/type.with_type (type )
                      (phase archive inputC))
             _ (analysis/type.infer (type ))]
-           (in (#analysis.Extension extension (list inputA)))))]))]
+           (in {#analysis.Extension extension (list inputA)})))]))]
 
   [utf8::encode Text (array.Array (I64 Any))]
   [utf8::decode (array.Array (I64 Any)) Text]
@@ -186,7 +186,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: lua::apply
   Handler
@@ -198,7 +198,7 @@
                         (phase archive abstractionC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list& abstractionA inputsA)))))]))
+        (in {#analysis.Extension extension (list& abstractionA inputsA)})))]))
 
 (def: lua::power
   Handler
@@ -211,7 +211,7 @@
          baseA (analysis/type.with_type Frac
                  (phase archive baseC))
          _ (analysis/type.infer Frac)]
-        (in (#analysis.Extension extension (list powerA baseA)))))]))
+        (in {#analysis.Extension extension (list powerA baseA)})))]))
 
 (def: lua::import
   Handler
@@ -220,7 +220,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer ..Object)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: lua::function
   Handler
@@ -232,8 +232,8 @@
          abstractionA (analysis/type.with_type (-> inputT Any)
                         (phase archive abstractionC))
          _ (analysis/type.infer ..Function)]
-        (in (#analysis.Extension extension (list (analysis.nat arity)
-                                                 abstractionA)))))]))
+        (in {#analysis.Extension extension (list (analysis.nat arity)
+                                                 abstractionA)})))]))
 
 (def: .public bundle
   Bundle
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
index fb283bf9e..0609bee0a 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
@@ -41,10 +41,10 @@
         Handler))
   (function (_ extension_name analyse archive args)
     (case (.result syntax args)
-      (#try.Success inputs)
+      {#try.Success inputs}
       (handler extension_name analyse archive inputs)
 
-      (#try.Failure _)
+      {#try.Failure _}
       (////analysis.except ///.invalid_syntax [extension_name %.code args]))))
 
 (def: (simple inputsT+ outputT)
@@ -60,7 +60,7 @@
                                  (typeA.with_type argT
                                    (analyse archive argC)))
                                (list.zipped/2 inputsT+ args))]
-            (in (#////analysis.Extension extension_name argsA)))
+            (in {#////analysis.Extension extension_name argsA}))
           (////analysis.except ///.incorrect_arity [extension_name num_expected num_actual]))))))
 
 (def: .public (nullary valueT)
@@ -119,7 +119,7 @@
                                (list (////analysis.tuple (list\each (|>> ////analysis.nat) cases))
                                      branch))))
                  (list& input else)
-                 (#////analysis.Extension extension_name)))))])))
+                 {#////analysis.Extension extension_name}))))])))
 
 ... "lux is" represents reference/pointer equality.
 (def: lux::is
@@ -142,7 +142,7 @@
          _ (typeA.infer (type (Either Text varT)))
          opA (typeA.with_type (type (-> .Any varT))
                (analyse archive opC))]
-        (in (#////analysis.Extension extension_name (list opA))))
+        (in {#////analysis.Extension extension_name (list opA)}))
       
       _
       (////analysis.except ///.incorrect_arity [extension_name 1 (list.size args)]))))
@@ -151,7 +151,7 @@
   Handler
   (function (_ extension_name analyse archive argsC+)
     (case argsC+
-      (^ (list [_ (#.Text module_name)] exprC))
+      (^ (list [_ {#.Text module_name}] exprC))
       (////analysis.with_current_module module_name
         (analyse archive exprC))
       
@@ -214,15 +214,15 @@
                       (do !
                         [input_type (///.lifted (meta.definition (name_of .Macro')))]
                         (case input_type
-                          (^or (#.Definition [exported? def_type def_value])
-                               (#.Type [exported? def_value labels]))
+                          (^or {#.Definition [exported? def_type def_value]}
+                               {#.Type [exported? def_value labels]})
                           (in (:as Type def_value))
 
-                          (^or (#.Label _)
-                               (#.Slot _))
+                          (^or {#.Label _}
+                               {#.Slot _})
                           (////.failure (exception.error ..not_a_type [(name_of .Macro')]))
 
-                          (#.Alias real_name)
+                          {#.Alias real_name}
                           (recur real_name))))]
         (typeA.with_type input_type
           (phase archive valueC))))]))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/php.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/php.lux
index a52f8bb53..16717539b 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/php.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/php.lux
@@ -38,7 +38,7 @@
                    (phase archive lengthC))
          [var_id varT] (analysis/type.with_env check.var)
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list lengthA)))))]))
+        (in {#analysis.Extension extension (list lengthA)})))]))
 
 (def: array::length
   Handler
@@ -50,7 +50,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer Nat)]
-        (in (#analysis.Extension extension (list arrayA)))))]))
+        (in {#analysis.Extension extension (list arrayA)})))]))
 
 (def: array::read
   Handler
@@ -64,7 +64,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer varT)]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: array::write
   Handler
@@ -80,7 +80,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA valueA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA valueA arrayA)})))]))
 
 (def: array::delete
   Handler
@@ -94,7 +94,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: bundle::array
   Bundle
@@ -127,7 +127,7 @@
       (do [! phase.monad]
         [inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list& (analysis.text constructor) inputsA)))))]))
+        (in {#analysis.Extension extension (list& (analysis.text constructor) inputsA)})))]))
 
 (def: object::get
   Handler
@@ -138,8 +138,8 @@
         [objectA (analysis/type.with_type ..Object
                    (phase archive objectC))
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list (analysis.text fieldC)
-                                                 objectA)))))]))
+        (in {#analysis.Extension extension (list (analysis.text fieldC)
+                                                 objectA)})))]))
 
 (def: object::do
   Handler
@@ -151,9 +151,9 @@
                    (phase archive objectC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list& (analysis.text methodC)
+        (in {#analysis.Extension extension (list& (analysis.text methodC)
                                                   objectA
-                                                  inputsA)))))]))
+                                                  inputsA)})))]))
 
 (def: bundle::object
   Bundle
@@ -173,7 +173,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: php::apply
   Handler
@@ -185,7 +185,7 @@
                         (phase archive abstractionC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list& abstractionA inputsA)))))]))
+        (in {#analysis.Extension extension (list& abstractionA inputsA)})))]))
 
 (def: php::pack
   Handler
@@ -198,7 +198,7 @@
          dataA (analysis/type.with_type (type (Array (I64 Any)))
                  (phase archive dataC))
          _ (analysis/type.infer Text)]
-        (in (#analysis.Extension extension (list formatA dataA)))))]))
+        (in {#analysis.Extension extension (list formatA dataA)})))]))
 
 (def: .public bundle
   Bundle
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/python.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/python.lux
index 700f80163..ec21b45bc 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/python.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/python.lux
@@ -38,7 +38,7 @@
                    (phase archive lengthC))
          [var_id varT] (analysis/type.with_env check.var)
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list lengthA)))))]))
+        (in {#analysis.Extension extension (list lengthA)})))]))
 
 (def: array::length
   Handler
@@ -50,7 +50,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer Nat)]
-        (in (#analysis.Extension extension (list arrayA)))))]))
+        (in {#analysis.Extension extension (list arrayA)})))]))
 
 (def: array::read
   Handler
@@ -64,7 +64,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer varT)]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: array::write
   Handler
@@ -80,7 +80,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA valueA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA valueA arrayA)})))]))
 
 (def: array::delete
   Handler
@@ -94,7 +94,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: bundle::array
   Bundle
@@ -136,8 +136,8 @@
         [objectA (analysis/type.with_type ..Object
                    (phase archive objectC))
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list (analysis.text fieldC)
-                                                 objectA)))))]))
+        (in {#analysis.Extension extension (list (analysis.text fieldC)
+                                                 objectA)})))]))
 
 (def: object::do
   Handler
@@ -149,9 +149,9 @@
                    (phase archive objectC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list& (analysis.text methodC)
+        (in {#analysis.Extension extension (list& (analysis.text methodC)
                                                   objectA
-                                                  inputsA)))))]))
+                                                  inputsA)})))]))
 
 (def: bundle::object
   Bundle
@@ -170,7 +170,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: python::import
   Handler
@@ -179,7 +179,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer ..Object)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: python::apply
   Handler
@@ -191,7 +191,7 @@
                         (phase archive abstractionC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list& abstractionA inputsA)))))]))
+        (in {#analysis.Extension extension (list& abstractionA inputsA)})))]))
 
 (def: python::function
   Handler
@@ -203,8 +203,8 @@
          abstractionA (analysis/type.with_type (-> inputT Any)
                         (phase archive abstractionC))
          _ (analysis/type.infer ..Function)]
-        (in (#analysis.Extension extension (list (analysis.nat arity)
-                                                 abstractionA)))))]))
+        (in {#analysis.Extension extension (list (analysis.nat arity)
+                                                 abstractionA)})))]))
 
 (def: python::exec
   Handler
@@ -217,7 +217,7 @@
          globalsA (analysis/type.with_type ..Dict
                     (phase archive globalsC))
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list codeA globalsA)))))]))
+        (in {#analysis.Extension extension (list codeA globalsA)})))]))
 
 (def: .public bundle
   Bundle
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/ruby.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/ruby.lux
index 6bf24f1fa..525458cdd 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/ruby.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/ruby.lux
@@ -38,7 +38,7 @@
                    (phase archive lengthC))
          [var_id varT] (analysis/type.with_env check.var)
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list lengthA)))))]))
+        (in {#analysis.Extension extension (list lengthA)})))]))
 
 (def: array::length
   Handler
@@ -50,7 +50,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer Nat)]
-        (in (#analysis.Extension extension (list arrayA)))))]))
+        (in {#analysis.Extension extension (list arrayA)})))]))
 
 (def: array::read
   Handler
@@ -64,7 +64,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer varT)]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: array::write
   Handler
@@ -80,7 +80,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA valueA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA valueA arrayA)})))]))
 
 (def: array::delete
   Handler
@@ -94,7 +94,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: bundle::array
   Bundle
@@ -128,8 +128,8 @@
         [objectA (analysis/type.with_type ..Object
                    (phase archive objectC))
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list (analysis.text fieldC)
-                                                 objectA)))))]))
+        (in {#analysis.Extension extension (list (analysis.text fieldC)
+                                                 objectA)})))]))
 
 (def: object::do
   Handler
@@ -141,9 +141,9 @@
                    (phase archive objectC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer .Any)]
-        (in (#analysis.Extension extension (list& (analysis.text methodC)
+        (in {#analysis.Extension extension (list& (analysis.text methodC)
                                                   objectA
-                                                  inputsA)))))]))
+                                                  inputsA)})))]))
 
 (def: bundle::object
   Bundle
@@ -162,7 +162,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: ruby::apply
   Handler
@@ -174,7 +174,7 @@
                         (phase archive abstractionC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list& abstractionA inputsA)))))]))
+        (in {#analysis.Extension extension (list& abstractionA inputsA)})))]))
 
 (def: ruby::import
   Handler
@@ -183,7 +183,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer Bit)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: .public bundle
   Bundle
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/scheme.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/scheme.lux
index 2075522d7..a0df81d93 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/scheme.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/scheme.lux
@@ -38,7 +38,7 @@
                    (phase archive lengthC))
          [var_id varT] (analysis/type.with_env check.var)
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list lengthA)))))]))
+        (in {#analysis.Extension extension (list lengthA)})))]))
 
 (def: array::length
   Handler
@@ -50,7 +50,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer Nat)]
-        (in (#analysis.Extension extension (list arrayA)))))]))
+        (in {#analysis.Extension extension (list arrayA)})))]))
 
 (def: array::read
   Handler
@@ -64,7 +64,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer varT)]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: array::write
   Handler
@@ -80,7 +80,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA valueA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA valueA arrayA)})))]))
 
 (def: array::delete
   Handler
@@ -94,7 +94,7 @@
          arrayA (analysis/type.with_type (type (Array varT))
                   (phase archive arrayC))
          _ (analysis/type.infer (type (Array varT)))]
-        (in (#analysis.Extension extension (list indexA arrayA)))))]))
+        (in {#analysis.Extension extension (list indexA arrayA)})))]))
 
 (def: bundle::array
   Bundle
@@ -131,7 +131,7 @@
     (function (_ extension phase archive name)
       (do phase.monad
         [_ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list (analysis.text name))))))]))
+        (in {#analysis.Extension extension (list (analysis.text name))})))]))
 
 (def: scheme::apply
   Handler
@@ -143,7 +143,7 @@
                         (phase archive abstractionC))
          inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC)
          _ (analysis/type.infer Any)]
-        (in (#analysis.Extension extension (list& abstractionA inputsA)))))]))
+        (in {#analysis.Extension extension (list& abstractionA inputsA)})))]))
 
 (def: .public bundle
   Bundle
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 6dc2b393d..76c66e37d 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
@@ -144,8 +144,8 @@
           )))
 
 (type: Field
-  (#Constant Constant)
-  (#Variable Variable))
+  {#Constant Constant}
+  {#Variable Variable})
 
 (def: field
   (Parser Field)
@@ -155,10 +155,10 @@
       ))
 
 (type: Method_Definition
-  (#Constructor (jvm.Constructor Code))
-  (#Virtual_Method (jvm.Virtual_Method Code))
-  (#Static_Method (jvm.Static_Method Code))
-  (#Overriden_Method (jvm.Overriden_Method Code)))
+  {#Constructor (jvm.Constructor Code)}
+  {#Virtual_Method (jvm.Virtual_Method Code)}
+  {#Static_Method (jvm.Static_Method Code)}
+  {#Overriden_Method (jvm.Overriden_Method Code)})
 
 (def: method
   (Parser Method_Definition)
@@ -186,10 +186,10 @@
   (-> Field (Resource field.Field))
   (case field
     ... TODO: Handle annotations.
-    (#Constant [name annotations type value])
+    {#Constant [name annotations type value]}
     (case value
       (^template [  ]
-        [[_ ( value)]
+        [[_ { value}]
          (do pool.monad
            [constant (`` (|> value (~~ (template.spliced ))))
             attribute (attribute.constant constant)]
@@ -210,7 +210,7 @@
       (undefined))
 
     ... TODO: Handle annotations.
-    (#Variable [name visibility state annotations type])
+    {#Variable [name visibility state annotations type]}
     (field.field (modifier\composite visibility state)
                  name type (row.row))))
 
@@ -225,16 +225,16 @@
       [methodA (: (Operation analysis.Analysis)
                   (directive.lifted_analysis
                    (case methodC
-                     (#Constructor method)
+                     {#Constructor method}
                      (jvm.analyse_constructor_method analyse selfT mapping method)
 
-                     (#Virtual_Method method)
+                     {#Virtual_Method method}
                      (jvm.analyse_virtual_method analyse selfT mapping method)
                      
-                     (#Static_Method method)
+                     {#Static_Method method}
                      (jvm.analyse_static_method analyse mapping method)
                      
-                     (#Overriden_Method method)
+                     {#Overriden_Method method}
                      (jvm.analyse_overriden_method analyse selfT mapping method))))]
       (directive.lifted_synthesis
        (synthesize methodA)))))
@@ -275,7 +275,7 @@
                               (monad.each check.monad
                                           (|>> ..signature (luxT.check (luxT.class mapping)))
                                           super_interfaces)))
-         .let [selfT (jvm.inheritance_relationship_type (#.Primitive name (list\each product.right parameters))
+         .let [selfT (jvm.inheritance_relationship_type {#.Primitive name (list\each product.right parameters)}
                                                         super_classT
                                                         super_interfaceT+)]
          state (extension.lifted phase.get_state)
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 0ebdde096..4ea0c4e7a 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
@@ -54,10 +54,10 @@
         (Handler anchor expression directive)))
   (function (_ extension_name phase archive inputs)
     (case (.result syntax inputs)
-      (#try.Success inputs)
+      {#try.Success inputs}
       (handler extension_name phase archive inputs)
 
-      (#try.Failure error)
+      {#try.Failure error}
       (phase.except ///.invalid_syntax [extension_name %.code inputs]))))
 
 (def: (context [module_id artifact_id])
@@ -138,7 +138,7 @@
                                                  (check.clean code//type))]
                                    (in [code//type codeA]))
 
-                                 (#.Some expected)
+                                 {#.Some expected}
                                  (do !
                                    [codeA (typeA.with_type expected
                                             (analyse archive codeC))]
@@ -219,7 +219,7 @@
   (-> Expander /////analysis.Bundle Handler)
   (function (_ extension_name phase archive inputsC+)
     (case inputsC+
-      (^ (list [_ (#.Identifier ["" short_name])] valueC exported?C))
+      (^ (list [_ {#.Identifier ["" short_name]}] valueC exported?C))
       (do phase.monad
         [current_module (/////directive.lifted_analysis
                          (///.lifted meta.current_module_name))
@@ -227,7 +227,7 @@
          [type valueT value] (..definition archive full_name #.None valueC)
          [_ _ exported?] (evaluate! archive Bit exported?C)
          _ (/////directive.lifted_analysis
-            (module.define short_name (#.Definition [(:as Bit exported?) type value])))
+            (module.define short_name {#.Definition [(:as Bit exported?) type value]}))
          _ (..refresh expander host_analysis)
          _ (..announce_definition! short_name type)]
         (in /////directive.no_requirements))
@@ -258,23 +258,23 @@
          .let [full_name [current_module short_name]]
          [_ _ exported?] (evaluate! archive Bit exported?C)
          .let [exported? (:as Bit exported?)]
-         [type valueT value] (..definition archive full_name (#.Some .Type) valueC)
+         [type valueT value] (..definition archive full_name {#.Some .Type} valueC)
          labels (/////directive.lifted_analysis
                  (do phase.monad
                    [.let [[record? labels] (case labels
-                                             (#.Left tags)
+                                             {#.Left tags}
                                              [false tags]
                                              
-                                             (#.Right slots)
+                                             {#.Right slots}
                                              [true slots])]
                     _ (case labels
                         #.End
-                        (module.define short_name (#.Definition [exported? type value]))
+                        (module.define short_name {#.Definition [exported? type value]})
 
-                        (#.Item labels)
-                        (module.define short_name (#.Type [exported? (:as .Type value) (if record?
-                                                                                         (#.Right labels)
-                                                                                         (#.Left labels))])))
+                        {#.Item labels}
+                        (module.define short_name {#.Type [exported? (:as .Type value) (if record?
+                                                                                         {#.Right labels}
+                                                                                         {#.Left labels})]}))
                     _ (module.declare_tags record? labels exported? (:as .Type value))]
                    (in labels)))
          _ (..refresh expander host_analysis)
@@ -325,15 +325,15 @@
     [current_module (///.lifted meta.current_module_name)
      constant (///.lifted (meta.definition original))]
     (case constant
-      (#.Alias de_aliased)
+      {#.Alias de_aliased}
       (phase.except ..cannot_alias_an_alias [[current_module alias] original de_aliased])
       
-      (^or (#.Definition _)
-           (#.Type _))
-      (module.define alias (#.Alias original))
+      (^or {#.Definition _}
+           {#.Type _})
+      (module.define alias {#.Alias original})
 
-      (^or (#.Label _)
-           (#.Slot _))
+      (^or {#.Label _}
+           {#.Slot _})
       (phase.except ..cannot_alias_a_label [[current_module alias] original]))))
 
 (def: def::alias
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux
index facb40e7e..8c6df79fd 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/common_lisp/common.lux
@@ -45,10 +45,10 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except extension.invalid_syntax [extension_name %synthesis input]))))
 
 (template: (!unary function)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
index 1072bffe4..54b345e36 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/js/common.lux
@@ -45,10 +45,10 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except extension.invalid_syntax [extension_name %synthesis input]))))
 
 ... [Procedures]
@@ -101,7 +101,7 @@
   Phase!
   (case synthesis
     ... TODO: Get rid of this ASAP
-    (#synthesis.Extension "lux syntax char case!" parameters)
+    {#synthesis.Extension "lux syntax char case!" parameters}
     (do /////.monad
       [body (expression archive synthesis)]
       (in (:as Statement body)))
@@ -115,9 +115,13 @@
      [synthesis.text]
      [synthesis.variant]
      [synthesis.tuple]
-     [#synthesis.Reference]
      [synthesis.branch/get]
-     [synthesis.function/apply]
+     [synthesis.function/apply])
+
+    (^template []
+      [(^ { value})
+       (/////\each _.return (expression archive synthesis))])
+    ([#synthesis.Reference]
      [#synthesis.Extension])
 
     (^ (synthesis.branch/case case))
@@ -162,13 +166,13 @@
                  ... (in (_.apply/* (_.closure (list)
                  ...                           (_.switch (_.the //runtime.i64_low_field inputG)
                  ...                                     conditionals!
-                 ...                                     (#.Some (_.return else!))))
+                 ...                                     {#.Some (_.return else!)}))
                  ...                (list)))
                  (in (<| (:as Expression)
                          (: Statement)
                          (_.switch (_.the //runtime.i64_low_field inputG)
                                    conditionals!
-                                   (#.Some else!))))))]))
+                                   {#.Some else!})))))]))
 
 ... [Bundles]
 (def: lux_procs
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 2ff3fd02a..f3efd5f47 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
@@ -49,10 +49,10 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except /////extension.invalid_syntax [extension_name //////synthesis.%synthesis input]))))
 
 (def: $Boolean (type.class "java.lang.Boolean" (list)))
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 e0626e0b6..b070a0a6b 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
@@ -339,9 +339,9 @@
   (do <>.monad
     [arrayJT (.then parser.array .text)]
     (case (parser.array? arrayJT)
-      (#.Some elementJT)
+      {#.Some elementJT}
       (case (parser.object? elementJT)
-        (#.Some elementJT)
+        {#.Some elementJT}
         (in elementJT)
 
         #.None
@@ -644,7 +644,7 @@
       (do //////.monad
         [.let [$class (type.class class (list))]]
         (case (dictionary.value unboxed ..primitives)
-          (#.Some primitive)
+          {#.Some primitive}
           (in (_.getstatic $class field primitive))
           
           #.None
@@ -661,7 +661,7 @@
         [valueG (generate archive valueS)
          .let [$class (type.class class (list))]]
         (case (dictionary.value unboxed ..primitives)
-          (#.Some primitive)
+          {#.Some primitive}
           (in ($_ _.composite
                   valueG
                   (_.putstatic $class field primitive)
@@ -683,7 +683,7 @@
         [objectG (generate archive objectS)
          .let [$class (type.class class (list))
                getG (case (dictionary.value unboxed ..primitives)
-                      (#.Some primitive)
+                      {#.Some primitive}
                       (_.getfield $class field primitive)
                       
                       #.None
@@ -703,7 +703,7 @@
          objectG (generate archive objectS)
          .let [$class (type.class class (list))
                putG (case (dictionary.value unboxed ..primitives)
-                      (#.Some primitive)
+                      {#.Some primitive}
                       (_.putfield $class field primitive)
                       
                       #.None
@@ -729,10 +729,10 @@
   (do //////.monad
     [valueG (generate archive valueS)]
     (case (type.primitive? valueT)
-      (#.Right valueT)
+      {#.Right valueT}
       (in [valueT valueG])
       
-      (#.Left valueT)
+      {#.Left valueT}
       (in [valueT ($_ _.composite
                       valueG
                       (_.checkcast valueT))]))))
@@ -740,10 +740,10 @@
 (def: (prepare_output outputT)
   (-> (Type Return) (Bytecode Any))
   (case (type.void? outputT)
-    (#.Right outputT)
+    {#.Right outputT}
     ..unitG
     
-    (#.Left outputT)
+    {#.Left outputT}
     (\ _.monad in [])))
 
 (def: invoke::static
@@ -855,13 +855,13 @@
       (//////synthesis.path/then (normalize bodyS))
 
       (^template []
-        [(^ ( leftP rightP))
-         ( (recur leftP) (recur rightP))])
+        [(^ { leftP rightP})
+         { (recur leftP) (recur rightP)}])
       ([#//////synthesis.Alt]
        [#//////synthesis.Seq])
 
       (^template []
-        [(^ ( value))
+        [(^ { value})
          path])
       ([#//////synthesis.Pop]
        [#//////synthesis.Bind]
@@ -875,7 +875,7 @@
   (function (recur body)
     (case body
       (^template []
-        [(^ ( value))
+        [(^ { value})
          body])
       ([#//////synthesis.Primitive]
        [//////synthesis.constant])
@@ -928,8 +928,8 @@
       (^ (//////synthesis.function/apply [functionS inputsS+]))
       (//////synthesis.function/apply [(recur functionS) (list\each recur inputsS+)])
 
-      (#//////synthesis.Extension [name inputsS+])
-      (#//////synthesis.Extension [name (list\each recur inputsS+)]))))
+      {#//////synthesis.Extension [name inputsS+]}
+      {#//////synthesis.Extension [name (list\each recur inputsS+)]})))
 
 (def: $Object
   (type.class "java.lang.Object" (list)))
@@ -952,12 +952,12 @@
                                                       (_.putfield class (///reference.foreign_name register) $Object)))))]
     (method.method method.public "" (anonymous_init_method env)
                    (list)
-                   (#.Some ($_ _.composite
+                   {#.Some ($_ _.composite
                                (_.aload 0)
                                (monad.each _.monad product.right inputsTG)
                                (_.invokespecial super_class "" (type.method [(list\each product.left inputsTG) type.void (list)]))
                                store_capturedG
-                               _.return)))))
+                               _.return)})))
 
 (def: (anonymous_instance generate archive class env)
   (-> Phase Archive (Type category.Class) (Environment Synthesis) (Operation (Bytecode Any)))
@@ -972,17 +972,17 @@
 (def: (returnG returnT)
   (-> (Type Return) (Bytecode Any))
   (case (type.void? returnT)
-    (#.Right returnT)
+    {#.Right returnT}
     _.return
 
-    (#.Left returnT)
+    {#.Left returnT}
     (case (type.primitive? returnT)
-      (#.Left returnT)
+      {#.Left returnT}
       ($_ _.composite
           (_.checkcast returnT)
           _.areturn)
       
-      (#.Right returnT)
+      {#.Right returnT}
       (cond (or (\ type.equivalence = type.boolean returnT)
                 (\ type.equivalence = type.byte returnT)
                 (\ type.equivalence = type.short returnT)
@@ -1027,7 +1027,7 @@
                                   ... Give them names as "foreign" variables.
                                   list.enumeration
                                   (list\each (function (_ [id capture])
-                                               [capture (#//////variable.Foreign id)]))
+                                               [capture {#//////variable.Foreign id}]))
                                   (dictionary.from_list //////variable.hash))
                normalized_methods (list\each (function (_ [environment
                                                            [ownerT name
@@ -1037,7 +1037,7 @@
                                                (let [local_mapping (|> environment
                                                                        list.enumeration
                                                                        (list\each (function (_ [foreign_id capture])
-                                                                                    [(#//////variable.Foreign foreign_id)
+                                                                                    [{#//////variable.Foreign foreign_id}
                                                                                      (|> global_mapping
                                                                                          (dictionary.value capture)
                                                                                          maybe.trusted)]))
@@ -1066,9 +1066,9 @@
                                                                                returnT
                                                                                exceptionsT])
                                                                  (list)
-                                                                 (#.Some ($_ _.composite
+                                                                 {#.Some ($_ _.composite
                                                                              bodyG
-                                                                             (returnG returnT)))))))
+                                                                             (returnG returnT))}))))
                                         normalized_methods)
          bytecode (<| (\ ! each (format.result class.writer))
                       //////.lifted
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
index 1be1bcfa5..3523c19fa 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/lua/common.lux
@@ -48,10 +48,10 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except extension.invalid_syntax [extension_name %synthesis input]))))
 
 (template: (!unary function)
@@ -61,7 +61,7 @@
   Phase!
   (case synthesis
     ... TODO: Get rid of this ASAP
-    (#synthesis.Extension "lux syntax char case!" parameters)
+    {#synthesis.Extension "lux syntax char case!" parameters}
     (do /////.monad
       [body (expression archive synthesis)]
       (in (:as Statement body)))
@@ -75,9 +75,13 @@
      [synthesis.text]
      [synthesis.variant]
      [synthesis.tuple]
-     [#synthesis.Reference]
      [synthesis.branch/get]
-     [synthesis.function/apply]
+     [synthesis.function/apply])
+
+    (^template []
+      [(^ { value})
+       (/////\each _.return (expression archive synthesis))])
+    ([#synthesis.Reference]
      [#synthesis.Extension])
 
     (^ (synthesis.branch/case case))
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 d5f740ed4..9a06cd980 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
@@ -45,10 +45,10 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except extension.invalid_syntax [extension_name %synthesis input]))))
 
 (template: (!unary function)
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 03cb557dc..cbb7c557d 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
@@ -47,7 +47,7 @@
   Phase!
   (case synthesis
     ... TODO: Get rid of this ASAP
-    (#synthesis.Extension "lux syntax char case!" parameters)
+    {#synthesis.Extension "lux syntax char case!" parameters}
     (do /////.monad
       [body (expression archive synthesis)]
       (in (:as (Statement Any) body)))
@@ -61,9 +61,13 @@
      [synthesis.text]
      [synthesis.variant]
      [synthesis.tuple]
-     [#synthesis.Reference]
      [synthesis.branch/get]
-     [synthesis.function/apply]
+     [synthesis.function/apply])
+
+    (^template []
+      [(^ { value})
+       (/////\each _.return (expression archive synthesis))])
+    ([#synthesis.Reference]
      [#synthesis.Extension])
 
     (^ (synthesis.branch/case case))
@@ -88,10 +92,10 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except extension.invalid_syntax [extension_name %synthesis input]))))
 
 ... TODO: Get rid of this ASAP
@@ -124,10 +128,10 @@
                   ... .let [dependencies (//case.dependencies (list\mix (function (_ right left)
                   ...                                                      (synthesis.path/seq left right))
                   ...                                                    (synthesis.path/then input)
-                  ...                                                    (#.Item (synthesis.path/then else)
-                  ...                                                            (list\each (|>> product.right
-                  ...                                                                           synthesis.path/then)
-                  ...                                                                      conditionals))))
+                  ...                                                    {#.Item (synthesis.path/then else)
+                  ...                                                     (list\each (|>> product.right
+                  ...                                                                     synthesis.path/then)
+                  ...                                                                conditionals)}))
                   ...       @closure (_.var (reference.artifact artifact_id))
                   ...       closure (_.def @closure dependencies
                   ...                      ($_ _.then
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux
index 68725c83a..2e533b5bd 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/r/common.lux
@@ -45,10 +45,10 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except extension.invalid_syntax [extension_name %synthesis input]))))
 
 ... (template: (!unary function)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
index a253cb8de..6b6538363 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/ruby/common.lux
@@ -48,17 +48,17 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except extension.invalid_syntax [extension_name %synthesis input]))))
 
 (def: .public (statement expression archive synthesis)
   Phase!
   (case synthesis
     ... TODO: Get rid of this ASAP
-    (#synthesis.Extension "lux syntax char case!" parameters)
+    {#synthesis.Extension "lux syntax char case!" parameters}
     (do /////.monad
       [body (expression archive synthesis)]
       (in (:as Statement
@@ -73,9 +73,13 @@
      [synthesis.text]
      [synthesis.variant]
      [synthesis.tuple]
-     [#synthesis.Reference]
      [synthesis.branch/get]
-     [synthesis.function/apply]
+     [synthesis.function/apply])
+
+    (^template []
+      [(^ { value})
+       (/////\each _.return (expression archive synthesis))])
+    ([#synthesis.Reference]
      [#synthesis.Extension])
 
     (^ (synthesis.branch/case case))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux
index bc2ad5cba..7161326e1 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/scheme/common.lux
@@ -45,10 +45,10 @@
         Handler))
   (function (_ extension_name phase archive input)
     (case (.result parser input)
-      (#try.Success input')
+      {#try.Success input'}
       (handler extension_name phase archive input')
 
-      (#try.Failure error)
+      {#try.Failure error}
       (/////.except extension.invalid_syntax [extension_name %synthesis input]))))
 
 (template: (!unary function)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp.lux
index 1b1f29f46..26a967a45 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp.lux
@@ -34,7 +34,7 @@
      [////synthesis.f64  /primitive.f64]
      [////synthesis.text /primitive.text])
 
-    (#////synthesis.Reference value)
+    {#////synthesis.Reference value}
     (//reference.reference /reference.system archive value)
 
     (^template [ ]
@@ -52,6 +52,6 @@
      [////synthesis.loop/recur /loop.recur]
      [////synthesis.function/abstraction /function.function])
 
-    (#////synthesis.Extension extension)
+    {#////synthesis.Extension extension}
     (///extension.apply archive generate extension)
     ))
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 90f67a68a..5442b7268 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
@@ -117,7 +117,7 @@
                     (_.go @fail)
                     (..push! @temp)))
                 (.case next!
-                  (#.Some next!)
+                  {#.Some next!}
                   (list next!)
                   
                   #.None
@@ -150,14 +150,14 @@
       #/////synthesis.Pop
       (///////phase\in ..pop!)
 
-      (#/////synthesis.Bind register)
+      {#/////synthesis.Bind register}
       (///////phase\in (_.setq (..register register) ..peek))
 
-      (#/////synthesis.Bit_Fork when thenP elseP)
+      {#/////synthesis.Bit_Fork when thenP elseP}
       (do [! ///////phase.monad]
         [then! (recur [$output @done @fail thenP])
          else! (.case elseP
-                 (#.Some elseP)
+                 {#.Some elseP}
                  (recur [$output @done @fail elseP])
 
                  #.None
@@ -171,7 +171,7 @@
                 then!))))
 
       (^template [  <=>]
-        [( item)
+        [{ item}
          (do [! ///////phase.monad]
            [clauses (monad.each ! (function (_ [match then])
                                     (do !
@@ -179,7 +179,7 @@
                                       (in [(<=> [(|> match )
                                                  ..peek])
                                            then!])))
-                                (#.Item item))]
+                                {#.Item item})]
            (in (list\mix (function (_ [when then] else)
                            (_.if when then else))
                          (_.go @fail)
@@ -195,7 +195,7 @@
          (^ ( idx nextP))
          (|> nextP
              [$output @done @fail] recur
-             (\ ///////phase.monad each (|>> #.Some ( @fail true idx))))])
+             (\ ///////phase.monad each (|>> {#.Some} ( @fail true idx))))])
       ([/////synthesis.side/left  /////synthesis.simple_left_side  ..left_choice]
        [/////synthesis.side/right /////synthesis.simple_right_side ..right_choice])
 
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 0f7c76ed8..1c7fd4877 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
@@ -109,7 +109,7 @@
       (let [runtime (code.local_identifier (///reference.artifact [..module_id runtime_id]))
             runtime_name (` (_.var (~ (code.text (%.code runtime)))))]
         (case declaration
-          (#.Left name)
+          {#.Left name}
           (let [g!name (code.local_identifier name)
                 code_nameC (code.local_identifier (format "@" name))]
             (in (list (` (def: .public (~ g!name)
@@ -120,7 +120,7 @@
                            (_.Expression Any)
                            (_.defparameter (~ runtime_name) (~ code)))))))
           
-          (#.Right [name inputs])
+          {#.Right [name inputs]}
           (let [g!name (code.local_identifier name)
                 code_nameC (code.local_identifier (format "@" name))
                 
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 eb78e6402..2a5fa7c1c 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
@@ -20,7 +20,7 @@
     #.End
     (///////phase\in (//primitive.text /////synthesis.unit))
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (expression archive singletonS)
 
     _
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js.lux
index e6aa9cdce..65b06ce16 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js.lux
@@ -49,7 +49,7 @@
     (^ (synthesis.tuple members))
     (/structure.tuple expression archive members)
 
-    (#synthesis.Reference value)
+    {#synthesis.Reference value}
     (//reference.reference /reference.system archive value)
 
     (^ (synthesis.branch/case case))
@@ -76,7 +76,7 @@
     (^ (synthesis.function/apply application))
     (/function.apply expression archive application)
 
-    (#synthesis.Extension extension)
+    {#synthesis.Extension extension}
     (///extension.apply archive expression extension)))
 
 (def: .public generate
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 5f634c533..8f98d44ab 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
@@ -171,7 +171,7 @@
      [/////synthesis.simple_right_side ..right_choice])
 
     (^ (/////synthesis.member/left 0))
-    (///////phase\in (#.Some (push_cursor! (_.at (_.i32 +0) ..peek_cursor))))
+    (///////phase\in {#.Some (push_cursor! (_.at (_.i32 +0) ..peek_cursor))})
 
     ... Extra optimization
     (^ (/////synthesis.path/seq
@@ -179,9 +179,9 @@
         (/////synthesis.!bind_top register thenP)))
     (do ///////phase.monad
       [then! (recur thenP)]
-      (in (#.Some ($_ _.then
+      (in {#.Some ($_ _.then
                       (_.define (..register register) (_.at (_.i32 +0) ..peek_cursor))
-                      then!))))
+                      then!)}))
 
     ... Extra optimization
     (^template [ ]
@@ -190,26 +190,26 @@
            (/////synthesis.!bind_top register thenP)))
        (do ///////phase.monad
          [then! (recur thenP)]
-         (in (#.Some ($_ _.then
+         (in {#.Some ($_ _.then
                          (_.define (..register register) ( (_.i32 (.int lefts)) ..peek_cursor))
-                         then!))))])
+                         then!)}))])
     ([/////synthesis.member/left  //runtime.tuple//left]
      [/////synthesis.member/right //runtime.tuple//right])
 
     (^ (/////synthesis.!bind_top register thenP))
     (do ///////phase.monad
       [then! (recur thenP)]
-      (in (#.Some ($_ _.then
+      (in {#.Some ($_ _.then
                       (_.define (..register register) ..peek_and_pop_cursor)
-                      then!))))
+                      then!)}))
 
     (^ (/////synthesis.!multi_pop nextP))
     (.let [[extra_pops nextP'] (////synthesis/case.count_pops nextP)]
       (do ///////phase.monad
         [next! (recur nextP')]
-        (in (#.Some ($_ _.then
+        (in {#.Some ($_ _.then
                         (multi_pop_cursor! (n.+ 2 extra_pops))
-                        next!)))))
+                        next!)})))
 
     _
     (///////phase\in #.None)))
@@ -221,25 +221,25 @@
     (do ///////phase.monad
       [outcome (optimized_pattern_matching recur pathP)]
       (.case outcome
-        (#.Some outcome)
+        {#.Some outcome}
         (in outcome)
 
         #.None
         (.case pathP
-          (#/////synthesis.Then bodyS)
+          {#/////synthesis.Then bodyS}
           (statement expression archive bodyS)
 
           #/////synthesis.Pop
           (///////phase\in pop_cursor!)
 
-          (#/////synthesis.Bind register)
+          {#/////synthesis.Bind register}
           (///////phase\in (_.define (..register register) ..peek_cursor))
 
-          (#/////synthesis.Bit_Fork when thenP elseP)
+          {#/////synthesis.Bit_Fork when thenP elseP}
           (do [! ///////phase.monad]
             [then! (recur thenP)
              else! (.case elseP
-                     (#.Some elseP)
+                     {#.Some elseP}
                      (recur elseP)
 
                      #.None
@@ -252,7 +252,7 @@
                     else!
                     then!))))
 
-          (#/////synthesis.I64_Fork item)
+          {#/////synthesis.I64_Fork item}
           (do [! ///////phase.monad]
             [clauses (monad.each ! (function (_ [match then])
                                      (do !
@@ -260,7 +260,7 @@
                                        (in [(//runtime.i64//= (//primitive.i64 (.int match))
                                                               ..peek_cursor)
                                             then!])))
-                                 (#.Item item))]
+                                 {#.Item item})]
             (in (_.cond clauses ..fail_pm!)))
 
           (^template [ ]
@@ -268,10 +268,10 @@
              (do [! ///////phase.monad]
                [cases (monad.each ! (function (_ [match then])
                                       (\ ! each (|>> [(list ( match))]) (recur then)))
-                                  (#.Item item))]
+                                  {#.Item item})]
                (in (_.switch ..peek_cursor
                              cases
-                             (#.Some ..fail_pm!))))])
+                             {#.Some ..fail_pm!})))])
           ([#/////synthesis.F64_Fork //primitive.f64]
            [#/////synthesis.Text_Fork //primitive.text])
 
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 58bf53a29..f2be9fda5 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
@@ -104,7 +104,7 @@
   (macro.with_identifiers [g!_ runtime]
     (let [runtime_name (` (_.var (~ (code.text (%.code runtime)))))]
       (case declaration
-        (#.Left name)
+        {#.Left name}
         (let [g!name (code.local_identifier name)]
           (in (list (` (def: .public (~ g!name)
                          Var
@@ -116,7 +116,7 @@
                                     (function ((~ g!_) (~ g!name))
                                       (~ code))))))))
         
-        (#.Right [name inputs])
+        {#.Right [name inputs]}
         (let [g!name (code.local_identifier name)
               inputsC (list\each code.local_identifier inputs)
               inputs_typesC (list\each (function.constant (` _.Expression)) inputs)]
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 c4284d345..88072200f 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
@@ -20,7 +20,7 @@
     #.End
     (///////phase\in //runtime.unit)
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (generate archive singletonS)
 
     _
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm.lux
index c2a125d4a..6a1a607cb 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm.lux
@@ -36,12 +36,12 @@
     (^ (synthesis.tuple members))
     (/structure.tuple generate archive members)
 
-    (#synthesis.Reference reference)
+    {#synthesis.Reference reference}
     (case reference
-      (#reference.Variable variable)
+      {#reference.Variable variable}
       (/reference.variable archive variable)
       
-      (#reference.Constant constant)
+      {#reference.Constant constant}
       (/reference.constant archive constant))
 
     (^ (synthesis.branch/case [valueS pathS]))
@@ -68,6 +68,6 @@
     (^ (synthesis.function/apply application))
     (/function.apply generate archive application)
 
-    (#synthesis.Extension extension)
+    {#synthesis.Extension extension}
     (///extension.apply archive generate extension)
     ))
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 075e8d68a..2da725141 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
@@ -95,12 +95,12 @@
     #synthesis.Pop
     (operation\in ..pop)
     
-    (#synthesis.Bind register)
+    {#synthesis.Bind register}
     (operation\in ($_ _.composite
                       ..peek
                       (_.astore register)))
 
-    (#synthesis.Then bodyS)
+    {#synthesis.Then bodyS}
     (do phase.monad
       [bodyG (phase archive bodyS)]
       (in ($_ _.composite
@@ -171,7 +171,7 @@
     ([synthesis.member/left //runtime.left_projection]
      [synthesis.member/right //runtime.right_projection])
 
-    (#synthesis.Alt leftP rightP)
+    {#synthesis.Alt leftP rightP}
     (do phase.monad
       [@alt_else //runtime.forge_label
        left! (path' (++ stack_depth) @alt_else @end phase archive leftP)
@@ -183,7 +183,7 @@
               _.pop
               right!)))
     
-    (#synthesis.Seq leftP rightP)
+    {#synthesis.Seq leftP rightP}
     (do phase.monad
       [left! (path' stack_depth @else @end phase archive leftP)
        right! (path' stack_depth @else @end phase archive rightP)]
@@ -243,10 +243,10 @@
     [recordG (phase archive recordS)]
     (in (list\mix (function (_ step so_far)
                     (.let [next (.case step
-                                  (#.Left lefts)
+                                  {#.Left lefts}
                                   (..left_projection lefts)
                                   
-                                  (#.Right lefts)
+                                  {#.Right lefts}
                                   (..right_projection lefts))]
                       (_.composite so_far next)))
                   recordG
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/debug.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/debug.lux
index d1785ac0a..b0833504c 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/debug.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/debug.lux
@@ -24,8 +24,8 @@
                           (file.get_file io.monad file.default file_path))]
                  (\ file over_write bytecode))]
       (in (case outcome
-            (#try.Success definition)
+            {#try.Success definition}
             file_path
 
-            (#try.Failure error)
+            {#try.Failure error}
             error)))))
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 a16c047e7..994a9f33f 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
@@ -85,7 +85,7 @@
     (method.method //.modifier ////runtime.apply::name
                    (////runtime.apply::type apply_arity)
                    (list)
-                   (#.Some (case num_partials
+                   {#.Some (case num_partials
                              0 ($_ _.composite
                                    ////reference.this
                                    (..inputs ..this_offset apply_arity)
@@ -97,7 +97,7 @@
                                   @labelsT (|> _.new_label
                                                (list.repeated (-- num_partials))
                                                (monad.all _.monad))
-                                  .let [cases (|> (list\composite (#.Item [@labelsH @labelsT])
+                                  .let [cases (|> (list\composite {#.Item [@labelsH @labelsT]}
                                                                   (list @default))
                                                   list.enumeration
                                                   (list\each (function (_ [stage @case])
@@ -132,7 +132,7 @@
                                                                                  (apply (n.+ ..this_offset arity_inputs) additional_inputs)
                                                                                  _.areturn))
 
-                                                                           ... (i.< over_extent (.int stage))
+... (i.< over_extent (.int stage))
                                                                            (let [current_environment (|> (list.indices (list.size environment))
                                                                                                          (list\each (///foreign.get class))
                                                                                                          (monad.all _.monad))
@@ -154,4 +154,4 @@
                                  ($_ _.composite
                                      ///partial/count.value
                                      (_.tableswitch (try.trusted (signed.s4 +0)) @default [@labelsH @labelsT])
-                                     cases)))))))
+                                     cases)))})))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/implementation.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/implementation.lux
index ae02754ae..723ff6ce5 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/implementation.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/implementation.lux
@@ -31,11 +31,11 @@
   (method.method //.modifier name
                  (..type arity)
                  (list)
-                 (#.Some ($_ _.composite
+                 {#.Some ($_ _.composite
                              (_.set_label @begin)
                              body
                              _.areturn
-                             ))))
+                             )}))
 
 (def: .public method
   (-> Arity Label (Bytecode Any) (Resource Method))
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 e39e582db..91df54eca 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
@@ -94,9 +94,9 @@
     (method.method //.modifier ..name
                    (..type environment arity)
                    (list)
-                   (#.Some ($_ _.composite
+                   {#.Some ($_ _.composite
                                ////reference.this
                                (..super environment_size arity)
                                (store_all environment_size (///foreign.put class) offset_foreign)
                                (store_all (-- arity) (///partial.put class) offset_partial)
-                               _.return)))))
+                               _.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 0e8365945..79926e5b8 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
@@ -69,7 +69,7 @@
     (method.method //.modifier //init.name
                    (//init.type environment arity)
                    (list)
-                   (#.Some ($_ _.composite
+                   {#.Some ($_ _.composite
                                ////reference.this
                                (//init.super environment_size arity)
                                (monad.each _.monad (function (_ register)
@@ -78,4 +78,4 @@
                                (monad.each _.monad (function (_ register)
                                                      (///partial.put class register (_.aload (after_arity register))))
                                            (list.indices (n.- ///arity.minimum arity)))
-                               _.areturn)))))
+                               _.areturn)})))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/reset.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/reset.lux
index f406c2879..b5bdb1e1d 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/reset.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/reset.lux
@@ -43,8 +43,8 @@
   (method.method //.modifier ..name
                  (..type class)
                  (list)
-                 (#.Some ($_ _.composite
+                 {#.Some ($_ _.composite
                              (if (arity.multiary? arity)
                                (//new.instance' (..current_environment class environment) class environment arity)
                                ////reference.this)
-                             _.areturn))))
+                             _.areturn)}))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/host.lux
index 6e5030da6..0ffbbceb3 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/host.lux
@@ -81,20 +81,20 @@
 (def: (class_value class_name class)
   (-> Text (java/lang/Class java/lang/Object) (Try Any))
   (case (java/lang/Class::getField ..value::field class)
-    (#try.Success field)
+    {#try.Success field}
     (case (java/lang/reflect/Field::get #.None field)
-      (#try.Success ?value)
+      {#try.Success ?value}
       (case ?value
-        (#.Some value)
-        (#try.Success value)
+        {#.Some value}
+        {#try.Success value}
         
         #.None
         (exception.except ..invalid_value [class_name]))
       
-      (#try.Failure error)
+      {#try.Failure error}
       (exception.except ..cannot_load [class_name error]))
     
-    (#try.Failure error)
+    {#try.Failure error}
     (exception.except ..invalid_field [class_name ..value::field error])))
 
 (def: class_path_separator
@@ -110,11 +110,11 @@
                               (list (field.field ..value::modifier ..value::field ..value::type (row.row)))
                               (list (method.method ..init::modifier "" ..init::type
                                                    (list)
-                                                   (#.Some
+                                                   {#.Some
                                                     ($_ _.composite
                                                         valueG
                                                         (_.putstatic (type.class bytecode_name (list)) ..value::field ..value::type)
-                                                        _.return))))
+                                                        _.return)}))
                               (row.row))]
     (io.run! (do [! (try.with io.monad)]
                [bytecode (\ ! each (format.result class.writer)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/primitive.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/primitive.lux
index 3edc41c03..9ed5eb48e 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/primitive.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/primitive.lux
@@ -51,21 +51,21 @@
 
     value
     (case (signed.s1 value)
-      (#try.Success value)
+      {#try.Success value}
       (do _.monad
         [_ (_.bipush value)
          _ _.i2l]
         ..wrap_i64)
 
-      (#try.Failure _)
+      {#try.Failure _}
       (case (signed.s2 value)
-        (#try.Success value)
+        {#try.Success value}
         (do _.monad
           [_ (_.sipush value)
            _ _.i2l]
           ..wrap_i64)
 
-        (#try.Failure _)
+        {#try.Failure _}
         (do _.monad
           [_ (_.long value)]
           ..wrap_i64)))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/program.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/program.lux
index 8ba5655a1..4074cf6cc 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/program.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/program.lux
@@ -132,12 +132,12 @@
   (let [super_class (|> ..^Object type.reflection reflection.reflection name.internal)
         main (method.method ..main::modifier "main" ..main::type
                             (list)
-                            (#.Some ($_ _.composite
+                            {#.Some ($_ _.composite
                                         program
                                         ..input_list
                                         ..feed_inputs
                                         ..run_io
-                                        _.return)))]
+                                        _.return)})]
     [..class
      (<| (format.result class.writer)
          try.trusted
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/reference.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/reference.lux
index 931f8fd72..778b23005 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/reference.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/reference.lux
@@ -53,10 +53,10 @@
 (def: .public (variable archive variable)
   (-> Archive Variable (Operation (Bytecode Any)))
   (case variable
-    (#variable.Local variable)
+    {#variable.Local variable}
     (operation\in (_.aload variable))
     
-    (#variable.Foreign variable)
+    {#variable.Foreign variable}
     (..foreign archive variable)))
 
 (def: .public (constant archive name)
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 ad6166d3f..c3c8f518c 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
@@ -151,12 +151,12 @@
     (method.method ..modifier ..variant::name
                    ..variant::type
                    (list)
-                   (#.Some ($_ _.composite
-                               new_variant ... A[3]
-                               (..set! ..variant_tag $tag) ... A[3]
+                   {#.Some ($_ _.composite
+                               new_variant                  ... A[3]
+                               (..set! ..variant_tag $tag)  ... A[3]
                                (..set! ..variant_last? $last?) ... A[3]
                                (..set! ..variant_value $value) ... A[3]
-                               _.areturn)))))
+                               _.areturn)})))
 
 (def: .public left_flag _.aconst_null)
 (def: .public right_flag ..unit)
@@ -213,13 +213,13 @@
   (method.method ..modifier ..decode_frac::name
                  ..decode_frac::type
                  (list)
-                 (#.Some
+                 {#.Some
                   (..risky
                    ($_ _.composite
                        _.aload_0
                        (_.invokestatic //type.frac "parseDouble" (type.method [(list) (list //type.text) type.double (list)]))
                        (//value.wrap type.double)
-                       )))))
+                       ))}))
 
 (def: .public log!
   (Bytecode Any)
@@ -250,10 +250,10 @@
   (method.method ..modifier name
                  ..failure::type
                  (list)
-                 (#.Some
+                 {#.Some
                   ($_ _.composite
                       (..illegal_state_exception message)
-                      _.athrow))))
+                      _.athrow)}))
 
 (def: pm_failure::name "pm_failure")
 (def: .public pm_failure (..procedure ..pm_failure::name ..failure::type))
@@ -272,7 +272,7 @@
   (method.method ..modifier ..push::name
                  ..push::type
                  (list)
-                 (#.Some
+                 {#.Some
                   (let [new_stack_frame! ($_ _.composite
                                              _.iconst_2
                                              (_.anewarray //type.value))
@@ -282,7 +282,7 @@
                         new_stack_frame!
                         (..set! ..stack_head $head)
                         (..set! ..stack_tail $tail)
-                        _.areturn)))))
+                        _.areturn))}))
 
 (def: case::name "case")
 (def: case::type (type.method [(list) (list //type.variant //type.tag //type.flag) //type.value (list)]))
@@ -291,7 +291,7 @@
 (def: case::method
   (method.method ..modifier ..case::name ..case::type
                  (list)
-                 (#.Some
+                 {#.Some
                   (do _.monad
                     [@loop _.new_label
                      @perfect_match! _.new_label
@@ -320,7 +320,7 @@
                                       ($_ _.composite
                                           ... tag, sumT
                                           update_$variant ... tag, sumT
-                                          update_$tag ... sub_tag
+                                          update_$tag     ... sub_tag
                                           (_.goto @loop_start))))
                            
                            super_nested_tag ($_ _.composite
@@ -340,15 +340,15 @@
                         _.dup2 (_.if_icmpeq @tags_match!)
                         _.dup2 (_.if_icmpgt @maybe_nested)
                         $last? (_.ifnull @mismatch!) ... tag, sumT
-                        super_nested ... super_variant
+                        super_nested                 ... super_variant
                         _.areturn
                         (_.set_label @tags_match!) ... tag, sumT
-                        $last? ... tag, sumT, wants_last?
+                        $last?            ... tag, sumT, wants_last?
                         $variant ::last? ... tag, sumT, wants_last?, is_last?
                         (_.if_acmpeq @perfect_match!) ... tag, sumT
-                        (_.set_label @maybe_nested) ... tag, sumT
-                        $variant ::last? ... tag, sumT, last?
-                        (_.ifnull @mismatch!) ... tag, sumT
+                        (_.set_label @maybe_nested)   ... tag, sumT
+                        $variant ::last?       ... tag, sumT, last?
+                        (_.ifnull @mismatch!)  ... tag, sumT
                         (recur @loop)
                         (_.set_label @perfect_match!) ... tag, sumT
                         ... _.pop2
@@ -358,7 +358,7 @@
                         ... _.pop2
                         not_found
                         _.areturn
-                        )))))
+                        ))}))
 
 (def: projection_type (type.method [(list) (list //type.tuple //type.offset) //type.value (list)]))
 
@@ -395,7 +395,7 @@
         left_projection::method
         (method.method ..modifier ..left_projection::name ..projection_type
                        (list)
-                       (#.Some
+                       {#.Some
                         (do _.monad
                           [@loop _.new_label
                            @recursive _.new_label
@@ -408,12 +408,12 @@
                               _.areturn
                               (_.set_label @recursive)
                               ... Recursive
-                              (recur @loop)))))
+                              (recur @loop)))})
 
         right_projection::method
         (method.method ..modifier ..right_projection::name ..projection_type
                        (list)
-                       (#.Some
+                       {#.Some
                         (do _.monad
                           [@loop _.new_label
                            @not_tail _.new_label
@@ -443,7 +443,7 @@
                               (recur @loop)
                               (_.set_label @slice)
                               super_nested
-                              _.areturn))))]
+                              _.areturn))})]
     [left_projection::method
      right_projection::method]))
 
@@ -466,7 +466,7 @@
 (def: try::method
   (method.method ..modifier ..try::name ..try::type
                  (list)
-                 (#.Some
+                 {#.Some
                   (do _.monad
                     [@try _.new_label
                      @handler _.new_label
@@ -501,7 +501,7 @@
                         (_.invokevirtual //type.error "printStackTrace" (type.method [(list) (list ^PrintWriter) type.void (list)])) ... W
                         (_.invokevirtual ^StringWriter "toString" (type.method [(list) (list) //type.text (list)])) ... S
                         ..left_injection _.areturn
-                        )))))
+                        ))}))
 
 (def: reflection
   (All (_ category)
@@ -549,7 +549,7 @@
                            (list\each (function (_ arity)
                                         (method.method method.public ..apply::name (..apply::type arity)
                                                        (list)
-                                                       (#.Some
+                                                       {#.Some
                                                         (let [previous_inputs (|> arity
                                                                                   list.indices
                                                                                   (monad.each _.monad _.aload))]
@@ -559,14 +559,14 @@
                                                               (_.checkcast //function.class)
                                                               (_.aload arity)
                                                               (_.invokevirtual //function.class ..apply::name (..apply::type //function/arity.minimum))
-                                                              _.areturn))))))
+                                                              _.areturn))})))
                            (list& (method.method (modifier\composite method.public method.abstract)
                                                  ..apply::name (..apply::type //function/arity.minimum)
                                                  (list)
                                                  #.None)))
         ::method (method.method method.public "" //function.init
                                       (list)
-                                      (#.Some
+                                      {#.Some
                                        (let [$partials _.iload_1]
                                          ($_ _.composite
                                              ..this
@@ -574,7 +574,7 @@
                                              ..this
                                              $partials
                                              (_.putfield //function.class //function/count.field //function/count.type)
-                                             _.return))))
+                                             _.return))})
         modifier (: (Modifier Class)
                     ($_ modifier\composite
                         class.public
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 c3bb19132..6b1a09aea 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
@@ -32,7 +32,7 @@
     #.End
     (\ phase.monad in //runtime.unit)
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (generate archive singletonS)
 
     _
@@ -64,15 +64,15 @@
     4 _.iconst_4
     5 _.iconst_5
     tag (case (signed.s1 (.int tag))
-          (#try.Success value)
+          {#try.Success value}
           (_.bipush value)
 
-          (#try.Failure _)
+          {#try.Failure _}
           (case (signed.s2 (.int tag))
-            (#try.Success value)
+            {#try.Success value}
             (_.sipush value)
 
-            (#try.Failure _)
+            {#try.Failure _}
             (_.int (.i64 tag))))))
 
 (def: .public (flag right?)
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua.lux
index 7cc28fb4d..66472f114 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua.lux
@@ -49,7 +49,7 @@
     (^ (synthesis.tuple members))
     (/structure.tuple expression archive members)
 
-    (#synthesis.Reference value)
+    {#synthesis.Reference value}
     (//reference.reference /reference.system archive value)
 
     (^ (synthesis.branch/case case))
@@ -76,7 +76,7 @@
     (^ (synthesis.function/apply application))
     (/function.apply expression archive application)
 
-    (#synthesis.Extension extension)
+    {#synthesis.Extension extension}
     (///extension.apply archive expression extension)))
 
 (def: .public generate
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 d21406763..7188a282c 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
@@ -163,20 +163,20 @@
   (-> Phase! Phase Archive Path (Operation Statement))
   (function (recur pathP)
     (.case pathP
-      (#/////synthesis.Then bodyS)
+      {#/////synthesis.Then bodyS}
       (statement expression archive bodyS)
 
       #/////synthesis.Pop
       (///////phase\in ..pop!)
 
-      (#/////synthesis.Bind register)
+      {#/////synthesis.Bind register}
       (///////phase\in (_.local/1 (..register register) ..peek))
 
-      (#/////synthesis.Bit_Fork when thenP elseP)
+      {#/////synthesis.Bit_Fork when thenP elseP}
       (do [! ///////phase.monad]
         [then! (recur thenP)
          else! (.case elseP
-                 (#.Some elseP)
+                 {#.Some elseP}
                  (recur elseP)
 
                  #.None
@@ -190,7 +190,7 @@
                 then!))))
 
       (^template [ ]
-        [( item)
+        [{ item}
          (do [! ///////phase.monad]
            [clauses (monad.each ! (function (_ [match then])
                                     (do !
@@ -198,7 +198,7 @@
                                       (in [(_.= (|> match )
                                                 ..peek)
                                            then!])))
-                                (#.Item item))]
+                                {#.Item item})]
            (in (_.cond clauses ..fail!)))])
       ([#/////synthesis.I64_Fork (<| _.int .int)]
        [#/////synthesis.F64_Fork _.float]
@@ -254,10 +254,10 @@
        set.list
        (list\each (function (_ variable)
                     (.case variable
-                      (#///////variable.Local register)
+                      {#///////variable.Local register}
                       (..register register)
                       
-                      (#///////variable.Foreign register)
+                      {#///////variable.Foreign register}
                       (..capture register))))))
 
 (def: .public (case! statement expression archive [valueS pathP])
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 9ed2c2624..a6e448433 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
@@ -127,7 +127,7 @@
       (let [runtime (code.local_identifier (///reference.artifact [..module_id runtime_id]))
             runtime_name (` (_.var (~ (code.text (%.code runtime)))))]
         (case declaration
-          (#.Left name)
+          {#.Left name}
           (macro.with_identifiers [g!_]
             (let [g!name (code.local_identifier name)]
               (in (list (` (def: .public (~ g!name)
@@ -140,7 +140,7 @@
                                         (function ((~ g!_) (~ g!name))
                                           (_.set (~ g!name) (~ code))))))))))
           
-          (#.Right [name inputs])
+          {#.Right [name inputs]}
           (macro.with_identifiers [g!_]
             (let [g!name (code.local_identifier name)
                   inputsC (list\each code.local_identifier inputs)
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 10be9ba18..29a909d0e 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
@@ -20,7 +20,7 @@
     #.End
     (///////phase\in (//primitive.text /////synthesis.unit))
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (generate archive singletonS)
 
     _
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php.lux
index fae8d8d61..9c16f64cb 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php.lux
@@ -72,7 +72,7 @@
      [////synthesis.f64  /primitive.f64]
      [////synthesis.text /primitive.text])
 
-    (#////synthesis.Reference value)
+    {#////synthesis.Reference value}
     (//reference.reference /reference.system archive value)
 
     (^template [ ]
@@ -95,7 +95,7 @@
     (^ (////synthesis.loop/recur _))
     (//////phase.except ..cannot_recur_as_an_expression [])
 
-    (#////synthesis.Extension extension)
+    {#////synthesis.Extension extension}
     (///extension.apply archive expression extension)))
 
 (def: .public generate
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 295d24457..a5532afc3 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
@@ -163,20 +163,20 @@
   (Generator! Path)
   (function (recur pathP)
     (.case pathP
-      (#/////synthesis.Then bodyS)
+      {#/////synthesis.Then bodyS}
       (statement expression archive bodyS)
 
       #/////synthesis.Pop
       (///////phase\in ..pop!)
 
-      (#/////synthesis.Bind register)
+      {#/////synthesis.Bind register}
       (///////phase\in (_.set! (..register register) ..peek))
 
-      (#/////synthesis.Bit_Fork when thenP elseP)
+      {#/////synthesis.Bit_Fork when thenP elseP}
       (do [! ///////phase.monad]
         [then! (recur thenP)
          else! (.case elseP
-                 (#.Some elseP)
+                 {#.Some elseP}
                  (recur elseP)
 
                  #.None
@@ -190,7 +190,7 @@
                 then!))))
 
       (^template [ ]
-        [( item)
+        [{ item}
          (do [! ///////phase.monad]
            [clauses (monad.each ! (function (_ [match then])
                                     (do !
@@ -198,7 +198,7 @@
                                       (in [(_.=== (|> match )
                                                   ..peek)
                                            then!])))
-                                (#.Item item))]
+                                {#.Item item})]
            (in (_.cond clauses ..fail!)))])
       ([#/////synthesis.I64_Fork //primitive.i64]
        [#/////synthesis.F64_Fork //primitive.f64]
@@ -264,10 +264,10 @@
        set.list
        (list\each (function (_ variable)
                     (.case variable
-                      (#///////variable.Local register)
+                      {#///////variable.Local register}
                       (..register register)
                       
-                      (#///////variable.Foreign register)
+                      {#///////variable.Foreign register}
                       (..capture register))))))
 
 (def: .public (case! statement expression archive [valueS pathP])
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 0fe181b78..d8a418657 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
@@ -95,7 +95,7 @@
       (let [runtime (code.local_identifier (///reference.artifact [..module_id runtime_id]))
             runtime_name (` (_.constant (~ (code.text (%.code runtime)))))]
         (case declaration
-          (#.Left name)
+          {#.Left name}
           (macro.with_identifiers [g!_]
             (let [g!name (code.local_identifier name)]
               (in (list (` (def: .public (~ g!name)
@@ -108,7 +108,7 @@
                                         (function ((~ g!_) (~ g!name))
                                           (_.define (~ g!name) (~ code))))))))))
           
-          (#.Right [name inputs])
+          {#.Right [name inputs]}
           (macro.with_identifiers [g!_]
             (let [g!name (code.local_identifier name)
                   inputsC (list\each code.local_identifier inputs)
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 69f687713..cb499a364 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
@@ -23,7 +23,7 @@
     #.End
     (///////phase\in (//primitive.text /////synthesis.unit))
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (expression archive singletonS)
 
     _
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python.lux
index 86433d927..b691c09d6 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python.lux
@@ -49,7 +49,7 @@
     (^ (////synthesis.tuple members))
     (/structure.tuple expression archive members)
 
-    (#////synthesis.Reference value)
+    {#////synthesis.Reference value}
     (//reference.reference /reference.system archive value)
 
     (^ (////synthesis.branch/case case))
@@ -76,7 +76,7 @@
     (^ (////synthesis.function/apply application))
     (/function.apply expression archive application)
 
-    (#////synthesis.Extension extension)
+    {#////synthesis.Extension extension}
     (///extension.apply archive expression extension)))
 
 (def: .public generate
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 c4f914d01..6cdabddd0 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
@@ -163,7 +163,7 @@
                  ($_ _.then
                      (_.set (list g!once) (_.bool false))
                      body!)
-                 (#.Some _.continue)))))
+                 {#.Some _.continue}))))
 
 (def: (alternation in_closure? g!once pre! post!)
   (-> Bit SVar (Statement Any) (Statement Any) (Statement Any))
@@ -179,34 +179,34 @@
   (-> (-> Path (Operation (Statement Any)))
       (-> Path (Operation (Maybe (Statement Any)))))
   (.case pathP
-    (#/////synthesis.Bit_Fork when thenP elseP)
+    {#/////synthesis.Bit_Fork when thenP elseP}
     (do [! ///////phase.monad]
       [then! (recur thenP)
        else! (.case elseP
-               (#.Some elseP)
+               {#.Some elseP}
                (recur elseP)
 
                #.None
                (in ..fail_pm!))]
-      (in (#.Some (.if when
+      (in {#.Some (.if when
                     (_.if ..peek
                       then!
                       else!)
                     (_.if ..peek
                       else!
-                      then!)))))
+                      then!))}))
 
     (^template [ ]
-      [( item)
+      [{ item}
        (do [! ///////phase.monad]
          [clauses (monad.each ! (function (_ [match then])
                                   (\ ! each
                                      (|>> [(_.= (|> match )
                                                 ..peek)])
                                      (recur then)))
-                              (#.Item item))]
-         (in (#.Some (_.cond clauses
-                             ..fail_pm!))))])
+                              {#.Item item})]
+         (in {#.Some (_.cond clauses
+                             ..fail_pm!)}))])
     ([#/////synthesis.I64_Fork (<| //primitive.i64 .int)]
      [#/////synthesis.F64_Fork (<| //primitive.f64)]
      [#/////synthesis.Text_Fork (<| //primitive.text)])
@@ -220,18 +220,18 @@
     (do [! ///////phase.monad]
       [?output (primitive_pattern_matching recur pathP)]
       (.case ?output
-        (#.Some output)
+        {#.Some output}
         (in output)
 
         #.None
         (.case pathP
-          (#/////synthesis.Then bodyS)
+          {#/////synthesis.Then bodyS}
           (statement expression archive bodyS)
 
           #/////synthesis.Pop
           (///////phase\in ..pop!)
 
-          (#/////synthesis.Bind register)
+          {#/////synthesis.Bind register}
           (///////phase\in (_.set (list (..register register)) ..peek))
 
           (^template [  ]
@@ -302,10 +302,10 @@
        set.list
        (list\each (function (_ variable)
                     (.case variable
-                      (#///////variable.Local register)
+                      {#///////variable.Local register}
                       (..register register)
                       
-                      (#///////variable.Foreign register)
+                      {#///////variable.Foreign register}
                       (..capture register))))))
 
 (def: .public (case! in_closure? statement expression archive [valueS pathP])
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 16283e2e9..c2055e2cc 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
@@ -126,7 +126,7 @@
                                                             (<>.some .local_identifier))))
                     code .any])
   (case declaration
-    (#.Left name)
+    {#.Left name}
     (macro.with_identifiers [g!_]
       (let [nameC (code.local_identifier name)
             code_nameC (code.local_identifier (format "@" name))
@@ -138,7 +138,7 @@
                                   (function ((~ g!_) (~ g!_))
                                     (_.set (list (~ g!_)) (~ code))))))))))
     
-    (#.Right [name inputs])
+    {#.Right [name inputs]}
     (macro.with_identifiers [g!_]
       (let [nameC (code.local_identifier name)
             code_nameC (code.local_identifier (format "@" name))
@@ -174,7 +174,7 @@
 
 (runtime: (lux::exec code globals)
   ($_ _.then
-      (_.exec code (#.Some globals))
+      (_.exec code {#.Some globals})
       (_.return ..unit)))
 
 (def: runtime::lux
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 3d0903731..5950a81ff 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
@@ -20,7 +20,7 @@
     #.End
     (///////phase\in (//primitive.text /////synthesis.unit))
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (generate archive singletonS)
 
     _
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r.lux
index 4a6d95239..4e3e67097 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r.lux
@@ -36,7 +36,7 @@
      [////synthesis.f64  /primitive.f64]
      [////synthesis.text /primitive.text])
 
-    (#////synthesis.Reference value)
+    {#////synthesis.Reference value}
     (//reference.reference /reference.system archive value)
 
     (^template [ ]
@@ -54,6 +54,6 @@
      [////synthesis.loop/recur /loop.recur]
      [////synthesis.function/abstraction /function.function])
 
-    (#////synthesis.Extension extension)
+    {#////synthesis.Extension extension}
     (///extension.apply archive generate extension)
     ))
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 83859e8be..15e9c75e5 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
@@ -135,20 +135,20 @@
   (Generator Path)
   (function (recur pathP)
     (.case pathP
-      (#/////synthesis.Then bodyS)
+      {#/////synthesis.Then bodyS}
       (expression archive bodyS)
 
       #/////synthesis.Pop
       (///////phase\in ..pop_cursor!)
 
-      (#/////synthesis.Bind register)
+      {#/////synthesis.Bind register}
       (///////phase\in (_.set! (..register register) ..peek))
 
-      (#/////synthesis.Bit_Fork when thenP elseP)
+      {#/////synthesis.Bit_Fork when thenP elseP}
       (do [! ///////phase.monad]
         [then! (recur thenP)
          else! (.case elseP
-                 (#.Some elseP)
+                 {#.Some elseP}
                  (recur elseP)
 
                  #.None
@@ -162,7 +162,7 @@
                 then!))))
 
       (^template [  <=>]
-        [( item)
+        [{ item}
          (do [! ///////phase.monad]
            [clauses (monad.each ! (function (_ [match then])
                                     (do !
@@ -170,7 +170,7 @@
                                       (in [(<=> (|> match )
                                                 ..peek)
                                            then!])))
-                                (#.Item item))]
+                                {#.Item item})]
            (in (list\mix (function (_ [when then] else)
                            (_.if when then else))
                          ..fail!
@@ -214,9 +214,9 @@
                        ..save_cursor!
                        leftO)
                    #.None
-                   (#.Some (..catch ($_ _.then
+                   {#.Some (..catch ($_ _.then
                                         ..restore_cursor!
-                                        rightO)))
+                                        rightO))}
                    #.None)))
       )))
 
@@ -226,7 +226,7 @@
     [pattern_matching! (pattern_matching' expression archive pathP)]
     (in (_.try pattern_matching!
                #.None
-               (#.Some (..catch (_.stop (_.string "Invalid expression for pattern-matching."))))
+               {#.Some (..catch (_.stop (_.string "Invalid expression for pattern-matching.")))}
                #.None))))
 
 (def: .public (case expression archive [valueS pathP])
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 d240e786b..9d2c878cf 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
@@ -126,10 +126,10 @@
   (function (_ proc_name)
     (function (_ translate inputsS)
       (case (s.result inputsS ($_ p.and s.nat (s.tuple (p.many s.any)) s.any))
-        (#e.Success [offset initsS+ bodyS])
+        {#e.Success [offset initsS+ bodyS]}
         (loopT.translate_loop translate offset initsS+ bodyS)
 
-        (#e.Error error)
+        {#e.Error error}
         (&.throw Wrong_Syntax (wrong_syntax proc_name inputsS)))
       )))
 
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/host.lux
index ea6f59abd..4975c0aec 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/host.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/host.lux
@@ -25,7 +25,7 @@
 ... (def: (lua//global proc translate inputs)
 ...   (-> Text @.Proc)
 ...   (case inputs
-...     (^ (list [_ (#.Text name)]))
+...     (^ (list [_ {#.Text name}]))
 ...     (do macro.Monad
 ...       []
 ...       (in name))
@@ -56,7 +56,7 @@
 ... (def: (table//call proc translate inputs)
 ...   (-> Text @.Proc)
 ...   (case inputs
-...     (^ (list& tableS [_ (#.Text field)] argsS+))
+...     (^ (list& tableS [_ {#.Text field}] argsS+))
 ...     (do [@ macro.Monad]
 ...       [tableO (translate tableS)
 ...        argsO+ (monad.each @ translate argsS+)]
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 e7d794d5e..246a010c9 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
@@ -98,7 +98,7 @@
       (let [runtime (code.local_identifier (///reference.artifact [..module_id runtime_id]))
             runtime_name (` (_.var (~ (code.text (%.code runtime)))))]
         (case declaration
-          (#.Left name)
+          {#.Left name}
           (let [g!name (code.local_identifier name)]
             (in (list (` (def: .public (~ g!name)
                            _.SVar
@@ -108,7 +108,7 @@
                            _.Expression
                            (_.set! (~ runtime_name) (~ code)))))))
           
-          (#.Right [name inputs])
+          {#.Right [name inputs]}
           (let [g!name (code.local_identifier name)
                 inputsC (list\each code.local_identifier inputs)
                 inputs_typesC (list\each (function.constant (` _.Expression))
@@ -524,9 +524,9 @@
                (_.set! value (_.apply (list ..unit) op))
                (..right value))
            #.None
-           (#.Some (_.function (list error)
+           {#.Some (_.function (list error)
                      (..left (_.item (_.string "message")
-                                     error))))
+                                     error)))}
            #.None)))
 
 (runtime: (lux::program_args program_args)
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 4d6562a4f..711366595 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
@@ -23,7 +23,7 @@
     #.End
     (///////phase\in (//primitive.text /////synthesis.unit))
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (expression archive singletonS)
 
     _
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 4913559a1..49389b109 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
@@ -73,18 +73,18 @@
   (All (_ expression)
     (-> (System expression) Variable expression))
   (case variable
-    (#variable.Local register)
+    {#variable.Local register}
     (..local system register)
     
-    (#variable.Foreign register)
+    {#variable.Foreign register}
     (..foreign system register)))
 
 (def: .public (reference system archive reference)
   (All (_ anchor expression directive)
     (-> (System expression) Archive Reference (////generation.Operation anchor expression directive expression)))
   (case reference
-    (#reference.Constant value)
+    {#reference.Constant value}
     (..constant system archive value)
     
-    (#reference.Variable value)
+    {#reference.Variable value}
     (phase\in (..variable system value))))
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby.lux
index 9202b75d3..b9202972d 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby.lux
@@ -65,10 +65,10 @@
     (^ (////synthesis.loop/recur _))
     (//////phase.except ..cannot_recur_as_an_expression [])
 
-    (#////synthesis.Reference value)
+    {#////synthesis.Reference value}
     (//reference.reference /reference.system archive value)
 
-    (#////synthesis.Extension extension)
+    {#////synthesis.Extension extension}
     (///extension.apply archive expression extension)))
 
 (def: .public generate
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 8d19caff8..1e6cb7058 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
@@ -188,34 +188,34 @@
   (-> (-> Path (Operation Statement))
       (-> Path (Operation (Maybe Statement))))
   (.case pathP
-    (#/////synthesis.Bit_Fork when thenP elseP)
+    {#/////synthesis.Bit_Fork when thenP elseP}
     (do [! ///////phase.monad]
       [then! (recur thenP)
        else! (.case elseP
-               (#.Some elseP)
+               {#.Some elseP}
                (recur elseP)
 
                #.None
                (in ..fail!))]
-      (in (#.Some (.if when
+      (in {#.Some (.if when
                     (_.if ..peek
                       then!
                       else!)
                     (_.if ..peek
                       else!
-                      then!)))))
+                      then!))}))
 
     (^template [ ]
-      [( item)
+      [{ item}
        (do [! ///////phase.monad]
          [clauses (monad.each ! (function (_ [match then])
                                   (\ ! each
                                      (|>> [(_.= (|> match )
                                                 ..peek)])
                                      (recur then)))
-                              (#.Item item))]
-         (in (#.Some (_.cond clauses
-                             ..fail!))))])
+                              {#.Item item})]
+         (in {#.Some (_.cond clauses
+                             ..fail!)}))])
     ([#/////synthesis.I64_Fork (<| //primitive.i64 .int)]
      [#/////synthesis.F64_Fork (<| //primitive.f64)]
      [#/////synthesis.Text_Fork (<| //primitive.text)])
@@ -229,25 +229,25 @@
     (do ///////phase.monad
       [?output (primitive_pattern_matching recur pathP)]
       (.case ?output
-        (#.Some output)
+        {#.Some output}
         (in output)
         
         #.None
         (.case pathP
-          (#/////synthesis.Then bodyS)
+          {#/////synthesis.Then bodyS}
           (statement expression archive bodyS)
 
           #/////synthesis.Pop
           (///////phase\in ..pop!)
 
-          (#/////synthesis.Bind register)
+          {#/////synthesis.Bind register}
           (///////phase\in (_.set (list (..register register)) ..peek))
 
-          (#/////synthesis.Bit_Fork when thenP elseP)
+          {#/////synthesis.Bit_Fork when thenP elseP}
           (do [! ///////phase.monad]
             [then! (recur thenP)
              else! (.case elseP
-                     (#.Some elseP)
+                     {#.Some elseP}
                      (recur elseP)
 
                      #.None
@@ -261,14 +261,14 @@
                     then!))))
 
           (^template [ ]
-            [( item)
+            [{ item}
              (do [! ///////phase.monad]
                [clauses (monad.each ! (function (_ [match then])
                                         (\ ! each
                                            (|>> [(_.= (|> match )
                                                       ..peek)])
                                            (recur then)))
-                                    (#.Item item))]
+                                    {#.Item item})]
                (in (_.cond clauses
                            ..fail!)))])
           ([#/////synthesis.I64_Fork (<| //primitive.i64 .int)]
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 108f98020..091d1fd31 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
@@ -84,7 +84,7 @@
                                  initialize_self!
                                  (list.indices arity))
            [declaration instatiation] (with_closure closureO+ function_name
-                                        (_.lambda (#.Some @self) (list (_.variadic @curried))
+                                        (_.lambda {#.Some @self} (list (_.variadic @curried))
                                                   ($_ _.then
                                                       (_.set (list @num_args) (_.the "length" @curried))
                                                       (_.cond (list [(|> @num_args (_.= arityO))
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 c5f424373..643bde0b2 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
@@ -96,7 +96,7 @@
       (let [runtime (code.local_identifier (///reference.artifact [..module_id runtime_id]))
             runtime_name (` (_.local (~ (code.text (%.code runtime)))))]
         (case declaration
-          (#.Left name)
+          {#.Left name}
           (macro.with_identifiers [g!_]
             (let [g!name (code.local_identifier name)]
               (in (list (` (def: .public (~ g!name) LVar (~ runtime_name)))
@@ -106,7 +106,7 @@
                                         (function ((~ g!_) (~ g!name))
                                           (_.set (list (~ g!name)) (~ code))))))))))
           
-          (#.Right [name inputs])
+          {#.Right [name inputs]}
           (macro.with_identifiers [g!_]
             (let [g!name (code.local_identifier name)
                   inputsC (list\each code.local_identifier inputs)
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 a93fba45e..32ec74e4f 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
@@ -20,7 +20,7 @@
     #.End
     (///////phase\in (//primitive.text /////synthesis.unit))
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (generate archive singletonS)
 
     _
diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme.lux
index 079ef448c..20108a0cd 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme.lux
@@ -36,7 +36,7 @@
      [////synthesis.f64  /primitive.f64]
      [////synthesis.text /primitive.text])
 
-    (#////synthesis.Reference value)
+    {#////synthesis.Reference value}
     (//reference.reference /reference.system archive value)
 
     (^template [ ]
@@ -54,6 +54,6 @@
      [////synthesis.loop/recur /loop.recur]
      [////synthesis.function/abstraction /function.function])
 
-    (#////synthesis.Extension extension)
+    {#////synthesis.Extension extension}
     (///extension.apply archive generate extension)
     ))
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 16a00e907..bfdb9bf93 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
@@ -129,20 +129,20 @@
   (Generator Path)
   (function (recur pathP)
     (.case pathP
-      (#/////synthesis.Then bodyS)
+      {#/////synthesis.Then bodyS}
       (expression archive bodyS)
 
       #/////synthesis.Pop
       (///////phase\in pop_cursor!)
 
-      (#/////synthesis.Bind register)
+      {#/////synthesis.Bind register}
       (///////phase\in (_.define_constant (..register register) ..peek))
 
-      (#/////synthesis.Bit_Fork when thenP elseP)
+      {#/////synthesis.Bit_Fork when thenP elseP}
       (do [! ///////phase.monad]
         [then! (recur thenP)
          else! (.case elseP
-                 (#.Some elseP)
+                 {#.Some elseP}
                  (recur elseP)
 
                  #.None
@@ -156,7 +156,7 @@
                 then!))))
 
       (^template [  <=>]
-        [( item)
+        [{ item}
          (do [! ///////phase.monad]
            [clauses (monad.each ! (function (_ [match then])
                                     (do !
@@ -164,7 +164,7 @@
                                       (in [(<=> (|> match )
                                                 ..peek)
                                            then!])))
-                                (#.Item item))]
+                                {#.Item item})]
            (in (list\mix (function (_ [when then] else)
                            (_.if when then else))
                          ..fail!
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 d18881c4d..f0d2751f3 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
@@ -76,7 +76,7 @@
            @num_args (_.var "num_args")
            @self (_.var (///reference.artifact function_name))]]
     (with_closure closureO+
-      (_.letrec (list [@self (_.lambda [(list) (#.Some @curried)]
+      (_.letrec (list [@self (_.lambda [(list) {#.Some @curried}]
                                        (_.let (list [@num_args (_.length/1 @curried)])
                                          (<| (_.if (|> @num_args (_.=/2 arityO))
                                                (<| (_.let (list [(//case.register 0) @self]))
@@ -94,7 +94,7 @@
                                                                     (apply_poly arity_args)
                                                                     (apply_poly output_func_args))))))
                                              ... (|> @num_args (_. @self
                                                            (apply_poly (_.append/2 @curried @missing)))))
                                          ))])
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 996f552b1..0f8ae8b9a 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
@@ -80,7 +80,7 @@
       (let [runtime (code.local_identifier (///reference.artifact [..module_id runtime_id]))
             runtime_name (` (_.var (~ (code.text (%.code runtime)))))]
         (case declaration
-          (#.Left name)
+          {#.Left name}
           (let [g!name (code.local_identifier name)]
             (in (list (` (def: .public (~ g!name)
                            Var
@@ -90,7 +90,7 @@
                            _.Computation
                            (_.define_constant (~ runtime_name) (~ code)))))))
           
-          (#.Right [name inputs])
+          {#.Right [name inputs]}
           (let [g!name (code.local_identifier name)
                 inputsC (list\each code.local_identifier inputs)
                 inputs_typesC (list\each (function.constant (` _.Expression))
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 ad071de02..cc84cf77c 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
@@ -23,7 +23,7 @@
     #.End
     (///////phase\in (//primitive.text /////synthesis.unit))
 
-    (#.Item singletonS #.End)
+    {#.Item singletonS #.End}
     (expression archive singletonS)
 
     _
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 5b5403a37..faa6739cb 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
@@ -28,18 +28,18 @@
   (-> ///analysis.Primitive /.Primitive)
   (case analysis
     #///analysis.Unit
-    (#/.Text /.unit)
+    {#/.Text /.unit}
     
     (^template [ ]
-      [( value)
-       ( value)])
+      [{ value}
+       { value}])
     ([#///analysis.Bit  #/.Bit]
      [#///analysis.Frac #/.F64]
      [#///analysis.Text #/.Text])
 
     (^template [ ]
-      [( value)
-       ( (.i64 value))])
+      [{ value}
+       { (.i64 value)}])
     ([#///analysis.Nat #/.I64]
      [#///analysis.Int #/.I64]
      [#///analysis.Rev #/.I64])))
@@ -48,48 +48,48 @@
   Phase
   (function (optimization' analysis)
     (case analysis
-      (#///analysis.Primitive analysis')
-      (phase\in (#/.Primitive (..primitive analysis')))
+      {#///analysis.Primitive analysis'}
+      (phase\in {#/.Primitive (..primitive analysis')})
 
-      (#///analysis.Reference reference)
-      (phase\in (#/.Reference reference))
+      {#///analysis.Reference reference}
+      (phase\in {#/.Reference reference})
 
-      (#///analysis.Structure structure)
+      {#///analysis.Structure structure}
       (/.with_currying? false
         (case structure
-          (#///analysis.Variant variant)
+          {#///analysis.Variant variant}
           (do phase.monad
             [valueS (optimization' (value@ #///analysis.value variant))]
             (in (/.variant (with@ #///analysis.value valueS variant))))
 
-          (#///analysis.Tuple tuple)
+          {#///analysis.Tuple tuple}
           (|> tuple
               (monad.each phase.monad optimization')
               (phase\each (|>> /.tuple)))))
       
-      (#///analysis.Case inputA branchesAB+)
+      {#///analysis.Case inputA branchesAB+}
       (/.with_currying? false
         (/case.synthesize optimization branchesAB+ archive inputA))
 
       (^ (///analysis.no_op value))
       (optimization' value)
 
-      (#///analysis.Apply _)
+      {#///analysis.Apply _}
       (/.with_currying? false
         (/function.apply optimization archive analysis))
 
-      (#///analysis.Function environmentA bodyA)
+      {#///analysis.Function environmentA bodyA}
       (/function.abstraction optimization environmentA archive bodyA)
 
-      (#///analysis.Extension name args)
+      {#///analysis.Extension name args}
       (/.with_currying? false
         (function (_ state)
           (|> (//extension.apply archive optimization [name args])
               (phase.result' state)
-              (case> (#try.Success output)
-                     (#try.Success output)
+              (case> {#try.Success output}
+                     {#try.Success output}
                      
-                     (#try.Failure _)
+                     {#try.Failure _}
                      (|> args
                          (monad.each phase.monad optimization')
                          (phase\each (|>> [name] #/.Extension))
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 d42f0da7e..50b89c2e2 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
@@ -31,25 +31,25 @@
 
 (def: clean_up
   (-> Path Path)
-  (|>> (#/.Seq #/.Pop)))
+  (|>> {#/.Seq #/.Pop}))
 
 (def: (path' pattern end? thenC)
   (-> Pattern Bit (Operation Path) (Operation Path))
   (case pattern
-    (#///analysis.Simple simple)
+    {#///analysis.Simple simple}
     (case simple
       #///analysis.Unit
       thenC
 
-      (#///analysis.Bit when)
+      {#///analysis.Bit when}
       (///\each (function (_ then)
-                  (#/.Bit_Fork when then #.None))
+                  {#/.Bit_Fork when then #.None})
                 thenC)
 
       (^template [  ]
-        [( test)
+        [{ test}
          (///\each (function (_ then)
-                     ( [( test) then] (list)))
+                     { [( test) then] (list)})
                    thenC)])
       ([#///analysis.Nat  #/.I64_Fork .i64]
        [#///analysis.Int  #/.I64_Fork .i64]
@@ -57,32 +57,32 @@
        [#///analysis.Frac #/.F64_Fork |>]
        [#///analysis.Text #/.Text_Fork |>]))
 
-    (#///analysis.Bind register)
-    (<| (\ ///.monad each (|>> (#/.Seq (#/.Bind register))))
+    {#///analysis.Bind register}
+    (<| (\ ///.monad each (|>> {#/.Seq {#/.Bind register}}))
         /.with_new_local
         thenC)
 
-    (#///analysis.Complex (#///analysis.Variant [lefts right? value_pattern]))
-    (<| (///\each (|>> (#/.Seq (#/.Access (#/.Side (if right?
-                                                     (#.Right lefts)
-                                                     (#.Left lefts)))))))
+    {#///analysis.Complex {#///analysis.Variant [lefts right? value_pattern]}}
+    (<| (///\each (|>> {#/.Seq {#/.Access {#/.Side (if right?
+                                                     {#.Right lefts}
+                                                     {#.Left lefts})}}}))
         (path' value_pattern end?)
         (when> [(new> (not end?) [])] [(///\each ..clean_up)])
         thenC)
 
-    (#///analysis.Complex (#///analysis.Tuple tuple))
+    {#///analysis.Complex {#///analysis.Tuple tuple}}
     (let [tuple::last (-- (list.size tuple))]
       (list\mix (function (_ [tuple::lefts tuple::member] nextC)
                   (.case tuple::member
-                    (#///analysis.Simple #///analysis.Unit)
+                    {#///analysis.Simple #///analysis.Unit}
                     nextC
 
                     _
                     (let [right? (n.= tuple::last tuple::lefts)
                           end?' (and end? right?)]
-                      (<| (///\each (|>> (#/.Seq (#/.Access (#/.Member (if right?
-                                                                         (#.Right (-- tuple::lefts))
-                                                                         (#.Left tuple::lefts)))))))
+                      (<| (///\each (|>> {#/.Seq {#/.Access {#/.Member (if right?
+                                                                         {#.Right (-- tuple::lefts)}
+                                                                         {#.Left tuple::lefts})}}}))
                           (path' tuple::member end?')
                           (when> [(new> (not end?') [])] [(///\each ..clean_up)])
                           nextC))))
@@ -104,74 +104,74 @@
        #.End
        (list [new_test new_then])
        
-       (#.Item old_item)
-       (#.Item (weave_branch weave equivalence [new_test new_then] old_item)))]))
+       {#.Item old_item}
+       {#.Item (weave_branch weave equivalence [new_test new_then] old_item)})]))
 
 (def: (weave_fork weave equivalence new_fork old_fork)
   (All (_ a) (-> (-> Path Path Path) (Equivalence a) (/.Fork a Path) (/.Fork a Path)
                  (/.Fork a Path)))
-  (list\mix (..weave_branch weave equivalence) old_fork (#.Item new_fork)))
+  (list\mix (..weave_branch weave equivalence) old_fork {#.Item new_fork}))
 
 (def: (weave new old)
   (-> Path Path Path)
-  (with_expansions [ (as_is (#/.Alt old new))]
+  (with_expansions [ (as_is {#/.Alt old new})]
     (case [new old]
       [_
-       (#/.Alt old_left old_right)]
-      (#/.Alt old_left
-              (weave new old_right))
+       {#/.Alt old_left old_right}]
+      {#/.Alt old_left
+       (weave new old_right)}
 
-      [(#/.Seq preN postN)
-       (#/.Seq preO postO)]
+      [{#/.Seq preN postN}
+       {#/.Seq preO postO}]
       (case (weave preN preO)
-        (#/.Alt _)
+        {#/.Alt _}
         
 
         woven
-        (#/.Seq woven (weave postN postO)))
+        {#/.Seq woven (weave postN postO)})
 
       [#/.Pop #/.Pop]
       old
 
-      [(#/.Bit_Fork new_when new_then new_else)
-       (#/.Bit_Fork old_when old_then old_else)]
+      [{#/.Bit_Fork new_when new_then new_else}
+       {#/.Bit_Fork old_when old_then old_else}]
       (if (bit\= new_when old_when)
-        (#/.Bit_Fork old_when
-                     (weave new_then old_then)
-                     (case [new_else old_else]
-                       [#.None #.None]
-                       #.None
-
-                       (^or [(#.Some woven_then) #.None]
-                            [#.None (#.Some woven_then)])
-                       (#.Some woven_then)
-
-                       [(#.Some new_else) (#.Some old_else)]
-                       (#.Some (weave new_else old_else))))
-        (#/.Bit_Fork old_when
-                     (case new_else
-                       #.None
-                       old_then
-
-                       (#.Some new_else)
-                       (weave new_else old_then))
-                     (#.Some (case old_else
-                               #.None
-                               new_then
-
-                               (#.Some old_else)
-                               (weave new_then old_else)))))
+        {#/.Bit_Fork old_when
+         (weave new_then old_then)
+         (case [new_else old_else]
+           [#.None #.None]
+           #.None
+
+           (^or [{#.Some woven_then} #.None]
+                [#.None {#.Some woven_then}])
+           {#.Some woven_then}
+
+           [{#.Some new_else} {#.Some old_else}]
+           {#.Some (weave new_else old_else)})}
+        {#/.Bit_Fork old_when
+         (case new_else
+           #.None
+           old_then
+
+           {#.Some new_else}
+           (weave new_else old_then))
+         {#.Some (case old_else
+                   #.None
+                   new_then
+
+                   {#.Some old_else}
+                   (weave new_then old_else))}})
 
       (^template [ ]
-        [[( new_fork) ( old_fork)]
-         ( (..weave_fork weave  new_fork old_fork))])
+        [[{ new_fork} { old_fork}]
+         { (..weave_fork weave  new_fork old_fork)}])
       ([#/.I64_Fork i64.equivalence]
        [#/.F64_Fork frac.equivalence]
        [#/.Text_Fork text.equivalence])
       
       (^template [ ]
-        [[(#/.Access ( ( newL)))
-          (#/.Access ( ( oldL)))]
+        [[{#/.Access { { newL}}}
+          {#/.Access { { oldL}}}]
          (if (n.= newL oldL)
            old
            )])
@@ -180,7 +180,7 @@
        [#/.Member #.Left]
        [#/.Member #.Right])
 
-      [(#/.Bind newR) (#/.Bind oldR)]
+      [{#/.Bind newR} {#/.Bind oldR}]
       (if (n.= newR oldR)
         old
         )
@@ -196,23 +196,23 @@
                        (as_is (recur (++ lefts)
                                                tail))
                        (as_is (if (list.empty? tail)
-                                        (#.Right (-- lefts))
-                                        (#.Left lefts)))]
+                                        {#.Right (-- lefts)}
+                                        {#.Left lefts}))]
       (case patterns
         #.End
         
 
-        (#.Item head tail)
+        {#.Item head tail}
         (case head
-          (#///analysis.Simple #///analysis.Unit)
+          {#///analysis.Simple #///analysis.Unit}
           
           
-          (#///analysis.Bind register)
+          {#///analysis.Bind register}
           (if (n.= @selection register)
             (list )
             )
 
-          (#///analysis.Complex (#///analysis.Tuple sub_patterns))
+          {#///analysis.Complex {#///analysis.Tuple sub_patterns}}
           (case (get sub_patterns @selection)
             #.End
             
@@ -231,8 +231,8 @@
     (in (/.branch/case [input (list\mix weave headSP tailSP+)]))))
 
 (template: (!masking  )
-  [[[(#///analysis.Bind )
-     (#///analysis.Reference (///reference.local ))]
+  [[[{#///analysis.Bind }
+     {#///analysis.Reference (///reference.local )}]
     (list)]])
 
 (def: .public (synthesize_let synthesize archive input @variable body)
@@ -246,7 +246,7 @@
   (-> Phase Archive Synthesis Register Register (Operation Synthesis))
   (if (n.= @variable @output)
     (///\in input)
-    (..synthesize_let synthesize archive input @variable (#///analysis.Reference (///reference.local @output)))))
+    (..synthesize_let synthesize archive input @variable {#///analysis.Reference (///reference.local @output)})))
 
 (def: .public (synthesize_if synthesize archive test then else)
   (-> Phase Archive Synthesis Analysis Analysis (Operation Synthesis))
@@ -257,7 +257,7 @@
 
 (template: (!get  )
   [[[(///analysis.pattern/tuple )
-     (#///analysis.Reference (///reference.local ))]
+     {#///analysis.Reference (///reference.local )}]
     (.list)]])
 
 (def: .public (synthesize_get synthesize archive input patterns @member)
@@ -282,7 +282,7 @@
       (^ (!masking @variable @output))
       (..synthesize_masking synthesize^ archive inputS @variable @output)
 
-      [[(#///analysis.Bind @variable) body]
+      [[{#///analysis.Bind @variable} body]
        #.End]
       (..synthesize_let synthesize^ archive inputS @variable body)
       
@@ -338,26 +338,26 @@
     [path path
      path_storage ..empty]
     (case path
-      (^or #/.Pop (#/.Access Access))
+      (^or #/.Pop {#/.Access Access})
       path_storage
 
       (^ (/.path/bind register))
       (revised@ #bindings (set.has register)
                 path_storage)
 
-      (#/.Bit_Fork _ default otherwise)
+      {#/.Bit_Fork _ default otherwise}
       (|> (case otherwise
             #.None
             path_storage
             
-            (#.Some otherwise)
+            {#.Some otherwise}
             (for_path otherwise path_storage))
           (for_path default))
 
-      (^or (#/.I64_Fork forks)
-           (#/.F64_Fork forks)
-           (#/.Text_Fork forks))
-      (|> (#.Item forks)
+      (^or {#/.I64_Fork forks}
+           {#/.F64_Fork forks}
+           {#/.Text_Fork forks})
+      (|> {#.Item forks}
           (list\each product.right)
           (list\mix for_path path_storage))
 
@@ -376,16 +376,16 @@
           (^ (/.tuple members))
           (list\mix for_synthesis synthesis_storage members)
 
-          (#/.Reference (#///reference.Variable (#///reference/variable.Local register)))
+          {#/.Reference {#///reference.Variable {#///reference/variable.Local register}}}
           (if (set.member? (value@ #bindings synthesis_storage) register)
             synthesis_storage
-            (revised@ #dependencies (set.has (#///reference/variable.Local register)) synthesis_storage))
+            (revised@ #dependencies (set.has {#///reference/variable.Local register}) synthesis_storage))
 
-          (#/.Reference (#///reference.Variable var))
+          {#/.Reference {#///reference.Variable var}}
           (revised@ #dependencies (set.has var) synthesis_storage)
 
           (^ (/.function/apply [functionS argsS]))
-          (list\mix for_synthesis synthesis_storage (#.Item functionS argsS))
+          (list\mix for_synthesis synthesis_storage {#.Item functionS argsS})
 
           (^ (/.function/abstraction [environment arity bodyS]))
           (list\mix for_synthesis synthesis_storage environment)
@@ -423,7 +423,7 @@
           (^ (/.loop/recur replacementsS+))
           (list\mix for_synthesis synthesis_storage replacementsS+)
 
-          (#/.Extension [extension argsS])
+          {#/.Extension [extension argsS]}
           (list\mix for_synthesis synthesis_storage argsS)
 
           _
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 96139976a..278b6343e 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
@@ -85,7 +85,7 @@
 (def: (find_foreign environment register)
   (-> (Environment Synthesis) Register (Operation Synthesis))
   (case (list.item register environment)
-    (#.Some aliased)
+    {#.Some aliased}
     (phase\in aliased)
 
     #.None
@@ -94,30 +94,30 @@
 (def: (grow_path grow path)
   (-> (-> Synthesis (Operation Synthesis)) Path (Operation Path))
   (case path
-    (#/.Bind register)
-    (phase\in (#/.Bind (++ register)))
+    {#/.Bind register}
+    (phase\in {#/.Bind (++ register)})
 
     (^template []
-      [( left right)
+      [{ left right}
        (do phase.monad
          [left' (grow_path grow left)
           right' (grow_path grow right)]
-         (in ( left' right')))])
+         (in { left' right'}))])
     ([#/.Alt] [#/.Seq])
 
-    (#/.Bit_Fork when then else)
+    {#/.Bit_Fork when then else}
     (do [! phase.monad]
       [then (grow_path grow then)
        else (case else
-              (#.Some else)
-              (\ ! each (|>> #.Some) (grow_path grow else))
+              {#.Some else}
+              (\ ! each (|>> {#.Some}) (grow_path grow else))
 
               #.None
               (in #.None))]
-      (in (#/.Bit_Fork when then else)))
+      (in {#/.Bit_Fork when then else}))
     
     (^template []
-      [( [[test then] elses])
+      [{ [[test then] elses]}
        (do [! phase.monad]
          [then (grow_path grow then)
           elses (monad.each ! (function (_ [else_test else_then])
@@ -125,15 +125,15 @@
                                   [else_then (grow_path grow else_then)]
                                   (in [else_test else_then])))
                             elses)]
-         (in ( [[test then] elses])))])
+         (in { [[test then] elses]}))])
     ([#/.I64_Fork]
      [#/.F64_Fork]
      [#/.Text_Fork])
     
-    (#/.Then thenS)
+    {#/.Then thenS}
     (|> thenS
         grow
-        (phase\each (|>> #/.Then)))
+        (phase\each (|>> {#/.Then})))
 
     _
     (phase\in path)))
@@ -141,14 +141,14 @@
 (def: (grow environment expression)
   (-> (Environment Synthesis) Synthesis (Operation Synthesis))
   (case expression
-    (#/.Structure structure)
+    {#/.Structure structure}
     (case structure
-      (#////analysis.Variant [lefts right? subS])
+      {#////analysis.Variant [lefts right? subS]}
       (|> subS
           (grow environment)
           (phase\each (|>> [lefts right?] /.variant)))
       
-      (#////analysis.Tuple membersS+)
+      {#////analysis.Tuple membersS+}
       (|> membersS+
           (monad.each phase.monad (grow environment))
           (phase\each (|>> /.tuple))))
@@ -156,66 +156,66 @@
     (^ (..self_reference))
     (phase\in (/.function/apply [expression (list (/.variable/local 1))]))
     
-    (#/.Reference reference)
+    {#/.Reference reference}
     (case reference
-      (#////reference.Variable variable)
+      {#////reference.Variable variable}
       (case variable
-        (#////reference/variable.Local register)
+        {#////reference/variable.Local register}
         (phase\in (/.variable/local (++ register)))
         
-        (#////reference/variable.Foreign register)
+        {#////reference/variable.Foreign register}
         (..find_foreign environment register))
       
-      (#////reference.Constant constant)
+      {#////reference.Constant constant}
       (phase\in expression))
     
-    (#/.Control control)
+    {#/.Control control}
     (case control
-      (#/.Branch branch)
+      {#/.Branch branch}
       (case branch
-        (#/.Let [inputS register bodyS])
+        {#/.Let [inputS register bodyS]}
         (do phase.monad
           [inputS' (grow environment inputS)
            bodyS' (grow environment bodyS)]
           (in (/.branch/let [inputS' (++ register) bodyS'])))
         
-        (#/.If [testS thenS elseS])
+        {#/.If [testS thenS elseS]}
         (do phase.monad
           [testS' (grow environment testS)
            thenS' (grow environment thenS)
            elseS' (grow environment elseS)]
           (in (/.branch/if [testS' thenS' elseS'])))
 
-        (#/.Get members inputS)
+        {#/.Get members inputS}
         (do phase.monad
           [inputS' (grow environment inputS)]
           (in (/.branch/get [members inputS'])))
         
-        (#/.Case [inputS pathS])
+        {#/.Case [inputS pathS]}
         (do phase.monad
           [inputS' (grow environment inputS)
            pathS' (grow_path (grow environment) pathS)]
           (in (/.branch/case [inputS' pathS']))))
       
-      (#/.Loop loop)
+      {#/.Loop loop}
       (case loop
-        (#/.Scope [start initsS+ iterationS])
+        {#/.Scope [start initsS+ iterationS]}
         (do [! phase.monad]
           [initsS+' (monad.each ! (grow environment) initsS+)
            iterationS' (grow environment iterationS)]
           (in (/.loop/scope [(++ start) initsS+' iterationS'])))
         
-        (#/.Recur argumentsS+)
+        {#/.Recur argumentsS+}
         (|> argumentsS+
             (monad.each phase.monad (grow environment))
             (phase\each (|>> /.loop/recur))))
       
-      (#/.Function function)
+      {#/.Function function}
       (case function
-        (#/.Abstraction [_env _arity _body])
+        {#/.Abstraction [_env _arity _body]}
         (do [! phase.monad]
           [_env' (monad.each !
-                             (|>> (case> (#/.Reference (#////reference.Variable (#////reference/variable.Foreign register)))
+                             (|>> (case> {#/.Reference {#////reference.Variable {#////reference/variable.Foreign register}}}
                                          (..find_foreign environment register)
 
                                          captured
@@ -223,7 +223,7 @@
                              _env)]
           (in (/.function/abstraction [_env' _arity _body])))
         
-        (#/.Apply funcS argsS+)
+        {#/.Apply funcS argsS+}
         (do [! phase.monad]
           [funcS (grow environment funcS)
            argsS+ (monad.each ! (grow environment) argsS+)]
@@ -236,12 +236,12 @@
                                   [funcS
                                    argsS+]))))))
     
-    (#/.Extension name argumentsS+)
+    {#/.Extension name argumentsS+}
     (|> argumentsS+
         (monad.each phase.monad (grow environment))
-        (phase\each (|>> (#/.Extension name))))
+        (phase\each (|>> {#/.Extension name})))
 
-    (#/.Primitive _)
+    {#/.Primitive _}
     (phase\in expression)))
 
 (def: .public (abstraction phase environment archive bodyA)
@@ -269,7 +269,7 @@
     (in (if currying?
           (/.function/abstraction abstraction)
           (case (//loop.optimization false 1 (list) abstraction)
-            (#.Some [startL initsL bodyL])
+            {#.Some [startL initsL bodyL]}
             (/.function/abstraction [#/.environment environment
                                      #/.arity (value@ #/.arity abstraction)
                                      #/.body (/.loop/scope [startL initsL bodyL])])
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 3b9d37fdd..c65c261e8 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
@@ -30,30 +30,30 @@
   (-> (Transform Synthesis) Register (Transform Path))
   (function (recur path)
     (case path
-      (#/.Bind register)
-      (#.Some (#/.Bind (register_optimization offset register)))
+      {#/.Bind register}
+      {#.Some {#/.Bind (register_optimization offset register)}}
 
       (^template []
-        [( left right)
+        [{ left right}
          (do maybe.monad
            [left' (recur left)
             right' (recur right)]
-           (in ( left' right')))])
+           (in { left' right'}))])
       ([#/.Alt] [#/.Seq])
 
-      (#/.Bit_Fork when then else)
+      {#/.Bit_Fork when then else}
       (do [! maybe.monad]
         [then (recur then)
          else (case else
-                (#.Some else)
+                {#.Some else}
                 (\ ! each (|>> #.Some) (recur else))
 
                 #.None
                 (in #.None))]
-        (in (#/.Bit_Fork when then else)))
+        (in {#/.Bit_Fork when then else}))
       
       (^template []
-        [( [[test then] elses])
+        [{ [[test then] elses]}
          (do [! maybe.monad]
            [then (recur then)
             elses (monad.each ! (function (_ [else_test else_then])
@@ -61,58 +61,58 @@
                                     [else_then (recur else_then)]
                                     (in [else_test else_then])))
                               elses)]
-           (in ( [[test then] elses])))])
+           (in { [[test then] elses]}))])
       ([#/.I64_Fork]
        [#/.F64_Fork]
        [#/.Text_Fork])
       
-      (#/.Then body)
+      {#/.Then body}
       (|> body
           body_optimization
-          (maybe\each (|>> #/.Then)))
+          (maybe\each (|>> {#/.Then})))
 
       _
-      (#.Some path))))
+      {#.Some path})))
 
 (def: (body_optimization true_loop? offset scope_environment arity expr)
   (-> Bit Register (Environment Synthesis) Arity (Transform Synthesis))
   (loop [return? true
          expr expr]
     (case expr
-      (#/.Primitive _)
-      (#.Some expr)
+      {#/.Primitive _}
+      {#.Some expr}
 
-      (#/.Structure structure)
+      {#/.Structure structure}
       (case structure
-        (#analysis.Variant variant)
+        {#analysis.Variant variant}
         (do maybe.monad
           [value' (|> variant (value@ #analysis.value) (recur false))]
           (in (|> variant
                   (with@ #analysis.value value')
                   /.variant)))
         
-        (#analysis.Tuple tuple)
+        {#analysis.Tuple tuple}
         (|> tuple
             (monad.each maybe.monad (recur false))
             (maybe\each (|>> /.tuple))))
 
-      (#/.Reference reference)
+      {#/.Reference reference}
       (case reference
-        (^ (#reference.Variable (variable.self)))
+        (^ {#reference.Variable (variable.self)})
         (if true_loop?
           #.None
-          (#.Some expr))
+          {#.Some expr})
         
         (^ (reference.constant constant))
-        (#.Some expr)
+        {#.Some expr}
 
         (^ (reference.local register))
-        (#.Some (#/.Reference (reference.local (register_optimization offset register))))
+        {#.Some {#/.Reference (reference.local (register_optimization offset register))}}
 
         (^ (reference.foreign register))
         (if true_loop?
           (list.item register scope_environment)
-          (#.Some expr)))
+          {#.Some expr}))
 
       (^ (/.branch/case [input path]))
       (do maybe.monad
@@ -165,7 +165,7 @@
                                                  [abstraction' (recur false abstraction)]
                                                  (in (/.function/apply [abstraction' arguments']))))]
           (case abstraction
-            (^ (#/.Reference (#reference.Variable (variable.self))))
+            (^ {#/.Reference {#reference.Variable (variable.self)}})
             (if (and return?
                      (n.= arity (list.size arguments)))
               (in (/.loop/recur arguments'))
@@ -177,30 +177,30 @@
             )))
 
       ... TODO: Stop relying on this custom code.
-      (^ (#/.Extension ["lux syntax char case!" (list& input else matches)]))
+      (^ {#/.Extension ["lux syntax char case!" (list& input else matches)]})
       (if return?
         (do [! maybe.monad]
           [input (recur false input)
            matches (monad.each !
                                (function (_ match)
                                  (case match
-                                   (^ (#/.Structure (#analysis.Tuple (list when then))))
+                                   (^ {#/.Structure {#analysis.Tuple (list when then)}})
                                    (do !
                                      [when (recur false when)
                                       then (recur return? then)]
-                                     (in (#/.Structure (#analysis.Tuple (list when then)))))
+                                     (in {#/.Structure {#analysis.Tuple (list when then)}}))
 
                                    _
                                    (recur false match)))
                                matches)
            else (recur return? else)]
-          (in (#/.Extension ["lux syntax char case!" (list& input else matches)])))
+          (in {#/.Extension ["lux syntax char case!" (list& input else matches)]}))
         #.None)
 
-      (#/.Extension [name args])
+      {#/.Extension [name args]}
       (|> args
           (monad.each maybe.monad (recur false))
-          (maybe\each (|>> [name] #/.Extension))))))
+          (maybe\each (|>> [name] {#/.Extension}))))))
 
 (def: .public (optimization true_loop? offset inits functionS)
   (-> Bit Register (List Synthesis) Abstraction (Maybe [Register (List Synthesis) Synthesis]))
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 91e229d1a..757bdb4c3 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
@@ -39,133 +39,133 @@
   (-> (Remover Synthesis) (Remover Path))
   (function (recur path)
     (case path
-      (#/.Seq (#/.Bind register)
-              post)
+      {#/.Seq {#/.Bind register}
+       post}
       (if (n.= redundant register)
         (recur post)
-        (#/.Seq (#/.Bind (if (n.> redundant register)
+        {#/.Seq {#/.Bind (if (n.> redundant register)
                            (-- register)
-                           register))
-                (recur post)))
+                           register)}
+         (recur post)})
 
-      (^or (#/.Seq (#/.Access (#/.Member member))
-                   (#/.Seq (#/.Bind register)
-                           post))
+      (^or {#/.Seq {#/.Access {#/.Member member}}
+            {#/.Seq {#/.Bind register}
+             post}}
            ... This alternative form should never occur in practice.
            ... Yet, it is "technically" possible to construct it.
-           (#/.Seq (#/.Seq (#/.Access (#/.Member member))
-                           (#/.Bind register))
-                   post))
+           {#/.Seq {#/.Seq {#/.Access {#/.Member member}}
+                    {#/.Bind register}}
+            post})
       (if (n.= redundant register)
         (recur post)
-        (#/.Seq (#/.Access (#/.Member member))
-                (#/.Seq (#/.Bind (if (n.> redundant register)
-                                   (-- register)
-                                   register))
-                        (recur post))))
+        {#/.Seq {#/.Access {#/.Member member}}
+         {#/.Seq {#/.Bind (if (n.> redundant register)
+                            (-- register)
+                            register)}
+          (recur post)}})
 
       (^template []
-        [( left right)
-         ( (recur left) (recur right))])
+        [{ left right}
+         { (recur left) (recur right)}])
       ([#/.Seq]
        [#/.Alt])
 
-      (#/.Bit_Fork when then else)
-      (#/.Bit_Fork when (recur then) (maybe\each recur else))
+      {#/.Bit_Fork when then else}
+      {#/.Bit_Fork when (recur then) (maybe\each recur else)}
 
       (^template []
-        [( [[test then] tail])
-         ( [[test (recur then)]
+        [{ [[test then] tail]}
+         { [[test (recur then)]
                  (list\each (function (_ [test' then'])
                               [test' (recur then')])
-                            tail)])])
+                            tail)]}])
       ([#/.I64_Fork]
        [#/.F64_Fork]
        [#/.Text_Fork])
       
       (^or #/.Pop
-           (#/.Access _))
+           {#/.Access _})
       path
 
-      (#/.Bind register)
+      {#/.Bind register}
       (undefined)
       
-      (#/.Then then)
-      (#/.Then (remove_local redundant then))
+      {#/.Then then}
+      {#/.Then (remove_local redundant then)}
       )))
 
 (def: (remove_local_from_variable redundant variable)
   (Remover Variable)
   (case variable
-    (#variable.Local register)
-    (#variable.Local (..prune redundant register))
+    {#variable.Local register}
+    {#variable.Local (..prune redundant register)}
     
-    (#variable.Foreign register)
+    {#variable.Foreign register}
     variable))
 
 (def: (remove_local redundant)
   (Remover Synthesis)
   (function (recur synthesis)
     (case synthesis
-      (#/.Primitive _)
+      {#/.Primitive _}
       synthesis
       
-      (#/.Structure structure)
-      (#/.Structure (case structure
-                      (#analysis.Variant [lefts right value])
-                      (#analysis.Variant [lefts right (recur value)])
+      {#/.Structure structure}
+      {#/.Structure (case structure
+                      {#analysis.Variant [lefts right value]}
+                      {#analysis.Variant [lefts right (recur value)]}
                       
-                      (#analysis.Tuple tuple)
-                      (#analysis.Tuple (list\each recur tuple))))
+                      {#analysis.Tuple tuple}
+                      {#analysis.Tuple (list\each recur tuple)})}
       
-      (#/.Reference reference)
+      {#/.Reference reference}
       (case reference
-        (#reference.Variable variable)
+        {#reference.Variable variable}
         (/.variable (..remove_local_from_variable redundant variable))
 
-        (#reference.Constant constant)
+        {#reference.Constant constant}
         synthesis)
       
-      (#/.Control control)
-      (#/.Control (case control
-                    (#/.Branch branch)
-                    (#/.Branch (case branch
-                                 (#/.Let input register output)
-                                 (#/.Let (recur input)
-                                         (..prune redundant register)
-                                         (recur output))
+      {#/.Control control}
+      {#/.Control (case control
+                    {#/.Branch branch}
+                    {#/.Branch (case branch
+                                 {#/.Let input register output}
+                                 {#/.Let (recur input)
+                                  (..prune redundant register)
+                                  (recur output)}
                                  
-                                 (#/.If test then else)
-                                 (#/.If (recur test) (recur then) (recur else))
+                                 {#/.If test then else}
+                                 {#/.If (recur test) (recur then) (recur else)}
                                  
-                                 (#/.Get path record)
-                                 (#/.Get path (recur record))
+                                 {#/.Get path record}
+                                 {#/.Get path (recur record)}
                                  
-                                 (#/.Case input path)
-                                 (#/.Case (recur input) (remove_local_from_path remove_local redundant path))))
+                                 {#/.Case input path}
+                                 {#/.Case (recur input) (remove_local_from_path remove_local redundant path)})}
                     
-                    (#/.Loop loop)
-                    (#/.Loop (case loop
-                               (#/.Scope [start inits iteration])
-                               (#/.Scope [(..prune redundant start)
+                    {#/.Loop loop}
+                    {#/.Loop (case loop
+                               {#/.Scope [start inits iteration]}
+                               {#/.Scope [(..prune redundant start)
                                           (list\each recur inits)
-                                          (recur iteration)])
+                                          (recur iteration)]}
                                
-                               (#/.Recur resets)
-                               (#/.Recur (list\each recur resets))))
+                               {#/.Recur resets}
+                               {#/.Recur (list\each recur resets)})}
 
-                    (#/.Function function)
-                    (#/.Function (case function
-                                   (#/.Abstraction [environment arity body])
-                                   (#/.Abstraction [(list\each recur environment)
+                    {#/.Function function}
+                    {#/.Function (case function
+                                   {#/.Abstraction [environment arity body]}
+                                   {#/.Abstraction [(list\each recur environment)
                                                     arity
-                                                    body])
+                                                    body]}
 
-                                   (#/.Apply abstraction inputs)
-                                   (#/.Apply (recur abstraction) (list\each recur inputs))))))
+                                   {#/.Apply abstraction inputs}
+                                   {#/.Apply (recur abstraction) (list\each recur inputs)})})}
       
-      (#/.Extension name inputs)
-      (#/.Extension name (list\each recur inputs)))))
+      {#/.Extension name inputs}
+      {#/.Extension name (list\each recur inputs)})))
 
 (type: Redundancy
   (Dictionary Register Bit))
@@ -198,15 +198,15 @@
   (function (recur [redundancy values])
     (case values
       #.End
-      (#try.Success [redundancy
-                     values])
+      {#try.Success [redundancy
+                     values]}
 
-      (#.Item head tail)
+      {#.Item head tail}
       (do try.monad
         [[redundancy head] (optimization [redundancy head])
          [redundancy tail] (recur [redundancy tail])]
         (in [redundancy
-             (#.Item head tail)])))))
+             {#.Item head tail}])))))
 
 (template []
   [(exception: .public ( [register Register])
@@ -221,9 +221,9 @@
   (-> Register Redundancy (Try Redundancy))
   (case (dictionary.value register redundancy)
     #.None
-    (#try.Success (dictionary.has register ..redundant! redundancy))
+    {#try.Success (dictionary.has register ..redundant! redundancy)}
     
-    (#.Some _)
+    {#.Some _}
     (exception.except ..redundant_declaration [register])))
 
 (def: (observe register redundancy)
@@ -232,8 +232,8 @@
     #.None
     (exception.except ..unknown_register [register])
     
-    (#.Some _)
-    (#try.Success (dictionary.has register ..necessary! redundancy))))
+    {#.Some _}
+    {#try.Success (dictionary.has register ..necessary! redundancy)}))
 
 (def: (format redundancy)
   (%.Format Redundancy)
@@ -248,26 +248,26 @@
   (function (recur [redundancy path])
     (case path
       (^or #/.Pop
-           (#/.Access _))
-      (#try.Success [redundancy
-                     path])
+           {#/.Access _})
+      {#try.Success [redundancy
+                     path]}
 
-      (#/.Bit_Fork when then else)
+      {#/.Bit_Fork when then else}
       (do [! try.monad]
         [[redundancy then] (recur [redundancy then])
          [redundancy else] (case else
-                             (#.Some else)
+                             {#.Some else}
                              (\ ! each
                                 (function (_ [redundancy else])
-                                  [redundancy (#.Some else)])
+                                  [redundancy {#.Some else}])
                                 (recur [redundancy else]))
 
                              #.None
                              (in [redundancy #.None]))]
-        (in [redundancy (#/.Bit_Fork when then else)]))
+        (in [redundancy {#/.Bit_Fork when then else}]))
       
       (^template [ ]
-        [( [[test then] elses])
+        [{ [[test then] elses]}
          (do [! try.monad]
            [[redundancy then] (recur [redundancy then])
             [redundancy elses] (..list_optimization (: (Optimization [ Path])
@@ -276,24 +276,24 @@
                                                            [[redundancy else_then] (recur [redundancy else_then])]
                                                            (in [redundancy [else_test else_then]]))))
                                                     [redundancy elses])]
-           (in [redundancy ( [[test then] elses])]))])
+           (in [redundancy { [[test then] elses]}]))])
       ([#/.I64_Fork (I64 Any)]
        [#/.F64_Fork Frac]
        [#/.Text_Fork Text])
       
-      (#/.Bind register)
+      {#/.Bind register}
       (do try.monad
         [redundancy (..declare register redundancy)]
         (in [redundancy
              path]))
       
-      (#/.Alt left right)
+      {#/.Alt left right}
       (do try.monad
         [[redundancy left] (recur [redundancy left])
          [redundancy right] (recur [redundancy right])]
-        (in [redundancy (#/.Alt left right)]))
+        (in [redundancy {#/.Alt left right}]))
       
-      (#/.Seq pre post)
+      {#/.Seq pre post}
       (do try.monad
         [.let [baseline (|> redundancy
                             dictionary.keys
@@ -313,56 +313,56 @@
         (in [(list\mix dictionary.lacks redundancy (set.list bindings))
              (|> redundants
                  (list.sorted n.>)
-                 (list\mix (..remove_local_from_path ..remove_local) (#/.Seq pre post)))]))
+                 (list\mix (..remove_local_from_path ..remove_local) {#/.Seq pre post}))]))
 
-      (#/.Then then)
+      {#/.Then then}
       (do try.monad
         [[redundancy then] (optimization [redundancy then])]
-        (in [redundancy (#/.Then then)]))
+        (in [redundancy {#/.Then then}]))
       )))
 
 (def: (optimization' [redundancy synthesis])
   (Optimization Synthesis)
-  (with_expansions [ (as_is (#try.Success [redundancy
-                                                  synthesis]))]
+  (with_expansions [ (as_is {#try.Success [redundancy
+                                                  synthesis]})]
     (case synthesis
-      (#/.Primitive _)
+      {#/.Primitive _}
       
       
-      (#/.Structure structure)
+      {#/.Structure structure}
       (case structure
-        (#analysis.Variant [lefts right value])
+        {#analysis.Variant [lefts right value]}
         (do try.monad
           [[redundancy value] (optimization' [redundancy value])]
           (in [redundancy
-               (#/.Structure (#analysis.Variant [lefts right value]))]))
+               {#/.Structure {#analysis.Variant [lefts right value]}}]))
         
-        (#analysis.Tuple tuple)
+        {#analysis.Tuple tuple}
         (do try.monad
           [[redundancy tuple] (..list_optimization optimization' [redundancy tuple])]
           (in [redundancy
-               (#/.Structure (#analysis.Tuple tuple))])))
+               {#/.Structure {#analysis.Tuple tuple}}])))
       
-      (#/.Reference reference)
+      {#/.Reference reference}
       (case reference
-        (#reference.Variable variable)
+        {#reference.Variable variable}
         (case variable
-          (#variable.Local register)
+          {#variable.Local register}
           (do try.monad
             [redundancy (..observe register redundancy)]
             )
           
-          (#variable.Foreign register)
+          {#variable.Foreign register}
           )
 
-        (#reference.Constant constant)
+        {#reference.Constant constant}
         )
       
-      (#/.Control control)
+      {#/.Control control}
       (case control
-        (#/.Branch branch)
+        {#/.Branch branch}
         (case branch
-          (#/.Let input register output)
+          {#/.Let input register output}
           (do try.monad
             [[redundancy input] (optimization' [redundancy input])
              redundancy (..declare register redundancy)
@@ -371,70 +371,70 @@
                                   (dictionary.value register)
                                   (maybe.else ..necessary!))]]
             (in [(dictionary.lacks register redundancy)
-                 (#/.Control (if redundant?
-                               (#/.Branch (#/.Case input
-                                                   (#/.Seq #/.Pop
-                                                           (#/.Then (..remove_local register output)))))
-                               (#/.Branch (#/.Let input register output))))]))
+                 {#/.Control (if redundant?
+                               {#/.Branch {#/.Case input
+                                           {#/.Seq #/.Pop
+                                            {#/.Then (..remove_local register output)}}}}
+                               {#/.Branch {#/.Let input register output}})}]))
           
-          (#/.If test then else)
+          {#/.If test then else}
           (do try.monad
             [[redundancy test] (optimization' [redundancy test])
              [redundancy then] (optimization' [redundancy then])
              [redundancy else] (optimization' [redundancy else])]
             (in [redundancy
-                 (#/.Control (#/.Branch (#/.If test then else)))]))
+                 {#/.Control {#/.Branch {#/.If test then else}}}]))
           
-          (#/.Get path record)
+          {#/.Get path record}
           (do try.monad
             [[redundancy record] (optimization' [redundancy record])]
             (in [redundancy
-                 (#/.Control (#/.Branch (#/.Get path record)))]))
+                 {#/.Control {#/.Branch {#/.Get path record}}}]))
           
-          (#/.Case input path)
+          {#/.Case input path}
           (do try.monad
             [[redundancy input] (optimization' [redundancy input])
              [redundancy path] (..path_optimization optimization' [redundancy path])]
             (in [redundancy
-                 (#/.Control (#/.Branch (#/.Case input path)))])))
+                 {#/.Control {#/.Branch {#/.Case input path}}}])))
         
-        (#/.Loop loop)
+        {#/.Loop loop}
         (case loop
-          (#/.Scope [start inits iteration])
+          {#/.Scope [start inits iteration]}
           (do try.monad
             [[redundancy inits] (..list_optimization optimization' [redundancy inits])
              .let [[extension redundancy] (..extended start (list.size inits) redundancy)]
              [redundancy iteration] (optimization' [redundancy iteration])]
             (in [(list\mix dictionary.lacks redundancy extension)
-                 (#/.Control (#/.Loop (#/.Scope [start inits iteration])))]))
+                 {#/.Control {#/.Loop {#/.Scope [start inits iteration]}}}]))
           
-          (#/.Recur resets)
+          {#/.Recur resets}
           (do try.monad
             [[redundancy resets] (..list_optimization optimization' [redundancy resets])]
             (in [redundancy
-                 (#/.Control (#/.Loop (#/.Recur resets)))])))
+                 {#/.Control {#/.Loop {#/.Recur resets}}}])))
 
-        (#/.Function function)
+        {#/.Function function}
         (case function
-          (#/.Abstraction [environment arity body])
+          {#/.Abstraction [environment arity body]}
           (do [! try.monad]
             [[redundancy environment] (..list_optimization optimization' [redundancy environment])
              [_ body] (optimization' [(..default arity) body])]
             (in [redundancy
-                 (#/.Control (#/.Function (#/.Abstraction [environment arity body])))]))
+                 {#/.Control {#/.Function {#/.Abstraction [environment arity body]}}}]))
           
-          (#/.Apply abstraction inputs)
+          {#/.Apply abstraction inputs}
           (do try.monad
             [[redundancy abstraction] (optimization' [redundancy abstraction])
              [redundancy inputs] (..list_optimization optimization' [redundancy inputs])]
             (in [redundancy
-                 (#/.Control (#/.Function (#/.Apply abstraction inputs)))]))))
+                 {#/.Control {#/.Function {#/.Apply abstraction inputs}}}]))))
       
-      (#/.Extension name inputs)
+      {#/.Extension name inputs}
       (do try.monad
         [[redundancy inputs] (..list_optimization optimization' [redundancy inputs])]
         (in [redundancy
-             (#/.Extension name inputs)])))))
+             {#/.Extension name inputs}])))))
 
 (def: .public optimization
   (-> Synthesis (Try Synthesis))
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 f085683fc..6b9fbfd09 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/program.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/program.lux
@@ -48,7 +48,7 @@
                         [program_id (artifact.remember ..name registry)]
                         (in [module_id program_id])))
                     registries)
-      (#.Some program_context)
+      {#.Some program_context}
       (in program_context)
       
       #.None
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 ec444b003..b855ced2f 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux
@@ -171,12 +171,12 @@
    ["Text" (%.text text)]))
 
 (template: (!failure parser where offset source_code)
-  [(#.Left [[where offset source_code]
-            (exception.error ..unrecognized_input [where (%.name (name_of parser)) source_code offset])])])
+  [{#.Left [[where offset source_code]
+            (exception.error ..unrecognized_input [where (%.name (name_of parser)) source_code offset])]}])
 
 (template: (!end_of_file where offset source_code current_module)
-  [(#.Left [[where offset source_code]
-            (exception.error ..end_of_file current_module)])])
+  [{#.Left [[where offset source_code]
+            (exception.error ..end_of_file current_module)]}])
 
 (type: (Parser a)
   (-> Source (Either [Source Text] [Source a])))
@@ -193,10 +193,10 @@
 
 (template: (!letE   )
   [(case 
-     (#.Right )
+     {#.Right }
      
 
-     ... (#.Left error)
+     ... {#.Left error}
      <>
      (:expected <>))])
 
@@ -227,14 +227,14 @@
      (loop [source (: Source [(!forward 1 where) offset source_code])
             stack (: (List Code) #.End)]
        (case (parse source)
-         (#.Right [source' top])
-         (recur source' (#.Item top stack))
+         {#.Right [source' top]}
+         (recur source' {#.Item top stack})
          
-         (#.Left [source' error])
+         {#.Left [source' error]}
          (if (same?  error)
-           (#.Right [source'
-                     [where ( (list.reversed stack))]])
-           (#.Left [source' error])))))]
+           {#.Right [source'
+                     [where { (list.reversed stack)}]]}
+           {#.Left [source' error]}))))]
 
   ... Form and tuple syntax is mostly the same, differing only in the
   ... delimiters involved.
@@ -250,15 +250,15 @@
   (loop [source (: Source [(!forward 1 where) offset source_code])
          stack (: (List [Code Code]) #.End)]
     (case (parse source)
-      (#.Right [sourceF field])
+      {#.Right [sourceF field]}
       (!letE [sourceFV value] (parse sourceF)
-             (recur sourceFV (#.Item [field value] stack)))
+             (recur sourceFV {#.Item [field value] stack}))
 
-      (#.Left [source' error])
+      {#.Left [source' error]}
       (if (same? ..close_variant error)
-        (#.Right [source'
-                  [where (#.Record (list.reversed stack))]])
-        (#.Left [source' error])))))
+        {#.Right [source'
+                  [where {#.Record (list.reversed stack)}]]}
+        {#.Left [source' error]}))))
 
 (template: (!guarantee_no_new_lines where offset source_code content body)
   [(case ("lux text index" 0 (static text.new_line) content)
@@ -266,21 +266,21 @@
      body
 
      g!_
-     (#.Left [[where offset source_code]
-              (exception.error ..text_cannot_contain_new_lines content)]))])
+     {#.Left [[where offset source_code]
+              (exception.error ..text_cannot_contain_new_lines content)]})])
 
 (def: (text_parser where offset source_code)
   (-> Location Offset Text (Either [Source Text] [Source Code]))
   (case ("lux text index" offset (static ..text_delimiter) source_code)
-    (#.Some g!end)
+    {#.Some g!end}
     (<| (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)]
+        {#.Right [[(let [size (!n/- offset g!end)]
                      (revised@ #.column (|>> (!n/+ size) (!n/+ 2)) where))
                    (!++ g!end)
                    source_code]
                   [where
-                   (#.Text g!content)]]))
+                   {#.Text g!content}]]})
     
     _
     (!failure ..text_parser where offset source_code)))
@@ -338,16 +338,16 @@
              (!clip  )
              (text.replaced ..digit_separator "")
              (\  decoded))
-     (#.Right output)
-     (#.Right [[(let [[where::file where::line where::column] where]
+     {#.Right output}
+     {#.Right [[(let [[where::file where::line where::column] where]
                   [where::file where::line (!n/+ (!n/-  ) where::column)])
                 
                 ]
-               [where ( output)]])
+               [where { output}]]}
      
-     (#.Left error)
-     (#.Left [[where  ]
-              error]))])
+     {#.Left error}
+     {#.Left [[where  ]
+              error]})])
 
 (def: no_exponent
   Offset
@@ -423,10 +423,10 @@
                    (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 [[(revised@ #.column (|>> (!n/+ (!n/- start end))) where)
+(with_expansions [ {#.Right [[(revised@ #.column (|>> (!n/+ (!n/- start end))) where)
                                       end
                                       source_code]
-                                     (!clip start end source_code)])]
+                                     (!clip start end source_code)]}]
   (inline: (name_part_parser start where offset source_code)
     (-> Nat Location Offset Text
         (Either [Source Text] [Source Text]))
@@ -440,7 +440,7 @@
 (template: (!half_name_parser @offset @char @module)
   [(!if_name_char?|head @char
                         (!letE [source' name] (..name_part_parser @offset (!forward 1 where) (!++ @offset) source_code)
-                               (#.Right [source' [@module name]]))
+                               {#.Right [source' [@module name]]})
                         (!failure ..!half_name_parser where @offset source_code))])
 
 (`` (def: (short_name_parser source_code//size current_module [where offset/0 source_code])
@@ -456,9 +456,9 @@
 
 (template: (!short_name_parser source_code//size @current_module @source @where @tag)
   [(!letE [source' name] (..short_name_parser source_code//size @current_module @source)
-          (#.Right [source' [@where (@tag name)]]))])
+          {#.Right [source' [@where {@tag name}]]})])
 
-(with_expansions [ (as_is (#.Right [source' ["" simple]]))]
+(with_expansions [ (as_is {#.Right [source' ["" simple]]})]
   (`` (def: (full_name_parser aliases start source)
         (-> Aliases Offset (Parser Name))
         (<| (!letE [source' simple] (let [[where offset source_code] source]
@@ -471,15 +471,15 @@
                   (if ("lux text =" "" complex)
                     (let [[where offset source_code] source]
                       (!failure ..full_name_parser where offset source_code))
-                    (#.Right [source'' [(|> aliases
+                    {#.Right [source'' [(|> aliases
                                             (dictionary.value simple)
                                             (maybe.else simple))
-                                        complex]])))
+                                        complex]]}))
               )))))
 
 (template: (!full_name_parser @offset @source @where @aliases @tag)
   [(!letE [source' full_name] (..full_name_parser @aliases @offset @source)
-          (#.Right [source' [@where (@tag full_name)]]))])
+          {#.Right [source' [@where {@tag full_name}]]})])
 
 ... TODO: Grammar macro for specifying syntax.
 ... (grammar: lux_grammar
@@ -492,14 +492,14 @@
                    (as_is (parse current_module aliases source_code//size))]
 
   (template: (!close closer)
-    [(#.Left [ closer])])
+    [{#.Left [ closer]}])
 
   (def: (bit_syntax value [where offset/0 source_code])
     (-> Bit (Parser Code))
-    (#.Right [[(revised@ #.column (|>> !++/2) where)
+    {#.Right [[(revised@ #.column (|>> !++/2) where)
                (!++/2 offset/0)
                source_code]
-              [where (#.Bit value)]]))
+              [where {#.Bit value}]]})
   
   (def: .public (parse current_module aliases source_code//size)
     (-> Text Aliases Nat (Parser Code))
@@ -566,7 +566,7 @@
                     (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" (!++ offset/1) (static text.new_line) source_code)
-                                                         (#.Some end)
+                                                         {#.Some end}
                                                          (recur (!vertical where end source_code))
                                                          
                                                          _
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 2209cdcce..e718a2469 100644
--- a/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux
+++ b/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux
@@ -54,10 +54,10 @@
 
 (type: .public Primitive
   (Variant
-   (#Bit Bit)
-   (#I64 (I64 Any))
-   (#F64 Frac)
-   (#Text Text)))
+   {#Bit Bit}
+   {#I64 (I64 Any)}
+   {#F64 Frac}
+   {#Text Text}))
 
 (type: .public Side
   (Either Nat Nat))
@@ -67,8 +67,8 @@
 
 (type: .public Access
   (Variant
-   (#Side Side)
-   (#Member Member)))
+   {#Side Side}
+   {#Member Member}))
 
 (type: .public (Fork value next)
   [[value next] (List [value next])])
@@ -76,15 +76,15 @@
 (type: .public (Path' s)
   (Variant
    #Pop
-   (#Access Access)
-   (#Bind Register)
-   (#Bit_Fork Bit (Path' s) (Maybe (Path' s)))
-   (#I64_Fork (Fork (I64 Any) (Path' s)))
-   (#F64_Fork (Fork Frac (Path' s)))
-   (#Text_Fork (Fork Text (Path' s)))
-   (#Alt (Path' s) (Path' s))
-   (#Seq (Path' s) (Path' s))
-   (#Then s)))
+   {#Access Access}
+   {#Bind Register}
+   {#Bit_Fork Bit (Path' s) (Maybe (Path' s))}
+   {#I64_Fork (Fork (I64 Any) (Path' s))}
+   {#F64_Fork (Fork Frac (Path' s))}
+   {#Text_Fork (Fork Text (Path' s))}
+   {#Alt (Path' s) (Path' s)}
+   {#Seq (Path' s) (Path' s)}
+   {#Then s}))
 
 (type: .public (Abstraction' s)
   (Record
@@ -99,10 +99,10 @@
 
 (type: .public (Branch s)
   (Variant
-   (#Let s Register s)
-   (#If s s s)
-   (#Get (List Member) s)
-   (#Case s (Path' s))))
+   {#Let s Register s}
+   {#If s s s}
+   {#Get (List Member) s}
+   {#Case s (Path' s)}))
 
 (type: .public (Scope s)
   (Record
@@ -112,28 +112,28 @@
 
 (type: .public (Loop s)
   (Variant
-   (#Scope (Scope s))
-   (#Recur (List s))))
+   {#Scope (Scope s)}
+   {#Recur (List s)}))
 
 (type: .public (Function s)
   (Variant
-   (#Abstraction (Abstraction' s))
-   (#Apply s (List s))))
+   {#Abstraction (Abstraction' s)}
+   {#Apply s (List s)}))
 
 (type: .public (Control s)
   (Variant
-   (#Branch (Branch s))
-   (#Loop (Loop s))
-   (#Function (Function s))))
+   {#Branch (Branch s)}
+   {#Loop (Loop s)}
+   {#Function (Function s)}))
 
 (type: .public Synthesis
   (Rec Synthesis
     (Variant
-     (#Primitive Primitive)
-     (#Structure (Composite Synthesis))
-     (#Reference Reference)
-     (#Control (Control Synthesis))
-     (#Extension (Extension Synthesis)))))
+     {#Primitive Primitive}
+     {#Structure (Composite Synthesis)}
+     {#Reference Reference}
+     {#Control (Control Synthesis)}
+     {#Extension (Extension Synthesis)})))
 
 (template [ ]
   [(type: .public 
@@ -165,9 +165,9 @@
 
 (template [  ]
   [(template: .public ( content)
-     [(.<| #..Access
-           
-           
+     [(.<| {#..Access}
+           {}
+           {}
            content)])]
 
   [side/left    #..Side   #.Left]
@@ -178,7 +178,7 @@
 
 (template [ ]
   [(template: .public ( content)
-     [( content)])]
+     [{ content}])]
 
   [path/bind #..Bind]
   [path/then #..Then]
@@ -186,7 +186,7 @@
 
 (template [ ]
   [(template: .public ( left right)
-     [( [left right])])]
+     [{ left right}])]
 
   [path/alt  #..Alt]
   [path/seq  #..Seq]
@@ -223,7 +223,7 @@
 
 (template [ ]
   [(template: .public ( content)
-     [(#..Primitive ( content))])]
+     [{#..Primitive { content}}])]
 
   [bit  #..Bit]
   [i64  #..I64]
@@ -233,8 +233,8 @@
 
 (template [ ]
   [(template: .public ( content)
-     [(<| #..Structure
-          
+     [(<| {#..Structure}
+          {}
           content)])]
 
   [variant #analysis.Variant]
@@ -243,7 +243,7 @@
 
 (template [ ]
   [(template: .public ( content)
-     [(.<| #..Reference
+     [(.<| {#..Reference}
            
            content)])]
 
@@ -255,9 +255,9 @@
 
 (template [  ]
   [(template: .public ( content)
-     [(.<| #..Control
-           
-           
+     [(.<| {#..Control}
+           {}
+           {}
            content)])]
 
   [branch/case          #..Branch   #..Case]
@@ -278,11 +278,11 @@
     #Pop
     "_"
 
-    (#Bit_Fork when then else)
+    {#Bit_Fork when then else}
     (format "(?"
             " " (%.bit when) " " (%path' %then then)
             (case else
-              (#.Some else)
+              {#.Some else}
               (format " " (%.bit (not when)) " " (%path' %then else))
 
               #.None
@@ -290,8 +290,8 @@
             ")")
     
     (^template [ ]
-      [( item)
-       (|> (#.Item item)
+      [{ item}
+       (|> {#.Item item}
            (list\each (function (_ [test then])
                         (format ( test) " " (%path' %then then))))
            (text.interposed " ")
@@ -300,125 +300,125 @@
      [#F64_Fork %.frac]
      [#Text_Fork %.text])
     
-    (#Access access)
+    {#Access access}
     (case access
-      (#Side side)
+      {#Side side}
       (case side
-        (#.Left lefts)
+        {#.Left lefts}
         (format "(" (%.nat lefts) " #0" ")")
         
-        (#.Right lefts)
+        {#.Right lefts}
         (format "(" (%.nat lefts) " #1" ")"))
       
-      (#Member member)
+      {#Member member}
       (case member
-        (#.Left lefts)
+        {#.Left lefts}
         (format "[" (%.nat lefts) " #0" "]")
         
-        (#.Right lefts)
+        {#.Right lefts}
         (format "[" (%.nat lefts) " #1" "]")))
     
-    (#Bind register)
+    {#Bind register}
     (format "(@ " (%.nat register) ")")
     
-    (#Alt left right)
+    {#Alt left right}
     (format "(Variant " (%path' %then left) " " (%path' %then right) ")")
     
-    (#Seq left right)
+    {#Seq left right}
     (format "(Tuple " (%path' %then left) " " (%path' %then right) ")")
     
-    (#Then then)
+    {#Then then}
     (|> (%then then)
         (text.enclosed ["(! " ")"]))))
 
 (def: .public (%synthesis value)
   (Format Synthesis)
   (case value
-    (#Primitive primitive)
+    {#Primitive primitive}
     (case primitive
       (^template [ ]
-        [( value)
+        [{ value}
          ( value)])
       ([#Bit  %.bit]
        [#F64  %.frac]
        [#Text %.text])
       
-      (#I64 value)
+      {#I64 value}
       (%.int (.int value)))
 
-    (#Structure structure)
+    {#Structure structure}
     (case structure
-      (#analysis.Variant [lefts right? content])
+      {#analysis.Variant [lefts right? content]}
       (|> (%synthesis content)
           (format (%.nat lefts) " " (%.bit right?) " ")
-          (text.enclosed ["(" ")"]))
+          (text.enclosed ["{" "}"]))
       
-      (#analysis.Tuple members)
+      {#analysis.Tuple members}
       (|> members
           (list\each %synthesis)
           (text.interposed " ")
           (text.enclosed ["[" "]"])))
 
-    (#Reference reference)
+    {#Reference reference}
     (reference.format reference)
 
-    (#Control control)
+    {#Control control}
     (case control
-      (#Function function)
+      {#Function function}
       (case function
-        (#Abstraction [environment arity body])
+        {#Abstraction [environment arity body]}
         (let [environment' (|> environment
                                (list\each %synthesis)
                                (text.interposed " ")
                                (text.enclosed ["[" "]"]))]
           (|> (format environment' " " (%.nat arity) " " (%synthesis body))
-              (text.enclosed ["(#function " ")"])))
+              (text.enclosed ["{#function " "}"])))
         
-        (#Apply func args)
+        {#Apply func args}
         (|> args
             (list\each %synthesis)
             (text.interposed " ")
             (format (%synthesis func) " ")
             (text.enclosed ["(" ")"])))
 
-      (#Branch branch)
+      {#Branch branch}
       (case branch
-        (#Let input register body)
+        {#Let input register body}
         (|> (format (%.nat register) " " (%synthesis input) " " (%synthesis body))
-            (text.enclosed ["(#let " ")"]))
+            (text.enclosed ["{#let " "}"]))
         
-        (#If test then else)
+        {#If test then else}
         (|> (format (%synthesis test) " " (%synthesis then) " " (%synthesis else))
-            (text.enclosed ["(#if " ")"]))
+            (text.enclosed ["{#if " "}"]))
 
-        (#Get members record)
+        {#Get members record}
         (|> (format (%.list (%path' %synthesis)
                             (list\each (|>> #Member #Access) members))
                     " " (%synthesis record))
-            (text.enclosed ["(#get " ")"]))
+            (text.enclosed ["{#get " "}"]))
         
-        (#Case input path)
+        {#Case input path}
         (|> (format (%synthesis input) " " (%path' %synthesis path))
-            (text.enclosed ["(#case " ")"])))
+            (text.enclosed ["{#case " "}"])))
       
-      (#Loop loop)
+      {#Loop loop}
       (case loop
-        (#Scope scope)
+        {#Scope scope}
         (|> (format (%.nat (value@ #start scope))
                     " " (|> (value@ #inits scope)
                             (list\each %synthesis)
                             (text.interposed " ")
                             (text.enclosed ["[" "]"]))
                     " " (%synthesis (value@ #iteration scope)))
-            (text.enclosed ["(#loop " ")"]))
+            (text.enclosed ["{#loop " "}"]))
         
-        (#Recur args)
+        {#Recur args}
         (|> args
             (list\each %synthesis)
             (text.interposed " ")
-            (text.enclosed ["(#recur " ")"]))))
+            (text.enclosed ["{#recur " "}"]))))
 
-    (#Extension [name args])
+    {#Extension [name args]}
     (|> (list\each %synthesis args)
         (text.interposed " ")
         (format (%.text name) " ")
@@ -434,13 +434,13 @@
   (def: (= reference sample)
     (case [reference sample]
       (^template [  ]
-        [[( reference') ( sample')]
+        [[{ reference'} { sample'}]
          ( reference' sample')])
       ([#Bit  bit\=  %.bit]
        [#F64  f.=    %.frac]
        [#Text text\= %.text])
 
-      [(#I64 reference') (#I64 sample')]
+      [{#I64 reference'} {#I64 sample'}]
       (i.= (.int reference') (.int sample'))
 
       _
@@ -453,7 +453,7 @@
 
   (def: hash
     (|>> (case> (^template [ ]
-                  [( value')
+                  [{ value'}
                    (\  hash value')])
                 ([#Bit  bit.hash]
                  [#F64  f.hash]
@@ -478,7 +478,7 @@
   (def: (= reference sample)
     (case [reference sample]
       (^template [ ]
-        [[( reference) ( sample)]
+        [[{ reference} { sample}]
          (\  = reference sample)])
       ([#Side ..side_equivalence]
        [#Member ..member_equivalence])
@@ -495,7 +495,7 @@
     (let [sub_hash (sum.hash n.hash n.hash)]
       (case value
         (^template []
-          [( value)
+          [{ value}
            (\ sub_hash hash value)])
         ([#Side]
          [#Member])))))
@@ -508,33 +508,33 @@
       [#Pop #Pop]
       true
 
-      [(#Bit_Fork reference_when reference_then reference_else)
-       (#Bit_Fork sample_when sample_then sample_else)]
+      [{#Bit_Fork reference_when reference_then reference_else}
+       {#Bit_Fork sample_when sample_then sample_else}]
       (and (bit\= reference_when sample_when)
            (= reference_then sample_then)
            (\ (maybe.equivalence =) = reference_else sample_else))
 
       (^template [ ]
-        [[( reference_item)
-          ( sample_item)]
+        [[{ reference_item}
+          { sample_item}]
          (\ (list.equivalence (product.equivalence  =)) =
-            (#.Item reference_item)
-            (#.Item sample_item))])
+            {#.Item reference_item}
+            {#.Item sample_item})])
       ([#I64_Fork i64.equivalence]
        [#F64_Fork f.equivalence]
        [#Text_Fork text.equivalence])
       
       (^template [ ]
-        [[( reference') ( sample')]
+        [[{ reference'} { sample'}]
          (\  = reference' sample')])
       ([#Access ..access_equivalence]
        [#Then   equivalence])
       
-      [(#Bind reference') (#Bind sample')]
+      [{#Bind reference'} {#Bind sample'}]
       (n.= reference' sample')
 
       (^template []
-        [[( leftR rightR) ( leftS rightS)]
+        [[{ leftR rightR} { leftS rightS}]
          (and (= leftR leftS)
               (= rightR rightS))])
       ([#Alt]
@@ -554,20 +554,20 @@
       #Pop
       2
 
-      (#Access access)
+      {#Access access}
       (n.* 3 (\ ..access_hash hash access))
 
-      (#Bind register)
+      {#Bind register}
       (n.* 5 (\ n.hash hash register))
 
-      (#Bit_Fork when then else)
+      {#Bit_Fork when then else}
       ($_ n.* 7
           (\ bit.hash hash when)
           (hash then)
           (\ (maybe.hash (path'_hash super)) hash else))
 
       (^template [  ]
-        [( item)
+        [{ item}
          (let [case_hash (product.hash 
                                        (path'_hash super))
                item_hash (product.hash case_hash (list.hash case_hash))]
@@ -577,14 +577,14 @@
        [17 #Text_Fork text.hash])
 
       (^template [ ]
-        [( fork)
+        [{ fork}
          (let [recur_hash (path'_hash super)
                fork_hash (product.hash recur_hash recur_hash)]
            (n.*  (\ fork_hash hash fork)))])
       ([19 #Alt]
        [23 #Seq])
 
-      (#Then body)
+      {#Then body}
       (n.* 29 (\ super hash body))
       )))
 
@@ -593,25 +593,25 @@
 
   (def: (= reference sample)
     (case [reference sample]
-      [(#Let [reference_input reference_register reference_body])
-       (#Let [sample_input sample_register sample_body])]
+      [{#Let [reference_input reference_register reference_body]}
+       {#Let [sample_input sample_register sample_body]}]
       (and (\= reference_input sample_input)
            (n.= reference_register sample_register)
            (\= reference_body sample_body))
 
-      [(#If [reference_test reference_then reference_else])
-       (#If [sample_test sample_then sample_else])]
+      [{#If [reference_test reference_then reference_else]}
+       {#If [sample_test sample_then sample_else]}]
       (and (\= reference_test sample_test)
            (\= reference_then sample_then)
            (\= reference_else sample_else))
       
-      [(#Get [reference_path reference_record])
-       (#Get [sample_path sample_record])]
+      [{#Get [reference_path reference_record]}
+       {#Get [sample_path sample_record]}]
       (and (\ (list.equivalence ..member_equivalence) = reference_path sample_path)
            (\= reference_record sample_record))
       
-      [(#Case [reference_input reference_path])
-       (#Case [sample_input sample_path])]
+      [{#Case [reference_input reference_path]}
+       {#Case [sample_input sample_path]}]
       (and (\= reference_input sample_input)
            (\ (path'_equivalence \=) = reference_path sample_path))
       
@@ -626,24 +626,24 @@
   
   (def: (hash value)
     (case value
-      (#Let [input register body])
+      {#Let [input register body]}
       ($_ n.* 2
           (\ super hash input)
           (\ n.hash hash register)
           (\ super hash body))
 
-      (#If [test then else])
+      {#If [test then else]}
       ($_ n.* 3
           (\ super hash test)
           (\ super hash then)
           (\ super hash else))
       
-      (#Get [path record])
+      {#Get [path record]}
       ($_ n.* 5
           (\ (list.hash ..member_hash) hash path)
           (\ super hash record))
       
-      (#Case [input path])
+      {#Case [input path]}
       ($_ n.* 7
           (\ super hash input)
           (\ (..path'_hash super) hash path))
@@ -654,13 +654,13 @@
 
   (def: (= reference sample)
     (case [reference sample]
-      [(#Scope [reference_start reference_inits reference_iteration])
-       (#Scope [sample_start sample_inits sample_iteration])]
+      [{#Scope [reference_start reference_inits reference_iteration]}
+       {#Scope [sample_start sample_inits sample_iteration]}]
       (and (n.= reference_start sample_start)
            (\ (list.equivalence \=) = reference_inits sample_inits)
            (\= reference_iteration sample_iteration))
 
-      [(#Recur reference) (#Recur sample)]
+      [{#Recur reference} {#Recur sample}]
       (\ (list.equivalence \=) = reference sample)
       
       _
@@ -674,13 +674,13 @@
   
   (def: (hash value)
     (case value
-      (#Scope [start inits iteration])
+      {#Scope [start inits iteration]}
       ($_ n.* 2
           (\ n.hash hash start)
           (\ (list.hash super) hash inits)
           (\ super hash iteration))
 
-      (#Recur resets)
+      {#Recur resets}
       ($_ n.* 3
           (\ (list.hash super) hash resets))
       )))
@@ -690,14 +690,14 @@
 
   (def: (= reference sample)
     (case [reference sample]
-      [(#Abstraction [reference_environment reference_arity reference_body])
-       (#Abstraction [sample_environment sample_arity sample_body])]
+      [{#Abstraction [reference_environment reference_arity reference_body]}
+       {#Abstraction [sample_environment sample_arity sample_body]}]
       (and (\ (list.equivalence \=) = reference_environment sample_environment)
            (n.= reference_arity sample_arity)
            (\= reference_body sample_body))
       
-      [(#Apply [reference_abstraction reference_arguments])
-       (#Apply [sample_abstraction sample_arguments])]
+      [{#Apply [reference_abstraction reference_arguments]}
+       {#Apply [sample_abstraction sample_arguments]}]
       (and (\= reference_abstraction sample_abstraction)
            (\ (list.equivalence \=) = reference_arguments sample_arguments))
       
@@ -712,13 +712,13 @@
   
   (def: (hash value)
     (case value
-      (#Abstraction [environment arity body])
+      {#Abstraction [environment arity body]}
       ($_ n.* 2
           (\ (list.hash super) hash environment)
           (\ n.hash hash arity)
           (\ super hash body))
       
-      (#Apply [abstraction arguments])
+      {#Apply [abstraction arguments]}
       ($_ n.* 3
           (\ super hash abstraction)
           (\ (list.hash super) hash arguments))
@@ -730,7 +730,7 @@
   (def: (= reference sample)
     (case [reference sample]
       (^template [ ]
-        [[( reference) ( sample)]
+        [[{ reference} { sample}]
          (\ ( \=) = reference sample)])
       ([#Branch ..branch_equivalence]
        [#Loop ..loop_equivalence]
@@ -748,7 +748,7 @@
   (def: (hash value)
     (case value
       (^template [  ]
-        [( value)
+        [{ value}
          (n.*  (\ ( super) hash value))])
       ([2 #Branch ..branch_hash]
        [3 #Loop ..loop_hash]
@@ -761,7 +761,7 @@
   (def: (= reference sample)
     (case [reference sample]
       (^template [ ]
-        [[( reference') ( sample')]
+        [[{ reference'} { sample'}]
          (\  = reference' sample')])
       ([#Primitive ..primitive_equivalence]
        [#Structure (analysis.composite_equivalence =)]
@@ -785,7 +785,7 @@
     (let [recur_hash [..equivalence hash]]
       (case value
         (^template [ ]
-          [( value)
+          [{ value}
            (\  hash value)])
         ([#Primitive ..primitive_hash]
          [#Structure (analysis.composite_hash recur_hash)]
@@ -795,14 +795,14 @@
 
 (template: .public (!bind_top register thenP)
   [($_ ..path/seq
-       (#..Bind register)
-       #..Pop
+       {#..Bind register}
+       {#..Pop}
        thenP)])
 
 (template: .public (!multi_pop nextP)
   [($_ ..path/seq
-       #..Pop
-       #..Pop
+       {#..Pop}
+       {#..Pop}
        nextP)])
 
 ... TODO: There are sister patterns to the simple side checks for tuples.
diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive.lux b/stdlib/source/library/lux/tool/compiler/meta/archive.lux
index d7d2fe237..83bbc51e9 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive.lux
@@ -92,8 +92,8 @@
      (-> Module Archive (Try ID))
      (let [(^slots [#..resolver]) (:representation archive)]
        (case (dictionary.value module resolver)
-         (#.Some [id _])
-         (#try.Success id)
+         {#.Some [id _]}
+         {#try.Success id}
          
          #.None
          (exception.except ..unknown_document [module
@@ -103,31 +103,31 @@
      (-> Module Archive (Try [ID Archive]))
      (let [(^slots [#..next #..resolver]) (:representation archive)]
        (case (dictionary.value module resolver)
-         (#.Some _)
+         {#.Some _}
          (exception.except ..module_has_already_been_reserved [module])
          
          #.None
-         (#try.Success [next
+         {#try.Success [next
                         (|> archive
                             :representation
                             (revised@ #..resolver (dictionary.has module [next #.None]))
                             (revised@ #..next ++)
-                            :abstraction)]))))
+                            :abstraction)]})))
 
    (def: .public (has module [descriptor document output] archive)
      (-> Module [Descriptor (Document Any) Output] Archive (Try Archive))
      (let [(^slots [#..resolver]) (:representation archive)]
        (case (dictionary.value module resolver)
-         (#.Some [id #.None])
-         (#try.Success (|> archive
+         {#.Some [id #.None]}
+         {#try.Success (|> archive
                            :representation
-                           (revised@ #..resolver (dictionary.has module [id (#.Some [descriptor document output])]))
-                           :abstraction))
+                           (revised@ #..resolver (dictionary.has module [id {#.Some [descriptor document output]}]))
+                           :abstraction)}
          
-         (#.Some [id (#.Some [existing_descriptor existing_document existing_output])])
+         {#.Some [id {#.Some [existing_descriptor existing_document existing_output]}]}
          (if (same? document existing_document)
            ... TODO: Find out why this code allows for the same module to be added more than once. It looks fishy...
-           (#try.Success archive)
+           {#try.Success archive}
            (exception.except ..cannot_replace_document [module existing_document document]))
          
          #.None
@@ -137,10 +137,10 @@
      (-> Module Archive (Try [Descriptor (Document Any) Output]))
      (let [(^slots [#..resolver]) (:representation archive)]
        (case (dictionary.value module resolver)
-         (#.Some [id (#.Some entry)])
-         (#try.Success entry)
+         {#.Some [id {#.Some entry}]}
+         {#try.Success entry}
 
-         (#.Some [id #.None])
+         {#.Some [id #.None]}
          (exception.except ..module_is_only_reserved [module])
          
          #.None
@@ -150,10 +150,10 @@
    (def: .public (archived? archive module)
      (-> Archive Module Bit)
      (case (..find module archive)
-       (#try.Success _)
+       {#try.Success _}
        bit.yes
 
-       (#try.Failure _)
+       {#try.Failure _}
        bit.no))
 
    (def: .public archived
@@ -163,14 +163,14 @@
           dictionary.entries
           (list.all (function (_ [module [id descriptor+document]])
                       (case descriptor+document
-                        (#.Some _) (#.Some module)
+                        {#.Some _} {#.Some module}
                         #.None #.None)))))
 
    (def: .public (reserved? archive module)
      (-> Archive Module Bit)
      (let [(^slots [#..resolver]) (:representation archive)]
        (case (dictionary.value module resolver)
-         (#.Some [id _])
+         {#.Some [id _]}
          bit.yes
 
          #.None
@@ -199,7 +199,7 @@
            (revised@ #resolver (function (_ resolver)
                                  (list\mix (function (_ [module [id entry]] resolver)
                                              (case entry
-                                               (#.Some _)
+                                               {#.Some _}
                                                (dictionary.has module [id entry] resolver)
                                                
                                                #.None
@@ -235,7 +235,7 @@
            dictionary.entries
            (list.all (function (_ [module [id descriptor+document]])
                        (case descriptor+document
-                         (#.Some _) (#.Some [module id])
+                         {#.Some _} {#.Some [module id]}
                          #.None #.None)))
            [version next]
            (binary.result ..writer))))
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 a9851c301..6c2662602 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux
@@ -27,12 +27,12 @@
 (type: .public Category
   (Variant
    #Anonymous
-   (#Definition Text)
-   (#Analyser Text)
-   (#Synthesizer Text)
-   (#Generator Text)
-   (#Directive Text)
-   (#Custom Text)))
+   {#Definition Text}
+   {#Analyser Text}
+   {#Synthesizer Text}
+   {#Generator Text}
+   {#Directive Text}
+   {#Custom Text}))
 
 (type: .public Artifact
   (Record
@@ -75,7 +75,7 @@
            (|> registry
                :representation
                (revised@ #artifacts (row.suffix [#id id
-                                                 #category ( name)]))
+                                                 #category { name}]))
                (revised@ #resolver (dictionary.has name id))
                :abstraction)]))
 
@@ -86,7 +86,7 @@
             (value@ #artifacts)
             row.list
             (list.all (|>> (value@ #category)
-                           (case> ( name) (#.Some name)
+                           (case> { name} {#.Some name}
                                   _ #.None)))))]
 
      [#Definition definition definitions]
@@ -109,7 +109,7 @@
                        (function (_ value)
                          (case value
                            (^template [  ]
-                             [( value) ((binary.and binary.nat ) [ value])])
+                             [{ value} ((binary.and binary.nat ) [ value])])
                            ([0 #Anonymous binary.any]
                             [1 #Definition binary.text]
                             [2 #Analyser binary.text]
@@ -135,7 +135,7 @@
                          [tag .nat]
                          (case tag
                            (^template [  ]
-                             [ (\ ! each (|>> ) )])
+                             [ (\ ! each (|>> {}) )])
                            ([0 #Anonymous .any]
                             [1 #Definition .text]
                             [2 #Analyser .text]
@@ -153,7 +153,7 @@
                                           (..resource registry)
 
                                           (^template [ ]
-                                            [( name)
+                                            [{ name}
                                              ( name registry)])
                                           ([#Definition ..definition]
                                            [#Analyser ..analyser]
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 3fcf381d3..96d5a9922 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux
@@ -37,12 +37,12 @@
        (if (\ signature.equivalence =
               (key.signature key)
               document//signature)
-         (#try.Success (:sharing [e]
+         {#try.Success (:sharing [e]
                                  (Key e)
                                  key
                                  
                                  e
-                                 (:expected document//content)))
+                                 (:expected document//content))}
          (exception.except ..invalid_signature [(key.signature key)
                                                 document//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 e839651e4..f586c398a 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux
@@ -57,10 +57,10 @@
                 (function (_ recur module)
                   (do [! state.monad]
                     [.let [parents (case (archive.find module archive)
-                                     (#try.Success [descriptor document])
+                                     {#try.Success [descriptor document]}
                                      (value@ #descriptor.references descriptor)
                                      
-                                     (#try.Failure error)
+                                     {#try.Failure error}
                                      ..fresh)]
                      ancestors (monad.each ! recur (set.list parents))]
                     (in (list\mix set.union parents ancestors)))))
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 1d7baccbd..fe1e8d223 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux
@@ -95,7 +95,7 @@
   (do async.monad
     [? (\ fs directory? path)]
     (if ?
-      (in (#try.Success []))
+      (in {#try.Success []})
       (\ fs make_directory path))))
 
 (def: .public (prepare fs static module_id)
@@ -104,16 +104,16 @@
     [.let [module (..module fs static module_id)]
      module_exists? (\ fs directory? module)]
     (if module_exists?
-      (in (#try.Success []))
+      (in {#try.Success []})
       (do (try.with !)
         [_ (ensure_directory fs (..unversioned_lux_archive fs static))
          _ (ensure_directory fs (..versioned_lux_archive fs static))]
         (|> module
             (\ fs make_directory)
-            (\ ! each (|>> (case> (#try.Success output)
-                                  (#try.Success [])
+            (\ ! each (|>> (case> {#try.Success output}
+                                  {#try.Success []}
 
-                                  (#try.Failure error)
+                                  {#try.Failure error}
                                   (exception.except ..cannot_prepare [(..archive fs static)
                                                                       module_id
                                                                       error])))))))))
@@ -223,7 +223,7 @@
                                      output (: Output row.empty)]
                                 (let [[analysers synthesizers generators directives] bundles]
                                   (case input
-                                    (#.Item [[artifact_id artifact_category] input'])
+                                    {#.Item [[artifact_id artifact_category] input']}
                                     (case (do !
                                             [data (try.of_maybe (dictionary.value (format (%.nat artifact_id) extension) actual))
                                              .let [context [module_id artifact_id]
@@ -240,7 +240,7 @@
                                                       directives]
                                                      output]))
                                               
-                                              (#artifact.Definition name)
+                                              {#artifact.Definition name}
                                               (let [output (row.suffix [artifact_id #.None data] output)]
                                                 (if (text\= $/program.name name)
                                                   (in [definitions
@@ -258,7 +258,7 @@
                                                           directives]
                                                          output]))))
 
-                                              (#artifact.Analyser extension)
+                                              {#artifact.Analyser extension}
                                               (do !
                                                 [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  value (\ host re_load context #.None directive)]
@@ -269,7 +269,7 @@
                                                       directives]
                                                      output]))
 
-                                              (#artifact.Synthesizer extension)
+                                              {#artifact.Synthesizer extension}
                                               (do !
                                                 [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  value (\ host re_load context #.None directive)]
@@ -280,7 +280,7 @@
                                                       directives]
                                                      output]))
 
-                                              (#artifact.Generator extension)
+                                              {#artifact.Generator extension}
                                               (do !
                                                 [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  value (\ host re_load context #.None directive)]
@@ -291,7 +291,7 @@
                                                       directives]
                                                      output]))
 
-                                              (#artifact.Directive extension)
+                                              {#artifact.Directive extension}
                                               (do !
                                                 [.let [output (row.suffix [artifact_id #.None data] output)]
                                                  value (\ host re_load context #.None directive)]
@@ -302,48 +302,48 @@
                                                       (dictionary.has extension (:as directive.Handler value) directives)]
                                                      output]))
 
-                                              (#artifact.Custom name)
+                                              {#artifact.Custom name}
                                               (do !
-                                                [.let [output (row.suffix [artifact_id (#.Some name) data] output)]
-                                                 _ (\ host re_learn context (#.Some name) directive)]
+                                                [.let [output (row.suffix [artifact_id {#.Some name} data] output)]
+                                                 _ (\ host re_learn context {#.Some name} directive)]
                                                 (in [definitions
                                                      [analysers
                                                       synthesizers
                                                       generators
                                                       directives]
                                                      output]))))
-                                      (#try.Success [definitions' bundles' output'])
+                                      {#try.Success [definitions' bundles' output']}
                                       (recur input' definitions' bundles' output')
 
                                       failure
                                       failure)
                                     
                                     #.End
-                                    (#try.Success [definitions bundles output])))))
+                                    {#try.Success [definitions bundles output]}))))
      content (document.read $.key document)
      definitions (monad.each ! (function (_ [def_name def_global])
                                  (case def_global
                                    (^template []
-                                     [( payload)
-                                      (in [def_name ( payload)])])
+                                     [{ payload}
+                                      (in [def_name { payload}])])
                                    ([#.Alias]
                                     [#.Label]
                                     [#.Slot])
                                    
-                                   (#.Definition [exported? type _])
+                                   {#.Definition [exported? type _]}
                                    (|> definitions
                                        (dictionary.value def_name)
                                        try.of_maybe
                                        (\ ! each (|>> [exported? type]
-                                                      #.Definition
+                                                      {#.Definition}
                                                       [def_name])))
 
-                                   (#.Type [exported? _ labels])
+                                   {#.Type [exported? _ labels]}
                                    (|> definitions
                                        (dictionary.value def_name)
                                        try.of_maybe
                                        (\ ! each (function (_ def_value)
-                                                   [def_name (#.Type [exported? (:as .Type def_value) labels])])))))
+                                                   [def_name {#.Type [exported? (:as .Type def_value) labels]}])))))
                              (value@ #.definitions content))]
     (in [(document.write $.key (with@ #.definitions definitions content))
          bundles])))
@@ -388,7 +388,7 @@
   (|>> (list.all (function (_ [valid_cache? [module_name [module_id _]]])
                    (if valid_cache?
                      #.None
-                     (#.Some [module_name module_id]))))
+                     {#.Some [module_name module_id]})))
        (dictionary.of_list text.hash)))
 
 (def: (full_purge caches load_order)
@@ -477,12 +477,12 @@
   (do async.monad
     [binary (\ fs read (..general_descriptor fs static))]
     (case binary
-      (#try.Success binary)
+      {#try.Success binary}
       (do (try.with async.monad)
         [archive (async\in (archive.import ///.version binary))]
         (..load_every_reserved_module host_environment fs static import contexts archive))
       
-      (#try.Failure error)
-      (in (#try.Success [archive.empty
+      {#try.Failure error}
+      (in {#try.Success [archive.empty
                          (fresh_analysis_state (value@ #static.host static))
-                         ..empty_bundles])))))
+                         ..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 af43ef991..69a0858e6 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/io/context.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/io/context.lux
@@ -61,12 +61,12 @@
     #.End
     (async\in (exception.except ..cannot_find_module [importer module]))
 
-    (#.Item context contexts')
+    {#.Item context contexts'}
     (let [path (format (..path fs context module) extension)]
       (do async.monad
         [? (\ fs file? path)]
         (if ?
-          (in (#try.Success path))
+          (in {#try.Success path})
           (find_source_file fs importer contexts' module extension))))))
 
 (def: (full_host_extension partial_host_extension)
@@ -81,12 +81,12 @@
   (do [! async.monad]
     [outcome (..find_source_file fs importer contexts module (..full_host_extension partial_host_extension))]
     (case outcome
-      (#try.Success path)
+      {#try.Success path}
       (|> path
           (\ fs read)
           (\ (try.with !) each (|>> [path])))
 
-      (#try.Failure _)
+      {#try.Failure _}
       (do [! (try.with !)]
         [path (..find_source_file fs importer contexts module ..lux_extension)]
         (|> path
@@ -97,14 +97,14 @@
   (-> Module Import Extension Module (Try [file.Path Binary]))
   (let [path (format module (..full_host_extension partial_host_extension))]
     (case (dictionary.value path import)
-      (#.Some data)
-      (#try.Success [path data])
+      {#.Some data}
+      {#try.Success [path data]}
 
       #.None
       (let [path (format module ..lux_extension)]
         (case (dictionary.value path import)
-          (#.Some data)
-          (#try.Success [path data])
+          {#.Some data}
+          {#try.Success [path data]}
 
           #.None
           (exception.except ..cannot_find_module [importer module]))))))
@@ -117,10 +117,10 @@
   (do [! async.monad]
     [outcome (find_local_source_file fs importer import contexts partial_host_extension module)]
     (case outcome
-      (#try.Success [path data])
+      {#try.Success [path data]}
       (in outcome)
 
-      (#try.Failure _)
+      {#try.Failure _}
       (in (..find_library_source_file importer import partial_host_extension module)))))
 
 (def: .public (read fs importer import contexts partial_host_extension module)
@@ -129,13 +129,13 @@
   (do (try.with async.monad)
     [[path binary] (..find_any_source_file fs importer import contexts partial_host_extension module)]
     (case (\ utf8.codec decoded binary)
-      (#try.Success code)
+      {#try.Success code}
       (in [#////.module module
            #////.file path
            #////.hash (text\hash code)
            #////.code code])
       
-      (#try.Failure _)
+      {#try.Failure _}
       (async\in (exception.except ..cannot_read_module [module])))))
 
 (type: .public Enumeration
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 f8bb67b70..75eca1c30 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux
@@ -208,29 +208,29 @@
            duplicates duplicates
            sink sink]
       (case (java/util/jar/JarInputStream::getNextJarEntry input)
-        (#try.Failure error)
-        (#try.Failure error)
+        {#try.Failure error}
+        {#try.Failure error}
         
-        (#try.Success ?entry)
+        {#try.Success ?entry}
         (case ?entry
           #.None
           (exec
             (java/io/Closeable::close input)
-            (#try.Success [entries duplicates sink]))
+            {#try.Success [entries duplicates sink]})
           
-          (#.Some entry)
+          {#.Some entry}
           (let [entry_path (java/util/zip/ZipEntry::getName entry)
                 entry_size (java/util/zip/ZipEntry::getSize entry)]
             (if (not (or (java/util/zip/ZipEntry::isDirectory entry)
                          (text.starts_with? "META-INF/maven/" entry_path)
                          (text.starts_with? "META-INF/leiningen/" entry_path)))
               (case (java/util/jar/JarOutputStream::putNextEntry (java/util/jar/JarEntry::new entry_path) sink)
-                (#try.Failure error)
+                {#try.Failure error}
                 (recur entries
                        (set.has entry_path duplicates)
                        sink)
                 
-                (#try.Success _)
+                {#try.Success _}
                 (let [[entry_size entry_data] (read_jar_entry entry input)]
                   (recur (set.has entry_path entries)
                          duplicates
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 b471a30f5..c78d07b6f 100644
--- a/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux
+++ b/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux
@@ -114,7 +114,7 @@
                           (\ encoding.utf8 encoded)
                           tar.content))
      module_file (tar.path (..module_file module_id))]
-    (in (#tar.Normal [module_file now ..mode ..ownership entry_content]))))
+    (in {#tar.Normal [module_file now ..mode ..ownership entry_content]})))
 
 (def: .public (package now)
   (-> Instant Packager)
diff --git a/stdlib/source/library/lux/tool/compiler/phase.lux b/stdlib/source/library/lux/tool/compiler/phase.lux
index 3f6caddbf..4809e8ed9 100644
--- a/stdlib/source/library/lux/tool/compiler/phase.lux
+++ b/stdlib/source/library/lux/tool/compiler/phase.lux
@@ -53,13 +53,13 @@
   (All (_ s o)
     (Operation s s))
   (function (_ state)
-    (#try.Success [state state])))
+    {#try.Success [state state]}))
 
 (def: .public (set_state state)
   (All (_ s o)
     (-> s (Operation s Any)))
   (function (_ _)
-    (#try.Success [state []])))
+    {#try.Success [state []]}))
 
 (def: .public (sub [get set] operation)
   (All (_ s s' o)
@@ -94,7 +94,7 @@
 (def: .public identity
   (All (_ s a) (Phase s a a))
   (function (_ archive input state)
-    (#try.Success [state input])))
+    {#try.Success [state input]}))
 
 (def: .public (composite pre post)
   (All (_ s0 s1 i t o)
diff --git a/stdlib/source/library/lux/tool/compiler/reference.lux b/stdlib/source/library/lux/tool/compiler/reference.lux
index 4e48f1db9..0f345a12f 100644
--- a/stdlib/source/library/lux/tool/compiler/reference.lux
+++ b/stdlib/source/library/lux/tool/compiler/reference.lux
@@ -21,8 +21,8 @@
 
 (type: .public Reference
   (Variant
-   (#Variable Variable)
-   (#Constant Constant)))
+   {#Variable Variable}
+   {#Constant Constant}))
 
 (implementation: .public equivalence
   (Equivalence Reference)
@@ -30,7 +30,7 @@
   (def: (= reference sample)
     (case [reference sample]
       (^template [ ]
-        [[( reference) ( sample)]
+        [[{ reference} { sample}]
          (\  = reference sample)])
       ([#Variable /variable.equivalence]
        [#Constant name.equivalence])
@@ -47,7 +47,7 @@
   (def: (hash value)
     (case value
       (^template [  ]
-        [( value)
+        [{ value}
          ($_ n.* 
              (\  hash value))])
       ([2 #Variable /variable.hash]
@@ -57,7 +57,7 @@
 (template [  ]
   [(template: .public ( content)
      [(<| 
-          
+          {}
           content)])]
 
   [local   #..Variable #/variable.Local]
@@ -66,7 +66,7 @@
 
 (template [ ]
   [(template: .public ( content)
-     [(<| 
+     [(<| {}
           content)])]
 
   [variable #..Variable]
@@ -79,8 +79,8 @@
 
 (def: .public format
   (Format Reference)
-  (|>> (case> (#Variable variable)
+  (|>> (case> {#Variable variable}
               (/variable.format variable)
               
-              (#Constant constant)
+              {#Constant constant}
               (%.name constant))))
diff --git a/stdlib/source/library/lux/tool/compiler/reference/variable.lux b/stdlib/source/library/lux/tool/compiler/reference/variable.lux
index eea52b976..bde1de15b 100644
--- a/stdlib/source/library/lux/tool/compiler/reference/variable.lux
+++ b/stdlib/source/library/lux/tool/compiler/reference/variable.lux
@@ -19,8 +19,8 @@
 
 (type: .public Variable
   (Variant
-   (#Local Register)
-   (#Foreign Register)))
+   {#Local Register}
+   {#Foreign Register}))
 
 (implementation: .public equivalence
   (Equivalence Variable)
@@ -28,7 +28,7 @@
   (def: (= reference sample)
     (case [reference sample]
       (^template []
-        [[( reference') ( sample')]
+        [[{ reference'} { sample'}]
          (n.= reference' sample')])
       ([#Local] [#Foreign])
 
@@ -43,14 +43,14 @@
   
   (def: hash
     (|>> (case> (^template [ ]
-                  [( register)
+                  [{ register}
                    ($_ n.* 
                        (\ n.hash hash register))])
                 ([2 #Local]
                  [3 #Foreign])))))
 
 (template: .public (self)
-  [(#..Local 0)])
+  [{#..Local 0}])
 
 (def: .public self?
   (-> Variable Bit)
@@ -62,8 +62,8 @@
 
 (def: .public format
   (Format Variable)
-  (|>> (case> (#Local local)
+  (|>> (case> {#Local local}
               (%.format "+" (%.nat local))
               
-              (#Foreign foreign)
+              {#Foreign foreign}
               (%.format "-" (%.nat foreign)))))
diff --git a/stdlib/source/library/lux/tool/interpreter.lux b/stdlib/source/library/lux/tool/interpreter.lux
index 79c8073f3..85020815f 100644
--- a/stdlib/source/library/lux/tool/interpreter.lux
+++ b/stdlib/source/library/lux/tool/interpreter.lux
@@ -135,10 +135,10 @@
 
                           
                           (interpret_directive code)))
-        (#try.Success [state' output])
-        (#try.Success [state' output])
+        {#try.Success [state' output]}
+        {#try.Success [state' output]}
 
-        (#try.Failure error)
+        {#try.Failure error}
         (if (ex.match? total.not_a_directive error)
           (<| (phase.result' state)
               (:sharing [anchor expression directive]
@@ -147,7 +147,7 @@
                         
                         
                         (interpret_expression code)))
-          (#try.Failure error)))))
+          {#try.Failure error}))))
   )
 
 (def: (execute configuration code)
@@ -218,12 +218,12 @@
                  (text\= ..exit_command line))
           (\ Console write ..farewell_message)
           (case (read_eval_print (revised@ #source (add_line line) context))
-            (#try.Success [context' representation])
+            {#try.Success [context' representation]}
             (do !
               [_ (\ Console write representation)]
               (recur context' #0))
 
-            (#try.Failure error)
+            {#try.Failure error}
             (if (ex.match? syntax.end_of_file error)
               (recur context #1)
               (exec (log! (ex.error ..error error))
diff --git a/stdlib/source/library/lux/type.lux b/stdlib/source/library/lux/type.lux
index 7c347bd0e..c99823da1 100644
--- a/stdlib/source/library/lux/type.lux
+++ b/stdlib/source/library/lux/type.lux
@@ -33,7 +33,7 @@
      (loop [num_args 0
             type type]
        (case type
-         ( env sub_type)
+         { env sub_type}
          (recur (++ num_args) sub_type)
 
          _
@@ -46,7 +46,7 @@
 (def: .public (flat_function type)
   (-> Type [(List Type) Type])
   (case type
-    (#.Function in out')
+    {#.Function in out'}
     (let [[ins out] (flat_function out')]
       [(list& in ins) out])
 
@@ -56,7 +56,7 @@
 (def: .public (flat_application type)
   (-> Type [Type (List Type)])
   (case type
-    (#.Apply arg func')
+    {#.Apply arg func'}
     (let [[func args] (flat_application func')]
       [func (list\composite args (list arg))])
 
@@ -67,7 +67,7 @@
   [(def: .public ( type)
      (-> Type (List Type))
      (case type
-       ( left right)
+       { left right}
        (list& left ( right))
 
        _
@@ -80,7 +80,7 @@
 (def: .public (format type)
   (-> Type Text)
   (case type
-    (#.Primitive name params)
+    {#.Primitive name params}
     ($_ text\composite
         "(primitive "
         (text.enclosed' text.double_quote name)
@@ -90,7 +90,7 @@
         ")")
 
     (^template [   ]
-      [( _)
+      [{ _}
        ($_ text\composite 
            (|> ( type)
                (list\each format)
@@ -101,7 +101,7 @@
     ([#.Sum  "(Or " ")" flat_variant]
      [#.Product "["   "]" flat_tuple])
 
-    (#.Function input output)
+    {#.Function input output}
     (let [[ins out] (flat_function type)]
       ($_ text\composite  "(-> "
           (|> ins
@@ -111,26 +111,26 @@
               (list\mix text\composite ""))
           " " (format out) ")"))
 
-    (#.Parameter idx)
+    {#.Parameter idx}
     (n\encoded idx)
 
-    (#.Var id)
+    {#.Var id}
     ($_ text\composite "⌈v:" (n\encoded id) "⌋")
 
-    (#.Ex id)
+    {#.Ex id}
     ($_ text\composite "⟨e:" (n\encoded id) "⟩")
 
-    (#.Apply param fun)
+    {#.Apply param fun}
     (let [[type_func type_args] (flat_application type)]
       ($_ text\composite  "(" (format type_func) " " (|> type_args (list\each format) list.reversed (list.interposed " ") (list\mix text\composite "")) ")"))
 
     (^template [ ]
-      [( env body)
+      [{ env body}
        ($_ text\composite "("  " {" (|> env (list\each format) (text.interposed " ")) "} " (format body) ")")])
     ([#.UnivQ "All"]
      [#.ExQ "Ex"])
 
-    (#.Named [module name] type)
+    {#.Named [module name] type}
     ($_ text\composite module "." name)
     ))
 
@@ -138,27 +138,27 @@
 (def: (reduced env type)
   (-> (List Type) Type Type)
   (case type
-    (#.Primitive name params)
-    (#.Primitive name (list\each (reduced env) params))
+    {#.Primitive name params}
+    {#.Primitive name (list\each (reduced env) params)}
     
     (^template []
-      [( left right)
-       ( (reduced env left) (reduced env right))])
+      [{ left right}
+       { (reduced env left) (reduced env right)}])
     ([#.Sum]      [#.Product]
      [#.Function] [#.Apply])
     
     (^template []
-      [( old_env def)
+      [{ old_env def}
        (case old_env
          #.End
-         ( env def)
+         { env def}
 
          _
-         ( (list\each (reduced env) old_env) def))])
+         { (list\each (reduced env) old_env) def})])
     ([#.UnivQ]
      [#.ExQ])
     
-    (#.Parameter idx)
+    {#.Parameter idx}
     (maybe.else (panic! ($_ text\composite
                             "Unknown type parameter" text.new_line
                             "      Index: " (n\encoded idx) text.new_line
@@ -183,7 +183,7 @@
               @.php false]
              (same? x y))
         (case [x y]
-          [(#.Primitive xname xparams) (#.Primitive yname yparams)]
+          [{#.Primitive xname xparams} {#.Primitive yname yparams}]
           (and (text\= xname yname)
                (n.= (list.size yparams) (list.size xparams))
                (list\mix (.function (_ [x y] prev) (and prev (= x y)))
@@ -191,26 +191,26 @@
                          (list.zipped/2 xparams yparams)))
 
           (^template []
-            [[( xid) ( yid)]
+            [[{ xid} { yid}]
              (n.= yid xid)])
           ([#.Var] [#.Ex] [#.Parameter])
 
-          (^or [(#.Function xleft xright) (#.Function yleft yright)]
-               [(#.Apply xleft xright) (#.Apply yleft yright)])
+          (^or [{#.Function xleft xright} {#.Function yleft yright}]
+               [{#.Apply xleft xright} {#.Apply yleft yright}])
           (and (= xleft yleft)
                (= xright yright))
 
-          [(#.Named xname xtype) (#.Named yname ytype)]
+          [{#.Named xname xtype} {#.Named yname ytype}]
           (and (name\= xname yname)
                (= xtype ytype))
 
           (^template []
-            [[( xL xR) ( yL yR)]
+            [[{ xL xR} { yL yR}]
              (and (= xL yL) (= xR yR))])
           ([#.Sum] [#.Product])
           
-          (^or [(#.UnivQ xenv xbody) (#.UnivQ yenv ybody)]
-               [(#.ExQ xenv xbody) (#.ExQ yenv ybody)])
+          (^or [{#.UnivQ xenv xbody} {#.UnivQ yenv ybody}]
+               [{#.ExQ xenv xbody} {#.ExQ yenv ybody}])
           (and (n.= (list.size yenv) (list.size xenv))
                (= xbody ybody)
                (list\mix (.function (_ [x y] prev) (and prev (= x y)))
@@ -225,21 +225,21 @@
   (-> (List Type) Type (Maybe Type))
   (case params
     #.End
-    (#.Some func)
+    {#.Some func}
 
-    (#.Item param params')
+    {#.Item param params'}
     (case func
       (^template []
-        [( env body)
+        [{ env body}
          (|> body
              (reduced (list& func param env))
              (applied params'))])
       ([#.UnivQ] [#.ExQ])
 
-      (#.Apply A F)
+      {#.Apply A F}
       (applied (list& A params) F)
 
-      (#.Named name unnamed)
+      {#.Named name unnamed}
       (applied params unnamed)
       
       _
@@ -248,36 +248,36 @@
 (def: .public (code type)
   (-> Type Code)
   (case type
-    (#.Primitive name params)
-    (` (#.Primitive (~ (code.text name))
-                    (.list (~+ (list\each code params)))))
+    {#.Primitive name params}
+    (` {#.Primitive (~ (code.text name))
+        (.list (~+ (list\each code params)))})
 
     (^template []
-      [( idx)
-       (` ( (~ (code.nat idx))))])
+      [{ idx}
+       (` { (~ (code.nat idx))})])
     ([#.Var] [#.Ex] [#.Parameter])
 
     (^template []
-      [( left right)
-       (` ( (~ (code left))
-                 (~ (code right))))])
+      [{ left right}
+       (` { (~ (code left))
+           (~ (code right))})])
     ([#.Sum] [#.Product] [#.Function] [#.Apply])
 
-    (#.Named name sub_type)
+    {#.Named name sub_type}
     (code.identifier name)
 
     (^template []
-      [( env body)
-       (` ( (.list (~+ (list\each code env)))
-                 (~ (code body))))])
+      [{ env body}
+       (` { (.list (~+ (list\each code env)))
+           (~ (code body))})])
     ([#.UnivQ] [#.ExQ])
     ))
 
 (def: .public (de_aliased type)
   (-> Type Type)
   (case type
-    (#.Named _ (#.Named name type'))
-    (de_aliased (#.Named name type'))
+    {#.Named _ {#.Named name type'}}
+    (de_aliased {#.Named name type'})
 
     _
     type))
@@ -285,7 +285,7 @@
 (def: .public (anonymous type)
   (-> Type Type)
   (case type
-    (#.Named name type')
+    {#.Named name type'}
     (anonymous type')
 
     _
@@ -298,11 +298,11 @@
        #.End
        
 
-       (#.Item type #.End)
+       {#.Item type #.End}
        type
 
-       (#.Item type types')
-       ( type ( types'))))]
+       {#.Item type types'}
+       { type ( types')}))]
 
   [variant Nothing #.Sum]
   [tuple   Any     #.Product]
@@ -314,8 +314,8 @@
     #.End
     output
 
-    (#.Item input inputs')
-    (#.Function input (function inputs' output))))
+    {#.Item input inputs'}
+    {#.Function input (function inputs' output)}))
 
 (def: .public (application params quant)
   (-> (List Type) Type Type)
@@ -323,15 +323,15 @@
     #.End
     quant
 
-    (#.Item param params')
-    (application params' (#.Apply param quant))))
+    {#.Item param params'}
+    (application params' {#.Apply param quant})))
 
 (template [ ]
   [(def: .public ( size body)
      (-> Nat Type Type)
      (case size
        0 body
-       _  (|> body ( (-- size)) ( (list)))))]
+       _  (|> body ( (-- size)) { (list)})))]
 
   [univ_q #.UnivQ]
   [ex_q   #.ExQ]
@@ -340,15 +340,15 @@
 (def: .public (quantified? type)
   (-> Type Bit)
   (case type
-    (#.Named [module name] _type)
+    {#.Named [module name] _type}
     (quantified? _type)
 
-    (#.Apply A F)
+    {#.Apply A F}
     (|> (..applied (list A) F)
         (\ maybe.monad each quantified?)
         (maybe.else #0))
     
-    (^or (#.UnivQ _) (#.ExQ _))
+    (^or {#.UnivQ _} {#.ExQ _})
     #1
 
     _
@@ -361,12 +361,12 @@
     _ (|> element_type
           (array (-- depth))
           (list)
-          (#.Primitive array.type_name))))
+          {#.Primitive array.type_name})))
 
 (def: .public (flat_array type)
   (-> Type [Nat Type])
   (case type
-    (^multi (^ (#.Primitive name (list element_type)))
+    (^multi (^ {#.Primitive name (list element_type)})
             (text\= array.type_name name))
     (let [[depth element_type] (flat_array element_type)]
       [(++ depth) element_type])
@@ -391,7 +391,7 @@
                                               (<>.maybe (<>.after (.identifier! ..secret_marker) .any)))
                                       .any)])
   (case input
-    (#.Left [valueN valueC])
+    {#.Left [valueN valueC]}
     (do meta.monad
       [location meta.location
        valueT (meta.type valueN)
@@ -399,7 +399,7 @@
                 ($_ text\composite
                     (name\encoded (name_of ..:log!)) " " (location.format location) text.new_line
                     "Expression: " (case valueC
-                                     (#.Some valueC)
+                                     {#.Some valueC}
                                      (code.format valueC)
                                      
                                      #.None
@@ -408,7 +408,7 @@
                     "      Type: " (..format valueT)))]]
       (in (list (code.identifier valueN))))
     
-    (#.Right valueC)
+    {#.Right valueC}
     (macro.with_identifiers [g!value]
       (in (list (` (.let [(~ g!value) (~ valueC)]
                      (..:log! (~ valueC) (~ (code.identifier ..secret_marker)) (~ g!value)))))))))
@@ -429,7 +429,7 @@
         #.None
         (in (list casterC))
         
-        (#.Some value)
+        {#.Some value}
         (in (list (` ((~ casterC) (~ value)))))))))
 
 (type: Typed
diff --git a/stdlib/source/library/lux/type/abstract.lux b/stdlib/source/library/lux/type/abstract.lux
index 9a9e1d473..d3a6b5c35 100644
--- a/stdlib/source/library/lux/type/abstract.lux
+++ b/stdlib/source/library/lux/type/abstract.lux
@@ -28,7 +28,7 @@
 
 (def: (push value stack)
   (All (_ a) (-> a (Stack a) (Stack a)))
-  (#.Item value stack))
+  {#.Item value stack})
 
 (def: pop
   (All (_ a) (-> (Stack a) (Maybe (Stack a))))
@@ -48,7 +48,7 @@
 (template: (!peek   )
   [(loop [entries ]
      (case entries
-       (#.Item [head_name head] tail)
+       {#.Item [head_name head] tail}
        (if (text\=  head_name)
          
          (recur tail))
@@ -60,13 +60,13 @@
   (-> Text (List [Text Global]) (Stack Frame))
   (!peek source reference
          (case head
-           (#.Definition [exported? frame_type frame_value])
+           {#.Definition [exported? frame_type frame_value]}
            (:as (Stack Frame) frame_value)
 
-           (^or (#.Type _)
-                (#.Alias _)
-                (#.Label _)
-                (#.Slot _))
+           (^or {#.Type _}
+                {#.Alias _}
+                {#.Label _}
+                {#.Slot _})
            (undefined))))
 
 (def: (peek_frames reference definition_reference source)
@@ -82,15 +82,15 @@
     (let [[reference definition_reference] (name_of ..frames)
           current_frames (peek_frames reference definition_reference (value@ #.modules compiler))]
       (case (case frame
-              (#.Some frame)
+              {#.Some frame}
               (list.example (function (_ [actual _])
                               (text\= frame actual))
                             current_frames)
               
               #.None
               (..peek current_frames))
-        (#.Some frame)
-        (#.Right [compiler frame])
+        {#.Some frame}
+        {#.Right [compiler frame]}
         
         #.None
         (exception.except ..no_active_frames [])))))
@@ -101,17 +101,17 @@
 
 (def: .public (specific name)
   (-> Text (Meta Frame))
-  (..peek! (#.Some name)))
+  (..peek! {#.Some name}))
 
 (template: (!push   )
   [(loop [entries ]
      (case entries
-       (#.Item [head_name head] tail)
+       {#.Item [head_name head] tail}
        (if (text\=  head_name)
-         (#.Item [head_name ]
-                 tail)
-         (#.Item [head_name head]
-                 (recur tail)))
+         {#.Item [head_name ]
+          tail}
+         {#.Item [head_name head]
+          (recur tail)})
 
        #.End
        (undefined)))])
@@ -120,15 +120,15 @@
   (-> Text Frame (List [Text Global]) (List [Text Global]))
   (!push source reference
          (case head
-           (#.Definition [exported? frames_type frames_value])
-           (#.Definition [exported?
+           {#.Definition [exported? frames_type frames_value]}
+           {#.Definition [exported?
                           frames_type
-                          (..push frame (:as (Stack Frame) frames_value))])
+                          (..push frame (:as (Stack Frame) frames_value))]}
 
-           (^or (#.Type _)
-                (#.Alias _)
-                (#.Label _)
-                (#.Slot _))
+           (^or {#.Type _}
+                {#.Alias _}
+                {#.Label _}
+                {#.Slot _})
            (undefined))))
 
 (def: (push_frame [module_reference definition_reference] frame source)
@@ -139,30 +139,30 @@
 (def: (push! frame)
   (-> Frame (Meta Any))
   (function (_ compiler)
-    (#.Right [(revised@ #.modules
+    {#.Right [(revised@ #.modules
                         (..push_frame (name_of ..frames) frame)
                         compiler)
-              []])))
+              []]}))
 
 (def: (pop_frame_definition reference source)
   (-> Text (List [Text Global]) (List [Text Global]))
   (!push source reference
          (case head
-           (#.Definition [exported? frames_type frames_value])
-           (#.Definition [exported?
+           {#.Definition [exported? frames_type frames_value]}
+           {#.Definition [exported?
                           frames_type
                           (let [current_frames (:as (Stack Frame) frames_value)]
                             (case (..pop current_frames)
-                              (#.Some current_frames')
+                              {#.Some current_frames'}
                               current_frames'
 
                               #.None
-                              current_frames))])
+                              current_frames))]}
 
-           (^or (#.Type _)
-                (#.Alias _)
-                (#.Label _)
-                (#.Slot _))
+           (^or {#.Type _}
+                {#.Alias _}
+                {#.Label _}
+                {#.Slot _})
            (undefined))))
 
 (def: (pop_frame [module_reference definition_reference] source)
@@ -172,10 +172,10 @@
 
 (syntax: (pop! [])
   (function (_ compiler)
-    (#.Right [(revised@ #.modules
+    {#.Right [(revised@ #.modules
                         (..pop_frame (name_of ..frames))
                         compiler)
-              (list)])))
+              (list)]}))
 
 (def: cast
   (Parser [(Maybe Text) Code])
@@ -242,8 +242,8 @@
 
 (type: (Selection a)
   (Variant
-   (#Specific Code a)
-   (#Current a)))
+   {#Specific Code a}
+   {#Current a}))
 
 (def: (selection parser)
   (All (_ a) (-> (Parser a) (Parser (Selection a))))
@@ -252,26 +252,26 @@
 
 (syntax: .public (:transmutation [selection (..selection .any)])
   (case selection
-    (#Specific specific value)
+    {#Specific specific value}
     (in (list (` (.|> (~ value)
                       (..:representation (~ specific))
                       (..:abstraction (~ specific))))))
     
-    (#Current value)
+    {#Current value}
     (in (list (` (.|> (~ value) ..:representation ..:abstraction))))))
 
 (syntax: .public (^:representation [selection (.form (..selection .local_identifier))
                                     body .any
                                     branches (<>.some .any)])
   (case selection
-    (#Specific specific name)
+    {#Specific specific name}
     (let [g!var (code.local_identifier name)]
       (in (list& g!var
                  (` (.let [(~ g!var) (..:representation (~ specific) (~ g!var))]
                       (~ body)))
                  branches)))
     
-    (#Current name)
+    {#Current name}
     (let [g!var (code.local_identifier name)]
       (in (list& g!var
                  (` (.let [(~ g!var) (..:representation (~ g!var))]
diff --git a/stdlib/source/library/lux/type/check.lux b/stdlib/source/library/lux/type/check.lux
index bf8210953..c7001e71f 100644
--- a/stdlib/source/library/lux/type/check.lux
+++ b/stdlib/source/library/lux/type/check.lux
@@ -76,11 +76,11 @@
   (def: (each f fa)
     (function (_ context)
       (case (fa context)
-        (#try.Success [context' output])
-        (#try.Success [context' (f output)])
+        {#try.Success [context' output]}
+        {#try.Success [context' (f output)]}
 
-        (#try.Failure error)
-        (#try.Failure error)))))
+        {#try.Failure error}
+        {#try.Failure error}))))
 
 (implementation: .public apply
   (Apply Check)
@@ -90,16 +90,16 @@
   (def: (on fa ff)
     (function (_ context)
       (case (ff context)
-        (#try.Success [context' f])
+        {#try.Success [context' f]}
         (case (fa context')
-          (#try.Success [context'' a])
-          (#try.Success [context'' (f a)])
+          {#try.Success [context'' a]}
+          {#try.Success [context'' (f a)]}
 
-          (#try.Failure error)
-          (#try.Failure error))
+          {#try.Failure error}
+          {#try.Failure error})
 
-        (#try.Failure error)
-        (#try.Failure error)
+        {#try.Failure error}
+        {#try.Failure error}
         )))
   )
 
@@ -110,21 +110,21 @@
 
   (def: (in x)
     (function (_ context)
-      (#try.Success [context x])))
+      {#try.Success [context x]}))
 
   (def: (conjoint ffa)
     (function (_ context)
       (case (ffa context)
-        (#try.Success [context' fa])
+        {#try.Success [context' fa]}
         (case (fa context')
-          (#try.Success [context'' a])
-          (#try.Success [context'' a])
+          {#try.Success [context'' a]}
+          {#try.Success [context'' a]}
 
-          (#try.Failure error)
-          (#try.Failure error))
+          {#try.Failure error}
+          {#try.Failure error})
 
-        (#try.Failure error)
-        (#try.Failure error)
+        {#try.Failure error}
+        {#try.Failure error}
         )))
   )
 
@@ -132,15 +132,15 @@
 
 (def: (var::new id plist)
   (-> Var Type_Vars Type_Vars)
-  (#.Item [id #.None] plist))
+  {#.Item [id #.None] plist})
 
 (def: (var::get id plist)
   (-> Var Type_Vars (Maybe (Maybe Type)))
   (case plist
-    (#.Item [var_id var_type]
-            plist')
+    {#.Item [var_id var_type]
+     plist'}
     (if (!n\= id var_id)
-      (#.Some var_type)
+      {#.Some var_type}
       (var::get id plist'))
 
     #.End
@@ -152,34 +152,34 @@
     #.End
     (list [id value])
 
-    (#.Item [var_id var_type]
-            plist')
+    {#.Item [var_id var_type]
+     plist'}
     (if (!n\= id var_id)
-      (#.Item [var_id value]
-              plist')
-      (#.Item [var_id var_type]
-              (var::put id value plist')))))
+      {#.Item [var_id value]
+       plist'}
+      {#.Item [var_id var_type]
+       (var::put id value plist')})))
 
 (def: .public (result context proc)
   (All (_ a) (-> Type_Context (Check a) (Try a)))
   (case (proc context)
-    (#try.Success [context' output])
-    (#try.Success output)
+    {#try.Success [context' output]}
+    {#try.Success output}
 
-    (#try.Failure error)
-    (#try.Failure error)))
+    {#try.Failure error}
+    {#try.Failure error}))
 
 (def: .public (failure message)
   (All (_ a) (-> Text (Check a)))
   (function (_ context)
-    (#try.Failure message)))
+    {#try.Failure message}))
 
 (def: .public (assertion message test)
   (-> Text Bit (Check Any))
   (function (_ context)
     (if test
-      (#try.Success [context []])
-      (#try.Failure message))))
+      {#try.Success [context []]}
+      {#try.Failure message})))
 
 (def: .public (except exception message)
   (All (_ e a) (-> (Exception e) e (Check a)))
@@ -189,26 +189,26 @@
   (Check [Nat Type])
   (function (_ context)
     (let [id (value@ #.ex_counter context)]
-      (#try.Success [(revised@ #.ex_counter ++ context)
-                     [id (#.Ex id)]]))))
+      {#try.Success [(revised@ #.ex_counter ++ context)
+                     [id {#.Ex id}]]})))
 
 (template [   ]
   [(def: .public ( id)
      (-> Var (Check ))
      (function (_ context)
        (case (|> context (value@ #.var_bindings) (var::get id))
-         (^or (#.Some (#.Some (#.Var _)))
-              (#.Some #.None))
-         (#try.Success [context ])
+         (^or {#.Some {#.Some {#.Var _}}}
+              {#.Some #.None})
+         {#try.Success [context ]}
          
-         (#.Some (#.Some bound))
-         (#try.Success [context ])
+         {#.Some {#.Some bound}}
+         {#try.Success [context ]}
 
          #.None
          (exception.except ..unknown_type_var id))))]
 
   [bound? Bit          false  true]
-  [peek   (Maybe Type) #.None (#.Some bound)]
+  [peek   (Maybe Type) #.None {#.Some bound}]
   )
 
 (def: .public (read id)
@@ -216,7 +216,7 @@
   (do ..monad
     [?type (peek id)]
     (case ?type
-      (#.Some type)
+      {#.Some type}
       (in type)
 
       #.None
@@ -226,10 +226,10 @@
   (-> Var (Check Type))
   (function (_ context)
     (case (|> context (value@ #.var_bindings) (var::get id))
-      (#.Some (#.Some bound))
-      (#try.Success [context bound])
+      {#.Some {#.Some bound}}
+      {#try.Success [context bound]}
 
-      (#.Some _)
+      {#.Some _}
       (exception.except ..unbound_type_var id)
 
       _
@@ -239,11 +239,11 @@
   (-> Type Var (Check Any))
   (function (_ context)
     (case (|> context (value@ #.var_bindings) (var::get id))
-      (#.Some #.None)
-      (#try.Success [(revised@ #.var_bindings (var::put id (#.Some type)) context)
-                     []])
+      {#.Some #.None}
+      {#try.Success [(revised@ #.var_bindings (var::put id {#.Some type}) context)
+                     []]}
 
-      (#.Some (#.Some bound))
+      {#.Some {#.Some bound}}
       (exception.except ..cannot_rebind_var [id type bound])
       
       _
@@ -253,9 +253,9 @@
   (-> Type Var (Check Any))
   (function (_ context)
     (case (|> context (value@ #.var_bindings) (var::get id))
-      (#.Some _)
-      (#try.Success [(revised@ #.var_bindings (var::put id (#.Some type)) context)
-                     []])
+      {#.Some _}
+      {#try.Success [(revised@ #.var_bindings (var::put id {#.Some type}) context)
+                     []]}
       
       _
       (exception.except ..unknown_type_var id))))
@@ -264,32 +264,32 @@
   (Check [Var Type])
   (function (_ context)
     (let [id (value@ #.var_counter context)]
-      (#try.Success [(|> context
+      {#try.Success [(|> context
                          (revised@ #.var_counter ++)
                          (revised@ #.var_bindings (var::new id)))
-                     [id (#.Var id)]]))))
+                     [id {#.Var id}]]})))
 
 (def: (on argT funcT)
   (-> Type Type (Check Type))
   (case funcT
-    (#.Var func_id)
+    {#.Var func_id}
     (do ..monad
       [?funcT' (peek func_id)]
       (case ?funcT'
-        (#.Some funcT')
+        {#.Some funcT'}
         (on argT funcT')
 
         _
         (except ..invalid_type_application [funcT argT])))
 
-    (#.Apply argT' funcT')
+    {#.Apply argT' funcT'}
     (do ..monad
       [funcT'' (on argT' funcT')]
       (on argT funcT''))
 
     _
     (case (//.applied (list argT) funcT)
-      (#.Some output)
+      {#.Some output}
       (check\in output)
 
       _
@@ -309,18 +309,18 @@
     (loop [current start
            output (set.has start empty_ring)]
       (case (|> context (value@ #.var_bindings) (var::get current))
-        (#.Some (#.Some type))
+        {#.Some {#.Some type}}
         (case type
-          (#.Var post)
+          {#.Var post}
           (if (!n\= start post)
-            (#try.Success [context output])
+            {#try.Success [context output]}
             (recur post (set.has post output)))
           
           _
-          (#try.Success [context empty_ring]))
+          {#try.Success [context empty_ring]})
 
-        (#.Some #.None)
-        (#try.Success [context output])
+        {#.Some #.None}
+        {#try.Success [context output]}
         
         #.None
         (exception.except ..unknown_type_var current)))))
@@ -335,17 +335,17 @@
   (All (_ a) (-> (Check a) (Check (Maybe a))))
   (function (_ context)
     (case (op context)
-      (#try.Success [context' output])
-      (#try.Success [context' (#.Some output)])
+      {#try.Success [context' output]}
+      {#try.Success [context' {#.Some output}]}
 
-      (#try.Failure _)
-      (#try.Success [context #.None]))))
+      {#try.Failure _}
+      {#try.Success [context #.None]})))
 
 (def: (either left right)
   (All (_ a) (-> (Check a) (Check a) (Check a)))
   (function (_ context)
     (case (left context)
-      (#try.Failure _)
+      {#try.Failure _}
       (right context)
 
       output
@@ -374,21 +374,21 @@
         then)
       (do ..monad
         [?bound (peek id)]
-        (else (maybe.else (#.Var id) ?bound)))))
+        (else (maybe.else {#.Var id} ?bound)))))
 
 ... TODO: "link/2" can be optimized...
 (def: (link/2 left right)
   (-> Var Var (Check Any))
   (do ..monad
-    [_ (..bind (#.Var right) left)]
-    (..bind (#.Var left) right)))
+    [_ (..bind {#.Var right} left)]
+    (..bind {#.Var left} right)))
 
 ... TODO: "link/3" can be optimized...
 (def: (link/3 interpose to from)
   (-> Var Var Var (Check Any))
   (do ..monad
-    [_ (re_bind (#.Var interpose) from)]
-    (re_bind (#.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)
@@ -406,30 +406,30 @@
           (in assumptions))
 
         ... Interpose new variable between 2 existing links
-        [(#.Some etype) #.None]
+        [{#.Some etype} #.None]
         (case etype
-          (#.Var targetE)
+          {#.Var targetE}
           (do !
             [_ (link/3 idA targetE idE)]
             (in assumptions))
 
           _
-          (check' assumptions etype (#.Var idA)))
+          (check' assumptions etype {#.Var idA}))
 
         ... Interpose new variable between 2 existing links
-        [#.None (#.Some atype)]
+        [#.None {#.Some atype}]
         (case atype
-          (#.Var targetA)
+          {#.Var targetA}
           (do !
             [_ (link/3 idE targetA idA)]
             (in assumptions))
 
           _
-          (check' assumptions (#.Var idE) atype))
+          (check' assumptions {#.Var idE} atype))
 
-        [(#.Some etype) (#.Some atype)]
+        [{#.Some etype} {#.Some atype}]
         (case [etype atype]
-          [(#.Var targetE) (#.Var targetA)]
+          [{#.Var targetE} {#.Var targetA}]
           (do !
             [ringE (..ring idE)
              ringA (..ring idA)]
@@ -451,8 +451,8 @@
                [ring (..ring )
                 _ (monad.each ! (re_bind ) (set.list ring))]
                (in assumptions))])
-          ([[(#.Var _) _] idE atype]
-           [[_ (#.Var _)] idA etype])
+          ([[{#.Var _} _] idE atype]
+           [[_ {#.Var _}] idA etype])
           
           _
           (check' assumptions etype atype))))))
@@ -467,54 +467,54 @@
   (let [[expected_input expected_function] expected
         [actual_input actual_function] actual]
     (case [expected_function actual_function]
-      [(#.Ex exE) (#.Ex exA)]
+      [{#.Ex exE} {#.Ex exA}]
       (if (!n\= exE exA)
         (check' assumptions expected_input actual_input)
         ..silent_failure!)
 
-      [(#.UnivQ _ _) (#.Ex _)]
+      [{#.UnivQ _ _} {#.Ex _}]
       (do ..monad
         [expected' (..on expected_input expected_function)]
-        (check' assumptions expected' (#.Apply actual)))
+        (check' assumptions expected' {#.Apply actual}))
 
-      [(#.Ex _) (#.UnivQ _ _)]
+      [{#.Ex _} {#.UnivQ _ _}]
       (do ..monad
         [actual' (..on actual_input actual_function)]
-        (check' assumptions (#.Apply expected) actual'))
+        (check' assumptions {#.Apply expected} actual'))
 
-      [(#.Apply [expected_input' expected_function']) (#.Ex _)]
+      [{#.Apply [expected_input' expected_function']} {#.Ex _}]
       (do ..monad
         [expected_function'' (..on expected_input' expected_function')]
-        (check' assumptions (#.Apply [expected_input expected_function'']) (#.Apply actual)))
+        (check' assumptions {#.Apply [expected_input expected_function'']} {#.Apply actual}))
 
-      [(#.Ex _) (#.Apply [actual_input' actual_function'])]
+      [{#.Ex _} {#.Apply [actual_input' actual_function']}]
       (do ..monad
         [actual_function'' (..on actual_input' actual_function')]
-        (check' assumptions (#.Apply expected) (#.Apply [actual_input actual_function''])))
+        (check' assumptions {#.Apply expected} {#.Apply [actual_input actual_function'']}))
 
-      (^or [(#.Ex _) _] [_ (#.Ex _)])
+      (^or [{#.Ex _} _] [_ {#.Ex _}])
       (do ..monad
         [assumptions (check' assumptions expected_function actual_function)]
         (check' assumptions expected_input actual_input))
 
-      [(#.Var id) _]
+      [{#.Var id} _]
       (function (_ context)
         (case ((do ..monad
                  [expected_function' (..read id)]
-                 (check' assumptions (#.Apply expected_input expected_function') (#.Apply actual)))
+                 (check' assumptions {#.Apply expected_input expected_function'} {#.Apply actual}))
                context)
-          (#try.Success output)
-          (#try.Success output)
+          {#try.Success output}
+          {#try.Success output}
 
-          (#try.Failure _)
+          {#try.Failure _}
           (case actual_function
-            (#.UnivQ _ _)
+            {#.UnivQ _ _}
             ((do ..monad
                [actual' (..on actual_input actual_function)]
-               (check' assumptions (#.Apply expected) actual'))
+               (check' assumptions {#.Apply expected} actual'))
              context)
             
-            (#.Ex exA)
+            {#.Ex exA}
             ((do ..monad
                [assumptions (check' assumptions expected_function actual_function)]
                (check' assumptions expected_input actual_input))
@@ -528,14 +528,14 @@
                (check' assumptions expected' actual'))
              context))))
 
-      [_ (#.Var id)]
+      [_ {#.Var id}]
       (function (_ context)
         (case ((do ..monad
                  [actual_function' (read id)]
-                 (check' assumptions (#.Apply expected) (#.Apply actual_input actual_function')))
+                 (check' assumptions {#.Apply expected} {#.Apply actual_input actual_function'}))
                context)
-          (#try.Success output)
-          (#try.Success output)
+          {#try.Success output}
+          {#try.Success output}
 
           _
           ((do ..monad
@@ -563,45 +563,45 @@
     (check\in assumptions)
     (with ..type_check_failed [expected actual]
       (case [expected actual]
-        [(#.Var idE) (#.Var idA)]
+        [{#.Var idE} {#.Var idA}]
         (check_vars check' assumptions idE idA)
         
-        [(#.Var id) _]
+        [{#.Var id} _]
         (if_can_bind id actual
                      (check\in assumptions)
                      (function (_ bound)
                        (check' assumptions bound actual)))
         
-        [_ (#.Var id)]
+        [_ {#.Var id}]
         (if_can_bind id expected
                      (check\in assumptions)
                      (function (_ bound)
                        (check' assumptions expected bound)))
 
         (^template [ ]
-          [[(#.Apply aE ) (#.Apply aA )]
+          [[{#.Apply aE } {#.Apply aA }]
            (check_apply check' assumptions [aE ] [aA ])])
-        ([F1 (#.Ex ex)]
-         [(#.Ex exE) fA]
-         [fE (#.Var idA)]
-         [(#.Var idE) fA])
+        ([F1 {#.Ex ex}]
+         [{#.Ex exE} fA]
+         [fE {#.Var idA}]
+         [{#.Var idE} fA])
         
-        [(#.Apply A F) _]
+        [{#.Apply A F} _]
         (let [new_assumption [expected actual]]
           (if (assumed? new_assumption assumptions)
             (check\in assumptions)
             (do ..monad
               [expected' (..on A F)]
-              (check' (#.Item new_assumption assumptions) expected' actual))))
+              (check' {#.Item new_assumption assumptions} expected' actual))))
 
-        [_ (#.Apply A F)]
+        [_ {#.Apply A F}]
         (do ..monad
           [actual' (..on A F)]
           (check' assumptions expected actual'))
 
         ... TODO: Refactor-away as cold-code
         (^template [ ]
-          [[( _) _]
+          [[{ _} _]
            (do ..monad
              [[_ paramT] 
               expected' (..on paramT expected)]
@@ -611,7 +611,7 @@
 
         ... TODO: Refactor-away as cold-code
         (^template [ ]
-          [[_ ( _)]
+          [[_ { _}]
            (do ..monad
              [[_ paramT] 
               actual' (..on paramT actual)]
@@ -619,7 +619,7 @@
         ([#.UnivQ ..var]
          [#.ExQ ..existential])
 
-        [(#.Primitive e_name e_params) (#.Primitive a_name a_params)]
+        [{#.Primitive e_name e_params} {#.Primitive a_name a_params}]
         (if (!text\= e_name a_name)
           (loop [assumptions assumptions
                  e_params e_params
@@ -628,7 +628,7 @@
               [#.End #.End]
               (check\in assumptions)
               
-              [(#.Item e_head e_tail) (#.Item a_head a_tail)]
+              [{#.Item e_head e_tail} {#.Item a_head a_tail}]
               (do ..monad
                 [assumptions' (check' assumptions e_head a_head)]
                 (recur assumptions' e_tail a_tail))
@@ -638,27 +638,27 @@
           ..silent_failure!)
 
         (^template []
-          [[( eL eR) ( aL aR)]
+          [[{ eL eR} { aL aR}]
            (do ..monad
              [assumptions (check' assumptions eL aL)]
              (check' assumptions eR aR))])
         ([#.Sum]
          [#.Product])
         
-        [(#.Function eI eO) (#.Function aI aO)]
+        [{#.Function eI eO} {#.Function aI aO}]
         (do ..monad
           [assumptions (check' assumptions aI eI)]
           (check' assumptions eO aO))
 
-        [(#.Ex e!id) (#.Ex a!id)]
+        [{#.Ex e!id} {#.Ex a!id}]
         (if (!n\= e!id a!id)
           (check\in assumptions)
           ..silent_failure!)
 
-        [(#.Named _ ?etype) _]
+        [{#.Named _ ?etype} _]
         (check' assumptions ?etype actual)
 
-        [_ (#.Named _ ?atype)]
+        [_ {#.Named _ ?atype}]
         (check' assumptions expected ?atype)
 
         _
@@ -672,50 +672,50 @@
   (-> Type Type Bit)
   (case (..result ..fresh_context
                   (..check expected actual))
-    (#try.Failure _)
+    {#try.Failure _}
     false
 
-    (#try.Success _)
+    {#try.Success _}
     true))
 
 (def: .public context
   (Check Type_Context)
   (function (_ context)
-    (#try.Success [context context])))
+    {#try.Success [context context]}))
 
 (def: .public (clean inputT)
   (-> Type (Check Type))
   (case inputT
-    (#.Primitive name paramsT+)
+    {#.Primitive name paramsT+}
     (|> paramsT+
         (monad.each ..monad clean)
-        (check\each (|>> (#.Primitive name))))
+        (check\each (|>> {#.Primitive name})))
 
-    (^or (#.Parameter _) (#.Ex _) (#.Named _))
+    (^or {#.Parameter _} {#.Ex _} {#.Named _})
     (check\in inputT)
 
     (^template []
-      [( leftT rightT)
+      [{ leftT rightT}
        (do ..monad
          [leftT' (clean leftT)]
          (|> (clean rightT)
-             (check\each (|>> ( leftT')))))])
+             (check\each (|>> { leftT'}))))])
     ([#.Sum] [#.Product] [#.Function] [#.Apply])
 
-    (#.Var id)
+    {#.Var id}
     (do ..monad
       [?actualT (peek id)]
       (case ?actualT
-        (#.Some actualT)
+        {#.Some actualT}
         (clean actualT)
 
         _
         (in inputT)))
 
     (^template []
-      [( envT+ unquantifiedT)
+      [{ envT+ unquantifiedT}
        (do [! ..monad]
          [envT+' (monad.each ! clean envT+)]
-         (in ( envT+' unquantifiedT)))])
+         (in { envT+' unquantifiedT}))])
     ([#.UnivQ] [#.ExQ])
     ))
diff --git a/stdlib/source/library/lux/type/dynamic.lux b/stdlib/source/library/lux/type/dynamic.lux
index 0709b67e2..d766c77a0 100644
--- a/stdlib/source/library/lux/type/dynamic.lux
+++ b/stdlib/source/library/lux/type/dynamic.lux
@@ -44,7 +44,7 @@
                       (: ((~! try.Try) (~ type))
                          (if (\ (~! type.equivalence) (~' =)
                                 (.type (~ type)) (~ g!type))
-                           (#try.Success (:as (~ type) (~ g!value)))
+                           {#try.Success (:as (~ type) (~ g!value))}
                            ((~! exception.except) ..wrong_type [(.type (~ type)) (~ g!type)])))))))))
 
    (def: .public (format value)
diff --git a/stdlib/source/library/lux/type/implicit.lux b/stdlib/source/library/lux/type/implicit.lux
index dc460e41d..03379a14e 100644
--- a/stdlib/source/library/lux/type/implicit.lux
+++ b/stdlib/source/library/lux/type/implicit.lux
@@ -30,15 +30,15 @@
   (-> Nat Type_Context (Meta Type))
   (case (list.example (|>> product.left (n.= id))
                       (value@ #.var_bindings env))
-    (#.Some [_ (#.Some type)])
+    {#.Some [_ {#.Some type}]}
     (case type
-      (#.Var id')
+      {#.Var id'}
       (type_var id' env)
 
       _
       (\ meta.monad in type))
 
-    (#.Some [_ #.None])
+    {#.Some [_ #.None]}
     (meta.failure (format "Unbound type-var " (%.nat id)))
 
     #.None
@@ -51,7 +51,7 @@
     [raw_type (meta.type var_name)
      compiler meta.compiler_state]
     (case raw_type
-      (#.Var id)
+      {#.Var id}
       (type_var id (value@ #.type_context compiler))
 
       _
@@ -60,18 +60,18 @@
 (def: (member_type idx sig_type)
   (-> Nat Type (Check Type))
   (case sig_type
-    (#.Named _ sig_type')
+    {#.Named _ sig_type'}
     (member_type idx sig_type')
 
-    (#.Apply arg func)
+    {#.Apply arg func}
     (case (type.applied (list arg) func)
       #.None
       (check.failure (format "Cannot apply type " (%.type func) " to type " (%.type arg)))
 
-      (#.Some sig_type')
+      {#.Some sig_type'}
       (member_type idx sig_type'))
 
-    (#.Product left right)
+    {#.Product left right}
     (if (n.= 0 idx)
       (\ check.monad in left)
       (member_type (-- idx) right))
@@ -100,7 +100,7 @@
                      #.End
                      (meta.failure (format "Unknown tag: " (%.name member)))
                      
-                     (#.Item winner #.End)
+                     {#.Item winner #.End}
                      (in winner)
                      
                      _
@@ -139,7 +139,7 @@
               (if (and (or (text\= target_module source_module)
                            exported?)
                        (compatible_type? sig_type def_type))
-                (#.Item [[source_module name] def_type] aggregate)
+                {#.Item [[source_module name] def_type] aggregate}
                 aggregate))
             aggregate
             constants))
@@ -157,7 +157,7 @@
             dictionary.entries
             (list.all (function (_ [name type])
                         (if (compatible_type? sig_type type)
-                          (#.Some [["" name] type])
+                          {#.Some [["" name] type]}
                           #.None)))))))
 
 (def: (local_structs sig_type)
@@ -181,10 +181,10 @@
 (def: (on_argument arg func)
   (-> Type Type (Check Type))
   (case func
-    (#.Named _ func')
+    {#.Named _ func'}
     (on_argument arg func')
 
-    (#.UnivQ _)
+    {#.UnivQ _}
     (do check.monad
       [[id var] check.var]
       (|> func
@@ -192,7 +192,7 @@
           maybe.trusted
           (on_argument arg)))
 
-    (#.Function input output)
+    {#.Function input output}
     (do check.monad
       [_ (check.check input arg)]
       (in output))
@@ -203,11 +203,11 @@
 (def: (concrete_type type)
   (-> Type (Check [(List Nat) Type]))
   (case type
-    (#.UnivQ _)
+    {#.UnivQ _}
     (do check.monad
       [[id var] check.var
        [ids final_output] (concrete_type (maybe.trusted (type.applied (list var) type)))]
-      (in [(#.Item id ids)
+      (in [{#.Item id ids}
            final_output]))
     
     _
@@ -241,10 +241,10 @@
                                                   context' check.context
                                                   =deps (monad.each ! (provision compiler context') deps)]
                                                  (in =deps)))
-                             (#.Left error)
+                             {#.Left error}
                              (list)
 
-                             (#.Right =deps)
+                             {#.Right =deps}
                              (list [alt_name =deps]))))
               list\conjoint)
       #.End
@@ -260,15 +260,15 @@
                          (do meta.monad [alts (..local_env sig_type)] (..candidate_provision (provision sig_type) context dep alts))
                          (do meta.monad [alts (..local_structs sig_type)] (..candidate_provision (provision sig_type) context dep alts))
                          (do meta.monad [alts (..imported_structs sig_type)] (..candidate_provision (provision sig_type) context dep alts))))
-    (#.Left error)
+    {#.Left error}
     (check.failure error)
 
-    (#.Right candidates)
+    {#.Right candidates}
     (case candidates
       #.End
       (check.failure (format "No candidates for provisioning: " (%.type dep)))
 
-      (#.Item winner #.End)
+      {#.Item winner #.End}
       (\ check.monad in winner)
 
       _
@@ -292,10 +292,10 @@
                                         context' check.context
                                         =deps (monad.each ! (provision sig_type compiler context') deps)]
                                        (in =deps)))
-                             (#.Left error)
+                             {#.Left error}
                              (list)
 
-                             (#.Right =deps)
+                             {#.Right =deps}
                              (list [alt_name =deps]))))
               list\conjoint)
       #.End
@@ -315,7 +315,7 @@
 (def: (var? input)
   (-> Code Bit)
   (case input
-    [_ (#.Identifier _)]
+    [_ {#.Identifier _}]
     #1
 
     _
@@ -338,7 +338,7 @@
                       args (<>.or (<>.and (<>.some .identifier) .end!)
                                   (<>.and (<>.some .any) .end!))])
   (case args
-    (#.Left [args _])
+    {#.Left [args _]}
     (do [! meta.monad]
       [[member_idx sig_type] (..implicit_member member)
        input_types (monad.each ! ..implicit_type args)
@@ -348,7 +348,7 @@
         #.End
         (meta.failure (format "No implementation could be found for member: " (%.name member)))
 
-        (#.Item chosen #.End)
+        {#.Item chosen #.End}
         (in (list (` (\ (~ (instance$ chosen))
                         (~ (code.local_identifier (product.right member)))
                         (~+ (list\each code.identifier args))))))
@@ -360,7 +360,7 @@
                                   (text.interposed ", "))
                               " --- for type: " (%.type sig_type)))))
 
-    (#.Right [args _])
+    {#.Right [args _]}
     (do [! meta.monad]
       [labels (|> (macro.identifier "") (list.repeated (list.size args)) (monad.all !))]
       (in (list (` (let [(~+ (|> args (list.zipped/2 labels) (list\each ..pair_list) list\conjoint))]
diff --git a/stdlib/source/library/lux/type/poly.lux b/stdlib/source/library/lux/type/poly.lux
index 4f7a32f1c..64c5abe51 100644
--- a/stdlib/source/library/lux/type/poly.lux
+++ b/stdlib/source/library/lux/type/poly.lux
@@ -42,54 +42,54 @@
                                                     (function ((~ g!_) (~ g!name))
                                                       (~ body)))
                                 (.:as .Type (~ g!type))))
-                        (#.Left (~ g!output))
+                        {#.Left (~ g!output)}
                         ((~! meta.failure) (~ g!output))
 
-                        (#.Right (~ g!output))
+                        {#.Right (~ g!output)}
                         ((~' in) (.list (~ g!output))))))))))))
 
 (def: .public (code env type)
   (-> Env Type Code)
   (`` (case type
-        (#.Primitive name params)
-        (` (#.Primitive (~ (code.text name))
-                        (.list (~+ (list\each (code env) params)))))
+        {#.Primitive name params}
+        (` {#.Primitive (~ (code.text name))
+            (.list (~+ (list\each (code env) params)))})
 
         (^template []
-          [( idx)
-           (` ( (~ (code.nat idx))))])
+          [{ idx}
+           (` { (~ (code.nat idx))})])
         ([#.Var] [#.Ex])
 
-        (#.Parameter idx)
+        {#.Parameter idx}
         (let [idx (.adjusted_idx env idx)]
           (if (n.= 0 idx)
             (|> (dictionary.value idx env) maybe.trusted product.left (code env))
             (` (.$ (~ (code.nat (-- idx)))))))
 
-        (#.Apply (#.Primitive "" #.End)
-                 (#.Parameter idx))
+        {#.Apply {#.Primitive "" #.End}
+         {#.Parameter idx}}
         (case (.adjusted_idx env idx)
           0 (|> env (dictionary.value 0) maybe.trusted product.left (code env))
           idx (undefined))
         
         (^template []
-          [( left right)
-           (` ( (~ (code env left))
-                     (~ (code env right))))])
+          [{ left right}
+           (` { (~ (code env left))
+               (~ (code env right))})])
         ([#.Function] [#.Apply])
 
         (^template [  ]
-          [( left right)
+          [{ left right}
            (` ( (~+ (list\each (code env) ( type)))))])
         ([.Union #.Sum type.flat_variant]
          [.Tuple #.Product type.flat_tuple])
 
-        (#.Named name sub_type)
+        {#.Named name sub_type}
         (code.identifier name)
 
         (^template []
-          [( scope body)
-           (` ( (.list (~+ (list\each (code env) scope)))
-                     (~ (code env body))))])
+          [{ scope body}
+           (` { (.list (~+ (list\each (code env) scope)))
+               (~ (code env body))})])
         ([#.UnivQ] [#.ExQ])
         )))
diff --git a/stdlib/source/library/lux/type/refinement.lux b/stdlib/source/library/lux/type/refinement.lux
index 3bbe82935..bfa951ede 100644
--- a/stdlib/source/library/lux/type/refinement.lux
+++ b/stdlib/source/library/lux/type/refinement.lux
@@ -25,8 +25,8 @@
          (-> (Predicate t) (Refiner t %))))
      (function (_ value)
        (if (predicate value)
-         (#.Some (:abstraction [#value value
-                                #predicate predicate]))
+         {#.Some (:abstraction [#value value
+                                #predicate predicate])}
          #.None)))
 
    (template [  ]
@@ -46,8 +46,8 @@
        (let [(^slots [#value #predicate]) (:representation refined)
              value' (transform value)]
          (if (predicate value')
-           (#.Some (:abstraction [#value value'
-                                  #predicate predicate]))
+           {#.Some (:abstraction [#value value'
+                                  #predicate predicate])}
            #.None))))]
   )
 
@@ -58,10 +58,10 @@
     #.End
     #.End
 
-    (#.Item head tail)
+    {#.Item head tail}
     (case (refiner head)
-      (#.Some refined)
-      (#.Item refined (only refiner tail))
+      {#.Some refined}
+      {#.Item refined (only refiner tail)}
       
       #.None
       (only refiner tail))))
@@ -73,16 +73,16 @@
     #.End
     [#.End #.End]
 
-    (#.Item head tail)
+    {#.Item head tail}
     (let [[yes no] (partition refiner tail)]
       (case (refiner head)
-        (#.Some refined)
-        [(#.Item refined yes)
+        {#.Some refined}
+        [{#.Item refined yes}
          no]
         
         #.None
         [yes
-         (#.Item head no)]))))
+         {#.Item head no}]))))
 
 (syntax: .public (type [refiner .any])
   (macro.with_identifiers [g!t g!%]
diff --git a/stdlib/source/library/lux/type/resource.lux b/stdlib/source/library/lux/type/resource.lux
index 244644d57..d5c209cd7 100644
--- a/stdlib/source/library/lux/type/resource.lux
+++ b/stdlib/source/library/lux/type/resource.lux
@@ -132,7 +132,7 @@
       #.End
       (in (list (` (~! no_op))))
 
-      (#.Item head tail)
+      {#.Item head tail}
       (do [! meta.monad]
         [.let [max_idx (list\mix n.max head tail)]
          g!inputs (<| (monad.all !) (list.repeated (++ max_idx)) (macro.identifier "input"))
diff --git a/stdlib/source/library/lux/world/console.lux b/stdlib/source/library/lux/world/console.lux
index e3d156adf..7c974630f 100644
--- a/stdlib/source/library/lux/world/console.lux
+++ b/stdlib/source/library/lux/world/console.lux
@@ -74,7 +74,7 @@
                                      #.None
                                      (in (exception.except ..cannot_open []))
 
-                                     (#.Some jvm_console)
+                                     {#.Some jvm_console}
                                      (let [jvm_input (java/lang/System::in)
                                            jvm_output (java/lang/System::out)]
                                        (<| in
@@ -122,13 +122,13 @@
                   (do [! io.monad]
                     [|state| (atom.read! state)]
                     (case (\ mock  |state|)
-                      (#try.Success [|state| output])
+                      {#try.Success [|state| output]}
                       (do !
                         [_ (atom.write! |state| state)]
-                        (in (#try.Success output)))
+                        (in {#try.Success output}))
                       
-                      (#try.Failure error)
-                      (in (#try.Failure error)))))]
+                      {#try.Failure error}
+                      (in {#try.Failure error}))))]
 
                [read on_read]
                [read_line on_read_line]
@@ -138,23 +138,23 @@
            (do [! io.monad]
              [|state| (atom.read! state)]
              (case (\ mock on_write input |state|)
-               (#try.Success |state|)
+               {#try.Success |state|}
                (do !
                  [_ (atom.write! |state| state)]
-                 (in (#try.Success [])))
+                 (in {#try.Success []}))
                
-               (#try.Failure error)
-               (in (#try.Failure error)))))
+               {#try.Failure error}
+               (in {#try.Failure error}))))
 
          (def: (close _)
            (do [! io.monad]
              [|state| (atom.read! state)]
              (case (\ mock on_close |state|)
-               (#try.Success |state|)
+               {#try.Success |state|}
                (do !
                  [_ (atom.write! |state| state)]
-                 (in (#try.Success [])))
+                 (in {#try.Success []}))
                
-               (#try.Failure error)
-               (in (#try.Failure error)))))
+               {#try.Failure error}
+               (in {#try.Failure error}))))
          ))))
diff --git a/stdlib/source/library/lux/world/db/jdbc/input.lux b/stdlib/source/library/lux/world/db/jdbc/input.lux
index 1819241b3..aa8a168af 100644
--- a/stdlib/source/library/lux/world/db/jdbc/input.lux
+++ b/stdlib/source/library/lux/world/db/jdbc/input.lux
@@ -64,12 +64,12 @@
 (def: .public (fail error)
   (All (_ a) (-> Text (Input a)))
   (function (_ value [idx context])
-    (#try.Failure error)))
+    {#try.Failure error}))
 
 (def: .public empty
   (Input Any)
   (function (_ value context)
-    (#try.Success context)))
+    {#try.Success context}))
 
 (template [  ]
   [(def: .public 
diff --git a/stdlib/source/library/lux/world/db/jdbc/output.lux b/stdlib/source/library/lux/world/db/jdbc/output.lux
index 25b4b0668..3772ff0e1 100644
--- a/stdlib/source/library/lux/world/db/jdbc/output.lux
+++ b/stdlib/source/library/lux/world/db/jdbc/output.lux
@@ -56,11 +56,11 @@
   (def: (each f fa)
     (function (_ idx+rs)
       (case (fa idx+rs)
-        (#try.Failure error)
-        (#try.Failure error)
+        {#try.Failure error}
+        {#try.Failure error}
         
-        (#try.Success [idx' value])
-        (#try.Success [idx' (f value)])))))
+        {#try.Success [idx' value]}
+        {#try.Success [idx' (f value)]}))))
 
 (implementation: .public apply
   (Apply Output)
@@ -70,16 +70,16 @@
   (def: (apply ff fa)
     (function (_ [idx rs])
       (case (ff [idx rs])
-        (#try.Success [idx' f])
+        {#try.Success [idx' f]}
         (case (fa [idx' rs])
-          (#try.Success [idx'' a])
-          (#try.Success [idx'' (f a)])
+          {#try.Success [idx'' a]}
+          {#try.Success [idx'' (f a)]}
 
-          (#try.Failure msg)
-          (#try.Failure msg))
+          {#try.Failure msg}
+          {#try.Failure msg})
 
-        (#try.Failure msg)
-        (#try.Failure msg)))))
+        {#try.Failure msg}
+        {#try.Failure msg}))))
 
 (implementation: .public monad
   (Monad Output)
@@ -88,21 +88,21 @@
 
   (def: (in a)
     (function (_ [idx rs])
-      (#.Some [idx a])))
+      {#.Some [idx a]}))
   
   (def: (conjoint mma)
     (function (_ [idx rs])
       (case (mma [idx rs])
-        (#try.Failure error)
-        (#try.Failure error)
+        {#try.Failure error}
+        {#try.Failure error}
         
-        (#try.Success [idx' ma])
+        {#try.Success [idx' ma]}
         (ma [idx' rs])))))
 
 (def: .public (fail error)
   (All (_ a) (-> Text (Output a)))
   (function (_ [idx result_set])
-    (#try.Failure error)))
+    {#try.Failure error}))
 
 (def: .public (and left right)
   (All (_ a b)
@@ -117,11 +117,11 @@
      (Output )
      (function (_ [idx result_set])
        (case ( [(.int idx)] result_set)
-         (#try.Failure error)
-         (#try.Failure error)
+         {#try.Failure error}
+         {#try.Failure error}
 
-         (#try.Success value)
-         (#try.Success [(++ idx) value]))))]
+         {#try.Success value}
+         {#try.Success [(++ idx) value]})))]
 
   [boolean java/sql/ResultSet::getBoolean Bit]
 
@@ -142,12 +142,12 @@
      (Output Instant)
      (function (_ [idx result_set])
        (case ( [(.int idx)] result_set)
-         (#try.Failure error)
-         (#try.Failure error)
+         {#try.Failure error}
+         {#try.Failure error}
 
-         (#try.Success value)
-         (#try.Success [(++ idx)
-                        (instant.from_millis (java/util/Date::getTime value))]))))]
+         {#try.Success value}
+         {#try.Success [(++ idx)
+                        (instant.from_millis (java/util/Date::getTime value))]})))]
 
   [date       java/sql/ResultSet::getDate]
   [time       java/sql/ResultSet::getTime]
@@ -157,24 +157,24 @@
 (def: .public (rows output results)
   (All (_ a) (-> (Output a) java/sql/ResultSet (IO (Try (List a)))))
   (case (java/sql/ResultSet::next results)
-    (#try.Success has_next?)
+    {#try.Success has_next?}
     (if has_next?
       (case (output [1 results])
-        (#.Some [_ head])
+        {#.Some [_ head]}
         (do io.monad
           [?tail (rows output results)]
           (case ?tail
-            (#try.Success tail)
-            (in (#try.Success (#.Item head tail)))
+            {#try.Success tail}
+            (in {#try.Success {#.Item head tail}})
 
-            (#try.Failure error)
+            {#try.Failure error}
             (do io.monad
               [temp (java/sql/ResultSet::close results)]
               (in (do try.monad
                     [_ temp]
                     (try.failure error))))))
 
-        (#try.Failure error)
+        {#try.Failure error}
         (do io.monad
           [temp (java/sql/ResultSet::close results)]
           (in (do try.monad
@@ -186,7 +186,7 @@
               [_ temp]
               (in (list))))))
 
-    (#try.Failure error)
+    {#try.Failure error}
     (do io.monad
       [temp (java/sql/ResultSet::close results)]
       (in (do try.monad
diff --git a/stdlib/source/library/lux/world/file.lux b/stdlib/source/library/lux/world/file.lux
index 66c125a34..82796463c 100644
--- a/stdlib/source/library/lux/world/file.lux
+++ b/stdlib/source/library/lux/world/file.lux
@@ -84,7 +84,7 @@
       #.None
       #.None
       
-      (#.Some last_separator)
+      {#.Some last_separator}
       (do maybe.monad
         [[parent temp] (text.split_at last_separator path)
          [_ child] (text.split_at (text.size /) temp)]
@@ -230,7 +230,7 @@
                                                   (do [! (try.with io.monad)]
                                                     [?children (java/io/File::listFiles (java/io/File::new path))]
                                                     (case ?children
-                                                      (#.Some children)
+                                                      {#.Some children}
                                                       (|> children
                                                           (array.list #.None)
                                                           (monad.only ! (|>> ))
@@ -354,8 +354,8 @@
                      io.run!
                      write!
                      (if (ffi.null? error)
-                       (#try.Success [])
-                       (#try.Failure (Error::toString [] (:as Error error))))))
+                       {#try.Success []}
+                       {#try.Failure (Error::toString [] (:as Error error))})))
 
                (def: (value_callback write!)
                  (All (_ a) (-> (async.Resolver (Try a)) ffi.Function))
@@ -363,8 +363,8 @@
                      io.run!
                      write!
                      (if (ffi.null? error)
-                       (#try.Success (:expected datum))
-                       (#try.Failure (Error::toString [] (:as Error error))))))
+                       {#try.Success (:expected datum)}
+                       {#try.Failure (Error::toString [] (:as Error error))})))
 
                (ffi.import: JsPath
                  ["[1]::[0]"
@@ -383,9 +383,9 @@
                (def: (require _)
                  (-> [] (-> ffi.String Any))
                  (case [(normal_require []) (global_require []) (process_load [])]
-                   (^or [(#.Some require) _ _]
-                        [_ (#.Some require) _]
-                        [_ _ (#.Some require)])
+                   (^or [{#.Some require} _ _]
+                        [_ {#.Some require} _]
+                        [_ _ {#.Some require}])
                    require
 
                    _
@@ -418,10 +418,10 @@
                                           (Fs::stat [path (..value_callback write!)]
                                                     (..node_fs [])))]
                                 (in (case ?stats
-                                      (#try.Success stats)
+                                      {#try.Success stats}
                                       ( [] stats)
                                       
-                                      (#try.Failure _)
+                                      {#try.Failure _}
                                       false))))]
 
                            [file?      Stats::isFile]
@@ -437,10 +437,10 @@
                                                  (..any_callback write!)]
                                                 node_fs))]
                          (case outcome
-                           (#try.Success _)
+                           {#try.Success _}
                            (in (exception.except ..cannot_make_directory [path]))
                            
-                           (#try.Failure _)
+                           {#try.Failure _}
                            (with_async write! (Try Any)
                              (Fs::mkdir [path (..any_callback write!)] node_fs)))))
 
@@ -487,10 +487,10 @@
                      (def: (can_execute? path)
                        (let [node_fs (..node_fs [])]
                          (\ async.monad each
-                            (|>> (case> (#try.Success _)
+                            (|>> (case> {#try.Success _}
                                         true
 
-                                        (#try.Failure _)
+                                        {#try.Failure _}
                                         false)
                                  #try.Success)
                             (with_async write! (Try Any)
@@ -733,11 +733,11 @@
                                             #.End
                                             (in output)
 
-                                            (#.Item head tail)
+                                            {#.Item head tail}
                                             (do !
                                               [verdict ( head)]
                                               (recur tail (if verdict
-                                                            (#.Item head output)
+                                                            {#.Item head output}
                                                             output)))))
                                  _ (RubyDir::close [] self)]
                                 (in output)))]
@@ -928,11 +928,11 @@
         ...                             #.End
         ...                             (in output)
 
-        ...                             (#.Item head tail)
+        ...                             {#.Item head tail}
         ...                             (do !
         ...                               [verdict ( head)]
         ...                               (if verdict
-        ...                                 (recur tail (#.Item ( head) output))
+        ...                                 (recur tail {#.Item ( head) output})
         ...                                 (recur tail output)))))))]
 
         ...                    [files ..is_file ..file File]
@@ -956,7 +956,7 @@
         ...                         [verdict ( path)]
         ...                         (\ io.monad in
         ...                            (if verdict
-        ...                              (#try.Success ( path))
+        ...                              {#try.Success ( path)}
         ...                              (exception.except  [path])))))]
 
         ...                    [file ..is_file ..file ..cannot_find_file]
@@ -968,7 +968,7 @@
         ...                  [verdict (..touch [path (|> instant.now io.run! instant.relative duration.millis (i./ +1,000))])]
         ...                  (\ io.monad in
         ...                     (if verdict
-        ...                       (#try.Success (..file path))
+        ...                       {#try.Success (..file path)}
         ...                       (exception.except ..cannot_make_file [path])))))
         
         ...              (def: (make_directory path)
@@ -976,7 +976,7 @@
         ...                  [verdict (..mkdir path)]
         ...                  (\ io.monad in
         ...                     (if verdict
-        ...                       (#try.Success (..directory path))
+        ...                       {#try.Success (..directory path)}
         ...                       (exception.except ..cannot_make_directory [path])))))
 
         ...              (def: separator
@@ -1013,17 +1013,17 @@
   (loop [directory mock
          trail (text.all_split_by separator path)]
     (case trail
-      (#.Item head tail)
+      {#.Item head tail}
       (case (dictionary.value head directory)
         #.None
         (exception.except ..cannot_find_file [path])
         
-        (#.Some node)
+        {#.Some node}
         (case [node tail]
-          [(#.Left file) #.End]
-          (#try.Success [head file])
+          [{#.Left file} #.End]
+          {#try.Success [head file]}
 
-          [(#.Right sub_directory) (#.Item _)]
+          [{#.Right sub_directory} {#.Item _}]
           (recur sub_directory tail)
 
           _
@@ -1037,33 +1037,33 @@
   (loop [directory mock
          trail (text.all_split_by / path)]
     (case trail
-      (#.Item head tail)
+      {#.Item head tail}
       (case (dictionary.value head directory)
         #.None
         (case tail
           #.End
-          (#try.Success (dictionary.has head
-                                        (#.Left [#mock_last_modified now
+          {#try.Success (dictionary.has head
+                                        {#.Left [#mock_last_modified now
                                                  #mock_can_execute false
-                                                 #mock_content content])
-                                        directory))
+                                                 #mock_content content]}
+                                        directory)}
           
-          (#.Item _)
+          {#.Item _}
           (exception.except ..cannot_find_file [path]))
         
-        (#.Some node)
+        {#.Some node}
         (case [node tail]
-          [(#.Left file) #.End]
-          (#try.Success (dictionary.has head
-                                        (#.Left (|> file
+          [{#.Left file} #.End]
+          {#try.Success (dictionary.has head
+                                        {#.Left (|> file
                                                     (with@ #mock_last_modified now)
-                                                    (with@ #mock_content content)))
-                                        directory))
+                                                    (with@ #mock_content content))}
+                                        directory)}
 
-          [(#.Right sub_directory) (#.Item _)]
+          [{#.Right sub_directory} {#.Item _}]
           (do try.monad
             [sub_directory (recur sub_directory tail)]
-            (in (dictionary.has head (#.Right sub_directory) directory)))
+            (in (dictionary.has head {#.Right sub_directory} directory)))
 
           _
           (exception.except ..cannot_find_file [path])))
@@ -1076,32 +1076,32 @@
   (loop [directory mock
          trail (text.all_split_by / path)]
     (case trail
-      (#.Item head tail)
+      {#.Item head tail}
       (case (dictionary.value head directory)
         #.None
         (exception.except ..cannot_delete [path])
         
-        (#.Some node)
+        {#.Some node}
         (case tail
           #.End
           (case node
-            (#.Left file)
-            (#try.Success (dictionary.lacks head directory))
+            {#.Left file}
+            {#try.Success (dictionary.lacks head directory)}
 
-            (#.Right sub_directory)
+            {#.Right sub_directory}
             (if (dictionary.empty? sub_directory)
-              (#try.Success (dictionary.lacks head directory))
+              {#try.Success (dictionary.lacks head directory)}
               (exception.except ..cannot_delete [path])))
           
-          (#.Item _)
+          {#.Item _}
           (case node
-            (#.Left file)
+            {#.Left file}
             (exception.except ..cannot_delete [path])
 
-            (#.Right sub_directory)
+            {#.Right sub_directory}
             (do try.monad
               [sub_directory' (recur sub_directory tail)]
-              (in (dictionary.has head (#.Right sub_directory') directory))))))
+              (in (dictionary.has head {#.Right sub_directory'} directory))))))
 
       #.End
       (exception.except ..cannot_delete [path]))))
@@ -1111,35 +1111,35 @@
   (do [! stm.monad]
     [|var| (stm.read var)]
     (case (transform |var|)
-      (#try.Success |var|)
+      {#try.Success |var|}
       (do !
         [_ (stm.write |var| var)]
-        (in (#try.Success [])))
+        (in {#try.Success []}))
       
-      (#try.Failure error)
-      (in (#try.Failure error)))))
+      {#try.Failure error}
+      (in {#try.Failure error}))))
 
 (def: (make_mock_directory! / path mock)
   (-> Text Path Mock (Try Mock))
   (loop [directory mock
          trail (text.all_split_by / path)]
     (case trail
-      (#.Item head tail)
+      {#.Item head tail}
       (case (dictionary.value head directory)
         #.None
         (case tail
           #.End
-          (#try.Success (dictionary.has head (#.Right ..empty_mock) directory))
+          {#try.Success (dictionary.has head {#.Right ..empty_mock} directory)}
 
-          (#.Item _)
+          {#.Item _}
           (exception.except ..cannot_make_directory [path]))
         
-        (#.Some node)
+        {#.Some node}
         (case [node tail]
-          [(#.Right sub_directory) (#.Item _)]
+          [{#.Right sub_directory} {#.Item _}]
           (do try.monad
             [sub_directory (recur sub_directory tail)]
-            (in (dictionary.has head (#.Right sub_directory) directory)))
+            (in (dictionary.has head {#.Right sub_directory} directory)))
 
           _
           (exception.except ..cannot_make_directory [path])))
@@ -1153,24 +1153,24 @@
          trail (text.all_split_by / path)]
     (case trail
       #.End
-      (#try.Success directory)
+      {#try.Success directory}
 
-      (#.Item head tail)
+      {#.Item head tail}
       (case (dictionary.value head directory)
         #.None
         (exception.except ..cannot_find_directory [path])
         
-        (#.Some node)
+        {#.Some node}
         (case node
-          (#.Left _)
+          {#.Left _}
           (exception.except ..cannot_find_directory [path])
 
-          (#.Right sub_directory)
+          {#.Right sub_directory}
           (case tail
             #.End
-            (#try.Success sub_directory)
+            {#try.Success sub_directory}
 
-            (#.Item _)
+            {#.Item _}
             (recur sub_directory tail)))))))
 
 (def: .public (mock separator)
@@ -1198,13 +1198,13 @@
             (do [! stm.monad]
               [|store| (stm.read store)]
               (case (..make_mock_directory! separator path |store|)
-                (#try.Success |store|)
+                {#try.Success |store|}
                 (do !
                   [_ (stm.write |store| store)]
-                  (in (#try.Success [])))
+                  (in {#try.Success []}))
                 
-                (#try.Failure error)
-                (in (#try.Failure error))))))
+                {#try.Failure error}
+                (in {#try.Failure error})))))
 
          (~~ (template [ ]
                [(def: ( path)
@@ -1217,8 +1217,8 @@
                                    dictionary.entries
                                    (list.all (function (_ [node_name node])
                                                (case node
-                                                 ( _)
-                                                 (#.Some (format path separator node_name))
+                                                 { _}
+                                                 {#.Some (format path separator node_name)}
                                                  
                                                  _
                                                  #.None))))))))))]
@@ -1304,13 +1304,13 @@
                       [[name file] (..retrieve_mock_file! separator origin |store|)
                        |store| (..delete_mock_node! separator origin |store|)]
                       (..update_mock_file! separator destination (value@ #mock_last_modified file) (value@ #mock_content file) |store|))
-                (#try.Success |store|)
+                {#try.Success |store|}
                 (do !
                   [_ (stm.write |store| store)]
-                  (in (#try.Success [])))
+                  (in {#try.Success []}))
                 
-                (#try.Failure error)
-                (in (#try.Failure error))))))
+                {#try.Failure error}
+                (in {#try.Failure error})))))
          ))))
 
 (def: (check_or_make_directory monad fs path)
@@ -1318,7 +1318,7 @@
   (do monad
     [? (\ fs directory? path)]
     (if ?
-      (in (#try.Success []))
+      (in {#try.Success []})
       (\ fs make_directory path))))
 
 (def: .public (make_directories monad fs path)
@@ -1331,7 +1331,7 @@
       #.End
       (\ monad in (exception.except ..cannot_make_directory [path]))
 
-      (#.Item head tail)
+      {#.Item head tail}
       (case head
         "" (\ monad in (exception.except ..cannot_make_directory [path]))
         _ (loop [current (if rooted?
@@ -1341,17 +1341,17 @@
             (do monad
               [? (..check_or_make_directory monad fs current)]
               (case ?
-                (#try.Success _)
+                {#try.Success _}
                 (case next
                   #.End
-                  (in (#try.Success []))
+                  (in {#try.Success []})
                   
-                  (#.Item head tail)
+                  {#.Item head tail}
                   (recur (format current (\ fs separator) head)
                          tail))
                 
-                (#try.Failure error)
-                (in (#try.Failure error)))))))))
+                {#try.Failure error}
+                (in {#try.Failure error}))))))))
 
 (def: .public (make_file monad fs content path)
   (All (_ !) (-> (Monad !) (System !) Binary Path (! (Try Any))))
diff --git a/stdlib/source/library/lux/world/file/watch.lux b/stdlib/source/library/lux/world/file/watch.lux
index 3af235af1..46308d6e3 100644
--- a/stdlib/source/library/lux/world/file/watch.lux
+++ b/stdlib/source/library/lux/world/file/watch.lux
@@ -112,7 +112,7 @@
   (do [! stm.monad]
     [@tracker (stm.read tracker)]
     (case (dictionary.value path @tracker)
-      (#.Some [old_concern last_modified])
+      {#.Some [old_concern last_modified]}
       (do !
         [_ (stm.update (dictionary.has path [new_concern last_modified]) tracker)]
         (in true))
@@ -196,20 +196,20 @@
            (do !
              [updated? (stm.commit! (..update_watch! new_concern path tracker))]
              (if updated?
-               (in (#try.Success []))
+               (in {#try.Success []})
                (do (try.with !)
                  [file_tracker (..file_tracker fs path)]
                  (do !
                    [_ (stm.commit! (stm.update (dictionary.has path [new_concern file_tracker]) tracker))]
-                   (in (#try.Success []))))))
+                   (in {#try.Success []})))))
            (in (exception.except ..cannot_poll_a_non_existent_directory [path])))))
      (def: (concern path)
        (stm.commit!
         (do stm.monad
           [@tracker (stm.read tracker)]
           (in (case (dictionary.value path @tracker)
-                (#.Some [concern file_tracker])
-                (#try.Success concern)
+                {#.Some [concern file_tracker]}
+                {#try.Success concern}
 
                 #.None
                 (exception.except ..not_being_watched [path]))))))
@@ -218,10 +218,10 @@
         (do [! stm.monad]
           [@tracker (stm.read tracker)]
           (case (dictionary.value path @tracker)
-            (#.Some [concern file_tracker])
+            {#.Some [concern file_tracker]}
             (do !
               [_ (stm.update (dictionary.lacks path) tracker)]
-              (in (#try.Success concern)))
+              (in {#try.Success concern}))
 
             #.None
             (in (exception.except ..not_being_watched [path]))))))
@@ -237,7 +237,7 @@
                                                (list\each product.left)
                                                (dictionary.of_list text.hash))
                                            tracker))]
-                (in (#try.Success [])))
+                (in {#try.Success []}))
             .let [[creations modifications deletions]
                   (list\mix (function (_ [_ [creations modifications deletions]]
                                          [all_creations all_modifications all_deletions])
@@ -278,8 +278,8 @@
                                           output #.End]
                                      (if (n.< size idx)
                                        (recur (++ idx)
-                                              (#.Item (java/util/List::get (.int idx) list)
-                                                      output))
+                                              {#.Item (java/util/List::get (.int idx) list)
+                                               output})
                                        output))))
                                
                                (import: (java/nio/file/WatchEvent$Kind a))
@@ -375,7 +375,7 @@
                                    (do (try.with io.monad)
                                      [?key (java/nio/file/WatchService::poll watcher)]
                                      (case ?key
-                                       (#.Some key)
+                                       {#.Some key}
                                        (do [! io.monad]
                                          [valid? (java/nio/file/WatchKey::reset key)]
                                          (if valid?
@@ -386,8 +386,8 @@
                                                              java/nio/file/Path::toString
                                                              (:as //.Path))]
                                               concern (..default_key_concern key)]
-                                             (recur (#.Item [concern path]
-                                                            output)))
+                                             (recur {#.Item [concern path]
+                                                     output}))
                                            (recur output)))
                                        
                                        #.None
@@ -420,12 +420,12 @@
                                                     (do [! async.monad]
                                                       [@tracker (stm.commit! (stm.read tracker))]
                                                       (case (dictionary.value path @tracker)
-                                                        (#.Some [concern key])
+                                                        {#.Some [concern key]}
                                                         (do !
                                                           [_ (async.future
                                                               (java/nio/file/WatchKey::cancel key))
                                                            _ (stm.commit! (stm.update (dictionary.lacks path) tracker))]
-                                                          (in (#try.Success concern)))
+                                                          (in {#try.Success concern}))
 
                                                         #.None
                                                         (in (exception.except ..not_being_watched [path]))))))]]
@@ -441,13 +441,13 @@
                                                                        path)]
                                                  (do async.monad
                                                    [_ (stm.commit! (stm.update (dictionary.has path [concern key]) tracker))]
-                                                   (in (#try.Success []))))))
+                                                   (in {#try.Success []})))))
                                            (def: (concern path)
                                              (do async.monad
                                                [@tracker (stm.commit! (stm.read tracker))]
                                                (case (dictionary.value path @tracker)
-                                                 (#.Some [concern key])
-                                                 (in (#try.Success concern))
+                                                 {#.Some [concern key]}
+                                                 (in {#try.Success concern})
 
                                                  #.None
                                                  (in (exception.except ..not_being_watched [path])))))
diff --git a/stdlib/source/library/lux/world/net/http/client.lux b/stdlib/source/library/lux/world/net/http/client.lux
index c5af6d11f..472c49a52 100644
--- a/stdlib/source/library/lux/world/net/http/client.lux
+++ b/stdlib/source/library/lux/world/net/http/client.lux
@@ -172,7 +172,7 @@
                                    (do [! (try.with io.monad)]
                                      [?name (java/net/URLConnection::getHeaderFieldKey index connection)]
                                      (case ?name
-                                       (#.Some name)
+                                       {#.Some name}
                                        (do !
                                          [?value (java/net/URLConnection::getHeaderField index connection)]
                                          (recur (++ index)
@@ -194,7 +194,7 @@
                                                            (java/net/URLConnection::setRequestProperty name value connection))
                                                        (dictionary.entries headers))
                                          _ (case data
-                                             (#.Some data)
+                                             {#.Some data}
                                              (do !
                                                [_ (java/net/URLConnection::setDoOutput true connection)
                                                 stream (java/net/URLConnection::getOutputStream connection)
@@ -224,14 +224,14 @@
     (|> (\ client request method url headers data)
         async.future
         (\ async.monad each
-           (|>> (case> (#try.Success [status message])
-                       (#try.Success [status (revised@ #//.body (: (-> (//.Body IO) (//.Body Async))
+           (|>> (case> {#try.Success [status message]}
+                       {#try.Success [status (revised@ #//.body (: (-> (//.Body IO) (//.Body Async))
                                                                    (function (_ body)
                                                                      (|>> body async.future)))
-                                                       message)])
+                                                       message)]}
                        
-                       (#try.Failure error)
-                       (#try.Failure error)))))))
+                       {#try.Failure error}
+                       {#try.Failure error}))))))
 
 (def: .public headers
   (-> (List [Text Text]) //.Headers)
diff --git a/stdlib/source/library/lux/world/net/http/request.lux b/stdlib/source/library/lux/world/net/http/request.lux
index 9ab4b1d32..c6185bc09 100644
--- a/stdlib/source/library/lux/world/net/http/request.lux
+++ b/stdlib/source/library/lux/world/net/http/request.lux
@@ -61,10 +61,10 @@
               [raw ?raw
                content (\ json.codec decoded raw)]
               (json.result content reader))
-        (#try.Success input)
+        {#try.Success input}
         (server input request)
         
-        (#try.Failure error)
+        {#try.Failure error}
         (async.resolved ..failure)))))
 
 (def: .public (text server)
@@ -73,10 +73,10 @@
     (do async.monad
       [?raw (read_text_body (value@ #//.body message))]
       (case ?raw
-        (#try.Success content)
+        {#try.Success content}
         (server content request)
         
-        (#try.Failure error)
+        {#try.Failure error}
         (async.resolved ..failure)))))
 
 (def: .public (query property server)
@@ -91,10 +91,10 @@
                input (context.result query property)]
               (in [[identification protocol (with@ #//.uri uri resource) message]
                    input]))
-        (#try.Success [request input])
+        {#try.Success [request input]}
         (server input request)
         
-        (#try.Failure error)
+        {#try.Failure error}
         (async.resolved ..failure)))))
 
 (def: .public (form property server)
@@ -106,10 +106,10 @@
               [body ?body
                form (//query.parameters body)]
               (context.result form property))
-        (#try.Success input)
+        {#try.Success input}
         (server input request)
         
-        (#try.Failure error)
+        {#try.Failure error}
         (async.resolved ..failure)))))
 
 (def: .public (cookies property server)
@@ -121,8 +121,8 @@
                          (maybe.else "")
                          //cookie.get)]
             (context.result cookies property))
-      (#try.Success input)
+      {#try.Success input}
       (server input request)
       
-      (#try.Failure error)
+      {#try.Failure error}
       (async.resolved ..failure))))
diff --git a/stdlib/source/library/lux/world/program.lux b/stdlib/source/library/lux/world/program.lux
index feb95fff9..eb0fe35cf 100644
--- a/stdlib/source/library/lux/world/program.lux
+++ b/stdlib/source/library/lux/world/program.lux
@@ -62,10 +62,10 @@
     (in (|> entries
             (list.all (function (_ [name value])
                         (case value
-                          (#try.Success value)
-                          (#.Some [name value])
+                          {#try.Success value}
+                          {#.Some [name value]}
                           
-                          (#try.Failure _)
+                          {#try.Failure _}
                           #.None)))
             (dictionary.of_list text.hash)))))
 
@@ -97,8 +97,8 @@
        (function.constant (io.io (dictionary.keys environment))))
      (def: (variable name)
        (io.io (case (dictionary.value name environment)
-                (#.Some value)
-                (#try.Success value)
+                {#.Some value}
+                {#try.Success value}
 
                 #.None
                 (exception.except ..unknown_environment_variable [name]))))
@@ -137,8 +137,8 @@
                                (def: (jvm\\consume iterator)
                                  (All (_ a) (-> (java/util/Iterator a) (List a)))
                                  (if (java/util/Iterator::hasNext iterator)
-                                   (#.Item (java/util/Iterator::next iterator)
-                                           (jvm\\consume iterator))
+                                   {#.Item (java/util/Iterator::next iterator)
+                                    (jvm\\consume iterator)}
                                    #.End))
                                )]
   (for [@.old (as_is )
@@ -155,7 +155,7 @@
                     (def: (exit_node_js! code)
                       (-> Exit (IO Nothing))
                       (case (ffi.constant ..NodeJs_Process [process])
-                        (#.Some process)
+                        {#.Some process}
                         (NodeJs_Process::exit (i.frac code) process)
                         
                         #.None
@@ -173,18 +173,18 @@
                       (-> Exit (IO Nothing))
                       (case [(ffi.constant ..Browser_Window [window])
                              (ffi.constant ..Browser_Location [location])]
-                        [(#.Some window) (#.Some location)]
+                        [{#.Some window} {#.Some location}]
                         (exec
                           (Browser_Window::close [] window)
                           (Browser_Location::reload [] location)
                           (..default_exit! code))
 
-                        [(#.Some window) #.None]
+                        [{#.Some window} #.None]
                         (exec
                           (Browser_Window::close [] window)
                           (..default_exit! code))
 
-                        [#.None (#.Some location)]
+                        [#.None {#.Some location}]
                         (exec
                           (Browser_Location::reload [] location)
                           (..default_exit! code))
@@ -213,9 +213,9 @@
                     (def: (require _)
                       (-> [] (-> ffi.String Any))
                       (case [(normal_require []) (global_require []) (process_load [])]
-                        (^or [(#.Some require) _ _]
-                             [_ (#.Some require) _]
-                             [_ _ (#.Some require)])
+                        (^or [{#.Some require} _ _]
+                             [_ {#.Some require} _]
+                             [_ _ {#.Some require}])
                         require
 
                         _
@@ -247,9 +247,9 @@
                        (do [! io.monad]
                          [outcome (io/popen [command])]
                          (case outcome
-                           (#try.Success outcome)
+                           {#try.Success outcome}
                            (case outcome
-                             (#.Some file)
+                             {#.Some file}
                              (do !
                                [?output (LuaFile::read ["*l"] file)
                                 _ (LuaFile::close [] file)]
@@ -258,7 +258,7 @@
                              #.None
                              (in default))
                            
-                           (#try.Failure _)
+                           {#try.Failure _}
                            (in default)))))
         @.ruby (as_is (ffi.import: Env "as" RubyEnv
                         ["[1]::[0]"
@@ -314,7 +314,7 @@
             @.jvm 
             @.js (io.io (if ffi.on_node_js?
                           (case (ffi.constant Object [process env])
-                            (#.Some process/env)
+                            {#.Some process/env}
                             (|> (Object::entries [process/env])
                                 (array.list #.None)
                                 (list\each (|>> (array.read! 0) maybe.trusted)))
@@ -352,8 +352,8 @@
                    [(do io.monad
                       [value ( name)]
                       (in (case value
-                            (#.Some value)
-                            (#try.Success value)
+                            {#.Some value}
+                            {#try.Success value}
 
                             #.None
                             (exception.except ..unknown_environment_variable [name]))))]]
@@ -365,8 +365,8 @@
                                     [process/env (ffi.constant Object [process env])]
                                     (array.read! (:as Nat name)
                                                  (:as (Array Text) process/env)))
-                              (#.Some value)
-                              (#try.Success value)
+                              {#.Some value}
+                              {#try.Success value}
 
                               #.None
                               (exception.except ..unknown_environment_variable [name]))
@@ -407,7 +407,7 @@
              @.jvm 
              @.js (if ffi.on_node_js?
                     (case (ffi.constant ..NodeJs_Process [process])
-                      (#.Some process)
+                      {#.Some process}
                       (NodeJs_Process::cwd [] process)
                       
                       #.None
diff --git a/stdlib/source/library/lux/world/shell.lux b/stdlib/source/library/lux/world/shell.lux
index 5c0fdfbc7..3fd76261b 100644
--- a/stdlib/source/library/lux/world/shell.lux
+++ b/stdlib/source/library/lux/world/shell.lux
@@ -249,7 +249,7 @@
                                                         (do !
                                                           [output (java/io/BufferedReader::readLine )]
                                                           (case output
-                                                            (#.Some output)
+                                                            {#.Some output}
                                                             (in output)
 
                                                             #.None
@@ -331,13 +331,13 @@
                (do [! io.monad]
                  [|state| (atom.read! state)]
                  (case (\ mock  |state|)
-                   (#try.Success [|state| output])
+                   {#try.Success [|state| output]}
                    (do !
                      [_ (atom.write! |state| state)]
-                     (in (#try.Success output)))
+                     (in {#try.Success output}))
                    
-                   (#try.Failure error)
-                   (in (#try.Failure error)))))]
+                   {#try.Failure error}
+                   (in {#try.Failure error}))))]
 
             [read on_read]
             [error on_error]
@@ -347,24 +347,24 @@
         (do [! io.monad]
           [|state| (atom.read! state)]
           (case (\ mock on_write message |state|)
-            (#try.Success |state|)
+            {#try.Success |state|}
             (do !
               [_ (atom.write! |state| state)]
-              (in (#try.Success [])))
+              (in {#try.Success []}))
             
-            (#try.Failure error)
-            (in (#try.Failure error)))))
+            {#try.Failure error}
+            (in {#try.Failure error}))))
       (def: (destroy _)
         (do [! io.monad]
           [|state| (atom.read! state)]
           (case (\ mock on_destroy |state|)
-            (#try.Success |state|)
+            {#try.Success |state|}
             (do !
               [_ (atom.write! |state| state)]
-              (in (#try.Success [])))
+              (in {#try.Success []}))
             
-            (#try.Failure error)
-            (in (#try.Failure error)))))))
+            {#try.Failure error}
+            (in {#try.Failure error}))))))
 
 (implementation: .public (mock mock init)
   (All (_ s)
diff --git a/stdlib/source/poly/lux/data/format/json.lux b/stdlib/source/poly/lux/data/format/json.lux
index 5fed388e2..e556c2ac6 100644
--- a/stdlib/source/poly/lux/data/format/json.lux
+++ b/stdlib/source/poly/lux/data/format/json.lux
@@ -59,8 +59,8 @@
   (def: (encoded input)
     (let [high (|> input (i64.and high_mask) (i64.right_shifted 32))
           low (i64.and low_mask input)]
-      (#/.Array (row (|> high .int int.frac #/.Number)
-                     (|> low .int int.frac #/.Number)))))
+      {#/.Array (row (|> high .int int.frac #/.Number)
+                     (|> low .int int.frac #/.Number))}))
   (def: decoded
     (.result (.array
                  (do <>.monad
@@ -83,7 +83,7 @@
   (function (_ elem)
     (case elem
       #.None         #/.Null
-      (#.Some value) (writer value))))
+      {#.Some value} (writer value))))
 
 (implementation: qty_codec
   (All (_ unit)
diff --git a/stdlib/source/program/aedifex.lux b/stdlib/source/program/aedifex.lux
index 682c30099..758397321 100644
--- a/stdlib/source/program/aedifex.lux
+++ b/stdlib/source/program/aedifex.lux
@@ -90,7 +90,7 @@
          _
          (do async.monad
            [_ (\ program exit exit_code)]
-           (in (#try.Failure ""))))]
+           (in {#try.Failure ""})))]
     (in output)))
 
 (exception: (cannot_find_repository [repository Text
@@ -117,10 +117,10 @@
           [outcome action]
           (async.future
            (case outcome
-             (#try.Success _)
+             {#try.Success _}
              ..succeed!
 
-             (#try.Failure error)
+             {#try.Failure error}
              (..fail! error))))
     (\ io.monad in [])))
 
@@ -128,10 +128,10 @@
   (do [! io.monad]
     [?console console.default]
     (case (try\each console.async ?console)
-      (#try.Failure error)
+      {#try.Failure error}
       (..fail! error)
 
-      (#try.Success console)
+      {#try.Success console}
       (case operation
         #/cli.Version
         (..command
@@ -141,10 +141,10 @@
         (do !
           [?profile (/input.read io.monad file.default profiles)]
           (case ?profile
-            (#try.Failure error)
+            {#try.Failure error}
             (..fail! error)
 
-            (#try.Success profile)
+            {#try.Success profile}
             (let [program (program.async program.default)]
               (case operation
                 #/cli.Version
@@ -163,14 +163,14 @@
                  (let [fs (file.async file.default)]
                    (/command/install.do! console fs (/repository/local.repository program fs) profile)))
 
-                (#/cli.Deploy repository identity)
+                {#/cli.Deploy repository identity}
                 (..command
                  (case (value@ #/.identity profile)
-                   (#.Some artifact)
+                   {#.Some artifact}
                    (case (dictionary.value repository (value@ #/.deploy_repositories profile))
-                     (#.Some repository)
+                     {#.Some repository}
                      (/command/deploy.do! console
-                                          (/repository.async (/repository/remote.repository http.default (#.Some identity) repository))
+                                          (/repository.async (/repository/remote.repository http.default {#.Some identity} repository))
                                           (file.async file.default)
                                           artifact
                                           profile)
@@ -190,21 +190,21 @@
                                          /repository.async)
                                     profile))
 
-                (#/cli.Compilation compilation)
+                {#/cli.Compilation compilation}
                 (case compilation
                   #/cli.Build (..command
                                (..with_dependencies program console /command/build.do! profile))
                   #/cli.Test (..command
                               (..with_dependencies program console /command/test.do! profile)))
 
-                (#/cli.Auto auto)
+                {#/cli.Auto auto}
                 (do !
                   [?watcher watch.default]
                   (case ?watcher
-                    (#try.Failure error)
+                    {#try.Failure error}
                     (..fail! error)
                     
-                    (#try.Success watcher)
+                    {#try.Success watcher}
                     (..command
                      (case auto
                        #/cli.Build (..with_dependencies program console (/command/auto.do! /command/auto.delay watcher /command/build.do!) profile)
diff --git a/stdlib/source/program/aedifex/artifact/snapshot.lux b/stdlib/source/program/aedifex/artifact/snapshot.lux
index 0a0d5cd94..64ff5d7b7 100644
--- a/stdlib/source/program/aedifex/artifact/snapshot.lux
+++ b/stdlib/source/program/aedifex/artifact/snapshot.lux
@@ -18,7 +18,7 @@
 (type: .public Snapshot
   (Variant
    #Local
-   (#Remote Stamp)))
+   {#Remote Stamp}))
 
 (implementation: any_equivalence
   (Equivalence Any)
@@ -45,9 +45,9 @@
 
 (def: local_copy_format
   XML
-  (#xml.Node 
-             xml.attributes
-             (list (#xml.Text ..local_copy_value))))
+  {#xml.Node 
+   xml.attributes
+   (list {#xml.Text ..local_copy_value})})
 
 (def: local_copy_parser
   (Parser Any)
@@ -57,12 +57,12 @@
 
 (def: .public (format snapshot)
   (-> Snapshot XML)
-  (<| (#xml.Node .. xml.attributes)
+  (<| {#xml.Node .. xml.attributes}
       (case snapshot
         #Local
         (list ..local_copy_format)
         
-        (#Remote stamp)
+        {#Remote stamp}
         (/stamp.format stamp))))
 
 (def: .public parser
diff --git a/stdlib/source/program/aedifex/artifact/snapshot/build.lux b/stdlib/source/program/aedifex/artifact/snapshot/build.lux
index a7e9e2fc8..4960f5862 100644
--- a/stdlib/source/program/aedifex/artifact/snapshot/build.lux
+++ b/stdlib/source/program/aedifex/artifact/snapshot/build.lux
@@ -33,7 +33,7 @@
   (|>> %.nat
        #xml.Text
        list
-       (#xml.Node ..tag xml.attributes)))
+       {#xml.Node ..tag xml.attributes}))
 
 (def: .public parser
   (Parser Build)
diff --git a/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux b/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux
index 0a951c097..a840bd3c0 100644
--- a/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux
+++ b/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux
@@ -35,9 +35,9 @@
 (def: time_format
   (-> Time XML)
   (|>> //time.format
-       #xml.Text
+       {#xml.Text}
        list
-       (#xml.Node .. xml.attributes)))
+       {#xml.Node .. xml.attributes}))
 
 (def: .public (format (^slots [#time #build]))
   (-> Stamp (List XML))
diff --git a/stdlib/source/program/aedifex/artifact/snapshot/version.lux b/stdlib/source/program/aedifex/artifact/snapshot/version.lux
index 33238b990..2dac99df9 100644
--- a/stdlib/source/program/aedifex/artifact/snapshot/version.lux
+++ b/stdlib/source/program/aedifex/artifact/snapshot/version.lux
@@ -43,11 +43,11 @@
 
 (def: (text_format tag value)
   (-> xml.Tag Text XML)
-  (|> value #xml.Text list (#xml.Node tag xml.attributes)))
+  (|> value #xml.Text list {#xml.Node tag xml.attributes}))
 
 (def: .public (format (^slots [#extension #value #updated]))
   (-> Version XML)
-  (<| (#xml.Node .. xml.attributes)
+  (<| {#xml.Node .. xml.attributes}
       (list (..text_format .. extension)
             (..text_format .. value)
             (..text_format .. (///time.format updated)))))
diff --git a/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux b/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux
index dc3744f4f..5f1816b3e 100644
--- a/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux
+++ b/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux
@@ -35,7 +35,7 @@
     #///.Local
     version
     
-    (#///.Remote stamp)
+    {#///.Remote stamp}
     (let [(^slots [#///stamp.time #///stamp.build]) stamp]
       (%.format (text.replaced ..snapshot
                                (///time.format time)
diff --git a/stdlib/source/program/aedifex/artifact/time/date.lux b/stdlib/source/program/aedifex/artifact/time/date.lux
index 3da3c1b86..167d0d2a2 100644
--- a/stdlib/source/program/aedifex/artifact/time/date.lux
+++ b/stdlib/source/program/aedifex/artifact/time/date.lux
@@ -51,7 +51,7 @@
       (if (or (i.< ..min_year year)
               (i.> ..max_year year))
         (exception.except ..year_is_out_of_range [(date.year raw)])
-        (#try.Success (:abstraction raw)))))
+        {#try.Success (:abstraction raw)})))
 
   (def: .public value
     (-> Date date.Date)
diff --git a/stdlib/source/program/aedifex/artifact/versioning.lux b/stdlib/source/program/aedifex/artifact/versioning.lux
index 644af3fa1..cf30987d2 100644
--- a/stdlib/source/program/aedifex/artifact/versioning.lux
+++ b/stdlib/source/program/aedifex/artifact/versioning.lux
@@ -59,16 +59,16 @@
 
 (def: last_updated_format
   (-> //time.Time XML)
-  (|>> //time.format #xml.Text list (#xml.Node .. xml.attributes)))
+  (|>> //time.format #xml.Text list {#xml.Node .. xml.attributes}))
 
 (def: .public (format (^slots [#snapshot #last_updated #versions]))
   (-> Versioning XML)
-  (<| (#xml.Node .. xml.attributes)
+  (<| {#xml.Node .. xml.attributes}
       (list (//snapshot.format snapshot)
             (..last_updated_format last_updated)
             (|> versions
                 (list\each //snapshot/version.format)
-                (#xml.Node .. xml.attributes)))))
+                {#xml.Node .. xml.attributes}))))
 
 (def: (text tag)
   (-> xml.Tag (Parser Text))
diff --git a/stdlib/source/program/aedifex/cli.lux b/stdlib/source/program/aedifex/cli.lux
index 04706756f..fc4cf5440 100644
--- a/stdlib/source/program/aedifex/cli.lux
+++ b/stdlib/source/program/aedifex/cli.lux
@@ -44,9 +44,9 @@
    #POM
    #Dependencies
    #Install
-   (#Deploy Text Identity)
-   (#Compilation Compilation)
-   (#Auto Compilation)))
+   {#Deploy Text Identity}
+   {#Compilation Compilation}
+   {#Auto Compilation}))
 
 (def: .public equivalence
   (Equivalence Command)
@@ -97,7 +97,7 @@
                    (do <>.monad
                      [head cli.any
                       [tail command] command]
-                     (in [(#.Item head tail) command])))
+                     (in [{#.Item head tail} command])))
          (\ <>.monad each (|>> [(list /.default)])
             ..command')
          ))))
diff --git a/stdlib/source/program/aedifex/command/auto.lux b/stdlib/source/program/aedifex/command/auto.lux
index dc065c399..0b82f4d81 100644
--- a/stdlib/source/program/aedifex/command/auto.lux
+++ b/stdlib/source/program/aedifex/command/auto.lux
@@ -41,7 +41,7 @@
 
 (def: (pause delay)
   (-> Nat (Async (Try Any)))
-  (async.after delay (#try.Success [])))
+  (async.after delay {#try.Success []}))
 
 (def: .public (do! delay watcher command)
   (All (_ a)
@@ -65,7 +65,7 @@
                 [_ (..pause delay)
                  events (\ watcher poll [])]
                 (case events
-                  (#.Item _)
+                  {#.Item _}
                   (do !
                     [_ ]
                     (recur []))
diff --git a/stdlib/source/program/aedifex/command/build.lux b/stdlib/source/program/aedifex/command/build.lux
index 7d4592179..63d2affb7 100644
--- a/stdlib/source/program/aedifex/command/build.lux
+++ b/stdlib/source/program/aedifex/command/build.lux
@@ -51,7 +51,7 @@
        (list.one (function (_ [dependency package])
                    (if (and (text\= group (value@ [#///dependency.artifact #///artifact.group] dependency))
                             (text\= name (value@ [#///dependency.artifact #///artifact.name] dependency)))
-                     (#.Some dependency)
+                     {#.Some dependency}
                      #.None)))))
 
 (def: .public lux_group
@@ -75,11 +75,11 @@
 
 (type: .public Compiler
   (Variant
-   (#JVM Dependency)
-   (#JS Dependency)
-   (#Python Dependency)
-   (#Lua Dependency)
-   (#Ruby Dependency)))
+   {#JVM Dependency}
+   {#JS Dependency}
+   {#Python Dependency}
+   {#Lua Dependency}
+   {#Ruby Dependency}))
 
 (def: (remove_dependency dependency)
   (-> Dependency (-> Resolution Resolution))
@@ -91,12 +91,12 @@
   (-> Resolution Dependency (Try [Resolution Compiler]))
   (let [[[compiler_group compiler_name compiler_version] compiler_type] compiler_dependency]
     (case (..dependency_finder compiler_group compiler_name resolution)
-      (#.Some dependency)
+      {#.Some dependency}
       (case compiler_name
         (^template [ ]
           [(^ (static ))
-           (#try.Success [(..remove_dependency dependency resolution)
-                          ( dependency)])])
+           {#try.Success [(..remove_dependency dependency resolution)
+                          { dependency}]}])
         ([#JVM ..jvm_compiler_name]
          [#JS ..js_compiler_name]
          [#Python ..python_compiler_name]
@@ -139,16 +139,16 @@
     (loop [left (text.all_split_by ..version_separator left)
            right (text.all_split_by ..version_separator right)]
       (case [left right]
-        [(#.Item leftH leftT) (#.Item rightH rightT)]
+        [{#.Item leftH leftT} {#.Item rightH rightT}]
         (if (text\= leftH rightH)
           (recur leftT rightT)
           (or (n.< (text.size leftH) (text.size rightH))
               (text\< leftH rightH)))
 
-        [(#.Item leftH leftT) #.End]
+        [{#.Item leftH leftT} #.End]
         false
 
-        [#.End (#.Item rightH rightT)]
+        [#.End {#.Item rightH rightT}]
         true
 
         [#.End #.End]
@@ -166,7 +166,7 @@
                                    (value@ #///artifact.name artifact)]
                          version (value@ #///artifact.version artifact)]
                      (case (dictionary.value identity uniques)
-                       (#.Some [current_version current_path])
+                       {#.Some [current_version current_path]}
                        (if (\ version_order < version current_version)
                          (dictionary.has identity [version dependency] uniques)
                          uniques)
@@ -203,18 +203,18 @@
            _ (|> (\ process  [])
                  (async.upon! (function (recur ?line)
                                 (case ?line
-                                  (#try.Failure error)
+                                  {#try.Failure error}
                                   (if (exception.match? shell.no_more_output error)
-                                    (write! (#try.Success []))
+                                    (write! {#try.Success []})
                                     (async.upon! write! (console.write_line error console)))
                                   
-                                  (#try.Success line)
+                                  {#try.Success line}
                                   (async.upon! (function (_ outcome)
                                                  (case outcome
-                                                   (#try.Failure error)
-                                                   (write! (#try.Failure error))
+                                                   {#try.Failure error}
+                                                   (write! {#try.Failure error})
 
-                                                   (#try.Success _)
+                                                   {#try.Success _}
                                                    (async.upon! recur
                                                                 (\ process  []))))
                                                (console.write_line line console)))))
@@ -245,7 +245,7 @@
 (def: (jvm_class_path host_dependencies)
   (-> (List Path) Text)
   (|> host_dependencies
-      (#.Item ".")
+      {#.Item "."}
       (text.interposed ..jvm_class_path_separator)))
 
 (def: .public (with_jvm_class_path host_dependencies runtime)
@@ -267,7 +267,7 @@
         #.None
         (async\in (exception.except ..no_specified_program []))
 
-        (#.Some program_module)
+        {#.Some program_module}
         (do async.monad
           [environment (program.environment async.monad program)
            .let [home (\ program home)
@@ -276,14 +276,14 @@
             [[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)
+                                                        {#JVM dependency}
                                                         [(|> (value@ #///.java profile)
                                                              (with@ #///runtime.parameters (list "program._"))
-                                                             (with_jvm_class_path (#.Item (..path fs home dependency) host_dependencies)))
+                                                             (with_jvm_class_path {#.Item (..path fs home dependency) host_dependencies}))
                                                          "program.jar"]
                                                         
                                                         (^template [  ]
-                                                          [( dependency)
+                                                          [{ dependency}
                                                            [(|> dependency
                                                                 (..path fs home)
                                                                 (///runtime.for (value@  profile)))
diff --git a/stdlib/source/program/aedifex/command/deploy.lux b/stdlib/source/program/aedifex/command/deploy.lux
index ee2cc3c71..4d18f1b18 100644
--- a/stdlib/source/program/aedifex/command/deploy.lux
+++ b/stdlib/source/program/aedifex/command/deploy.lux
@@ -71,7 +71,7 @@
         (let [pom_data (|> pom
                            (\ xml.codec encoded)
                            (\ utf8.codec encoded))]
-          [#///package.origin (#///repository/origin.Remote "")
+          [#///package.origin {#///repository/origin.Remote ""}
            #///package.library [library
                                 (///dependency/status.verified library)]
            #///package.pom [pom
diff --git a/stdlib/source/program/aedifex/command/deps.lux b/stdlib/source/program/aedifex/command/deps.lux
index 0cce84d7c..f26a76211 100644
--- a/stdlib/source/program/aedifex/command/deps.lux
+++ b/stdlib/source/program/aedifex/command/deps.lux
@@ -42,7 +42,7 @@
   (do async.monad
     [.let [dependencies (|> (value@ #///.dependencies profile)
                             set.list
-                            (#.Item (value@ #///.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 660d82477..65575f63f 100644
--- a/stdlib/source/program/aedifex/command/install.lux
+++ b/stdlib/source/program/aedifex/command/install.lux
@@ -52,7 +52,7 @@
 (def: .public (do! console fs repository profile)
   (-> (Console Async) (file.System Async) (Repository Async) (Command Any))
   (case (value@ #/.identity profile)
-    (#.Some identity)
+    {#.Some identity}
     (do ///action.monad
       [package (|> profile
                    (value@ #/.sources)
@@ -66,7 +66,7 @@
                                        (let [pom_data (|> pom
                                                           (\ xml.codec encoded)
                                                           (\ utf8.codec encoded))]
-                                         [#///package.origin (#///origin.Local "")
+                                         [#///package.origin {#///origin.Local ""}
                                           #///package.library (let [library (binary.result tar.writer package)]
                                                                 [library (///dependency/status.verified library)])
                                           #///package.pom [pom
diff --git a/stdlib/source/program/aedifex/command/test.lux b/stdlib/source/program/aedifex/command/test.lux
index 35c805645..3e5cad3c6 100644
--- a/stdlib/source/program/aedifex/command/test.lux
+++ b/stdlib/source/program/aedifex/command/test.lux
@@ -42,13 +42,13 @@
           [_ (console.write_line ..start console)
            .let [host_dependencies (//build.host_dependencies fs home resolution)
                  [test_command test_parameters] (case compiler
-                                                  (#//build.JVM dependency)
+                                                  {#//build.JVM dependency}
                                                   (|> program
                                                       (///runtime.for (value@ #///.java profile))
                                                       (//build.with_jvm_class_path host_dependencies))
                                                   
                                                   (^template [ ]
-                                                    [( artifact)
+                                                    [{ artifact}
                                                      (///runtime.for (value@  profile)
                                                                      program)])
                                                   ([#//build.JS #///.js]
diff --git a/stdlib/source/program/aedifex/dependency/deployment.lux b/stdlib/source/program/aedifex/dependency/deployment.lux
index fa6da0bc0..84170965c 100644
--- a/stdlib/source/program/aedifex/dependency/deployment.lux
+++ b/stdlib/source/program/aedifex/dependency/deployment.lux
@@ -56,15 +56,15 @@
         #///dependency/status.Unverified
         (in [])
         
-        (#///dependency/status.Partial partial)
+        {#///dependency/status.Partial partial}
         (case partial
-          (#.Left sha-1)
+          {#.Left sha-1}
           (deploy_hash ///hash.sha-1_codec ///artifact/extension.sha-1 sha-1)
           
-          (#.Right md5)
+          {#.Right md5}
           (deploy_hash ///hash.md5_codec ///artifact/extension.md5 md5))
         
-        (#///dependency/status.Verified sha-1 md5)
+        {#///dependency/status.Verified sha-1 md5}
         (do !
           [_ (deploy_hash ///hash.sha-1_codec ///artifact/extension.sha-1 sha-1)]
           (deploy_hash ///hash.md5_codec ///artifact/extension.md5 md5))))))
@@ -78,12 +78,12 @@
              #///dependency/status.Unverified
              (list)
              
-             (#///dependency/status.Partial partial)
+             {#///dependency/status.Partial partial}
              (list (case partial
-                     (#.Left _) 
-                     (#.Right _) ))
+                     {#.Left _} 
+                     {#.Right _} ))
              
-             (#///dependency/status.Verified _)
+             {#///dependency/status.Verified _}
              (list  )))))
 
 (def: (update_snapshot [artifact type] now snapshot)
@@ -99,8 +99,8 @@
                                       #///artifact/snapshot.Local
                                       #///artifact/snapshot.Local
                                       
-                                      (#///artifact/snapshot.Remote [_ build])
-                                      (#///artifact/snapshot.Remote [now (++ build)]))))
+                                      {#///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
diff --git a/stdlib/source/program/aedifex/dependency/resolution.lux b/stdlib/source/program/aedifex/dependency/resolution.lux
index ce54d9d9a..3c8241595 100644
--- a/stdlib/source/program/aedifex/dependency/resolution.lux
+++ b/stdlib/source/program/aedifex/dependency/resolution.lux
@@ -85,7 +85,7 @@
   (do async.monad
     [?actual (\ repository download (///repository/remote.uri version_template artifact extension))]
     (case ?actual
-      (#try.Success actual)
+      {#try.Success actual}
       (in (do [! try.monad]
             [output (\ ! each (for [@.old (|>> (:as java/lang/String)
                                                java/lang/String::trim
@@ -99,10 +99,10 @@
                         (\ codec decoded))
              _ (exception.assertion exception [artifact extension output]
                                     (\ ///hash.equivalence = (hash library) actual))]
-            (in (#.Some actual))))
+            (in {#.Some actual})))
       
-      (#try.Failure error)
-      (in (#try.Success #.None)))))
+      {#try.Failure error}
+      (in {#try.Success #.None}))))
 
 (def: (hashed repository version_template artifact extension)
   (-> (Repository Async) Version Artifact Extension (Async (Try [Binary Status])))
@@ -115,14 +115,14 @@
                            repository version_template artifact (format extension ///artifact/extension.md5)
                            ///hash.md5 ///hash.md5_codec ..md5_does_not_match)]
     (in [data (case [?sha-1 ?md5]
-                [(#.Some sha-1) (#.Some md5)]
-                (#//status.Verified sha-1 md5)
+                [{#.Some sha-1} {#.Some md5}]
+                {#//status.Verified sha-1 md5}
 
-                [(#.Some sha-1) #.None]
-                (#//status.Partial (#.Left sha-1))
+                [{#.Some sha-1} #.None]
+                {#//status.Partial {#.Left sha-1}}
 
-                [#.None (#.Some md5)]
-                (#//status.Partial (#.Right md5))
+                [#.None {#.Some md5}]
+                {#//status.Partial {#.Right md5}}
 
                 [#.None #.None]
                 #//status.Unverified)])))
@@ -144,7 +144,7 @@
            [pom (\ utf8.codec decoded pom_data)
             pom (\ xml.codec decoded pom)
             profile (.result ///pom.parser (list pom))]
-           (in [#///package.origin (#///repository/origin.Remote "")
+           (in [#///package.origin {#///repository/origin.Remote ""}
                 #///package.library library_&_status
                 #///package.pom [pom pom_data pom_status]]))))))
 
@@ -187,17 +187,17 @@
         (exception.except ..cannot_resolve)
         (\ async.monad in))
 
-    (#.Item repository alternatives)
+    {#.Item repository alternatives}
     (do [! async.monad]
       [_ (..announce_fetching console repository (value@ #//.artifact dependency))
        outcome (..one repository dependency)]
       (case outcome
-        (#try.Success package)
+        {#try.Success package}
         (do !
           [_ (..announce_success console repository (value@ #//.artifact dependency))]
           (in outcome))
 
-        (#try.Failure error)
+        {#try.Failure error}
         (do !
           [_ (..announce_failure console repository (value@ #//.artifact dependency))]
           (any console alternatives dependency))))))
@@ -217,7 +217,7 @@
       (\ async.monad in
          [successes failures resolution])
 
-      (#.Item head tail)
+      {#.Item head tail}
       (case (value@ [#//.artifact #///artifact.version] head)
         ... Skip if there is no version
         "" (recur repositories
@@ -227,13 +227,13 @@
                   resolution)
         _ (do [! async.monad]
             [?package (case (dictionary.value head resolution)
-                        (#.Some package)
-                        (in (#try.Success package))
+                        {#.Some package}
+                        (in {#try.Success package})
 
                         #.None
                         (..any console repositories head))]
             (case ?package
-              (#try.Success package)
+              {#try.Success package}
               (do !
                 [.let [redundant? (: (Predicate Dependency)
                                      (predicate.or (\ //.equivalence = head)
@@ -252,15 +252,15 @@
                        ... sub_repositories (list\composite repositories package_repositories)
                        ]]
                 (recur repositories
-                       (#.Item head successes)
+                       {#.Item head successes}
                        failures
                        (set.list (set.union (set.of_list //.hash tail)
                                             (set.of_list //.hash sub_dependencies)))
                        (dictionary.has head package resolution)))
 
-              (#try.Failure error)
+              {#try.Failure error}
               (recur repositories
                      successes
-                     (#.Item head failures)
+                     {#.Item head failures}
                      tail
                      resolution)))))))
diff --git a/stdlib/source/program/aedifex/dependency/status.lux b/stdlib/source/program/aedifex/dependency/status.lux
index f5439114e..150d3120b 100644
--- a/stdlib/source/program/aedifex/dependency/status.lux
+++ b/stdlib/source/program/aedifex/dependency/status.lux
@@ -13,9 +13,9 @@
 (type: .public Status
   (Variant
    #Unverified
-   (#Partial (Either (Hash SHA-1)
-                     (Hash MD5)))
-   (#Verified (Hash SHA-1) (Hash MD5))))
+   {#Partial (Either (Hash SHA-1)
+                     (Hash MD5))}
+   {#Verified (Hash SHA-1) (Hash MD5)}))
 
 (implementation: any_equivalence
   (Equivalence Any)
@@ -37,6 +37,6 @@
 
 (def: .public (verified payload)
   (-> Binary Status)
-  (#Verified
+  {#Verified
    (///hash.sha-1 payload)
-   (///hash.md5 payload)))
+   (///hash.md5 payload)})
diff --git a/stdlib/source/program/aedifex/format.lux b/stdlib/source/program/aedifex/format.lux
index 3f626f0e2..5f7669366 100644
--- a/stdlib/source/program/aedifex/format.lux
+++ b/stdlib/source/program/aedifex/format.lux
@@ -44,7 +44,7 @@
     (`' [#name (~ (code.text name))
          #url (~ (code.text url))])
 
-    (#.Some value)
+    {#.Some value}
     (`' [#name (~ (code.text name))
          #url (~ (code.text url))
          #organization (~ (..organization value))])))
@@ -75,7 +75,7 @@
     #.None
     aggregate
 
-    (#.Some value)
+    {#.Some value}
     (dictionary.has field (format value) aggregate)))
 
 (def: (on_list field value format aggregate)
diff --git a/stdlib/source/program/aedifex/hash.lux b/stdlib/source/program/aedifex/hash.lux
index 74e54679f..b25dedbb3 100644
--- a/stdlib/source/program/aedifex/hash.lux
+++ b/stdlib/source/program/aedifex/hash.lux
@@ -99,7 +99,7 @@
      [(def: .public ( data)
         (-> Binary (Try (Hash )))
         (if (n.=  (binary.size data))
-          (#try.Success (:abstraction data))
+          {#try.Success (:abstraction data)}
           (exception.except  [data])))]
 
      [as_sha-1 SHA-1 ..sha-1::size ..not_a_sha-1]
@@ -125,7 +125,7 @@
                 output (binary.empty hash_size)]
            (let [index (n.* chunk i64.bytes_per_i64)]
              (case (text.split_at ..hex_per_chunk input)
-               (#.Some [head tail])
+               {#.Some [head tail]}
                (do try.monad
                  [head (\ n.hex decoded head)
                   output (binary.write/64! index head output)]
diff --git a/stdlib/source/program/aedifex/input.lux b/stdlib/source/program/aedifex/input.lux
index 02e212744..aa76979a8 100644
--- a/stdlib/source/program/aedifex/input.lux
+++ b/stdlib/source/program/aedifex/input.lux
@@ -36,11 +36,11 @@
                             syntax.no_aliases
                             (text.size source_code))]
     (case (parse [location.dummy 0 source_code])
-      (#.Left [_ error])
-      (#try.Failure error)
+      {#.Left [_ error]}
+      {#try.Failure error}
       
-      (#.Right [_ lux_code])
-      (#try.Success lux_code))))
+      {#.Right [_ lux_code]}
+      {#try.Success lux_code})))
 
 (def: project_parser
   (-> Binary (Try Project))
diff --git a/stdlib/source/program/aedifex/metadata/artifact.lux b/stdlib/source/program/aedifex/metadata/artifact.lux
index 571d9bff1..b56c66104 100644
--- a/stdlib/source/program/aedifex/metadata/artifact.lux
+++ b/stdlib/source/program/aedifex/metadata/artifact.lux
@@ -84,7 +84,7 @@
 (template [   
]
   [(def: 
      (->  XML)
-     (|>> 
 #xml.Text list (#xml.Node  xml.attributes)))]
+     (|>> 
 {#xml.Text} list {#xml.Node  xml.attributes}))]
 
   [group_format Group .. (|>)]
   [name_format Name .. (|>)]
@@ -94,18 +94,18 @@
 
 (def: versions_format
   (-> (List Version) XML)
-  (|>> (list\each ..version_format) (#xml.Node .. xml.attributes)))
+  (|>> (list\each ..version_format) {#xml.Node .. xml.attributes}))
 
 (def: .public (format value)
   (-> Metadata XML)
-  (#xml.Node ..
-             xml.attributes
-             (list (..group_format (value@ #group value))
-                   (..name_format (value@ #name value))
-                   (#xml.Node ..
-                              xml.attributes
-                              (list (..versions_format (value@ #versions value))
-                                    (..last_updated_format (value@ #last_updated value)))))))
+  {#xml.Node ..
+   xml.attributes
+   (list (..group_format (value@ #group value))
+         (..name_format (value@ #name value))
+         {#xml.Node ..
+          xml.attributes
+          (list (..versions_format (value@ #versions value))
+                (..last_updated_format (value@ #last_updated value)))})})
 
 (def: (text tag)
   (-> xml.Tag (Parser Text))
@@ -178,20 +178,20 @@
   (do async.monad
     [project (\ repository download (..uri artifact))]
     (case project
-      (#try.Success project)
+      {#try.Success project}
       (in (|> project
               (do> try.monad
                    [(\ utf8.codec decoded)]
                    [(\ xml.codec decoded)]
                    [list (.result ..parser)])))
       
-      (#try.Failure error)
-      (in (#try.Success
+      {#try.Failure error}
+      (in {#try.Success
            (let [(^slots [#///artifact.group #///artifact.name]) artifact]
              [#group group
               #name name
               #versions (list)
-              #last_updated ..epoch]))))))
+              #last_updated ..epoch])}))))
 
 (def: .public (write repository artifact metadata)
   (-> (Repository Async) Artifact Metadata (Async (Try Any)))
diff --git a/stdlib/source/program/aedifex/metadata/snapshot.lux b/stdlib/source/program/aedifex/metadata/snapshot.lux
index 53f5faee0..58792b042 100644
--- a/stdlib/source/program/aedifex/metadata/snapshot.lux
+++ b/stdlib/source/program/aedifex/metadata/snapshot.lux
@@ -62,7 +62,7 @@
 (template [   
]
   [(def: 
      (->  XML)
-     (|>> 
 #xml.Text list (#xml.Node  xml.attributes)))]
+     (|>> 
 #xml.Text list {#xml.Node  xml.attributes}))]
 
   [group_format Group .. (|>)]
   [name_format Name .. (|>)]
@@ -72,12 +72,12 @@
 (def: .public (format (^slots [#artifact #versioning]))
   (-> Metadata XML)
   (let [(^slots [#///artifact.group #///artifact.name #///artifact.version]) artifact]
-    (#xml.Node ..
-               xml.attributes
-               (list (..group_format group)
-                     (..name_format name)
-                     (..version_format version)
-                     (///artifact/versioning.format versioning)))))
+    {#xml.Node ..
+     xml.attributes
+     (list (..group_format group)
+           (..name_format name)
+           (..version_format version)
+           (///artifact/versioning.format versioning))}))
 
 (def: (text tag)
   (-> xml.Tag (Parser Text))
@@ -128,17 +128,17 @@
   (do async.monad
     [project (\ repository download (..uri artifact))]
     (case project
-      (#try.Success project)
+      {#try.Success project}
       (in (|> project
               (do> try.monad
                    [(\ utf8.codec decoded)]
                    [(\ xml.codec decoded)]
                    [list (.result ..parser)])))
       
-      (#try.Failure error)
-      (in (#try.Success
+      {#try.Failure error}
+      (in {#try.Success
            [#artifact artifact
-            #versioning ///artifact/versioning.init])))))
+            #versioning ///artifact/versioning.init]}))))
 
 (def: .public (write repository artifact metadata)
   (-> (Repository Async) Artifact Metadata (Async (Try Any)))
diff --git a/stdlib/source/program/aedifex/package.lux b/stdlib/source/program/aedifex/package.lux
index bd149b0d9..62757c9b0 100644
--- a/stdlib/source/program/aedifex/package.lux
+++ b/stdlib/source/program/aedifex/package.lux
@@ -38,7 +38,7 @@
   [(def: .public ( package)
      (-> Package Bit)
      (case (value@ #origin package)
-       ( _)
+       { _}
        true
        
        _
@@ -50,15 +50,15 @@
 
 (def: .public (local pom library)
   (-> XML Binary Package)
-  [#origin (#//origin.Local "")
+  [#origin {#//origin.Local ""}
    #library [library
-             (#//status.Verified (//hash.sha-1 library)
-                                 (//hash.md5 library))]
+             {#//status.Verified (//hash.sha-1 library)
+              (//hash.md5 library)}]
    #pom (let [binary_pom (|> pom (\ xml.codec encoded) (\ utf8.codec encoded))]
           [pom
            binary_pom
-           (#//status.Verified (//hash.sha-1 binary_pom)
-                               (//hash.md5 binary_pom))])])
+           {#//status.Verified (//hash.sha-1 binary_pom)
+            (//hash.md5 binary_pom)}])])
 
 (def: .public dependencies
   (-> Package (Try (Set Dependency)))
diff --git a/stdlib/source/program/aedifex/parser.lux b/stdlib/source/program/aedifex/parser.lux
index 02840c2ec..b3239d4e2 100644
--- a/stdlib/source/program/aedifex/parser.lux
+++ b/stdlib/source/program/aedifex/parser.lux
@@ -31,7 +31,7 @@
 (def: (as_input input)
   (-> (Maybe Code) (List Code))
   (case input
-    (#.Some input)
+    {#.Some input}
     (list input)
     
     #.None
diff --git a/stdlib/source/program/aedifex/pom.lux b/stdlib/source/program/aedifex/pom.lux
index 7cf6f961e..49e3793fe 100644
--- a/stdlib/source/program/aedifex/pom.lux
+++ b/stdlib/source/program/aedifex/pom.lux
@@ -47,14 +47,14 @@
 
 (def: version
   XML
-  (#_.Node ["" "modelVersion"] _.attributes
-           (list (#_.Text "4.0.0"))))
+  {#_.Node ["" "modelVersion"] _.attributes
+   (list {#_.Text "4.0.0"})})
 
 (def: (property tag value)
   (-> Text Text XML)
-  (#_.Node ["" tag]
-           _.attributes
-           (list (#_.Text value))))
+  {#_.Node ["" tag]
+   _.attributes
+   (list {#_.Text value})})
 
 (def: (artifact value)
   (-> Artifact (List XML))
@@ -73,37 +73,37 @@
   (|> (list (..property "name" name)
             (..property ..url_tag url)
             (..distribution distribution))
-      (#_.Node ["" "license"] _.attributes)))
+      {#_.Node ["" "license"] _.attributes}))
 
 (def: repository
   (-> Address XML)
   (|>> (..property ..url_tag)
        list
-       (#_.Node ["" ..repository_tag] _.attributes)))
+       {#_.Node ["" ..repository_tag] _.attributes}))
 
 (def: (dependency value)
   (-> Dependency XML)
-  (#_.Node ["" ..dependency_tag]
-           _.attributes
-           (list\composite (..artifact (value@ #//dependency.artifact value))
-                           (list (..property "type" (value@ #//dependency.type value))))))
+  {#_.Node ["" ..dependency_tag]
+   _.attributes
+   (list\composite (..artifact (value@ #//dependency.artifact value))
+                   (list (..property "type" (value@ #//dependency.type value))))})
 
 (def: (group tag)
   (-> Text (-> (List XML) XML))
-  (|>> (#_.Node ["" tag] _.attributes)))
+  (|>> {#_.Node ["" tag] _.attributes}))
 
 (comment
   (def: scm
     (-> /.SCM XML)
     (|>> (..property ..url_tag)
          list
-         (#_.Node ["" "scm"] _.attributes)))
+         {#_.Node ["" "scm"] _.attributes}))
 
   (def: (organization [name url])
     (-> /.Organization XML)
     (|> (list (..property "name" name)
               (..property ..url_tag url))
-        (#_.Node ["" "organization"] _.attributes)))
+        {#_.Node ["" "organization"] _.attributes}))
 
   (def: (developer_organization [name url])
     (-> /.Organization (List XML))
@@ -119,7 +119,7 @@
   (template [  ]
     [(def: 
        (->  XML)
-       (|>> ..developer' (#_.Node ["" ] _.attributes)))]
+       (|>> ..developer' {#_.Node ["" ] _.attributes}))]
 
     [developer /.Developer "developer"]
     [contributor /.Contributor "contributor"]
@@ -141,15 +141,15 @@
 (def: .public (write value)
   (-> /.Profile (Try XML))
   (case (value@ #/.identity value)
-    (#.Some identity)
-    (#try.Success
-     (#_.Node ["" ..project_tag] _.attributes
-              ($_ list\composite
-                  (list ..version)
-                  (..artifact identity)
-                  (|> value (value@ #/.repositories) set.list (list\each ..repository) (..group "repositories") list)
-                  (|> value (value@ #/.dependencies) set.list (list\each ..dependency) (..group ..dependencies_tag) list)
-                  )))
+    {#.Some identity}
+    {#try.Success
+     {#_.Node ["" ..project_tag] _.attributes
+      ($_ list\composite
+          (list ..version)
+          (..artifact identity)
+          (|> value (value@ #/.repositories) set.list (list\each ..repository) (..group "repositories") list)
+          (|> value (value@ #/.dependencies) set.list (list\each ..dependency) (..group ..dependencies_tag) list)
+          )}}
 
     _
     (exception.except /.no_identity [])))
diff --git a/stdlib/source/program/aedifex/project.lux b/stdlib/source/program/aedifex/project.lux
index 1d1d55998..acf3c3819 100644
--- a/stdlib/source/program/aedifex/project.lux
+++ b/stdlib/source/program/aedifex/project.lux
@@ -54,10 +54,10 @@
 (def: (profile' lineage project name)
   (-> (Set Name) Project Name (Try Profile))
   (case (dictionary.value name project)
-    (#.Some profile)
+    {#.Some profile}
     (case (list.example (set.member? lineage)
                         (value@ #//.parents profile))
-      (#.Some ouroboros)
+      {#.Some ouroboros}
       (exception.except ..circular_dependency [ouroboros name])
       
       #.None
diff --git a/stdlib/source/program/aedifex/repository.lux b/stdlib/source/program/aedifex/repository.lux
index 5cca8174b..b836cfa54 100644
--- a/stdlib/source/program/aedifex/repository.lux
+++ b/stdlib/source/program/aedifex/repository.lux
@@ -57,24 +57,24 @@
         (do [! stm.monad]
           [|state| (stm.read state)]
           (case (\ mock on_download uri |state|)
-            (#try.Success [|state| output])
+            {#try.Success [|state| output]}
             (do !
               [_ (stm.write |state| state)]
-              (in (#try.Success output)))
+              (in {#try.Success output}))
             
-            (#try.Failure error)
-            (in (#try.Failure error))))))
+            {#try.Failure error}
+            (in {#try.Failure error})))))
 
      (def: (upload uri content)
        (stm.commit!
         (do [! stm.monad]
           [|state| (stm.read state)]
           (case (\ mock on_upload uri content |state|)
-            (#try.Success |state|)
+            {#try.Success |state|}
             (do !
               [_ (stm.write |state| state)]
-              (in (#try.Success [])))
+              (in {#try.Success []}))
             
-            (#try.Failure error)
-            (in (#try.Failure error))))))
+            {#try.Failure error}
+            (in {#try.Failure error})))))
      )))
diff --git a/stdlib/source/program/aedifex/repository/local.lux b/stdlib/source/program/aedifex/repository/local.lux
index 2c528a520..508fcba28 100644
--- a/stdlib/source/program/aedifex/repository/local.lux
+++ b/stdlib/source/program/aedifex/repository/local.lux
@@ -53,7 +53,7 @@
        _ (if ?
            (in [])
            (case (file.parent fs absolute_path)
-             (#.Some parent)
+             {#.Some parent}
              (file.make_directories async.monad fs parent)
 
              _
diff --git a/stdlib/source/program/aedifex/repository/origin.lux b/stdlib/source/program/aedifex/repository/origin.lux
index 72163f641..a5a613a1a 100644
--- a/stdlib/source/program/aedifex/repository/origin.lux
+++ b/stdlib/source/program/aedifex/repository/origin.lux
@@ -12,8 +12,8 @@
 
 (type: .public Origin
   (Variant
-   (#Local Path)
-   (#Remote URL)))
+   {#Local Path}
+   {#Remote URL}))
 
 (def: .public equivalence
   (Equivalence Origin)
diff --git a/stdlib/source/program/aedifex/repository/remote.lux b/stdlib/source/program/aedifex/repository/remote.lux
index 4f852c2b7..269ff15a9 100644
--- a/stdlib/source/program/aedifex/repository/remote.lux
+++ b/stdlib/source/program/aedifex/repository/remote.lux
@@ -73,7 +73,7 @@
         
         _
         (do !
-          [_ ((value@ #@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)
@@ -84,12 +84,12 @@
                                                      #.None
                                                      ..base_headers
                                                      
-                                                     (#.Some [user password])
+                                                     {#.Some [user password]}
                                                      (list& ["Authorization" (//identity.basic_auth user password)]
                                                             ..base_headers)))
-                                     (#.Some content)
+                                     {#.Some content}
                                      http))
-       _ ((value@ #@http.body message) (#.Some 0))]
+       _ ((value@ #@http.body message) {#.Some 0})]
       (case status
         (^ (static http/status.created))
         (in [])
diff --git a/stdlib/source/program/compositor.lux b/stdlib/source/program/compositor.lux
index b36d73070..f18f45e54 100644
--- a/stdlib/source/program/compositor.lux
+++ b/stdlib/source/program/compositor.lux
@@ -63,13 +63,13 @@
   (do async.monad
     [?output action]
     (case ?output
-      (#try.Failure error)
+      {#try.Failure error}
       (exec (debug.log! (format text.new_line
                                 failure_description text.new_line
                                 error text.new_line))
         (io.run! (\ world/program.default exit +1)))
 
-      (#try.Success output)
+      {#try.Success output}
       (in output))))
 
 (def: (timed process)
@@ -87,11 +87,11 @@
 (def: (package! fs host_dependencies [packager package] static archive context)
   (-> (file.System Async) (Dictionary file.Path Binary) [Packager file.Path] Static Archive Context (Async (Try Any)))
   (case (packager host_dependencies archive context)
-    (#try.Success content)
+    {#try.Success content}
     (\ fs write content package)
     
-    (#try.Failure error)
-    (\ async.monad in (#try.Failure error))))
+    {#try.Failure error}
+    (\ async.monad in {#try.Failure error})))
 
 (def: (load_host_dependencies fs host_dependencies)
   (-> (file.System Async) (List file.Path) (Async (Try (Dictionary file.Path Binary))))
@@ -104,7 +104,7 @@
         #.End
         (in output)
 
-        (#.Item head tail)
+        {#.Item head tail}
         (do !
           [content (\ fs read head)]
           (recur tail
@@ -131,7 +131,7 @@
     (do [! async.monad]
       [platform (async.future platform)]
       (case service
-        (#/cli.Compilation compilation)
+        {#/cli.Compilation compilation}
         (<| (or_crash! "Compilation failed:")
             ..timed
             (do (try.with async.monad)
@@ -165,14 +165,14 @@
                              program_context)]
               (in (debug.log! "Compilation complete!"))))
 
-        (#/cli.Export export)
+        {#/cli.Export export}
         (<| (or_crash! "Export failed:")
             (do (try.with async.monad)
               [_ (/export.export (value@ #platform.&file_system platform)
                                  export)]
               (in (debug.log! "Export complete!"))))
         
-        (#/cli.Interpretation interpretation)
+        {#/cli.Interpretation interpretation}
         ... TODO: Fix the interpreter...
         (undefined)
         ... (<| (or_crash! "Interpretation failed:")
diff --git a/stdlib/source/program/compositor/cli.lux b/stdlib/source/program/compositor/cli.lux
index 487c3976f..e678f2c6e 100644
--- a/stdlib/source/program/compositor/cli.lux
+++ b/stdlib/source/program/compositor/cli.lux
@@ -33,9 +33,9 @@
 
 (type: .public Service
   (Variant
-   (#Compilation Compilation)
-   (#Interpretation Compilation)
-   (#Export Export)))
+   {#Compilation Compilation}
+   {#Interpretation Compilation}
+   {#Export Export}))
 
 (template [  ]
   [(def: 
@@ -74,7 +74,7 @@
 
 (def: .public target
   (-> Service Target)
-  (|>> (case> (^or (#Compilation [sources host_dependencies libraries target module])
-                   (#Interpretation [sources host_dependencies libraries target module])
-                   (#Export [sources target]))
+  (|>> (case> (^or {#Compilation [sources host_dependencies libraries target module]}
+                   {#Interpretation [sources host_dependencies libraries target module]}
+                   {#Export [sources target]})
               target)))
diff --git a/stdlib/source/program/compositor/export.lux b/stdlib/source/program/compositor/export.lux
index 2fe3171e0..3588e1dde 100644
--- a/stdlib/source/program/compositor/export.lux
+++ b/stdlib/source/program/compositor/export.lux
@@ -51,14 +51,14 @@
                                   (text.replaced (\ fs separator) .module_separator)
                                   tar.path)
                          source_code (tar.content source_code)]
-                        (in (#tar.Normal [path
+                        (in {#tar.Normal [path
                                           (instant.of_millis +0)
                                           ($_ tar.and
                                               tar.read_by_owner tar.write_by_owner
                                               tar.read_by_group tar.write_by_group
                                               tar.read_by_other)
                                           ..no_ownership
-                                          source_code])))))
+                                          source_code]}))))
         (\ try.monad each row.of_list)
         (\ async.monad in))))
 
diff --git a/stdlib/source/program/compositor/import.lux b/stdlib/source/program/compositor/import.lux
index 6b092e546..278e992fb 100644
--- a/stdlib/source/program/compositor/import.lux
+++ b/stdlib/source/program/compositor/import.lux
@@ -54,10 +54,10 @@
                          (\ ! each (|>> row.list
                                         (monad.mix ! (function (_ entry import)
                                                        (case entry
-                                                         (#tar.Normal [path instant mode ownership content])
+                                                         {#tar.Normal [path instant mode ownership content]}
                                                          (let [path (tar.from_path path)]
                                                            (case (dictionary.has' path (tar.data content) import)
-                                                             (#try.Failure error)
+                                                             {#try.Failure error}
                                                              (exception.except ..duplicate [library path])
 
                                                              import'
diff --git a/stdlib/source/specification/aedifex/repository.lux b/stdlib/source/specification/aedifex/repository.lux
index bf430a368..293b7f1e0 100644
--- a/stdlib/source/specification/aedifex/repository.lux
+++ b/stdlib/source/specification/aedifex/repository.lux
@@ -39,7 +39,7 @@
               (_.cover' [/.Repository]
                         (let [successfull_flow!
                               (case [good_upload! good_download!]
-                                [(#try.Success _) (#try.Success actual)]
+                                [{#try.Success _} {#try.Success actual}]
                                 (\ binary.equivalence = expected actual)
 
                                 _
@@ -47,7 +47,7 @@
 
                               failed_flow!
                               (case [bad_upload! bad_download!]
-                                [(#try.Failure _) (#try.Failure _)]
+                                [{#try.Failure _} {#try.Failure _}]
                                 true
 
                                 _
diff --git a/stdlib/source/specification/compositor.lux b/stdlib/source/specification/compositor.lux
index a2569f334..2668d36ca 100644
--- a/stdlib/source/specification/compositor.lux
+++ b/stdlib/source/specification/compositor.lux
@@ -58,10 +58,10 @@
                                                         expander
                                                         program))]]
     (case ?state,runner,definer
-      (#try.Success [[directive_bundle directive_state] runner definer])
+      {#try.Success [[directive_bundle directive_state] runner definer]}
       (..test runner definer
               (value@ [#directive.analysis #directive.state] directive_state)
               expander)
 
-      (#try.Failure error)
+      {#try.Failure error}
       (_.failure error))))
diff --git a/stdlib/source/specification/compositor/analysis/type.lux b/stdlib/source/specification/compositor/analysis/type.lux
index be7677848..f0856eb1f 100644
--- a/stdlib/source/specification/compositor/analysis/type.lux
+++ b/stdlib/source/specification/compositor/analysis/type.lux
@@ -26,10 +26,10 @@
                                  (analysis/type.with_type output_type
                                                           (analysis.phase expander (` ((~ (code.text extension)) (~+ params))))))
       (phase.result state)
-      (case> (#try.Success _)
+      (case> {#try.Success _}
              true
 
-             (#try.Failure _)
+             {#try.Failure _}
              false)))
 
 (def: check
@@ -42,12 +42,12 @@
                         
                         ( value)]))]
 
-                [r.bit (0 #0 "#Bit" (0 #0)) code.bit]
-                [r.nat (0 #0 "#I64" (0 #1 (0 #0 "#Nat" (0 #0)) (0 #0))) code.nat]
-                [r.int (0 #0 "#I64" (0 #1 (0 #0 "#Int" (0 #0)) (0 #0))) code.int]
-                [r.rev (0 #0 "#I64" (0 #1 (0 #0 "#Rev" (0 #0)) (0 #0))) code.rev]
-                [r.safe_frac (0 #0 "#Frac" (0 #0)) code.frac]
-                [(r.ascii/upper_alpha 5) (0 #0 "#Text" (0 #0)) code.text]
+                [r.bit {0 #0 "#Bit" {0 #0}} code.bit]
+                [r.nat {0 #0 "#I64" {0 #1 {0 #0 "#Nat" {0 #0}} {0 #0}}} code.nat]
+                [r.int {0 #0 "#I64" {0 #1 {0 #0 "#Int" {0 #0}} {0 #0}}} code.int]
+                [r.rev {0 #0 "#I64" {0 #1 {0 #0 "#Rev" {0 #0}} {0 #0}}} code.rev]
+                [r.safe_frac {0 #0 "#Frac" {0 #0}} code.frac]
+                [(r.ascii/upper_alpha 5) {0 #0 "#Text" {0 #0}} code.text]
                 )))))
 
 (def: .public (spec expander state)
diff --git a/stdlib/source/specification/compositor/generation/case.lux b/stdlib/source/specification/compositor/generation/case.lux
index d699aa74b..eb27aea29 100644
--- a/stdlib/source/specification/compositor/generation/case.lux
+++ b/stdlib/source/specification/compositor/generation/case.lux
@@ -40,10 +40,10 @@
 
 (def: .public (verify expected)
   (-> Frac (Try Any) Bit)
-  (|>> (case> (#try.Success actual)
+  (|>> (case> {#try.Success actual}
               (f.= expected (:as Frac actual))
 
-              (#try.Failure _)
+              {#try.Failure _}
               false)))
 
 (def: case
@@ -187,11 +187,11 @@
 
 (def: special_path
   Path
-  (let [_end_ (synthesis.path/side (#.Left 0))
-        _item_ (synthesis.path/side (#.Right 0))
-        _head_ (synthesis.path/member (#.Left 0))
-        _tail_ (synthesis.path/member (#.Right 0))
-        _tuple_ (synthesis.path/side (#.Left 9))]
+  (let [_end_ (synthesis.path/side {#.Left 0})
+        _item_ (synthesis.path/side {#.Right 0})
+        _head_ (synthesis.path/member {#.Left 0})
+        _tail_ (synthesis.path/member {#.Right 0})
+        _tuple_ (synthesis.path/side {#.Left 9})]
     ($_ synthesis.path/alt
         ($_ synthesis.path/seq
             _item_
@@ -213,18 +213,18 @@
 
 (def: special_pattern
   analysis.Pattern
-  (let [... [_ (#Tuple (#Item arg args'))]
+  (let [... [_ {#Tuple {#Item arg args'}}]
         head (<| analysis.pattern/tuple (list (analysis.pattern/bind 2))
                  analysis.pattern/variant [9 #0]
                  analysis.pattern/variant [0 #1]
                  analysis.pattern/tuple (list (analysis.pattern/bind 3)
                                               (analysis.pattern/bind 4)))
-        ... (#Item body #End)
+        ... {#Item body #End}
         tail (<| analysis.pattern/variant [0 #1]
                  analysis.pattern/tuple (list (analysis.pattern/bind 5))
                  analysis.pattern/variant [0 #0]
                  (analysis.pattern/unit))]
-    ... (#Item  )
+    ... {#Item  }
     (<| analysis.pattern/variant [0 #1]
         (analysis.pattern/tuple (list head tail)))))
 
@@ -253,28 +253,28 @@
       (_.test "CODE"
               (|> special_input
                   (run "special_input")
-                  (case> (#try.Success output)
+                  (case> {#try.Success output}
                          true
                          
-                         (#try.Failure _)
+                         {#try.Failure _}
                          false)))
       (_.test "PATTERN_MATCHING 0"
               (|> (synthesis.branch/case [special_input
                                           special_path])
                   (run "special_path")
-                  (case> (#try.Success output)
+                  (case> {#try.Success output}
                          true
                          
-                         (#try.Failure _)
+                         {#try.Failure _}
                          false)))
       (_.test "PATTERN_MATCHING 1"
               (|> (synthesis.branch/case [special_input
                                           special_pattern_path])
                   (run "special_pattern_path")
-                  (case> (#try.Success output)
+                  (case> {#try.Success output}
                          true
                          
-                         (#try.Failure _)
+                         {#try.Failure _}
                          false)))
       ))
 
diff --git a/stdlib/source/specification/compositor/generation/common.lux b/stdlib/source/specification/compositor/generation/common.lux
index 2db239415..9c03349f4 100644
--- a/stdlib/source/specification/compositor/generation/common.lux
+++ b/stdlib/source/specification/compositor/generation/common.lux
@@ -39,13 +39,13 @@
      subject r.i64]
     (with_expansions [ (template [  ]
                                  [(_.test 
-                                          (|> (#synthesis.Extension  (list (synthesis.i64 param)
-                                                                                      (synthesis.i64 subject)))
+                                          (|> {#synthesis.Extension  (list (synthesis.i64 param)
+                                                                                      (synthesis.i64 subject))}
                                               (run (..safe ))
-                                              (case> (#try.Success valueT)
+                                              (case> {#try.Success valueT}
                                                      (n.= ( param subject) (:as Nat valueT))
 
-                                                     (#try.Failure _)
+                                                     {#try.Failure _}
                                                      false)
                                               (let [param ])))]
 
@@ -58,16 +58,16 @@
       ($_ _.and
           
           (_.test "lux i64 arithmetic-right-shift"
-                  (|> (#synthesis.Extension "lux i64 arithmetic-right-shift"
-                                            (list (synthesis.i64 subject)
-                                                  (synthesis.i64 param)))
+                  (|> {#synthesis.Extension "lux i64 arithmetic-right-shift"
+                       (list (synthesis.i64 subject)
+                             (synthesis.i64 param))}
                       (run (..safe "lux i64 arithmetic-right-shift"))
-                      (case> (#try.Success valueT)
+                      (case> {#try.Success valueT}
                              ("lux i64 ="
                               (i64.arithmetic_right_shifted param subject)
                               (:as I64 valueT))
 
-                             (#try.Failure _)
+                             {#try.Failure _}
                              false)
                       (let [param (n.% 64 param)])))
           ))))
@@ -80,12 +80,12 @@
     (`` ($_ _.and
             (~~ (template [    ]
                   [(_.test 
-                           (|> (#synthesis.Extension  (list (synthesis.i64 subject)))
+                           (|> {#synthesis.Extension  (list (synthesis.i64 subject))}
                                (run (..safe ))
-                               (case> (#try.Success valueT)
+                               (case> {#try.Success valueT}
                                       ( ( subject) (:as  valueT))
 
-                                      (#try.Failure _)
+                                      {#try.Failure _}
                                       false)
                                (let [subject ])))]
 
@@ -97,13 +97,13 @@
                   ))
             (~~ (template [   ]
                   [(_.test 
-                           (|> (#synthesis.Extension  (list (synthesis.i64 param)
-                                                                       (synthesis.i64 subject)))
+                           (|> {#synthesis.Extension  (list (synthesis.i64 param)
+                                                                       (synthesis.i64 subject))}
                                (run (..safe ))
-                               (case> (#try.Success valueT)
+                               (case> {#try.Success valueT}
                                       ( ( param subject) (:as  valueT))
 
-                                      (#try.Failure _)
+                                      {#try.Failure _}
                                       false)))]
 
                   ["lux i64 +" i.+ Int  i.=]
@@ -128,8 +128,8 @@
     (`` ($_ _.and
             (~~ (template [  ]
                   [(_.test 
-                           (|> (#synthesis.Extension  (list (synthesis.f64 param)
-                                                                       (synthesis.f64 subject)))
+                           (|> {#synthesis.Extension  (list (synthesis.f64 param)
+                                                                       (synthesis.f64 subject))}
                                (run (..safe ))
                                (//case.verify ( param subject))))]
 
@@ -141,10 +141,10 @@
                   ))
             (~~ (template [ ]
                   [(_.test 
-                           (|> (#synthesis.Extension  (list (synthesis.f64 param)
-                                                                       (synthesis.f64 subject)))
+                           (|> {#synthesis.Extension  (list (synthesis.f64 param)
+                                                                       (synthesis.f64 subject))}
                                (run (..safe ))
-                               (case> (#try.Success valueV)
+                               (case> {#try.Success valueV}
                                       (bit\= ( param subject)
                                              (:as Bit valueV))
 
@@ -156,7 +156,7 @@
                   ))
             (~~ (template [ ]
                   [(_.test 
-                           (|> (#synthesis.Extension  (list))
+                           (|> {#synthesis.Extension  (list)}
                                (run (..safe ))
                                (//case.verify )))]
 
@@ -167,8 +167,8 @@
             (_.test "'lux f64 i64 && 'lux i64 f64'"
                     (|> (run (..safe "lux f64 i64")
                              (|> subject synthesis.f64
-                                 (list) (#synthesis.Extension "lux f64 i64")
-                                 (list) (#synthesis.Extension "lux i64 f64")))
+                                 (list) {#synthesis.Extension "lux f64 i64"}
+                                 (list) {#synthesis.Extension "lux i64 f64"}))
                         (//case.verify subject)))
             ))))
 
@@ -184,84 +184,84 @@
      .let [sample_lowerS (synthesis.text sample_lower)
            sample_upperS (synthesis.text sample_upper)
            sample_alphaS (synthesis.text sample_alpha)
-           concatenatedS (#synthesis.Extension "lux text concat" (list sample_lowerS sample_upperS))
+           concatenatedS {#synthesis.Extension "lux text concat" (list sample_lowerS sample_upperS)}
            pre_rep_once (format sample_lower sample_upper)
            post_rep_once (format sample_lower sample_alpha)
            pre_rep_all (|> sample_lower (list.repeated sample_size) (text.interposed sample_upper))
            post_rep_all (|> sample_lower (list.repeated sample_size) (text.interposed sample_alpha))]]
     ($_ _.and
         (_.test "Can compare texts for equality."
-                (and (|> (#synthesis.Extension "lux text =" (list sample_lowerS sample_lowerS))
+                (and (|> {#synthesis.Extension "lux text =" (list sample_lowerS sample_lowerS)}
                          (run (..safe "lux text ="))
-                         (case> (#try.Success valueV)
+                         (case> {#try.Success valueV}
                                 (:as Bit valueV)
 
                                 _
                                 false))
-                     (|> (#synthesis.Extension "lux text =" (list sample_upperS sample_lowerS))
+                     (|> {#synthesis.Extension "lux text =" (list sample_upperS sample_lowerS)}
                          (run (..safe "lux text ="))
-                         (case> (#try.Success valueV)
+                         (case> {#try.Success valueV}
                                 (not (:as Bit valueV))
 
                                 _
                                 false))))
         (_.test "Can compare texts for order."
-                (|> (#synthesis.Extension "lux text <" (list sample_lowerS sample_upperS))
+                (|> {#synthesis.Extension "lux text <" (list sample_lowerS sample_upperS)}
                     (run (..safe "lux text <"))
-                    (case> (#try.Success valueV)
+                    (case> {#try.Success valueV}
                            (:as Bit valueV)
 
-                           (#try.Failure _)
+                           {#try.Failure _}
                            false)))
         (_.test "Can get length of text."
-                (|> (#synthesis.Extension "lux text size" (list sample_lowerS))
+                (|> {#synthesis.Extension "lux text size" (list sample_lowerS)}
                     (run (..safe "lux text size"))
-                    (case> (#try.Success valueV)
+                    (case> {#try.Success valueV}
                            (n.= sample_size (:as Nat valueV))
 
                            _
                            false)))
         (_.test "Can concatenate text."
-                (|> (#synthesis.Extension "lux text size" (list concatenatedS))
+                (|> {#synthesis.Extension "lux text size" (list concatenatedS)}
                     (run (..safe "lux text size"))
-                    (case> (#try.Success valueV)
+                    (case> {#try.Success valueV}
                            (n.= (n.* 2 sample_size) (:as Nat valueV))
 
                            _
                            false)))
         (_.test "Can find index of sub-text."
-                (and (|> (#synthesis.Extension "lux text index"
-                                               (list concatenatedS sample_lowerS
-                                                     (synthesis.i64 +0)))
+                (and (|> {#synthesis.Extension "lux text index"
+                          (list concatenatedS sample_lowerS
+                                (synthesis.i64 +0))}
                          (run (..safe "lux text index"))
-                         (case> (^multi (#try.Success valueV)
+                         (case> (^multi {#try.Success valueV}
                                         [(:as (Maybe Nat) valueV)
-                                         (#.Some valueV)])
+                                         {#.Some valueV}])
                                 (n.= 0 valueV)
 
                                 _
                                 false))
-                     (|> (#synthesis.Extension "lux text index"
-                                               (list concatenatedS sample_upperS
-                                                     (synthesis.i64 +0)))
+                     (|> {#synthesis.Extension "lux text index"
+                          (list concatenatedS sample_upperS
+                                (synthesis.i64 +0))}
                          (run (..safe "lux text index"))
-                         (case> (^multi (#try.Success valueV)
+                         (case> (^multi {#try.Success valueV}
                                         [(:as (Maybe Nat) valueV)
-                                         (#.Some valueV)])
+                                         {#.Some valueV}])
                                 (n.= sample_size valueV)
 
                                 _
                                 false))))
         (let [test_clip (: (-> (I64 Any) (I64 Any) Text Bit)
                            (function (_ offset length expected)
-                             (|> (#synthesis.Extension "lux text clip"
-                                                       (list concatenatedS
-                                                             (synthesis.i64 offset)
-                                                             (synthesis.i64 length)))
+                             (|> {#synthesis.Extension "lux text clip"
+                                  (list concatenatedS
+                                        (synthesis.i64 offset)
+                                        (synthesis.i64 length))}
                                  (run (..safe "lux text clip"))
-                                 (case> (^multi (#try.Success valueV)
+                                 (case> (^multi {#try.Success valueV}
                                                 [(:as (Maybe Text) valueV)
-                                                 (#.Some valueV)])
+                                                 {#.Some valueV}])
                                         (text\= expected valueV)
 
                                         _
@@ -270,13 +270,13 @@
                   (and (test_clip 0 sample_size sample_lower)
                        (test_clip sample_size sample_size sample_upper))))
         (_.test "Can extract individual characters from text."
-                (|> (#synthesis.Extension "lux text char"
-                                          (list sample_lowerS
-                                                (synthesis.i64 char_idx)))
+                (|> {#synthesis.Extension "lux text char"
+                     (list sample_lowerS
+                           (synthesis.i64 char_idx))}
                     (run (..safe "lux text char"))
-                    (case> (^multi (#try.Success valueV)
+                    (case> (^multi {#try.Success valueV}
                                    [(:as (Maybe Int) valueV)
-                                    (#.Some valueV)])
+                                    {#.Some valueV}])
                            (text.contains? ("lux i64 char" valueV)
                                            sample_lower)
 
@@ -290,51 +290,51 @@
     [message (r.ascii/alpha 5)]
     ($_ _.and
         (_.test "Can log messages."
-                (|> (#synthesis.Extension "lux io log"
-                                          (list (synthesis.text (format "LOG: " message))))
+                (|> {#synthesis.Extension "lux io log"
+                     (list (synthesis.text (format "LOG: " message)))}
                     (run (..safe "lux io log"))
-                    (case> (#try.Success valueV)
+                    (case> {#try.Success valueV}
                            true
 
-                           (#try.Failure _)
+                           {#try.Failure _}
                            false)))
         (_.test "Can throw runtime errors."
-                (and (|> (#synthesis.Extension "lux try"
-                                               (list (synthesis.function/abstraction
-                                                      [#synthesis.environment (list)
-                                                       #synthesis.arity 1
-                                                       #synthesis.body (#synthesis.Extension "lux io error"
-                                                                                             (list (synthesis.text message)))])))
+                (and (|> {#synthesis.Extension "lux try"
+                          (list (synthesis.function/abstraction
+                                 [#synthesis.environment (list)
+                                  #synthesis.arity 1
+                                  #synthesis.body {#synthesis.Extension "lux io error"
+                                                   (list (synthesis.text message))}]))}
                          (run (..safe "lux try"))
-                         (case> (^multi (#try.Success valueV)
+                         (case> (^multi {#try.Success valueV}
                                         [(:as (Try Text) valueV)
-                                         (#try.Failure error)])
+                                         {#try.Failure error}])
                                 (text.contains? message error)
 
                                 _
                                 false))
-                     (|> (#synthesis.Extension "lux try"
-                                               (list (synthesis.function/abstraction
-                                                      [#synthesis.environment (list)
-                                                       #synthesis.arity 1
-                                                       #synthesis.body (synthesis.text message)])))
+                     (|> {#synthesis.Extension "lux try"
+                          (list (synthesis.function/abstraction
+                                 [#synthesis.environment (list)
+                                  #synthesis.arity 1
+                                  #synthesis.body (synthesis.text message)]))}
                          (run (..safe "lux try"))
-                         (case> (^multi (#try.Success valueV)
+                         (case> (^multi {#try.Success valueV}
                                         [(:as (Try Text) valueV)
-                                         (#try.Success valueV)])
+                                         {#try.Success valueV}])
                                 (text\= message valueV)
 
                                 _
                                 false))))
         (_.test "Can obtain current time in milli-seconds."
-                (|> (synthesis.tuple (list (#synthesis.Extension "lux io current-time" (list))
-                                           (#synthesis.Extension "lux io current-time" (list))))
+                (|> (synthesis.tuple (list {#synthesis.Extension "lux io current-time" (list)}
+                                           {#synthesis.Extension "lux io current-time" (list)}))
                     (run (..safe "lux io current-time"))
-                    (case> (#try.Success valueV)
+                    (case> {#try.Success valueV}
                            (let [[pre post] (:as [Nat Nat] valueV)]
                              (n.>= pre post))
 
-                           (#try.Failure _)
+                           {#try.Failure _}
                            false)))
         )))
 
diff --git a/stdlib/source/specification/compositor/generation/primitive.lux b/stdlib/source/specification/compositor/generation/primitive.lux
index ba20601a3..670b30d30 100644
--- a/stdlib/source/specification/compositor/generation/primitive.lux
+++ b/stdlib/source/specification/compositor/generation/primitive.lux
@@ -34,10 +34,10 @@
                    [expected ]
                    (_.test (%.name (name_of ))
                            (|> (run  ( expected))
-                               (case> (#try.Success actual)
+                               (case> {#try.Success actual}
                                       ( expected (:expected actual))
 
-                                      (#try.Failure _)
+                                      {#try.Failure _}
                                       false))))]
 
                 ["bit" synthesis.bit  r.bit  bit\=]
diff --git a/stdlib/source/specification/compositor/generation/reference.lux b/stdlib/source/specification/compositor/generation/reference.lux
index ce3c7332a..d98e660e0 100644
--- a/stdlib/source/specification/compositor/generation/reference.lux
+++ b/stdlib/source/specification/compositor/generation/reference.lux
@@ -31,10 +31,10 @@
      expected r.safe_frac]
     (_.test "Definitions."
             (|> (define name (synthesis.f64 expected))
-                (case> (#try.Success actual)
+                (case> {#try.Success actual}
                        (f.= expected (:as Frac actual))
 
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false)))))
 
 (def: (variable run)
@@ -47,10 +47,10 @@
                                        register
                                        (synthesis.variable/local register)])
                 (run "variable")
-                (case> (#try.Success actual)
+                (case> {#try.Success actual}
                        (f.= expected (:as Frac actual))
 
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false)))))
 
 (def: .public (spec runner definer)
diff --git a/stdlib/source/specification/compositor/generation/structure.lux b/stdlib/source/specification/compositor/generation/structure.lux
index a70e61531..c98013875 100644
--- a/stdlib/source/specification/compositor/generation/structure.lux
+++ b/stdlib/source/specification/compositor/generation/structure.lux
@@ -42,7 +42,7 @@
                                     #analysis.right? last?_in
                                     #analysis.value (synthesis.i64 value_in)])
                 (run "variant")
-                (case> (#try.Success valueT)
+                (case> {#try.Success valueT}
                        (let [valueT (:as (Array Any) valueT)]
                          (and (n.= 3 (array.size valueT))
                               (let [tag_out (:as java/lang/Integer (maybe.trusted (array.read! 0 valueT)))
@@ -50,7 +50,7 @@
                                     value_out (:as Any (maybe.trusted (array.read! 2 valueT)))
                                     same_tag? (|> tag_out ffi.int_to_long (:as Nat) (n.= tag_in))
                                     same_flag? (case last?_out
-                                                 (#.Some last?_out')
+                                                 {#.Some last?_out'}
                                                  (and last?_in (text\= "" (:as Text last?_out')))
 
                                                  #.None
@@ -60,7 +60,7 @@
                                      same_flag?
                                      same_value?))))
 
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false)))))
 
 (def: (tuple run)
@@ -71,14 +71,14 @@
     (_.test (%.name (name_of synthesis.tuple))
             (|> (synthesis.tuple (list\each (|>> synthesis.i64) tuple_in))
                 (run "tuple")
-                (case> (#try.Success tuple_out)
+                (case> {#try.Success tuple_out}
                        (let [tuple_out (:as (Array Any) tuple_out)]
                          (and (n.= size (array.size tuple_out))
                               (list.every? (function (_ [left right])
                                              (i.= left (:as Int right)))
                                            (list.zipped/2 tuple_in (array.list tuple_out)))))
 
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false)))))
 
 (def: .public (spec runner)
diff --git a/stdlib/source/specification/lux/abstract/codec.lux b/stdlib/source/specification/lux/abstract/codec.lux
index 5cbdb2aa1..f30d9c94c 100644
--- a/stdlib/source/specification/lux/abstract/codec.lux
+++ b/stdlib/source/specification/lux/abstract/codec.lux
@@ -20,8 +20,8 @@
     (_.for [/.Codec]
            (_.test "Isomorphism."
                    (case (|> expected @//encoded @//decoded)
-                     (#try.Success actual)
+                     {#try.Success actual}
                      (@//= expected actual)
                      
-                     (#try.Failure _)
+                     {#try.Failure _}
                      false)))))
diff --git a/stdlib/source/specification/lux/world/console.lux b/stdlib/source/specification/lux/world/console.lux
index 15305d236..e2f73db67 100644
--- a/stdlib/source/specification/lux/world/console.lux
+++ b/stdlib/source/specification/lux/world/console.lux
@@ -31,7 +31,7 @@
 
            .let [can_write!
                  (case ?write
-                   (#try.Success _)
+                   {#try.Success _}
                    true
                    
                    _
@@ -39,7 +39,7 @@
 
                  can_read!
                  (case [?read ?read_line]
-                   [(#try.Success _) (#try.Success _)]
+                   [{#try.Success _} {#try.Success _}]
                    true
 
                    _
@@ -47,7 +47,7 @@
 
                  can_close!
                  (case [?close/good ?close/bad]
-                   [(#try.Success _) (#try.Failure _)]
+                   [{#try.Success _} {#try.Failure _}]
                    true
                    
                    _
diff --git a/stdlib/source/specification/lux/world/file.lux b/stdlib/source/specification/lux/world/file.lux
index f7c056624..3c6679dd7 100644
--- a/stdlib/source/specification/lux/world/file.lux
+++ b/stdlib/source/specification/lux/world/file.lux
@@ -64,8 +64,8 @@
      directory_post! (\ fs directory? parent)]
     (in (and (not directory_pre!)
              (case made?
-               (#try.Success _) true
-               (#try.Failure _) false)
+               {#try.Success _} true
+               {#try.Failure _} false)
              directory_post!))))
 
 (def: (file?&write fs content path)
@@ -76,8 +76,8 @@
      file_post! (\ fs file? path)]
     (in (and (not file_pre!)
              (case made?
-               (#try.Success _) true
-               (#try.Failure _) false)
+               {#try.Success _} true
+               {#try.Failure _} false)
              file_post!))))
 
 (def: (file_size&read&append fs expected_file_size content appendix path)
@@ -233,23 +233,23 @@
                          (not pre_dir/1)
                          (not pre_dir/2)
                          (case made?
-                           (#try.Success _) true
-                           (#try.Failure _) false)
+                           {#try.Success _} true
+                           {#try.Failure _} false)
                          post_dir/0
                          post_dir/1
                          post_dir/2))
           (_.cover' [/.cannot_make_directory]
                     (and (case cannot_make_directory!/0
-                           (#try.Success _)
+                           {#try.Success _}
                            false
                            
-                           (#try.Failure error)
+                           {#try.Failure error}
                            (exception.match? /.cannot_make_directory error))
                          (case cannot_make_directory!/1
-                           (#try.Success _)
+                           {#try.Success _}
                            false
                            
-                           (#try.Failure error)
+                           {#try.Failure error}
                            (exception.match? /.cannot_make_directory error))))
           )))
 
@@ -265,14 +265,14 @@
       ($_ _.and'
           (_.cover' [/.make_file]
                     (case make_file!/0
-                      (#try.Success _) true
-                      (#try.Failure error) false))
+                      {#try.Success _} true
+                      {#try.Failure error} false))
           (_.cover' [/.cannot_make_file]
                     (case make_file!/1
-                      (#try.Success _)
+                      {#try.Success _}
                       false
                       
-                      (#try.Failure error)
+                      {#try.Failure error}
                       (exception.match? /.cannot_make_file error)))
           )))
 
@@ -312,11 +312,11 @@
                      (not pre_dir/1)
 
                      (case made_file?
-                       (#try.Success _) true
-                       (#try.Failure _) false)
+                       {#try.Success _} true
+                       {#try.Failure _} false)
                      (case made_dir?
-                       (#try.Success _) true
-                       (#try.Failure _) false)
+                       {#try.Success _} true
+                       {#try.Failure _} false)
 
                      post_file/0
                      post_file/1
diff --git a/stdlib/source/specification/lux/world/shell.lux b/stdlib/source/specification/lux/world/shell.lux
index 2d844ce9a..5fa846019 100644
--- a/stdlib/source/specification/lux/world/shell.lux
+++ b/stdlib/source/specification/lux/world/shell.lux
@@ -53,16 +53,16 @@
     [?destroy (\ process destroy [])
      ?await (\ process await [])]
     (in (and (case ?destroy
-               (#try.Success _)
+               {#try.Success _}
                true
                
-               (#try.Failure error)
+               {#try.Failure error}
                false)
              (case ?await
-               (#try.Success _)
+               {#try.Success _}
                false
                
-               (#try.Failure error)
+               {#try.Failure error}
                true)))))
 
 (with_expansions [ (as_is [/.Command /.Argument])]
@@ -76,7 +76,7 @@
                 [?echo (\ shell execute (..echo! message))
                  ?sleep (\ shell execute (..sleep! seconds))]
                 (case [?echo ?sleep]
-                  [(#try.Success echo) (#try.Success sleep)]
+                  [{#try.Success echo} {#try.Success sleep}]
                   (do !
                     [can_read! (..can_read! message echo)
                      can_destroy! (..can_destroy! sleep)]
diff --git a/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux b/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux
index bccd76fac..8daf8635c 100644
--- a/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux
+++ b/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux
@@ -54,7 +54,7 @@
                           (/.format (with@ #/.snapshot #///.Local sample)))
 
                   remote_format (/.format [#/.version (format version /.snapshot)
-                                           #/.snapshot (#///.Remote stamp)])
+                                           #/.snapshot {#///.Remote stamp}])
                   remote!
                   (and (text.starts_with? (format version (///time.format (value@ #///stamp.time stamp)))
                                           remote_format)
diff --git a/stdlib/source/test/aedifex/artifact/time/date.lux b/stdlib/source/test/aedifex/artifact/time/date.lux
index e76cf4259..77c312380 100644
--- a/stdlib/source/test/aedifex/artifact/time/date.lux
+++ b/stdlib/source/test/aedifex/artifact/time/date.lux
@@ -59,10 +59,10 @@
                          (try.else false)))
             (_.cover [/.year_is_out_of_range]
                      (case (/.date candidate)
-                       (#try.Success date)
+                       {#try.Success date}
                        (same? candidate (/.value date))
                        
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.year_is_out_of_range error)))
             (_.cover [/.epoch]
                      (date\= date.epoch (/.value /.epoch)))
diff --git a/stdlib/source/test/aedifex/cache.lux b/stdlib/source/test/aedifex/cache.lux
index fc5efcf8f..338feb5fa 100644
--- a/stdlib/source/test/aedifex/cache.lux
+++ b/stdlib/source/test/aedifex/cache.lux
@@ -75,7 +75,7 @@
      content ..content]
     (in [[#//dependency.artifact identity
           #//dependency.type type]
-         (with@ #//package.origin (#//repository/origin.Remote "") (//package.local pom content))])))
+         (with@ #//package.origin {#//repository/origin.Remote ""} (//package.local pom content))])))
 
 (def: resolution
   (Random Resolution)
@@ -89,13 +89,13 @@
                                         [pom (random.one (function (_ [identity profile pom])
                                                            (|> profile
                                                                (with@ #//.dependencies (set.empty //dependency.hash))
-                                                               (with@ #//.identity (#.Some (value@ #//dependency.artifact dependency)))
+                                                               (with@ #//.identity {#.Some (value@ #//dependency.artifact dependency)})
                                                                //pom.write
                                                                try.maybe))
                                                          ..profile)
                                          content ..content]
                                         (in [dependency
-                                             (with@ #//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 =
-                                 (with@ #//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 each
-                                    (with@ #//package.origin (#//repository/origin.Local ""))
+                                    (with@ #//package.origin {#//repository/origin.Local ""})
                                     expected)
                                  actual)))))))))
 
diff --git a/stdlib/source/test/aedifex/cli.lux b/stdlib/source/test/aedifex/cli.lux
index 9cc55fd2c..e41f3e44c 100644
--- a/stdlib/source/test/aedifex/cli.lux
+++ b/stdlib/source/test/aedifex/cli.lux
@@ -64,9 +64,9 @@
     #/.POM (list "pom")
     #/.Dependencies (list "deps")
     #/.Install (list "install")
-    (#/.Deploy repository [user password]) (list "deploy" repository user password)
-    (#/.Compilation compilation) (..compilation_format compilation)
-    (#/.Auto compilation) (list& "auto" (..compilation_format compilation))))
+    {#/.Deploy repository [user password]} (list "deploy" repository user password)
+    {#/.Compilation compilation} (..compilation_format compilation)
+    {#/.Auto compilation} (list& "auto" (..compilation_format compilation))))
 
 (def: without_profile
   Test
@@ -76,11 +76,11 @@
             (|> expected
                 ..format
                 (cli.result /.command)
-                (case> (#try.Success [names actual])
+                (case> {#try.Success [names actual]}
                        (and (\ (list.equivalence text.equivalence) = (list //.default) names)
                             (\ /.equivalence = expected actual))
                        
-                       (#try.Failure error)
+                       {#try.Failure error}
                        false)))))
 
 (def: with_profile
@@ -93,11 +93,11 @@
                 ..format
                 (list& "with" expected_profile)
                 (cli.result /.command)
-                (case> (#try.Success [actual_profile actual_command])
+                (case> {#try.Success [actual_profile actual_command]}
                        (and (\ (list.equivalence text.equivalence) = (list expected_profile //.default) actual_profile)
                             (\ /.equivalence = expected_command actual_command))
                        
-                       (#try.Failure error)
+                       {#try.Failure error}
                        false)))))
 
 (def: .public test
diff --git a/stdlib/source/test/aedifex/command/auto.lux b/stdlib/source/test/aedifex/command/auto.lux
index 4511d8a03..57aca92d2 100644
--- a/stdlib/source/test/aedifex/command/auto.lux
+++ b/stdlib/source/test/aedifex/command/auto.lux
@@ -55,7 +55,7 @@
        (do [! async.monad]
          [[_ actual_runs] (async.future (atom.update! ++ @runs))]
          (if (n.= expected_runs actual_runs)
-           (in (#try.Failure end_signal))
+           (in {#try.Failure end_signal})
            (do (try.with !)
              [_ (\ fs write (\ utf8.codec encoded (%.nat actual_runs)) dummy_file)
               _ (\ fs modify
@@ -79,7 +79,7 @@
                with_target (: (-> Profile Profile)
                               (with@ #///.target target))
                with_program (: (-> Profile Profile)
-                               (with@ #///.program (#.Some program)))
+                               (with@ #///.program {#.Some program}))
                
                profile (|> empty_profile
                            with_program
@@ -110,17 +110,17 @@
                                                           fs
                                                           (shell.async ($build.good_shell []))
                                                           resolution)
-                                                         (\ ! each (|>> (case> (#try.Failure error)
+                                                         (\ ! each (|>> (case> {#try.Failure error}
                                                                                (same? end_signal error)
 
-                                                                               (#try.Success _)
+                                                                               {#try.Success _}
                                                                                false))))
                                 correct_number_of_runs! (|> @runs
                                                             atom.read!
                                                             async.future
                                                             (\ ! each (n.= expected_runs)))]
-                               (in (#try.Success (and correct_number_of_runs!
-                                                      no_dangling_process!)))))]
+                               (in {#try.Success (and correct_number_of_runs!
+                                                      no_dangling_process!)})))]
                   (_.cover' [/.do!]
                             (try.else false verdict))))
             ))))
diff --git a/stdlib/source/test/aedifex/command/build.lux b/stdlib/source/test/aedifex/command/build.lux
index c856b11f5..1376d440a 100644
--- a/stdlib/source/test/aedifex/command/build.lux
+++ b/stdlib/source/test/aedifex/command/build.lux
@@ -41,7 +41,7 @@
   (-> Any (Shell IO))
   (shell.mock
    (function (_ [actual_environment actual_working_directory actual_command actual_arguments])
-     (#try.Success
+     {#try.Success
       (: (shell.Mock [])
          (implementation
           (def: (on_read state)
@@ -49,17 +49,17 @@
           (def: (on_error state)
             (exception.except shell.no_more_output []))
           (def: (on_write input state)
-            (#try.Failure "on_write"))
+            {#try.Failure "on_write"})
           (def: (on_destroy state)
-            (#try.Failure "on_destroy"))
+            {#try.Failure "on_destroy"})
           (def: (on_await state)
-            (#try.Success [state shell.normal]))))))))
+            {#try.Success [state shell.normal]})))})))
 
 (def: .public bad_shell
   (-> Any (Shell IO))
   (shell.mock
    (function (_ [actual_environment actual_working_directory actual_command actual_arguments])
-     (#try.Success
+     {#try.Success
       (: (shell.Mock [])
          (implementation
           (def: (on_read state)
@@ -67,43 +67,43 @@
           (def: (on_error state)
             (exception.except shell.no_more_output []))
           (def: (on_write input state)
-            (#try.Failure "on_write"))
+            {#try.Failure "on_write"})
           (def: (on_destroy state)
-            (#try.Failure "on_destroy"))
+            {#try.Failure "on_destroy"})
           (def: (on_await state)
-            (#try.Success [state shell.error]))))))))
+            {#try.Success [state shell.error]})))})))
 
 (def: .public (reader_shell error?)
   (-> Bit (-> (List Text) (Shell IO)))
   (shell.mock
    (function (_ [actual_environment actual_working_directory actual_command actual_arguments])
-     (#try.Success
+     {#try.Success
       (: (shell.Mock (List Text))
          (implementation
           (def: (on_read state)
             (if error?
               (exception.except shell.no_more_output [])
               (case state
-                (#.Item head tail)
-                (#try.Success [tail head])
+                {#.Item head tail}
+                {#try.Success [tail head]}
                 
                 #.End
                 (exception.except shell.no_more_output []))))
           (def: (on_error state)
             (if error?
               (case state
-                (#.Item head tail)
-                (#try.Success [tail head])
+                {#.Item head tail}
+                {#try.Success [tail head]}
                 
                 #.End
                 (exception.except shell.no_more_output []))
               (exception.except shell.no_more_output [])))
           (def: (on_write input state)
-            (#try.Failure "on_write"))
+            {#try.Failure "on_write"})
           (def: (on_destroy state)
-            (#try.Failure "on_destroy"))
+            {#try.Failure "on_destroy"})
           (def: (on_await state)
-            (#try.Success [state shell.error]))))))))
+            {#try.Success [state shell.error]})))})))
 
 (def: compiler
   (Random Dependency)
@@ -153,7 +153,7 @@
                with_target (: (-> Profile Profile)
                               (with@ #///.target target))
                with_program (: (-> Profile Profile)
-                               (with@ #///.program (#.Some program)))
+                               (with@ #///.program {#.Some program}))
                
                profile (|> empty_profile
                            with_program
@@ -164,19 +164,19 @@
                                   (with_target empty_profile))]
                   (_.cover' [/.no_specified_program]
                             (case outcome
-                              (#try.Success _)
+                              {#try.Success _}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.no_specified_program error)))))
             (in (do async.monad
                   [outcome (/.do! (@version.echo "") (program.async (program.mock environment.empty home working_directory)) fs shell ///dependency/resolution.empty profile)]
                   (_.cover' [/.Compiler /.no_available_compiler]
                             (case outcome
-                              (#try.Success _)
+                              {#try.Success _}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.no_available_compiler error)))))
             (do !
               [.let [console (@version.echo "")]
@@ -232,10 +232,10 @@
                                                  actual/1 (\ console read_line [])
                                                  actual/2 (\ console read_line [])
                                                  end! (|> (\ console read_line [])
-                                                          (\ ! each (|>> (case> (#try.Failure error)
+                                                          (\ ! each (|>> (case> {#try.Failure error}
                                                                                 true
                                                                                 
-                                                                                (#try.Success _)
+                                                                                {#try.Success _}
                                                                                 false)
                                                                          #try.Success)))]
                                                 (in (and (text\= expected/0 actual/0)
diff --git a/stdlib/source/test/aedifex/command/deps.lux b/stdlib/source/test/aedifex/command/deps.lux
index 3d563f540..8cf0ea05c 100644
--- a/stdlib/source/test/aedifex/command/deps.lux
+++ b/stdlib/source/test/aedifex/command/deps.lux
@@ -73,22 +73,22 @@
                          #///dependency.type ///artifact/type.lux_library]
 
                dependee_pom (|> (\ ///.monoid identity)
-                                (with@ #///.identity (#.Some dependee_artifact))
+                                (with@ #///.identity {#.Some dependee_artifact})
                                 ///pom.write
                                 try.trusted)
                depender_pom (|> (\ ///.monoid identity)
-                                (with@ #///.identity (#.Some depender_artifact))
+                                (with@ #///.identity {#.Some depender_artifact})
                                 (with@ #///.dependencies (set.of_list ///dependency.hash (list dependee)))
                                 ///pom.write
                                 try.trusted)
                
                dependee_package (|> dependee_package
-                                    (with@ #///package.origin (#///repository/origin.Remote ""))
+                                    (with@ #///package.origin {#///repository/origin.Remote ""})
                                     (with@ #///package.pom [dependee_pom
                                                             (|> dependee_pom (\ xml.codec encoded) (\ utf8.codec encoded))
                                                             #///dependency/status.Unverified]))
                depender_package (|> depender_package
-                                    (with@ #///package.origin (#///repository/origin.Remote ""))
+                                    (with@ #///package.origin {#///repository/origin.Remote ""})
                                     (with@ #///package.pom [depender_pom
                                                             (|> depender_pom (\ xml.codec encoded) (\ utf8.codec encoded))
                                                             #///dependency/status.Unverified]))
diff --git a/stdlib/source/test/aedifex/command/install.lux b/stdlib/source/test/aedifex/command/install.lux
index 8ef29ec92..ac1a87be1 100644
--- a/stdlib/source/test/aedifex/command/install.lux
+++ b/stdlib/source/test/aedifex/command/install.lux
@@ -65,7 +65,7 @@
   (<| (_.covering /._)
       (do [! random.monad]
         [identity $artifact.random
-         sample (\ ! each (with@ #///.identity (#.Some identity))
+         sample (\ ! each (with@ #///.identity {#.Some identity})
                    $profile.random)
          home (random.ascii/alpha 5)
          working_directory (random.ascii/alpha 5)
diff --git a/stdlib/source/test/aedifex/command/pom.lux b/stdlib/source/test/aedifex/command/pom.lux
index 80676974b..ac080c966 100644
--- a/stdlib/source/test/aedifex/command/pom.lux
+++ b/stdlib/source/test/aedifex/command/pom.lux
@@ -40,7 +40,7 @@
               [.let [console (@version.echo "")]
                outcome (/.do! console fs sample)]
               (case outcome
-                (#try.Success _)
+                {#try.Success _}
                 (do !
                   [verdict (do ///action.monad
                              [expected (|> (///pom.write sample)
@@ -60,10 +60,10 @@
                   (_.cover' [/.do! /.success]
                             (try.else false verdict)))
                 
-                (#try.Failure error)
+                {#try.Failure error}
                 (_.cover' [/.do!]
                           (case (value@ #///.identity sample)
-                            (#.Some _)
+                            {#.Some _}
                             false
 
                             #.None
diff --git a/stdlib/source/test/aedifex/command/test.lux b/stdlib/source/test/aedifex/command/test.lux
index bbcb582b1..19ae5cd70 100644
--- a/stdlib/source/test/aedifex/command/test.lux
+++ b/stdlib/source/test/aedifex/command/test.lux
@@ -52,7 +52,7 @@
                with_target (: (-> Profile Profile)
                               (with@ #///.target target))
                with_test (: (-> Profile Profile)
-                            (with@ #///.test (#.Some test)))
+                            (with@ #///.test {#.Some test}))
                
                profile (|> empty_profile
                            with_test
@@ -83,7 +83,7 @@
                     [verdict (do ///action.monad
                                [.let [bad_shell (shell.mock
                                                  (function (_ [actual_environment actual_working_directory actual_command actual_arguments])
-                                                   (#try.Success
+                                                   {#try.Success
                                                     (: (shell.Mock [])
                                                        (implementation
                                                         (def: (on_read state)
@@ -91,13 +91,13 @@
                                                         (def: (on_error state)
                                                           (exception.except shell.no_more_output []))
                                                         (def: (on_write input state)
-                                                          (#try.Failure "on_write"))
+                                                          {#try.Failure "on_write"})
                                                         (def: (on_destroy state)
-                                                          (#try.Failure "on_destroy"))
+                                                          {#try.Failure "on_destroy"})
                                                         (def: (on_await state)
-                                                          (#try.Success [state (if (list.any? (text\= "build") actual_arguments)
+                                                          {#try.Success [state (if (list.any? (text\= "build") actual_arguments)
                                                                                  shell.normal
-                                                                                 shell.error)]))))))
+                                                                                 shell.error)]})))})
                                                  [])]
                                 _ (/.do! console (program.async (program.mock environment.empty home working_directory))
                                          fs (shell.async bad_shell) resolution
diff --git a/stdlib/source/test/aedifex/command/version.lux b/stdlib/source/test/aedifex/command/version.lux
index 1b2b0aa53..6cd59b3a5 100644
--- a/stdlib/source/test/aedifex/command/version.lux
+++ b/stdlib/source/test/aedifex/command/version.lux
@@ -50,11 +50,11 @@
       (exception.except ..console_is_closed! [])))
   (def: (on_write input [open? state])
     (if open?
-      (#try.Success [open? (format state input)])
+      {#try.Success [open? (format state input)]}
       (exception.except ..console_is_closed! [])))
   (def: (on_close [open? buffer])
     (if open?
-      (#try.Success [false buffer])
+      {#try.Success [false buffer]}
       (exception.except ..console_is_closed! []))))
 
 (def: .public echo
diff --git a/stdlib/source/test/aedifex/dependency/deployment.lux b/stdlib/source/test/aedifex/dependency/deployment.lux
index 5b7869eab..7e137443b 100644
--- a/stdlib/source/test/aedifex/dependency/deployment.lux
+++ b/stdlib/source/test/aedifex/dependency/deployment.lux
@@ -68,12 +68,12 @@
      (do io.monad
        [_ (: (IO Any)
              (case [method input]
-               [#@http.Put (#.Some input)]
+               [#@http.Put {#.Some input}]
                (atom.update! (dictionary.has url input) cache)
                
                _
                (in [])))]
-       (in (#try.Success ..good_upload))))))
+       (in {#try.Success ..good_upload})))))
 
 (def: (verify_one expected_deployments address package cache expected_artifact actual_artifact)
   (-> Nat URL Package (Dictionary URL Binary) Artifact Artifact Bit)
diff --git a/stdlib/source/test/aedifex/dependency/resolution.lux b/stdlib/source/test/aedifex/dependency/resolution.lux
index 2fe39286d..69867d5f8 100644
--- a/stdlib/source/test/aedifex/dependency/resolution.lux
+++ b/stdlib/source/test/aedifex/dependency/resolution.lux
@@ -92,9 +92,9 @@
    (def: the_description
      "[0]")
    (def: (on_download uri state)
-     (#try.Failure "NOPE"))
+     {#try.Failure "NOPE"})
    (def: (on_upload uri binary state)
-     (#try.Failure "NOPE"))))
+     {#try.Failure "NOPE"})))
 
 (def: .public (single artifact package)
   (-> Artifact Package (Mock Any))
@@ -115,28 +115,28 @@
                           (\ xml.codec encoded)
                           (\ utf8.codec encoded)))]
            (cond (text.ends_with? ///artifact/extension.lux_library uri)
-                 (#try.Success [state library])
+                 {#try.Success [state library]}
 
                  (text.ends_with? ..lux_sha-1 uri)
-                 (#try.Success [state (..sha-1 library)])
+                 {#try.Success [state (..sha-1 library)]}
 
                  (text.ends_with? ..lux_md5 uri)
-                 (#try.Success [state (..md5 library)])
+                 {#try.Success [state (..md5 library)]}
                  
                  (text.ends_with? ///artifact/extension.pom uri)
-                 (#try.Success [state pom])
+                 {#try.Success [state pom]}
 
                  (text.ends_with? ..pom_sha-1 uri)
-                 (#try.Success [state (..sha-1 pom)])
+                 {#try.Success [state (..sha-1 pom)]}
 
                  (text.ends_with? ..pom_md5 uri)
-                 (#try.Success [state (..md5 pom)])
+                 {#try.Success [state (..md5 pom)]}
 
                  ... else
-                 (#try.Failure "NOPE")))
-         (#try.Failure "NOPE")))
+                 {#try.Failure "NOPE"}))
+         {#try.Failure "NOPE"}))
      (def: (on_upload uri binary state)
-       (#try.Failure "NOPE")))))
+       {#try.Failure "NOPE"}))))
 
 (def: (bad_sha-1 expected_artifact expected_package dummy_package)
   (-> Artifact Package Package (Mock Any))
@@ -146,50 +146,50 @@
    (def: (on_download uri state)
      (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
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.library)
-                                      product.left)])
+                                      product.left)]}
 
              (text.ends_with? ..lux_sha-1 uri)
-             (#try.Success [state (|> expected_package
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.library)
                                       product.left
-                                      ..sha-1)])
+                                      ..sha-1)]}
 
              (text.ends_with? ..lux_md5 uri)
-             (#try.Success [state (|> expected_package
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.library)
                                       product.left
-                                      ..md5)])
+                                      ..md5)]}
              
              (text.ends_with? ///artifact/extension.pom uri)
-             (#try.Success [state (|> expected_package
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.pom)
                                       product.left
                                       (\ xml.codec encoded)
-                                      (\ utf8.codec encoded))])
+                                      (\ utf8.codec encoded))]}
 
              (text.ends_with? ..pom_sha-1 uri)
-             (#try.Success [state (|> dummy_package
+             {#try.Success [state (|> dummy_package
                                       (value@ #///package.pom)
                                       product.left
                                       (\ xml.codec encoded)
                                       (\ utf8.codec encoded)
-                                      ..sha-1)])
+                                      ..sha-1)]}
 
              (text.ends_with? ..pom_md5 uri)
-             (#try.Success [state (|> expected_package
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.pom)
                                       product.left
                                       (\ xml.codec encoded)
                                       (\ utf8.codec encoded)
-                                      ..md5)])
+                                      ..md5)]}
 
              ... else
-             (#try.Failure "NOPE"))
-       (#try.Failure "NOPE")))
+             {#try.Failure "NOPE"})
+       {#try.Failure "NOPE"}))
    (def: (on_upload uri binary state)
-     (#try.Failure "NOPE"))))
+     {#try.Failure "NOPE"})))
 
 (def: (bad_md5 expected_artifact expected_package dummy_package)
   (-> Artifact Package Package (Mock Any))
@@ -199,50 +199,50 @@
    (def: (on_download uri state)
      (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
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.library)
-                                      product.left)])
+                                      product.left)]}
 
              (text.ends_with? ..lux_sha-1 uri)
-             (#try.Success [state (|> expected_package
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.library)
                                       product.left
-                                      ..sha-1)])
+                                      ..sha-1)]}
 
              (text.ends_with? ..lux_md5 uri)
-             (#try.Success [state (|> dummy_package
+             {#try.Success [state (|> dummy_package
                                       (value@ #///package.library)
                                       product.left
-                                      ..md5)])
+                                      ..md5)]}
              
              (text.ends_with? ///artifact/extension.pom uri)
-             (#try.Success [state (|> expected_package
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.pom)
                                       product.left
                                       (\ xml.codec encoded)
-                                      (\ utf8.codec encoded))])
+                                      (\ utf8.codec encoded))]}
 
              (text.ends_with? ..pom_sha-1 uri)
-             (#try.Success [state (|> expected_package
+             {#try.Success [state (|> expected_package
                                       (value@ #///package.pom)
                                       product.left
                                       (\ xml.codec encoded)
                                       (\ utf8.codec encoded)
-                                      ..sha-1)])
+                                      ..sha-1)]}
 
              (text.ends_with? ..pom_md5 uri)
-             (#try.Success [state (|> dummy_package
+             {#try.Success [state (|> dummy_package
                                       (value@ #///package.pom)
                                       product.left
                                       (\ xml.codec encoded)
                                       (\ utf8.codec encoded)
-                                      ..md5)])
+                                      ..md5)]}
 
              ... else
-             (#try.Failure "NOPE"))
-       (#try.Failure "NOPE")))
+             {#try.Failure "NOPE"})
+       {#try.Failure "NOPE"}))
    (def: (on_upload uri binary state)
-     (#try.Failure "NOPE"))))
+     {#try.Failure "NOPE"})))
 
 (def: one
   Test
@@ -264,12 +264,12 @@
                                           #///dependency.type ///artifact/type.lux_library])]
                   (_.cover' [/.one]
                             (case actual_package
-                              (#try.Success actual_package)
+                              {#try.Success actual_package}
                               (\ ///package.equivalence =
-                                 (with@ #///package.origin (#///repository/origin.Remote "") expected_package)
+                                 (with@ #///package.origin {#///repository/origin.Remote ""} expected_package)
                                  actual_package)
                               
-                              (#try.Failure _)
+                              {#try.Failure _}
                               false))))
             (~~ (template [ ]
                   [(in (do async.monad
@@ -278,10 +278,10 @@
                                                  #///dependency.type ///artifact/type.lux_library])]
                          (_.cover' []
                                    (case actual_package
-                                     (#try.Failure error)
+                                     {#try.Failure error}
                                      (exception.match?  error)
 
-                                     (#try.Success _)
+                                     {#try.Success _}
                                      false))))]
 
                   [/.sha-1_does_not_match bad_sha-1]
@@ -313,12 +313,12 @@
                                       #///dependency.type ///artifact/type.lux_library])]
               (_.cover' [/.any]
                         (case actual_package
-                          (#try.Success actual_package)
+                          {#try.Success actual_package}
                           (\ ///package.equivalence =
-                             (with@ #///package.origin (#///repository/origin.Remote "") expected_package)
+                             (with@ #///package.origin {#///repository/origin.Remote ""} expected_package)
                              actual_package)
                           
-                          (#try.Failure _)
+                          {#try.Failure _}
                           false))))
         (in (do async.monad
               [.let [console ($///version.echo "")]
@@ -329,10 +329,10 @@
                                       #///dependency.type ///artifact/type.lux_library])]
               (_.cover' [/.cannot_resolve]
                         (case actual_package
-                          (#try.Failure error)
+                          {#try.Failure error}
                           (exception.match? /.cannot_resolve error)
 
-                          (#try.Success _)
+                          {#try.Success _}
                           false))))
         )))
 
@@ -366,16 +366,16 @@
                     #///dependency.type ///artifact/type.lux_library]
 
            dependee_pom (|> (\ ///.monoid identity)
-                            (with@ #///.identity (#.Some dependee_artifact))
+                            (with@ #///.identity {#.Some dependee_artifact})
                             ///pom.write
                             try.trusted)
            depender_pom (|> (\ ///.monoid identity)
-                            (with@ #///.identity (#.Some depender_artifact))
+                            (with@ #///.identity {#.Some depender_artifact})
                             (with@ #///.dependencies (set.of_list ///dependency.hash (list dependee)))
                             ///pom.write
                             try.trusted)
            ignored_pom (|> (\ ///.monoid identity)
-                           (with@ #///.identity (#.Some ignored_artifact))
+                           (with@ #///.identity {#.Some ignored_artifact})
                            ///pom.write
                            try.trusted)
 
diff --git a/stdlib/source/test/aedifex/dependency/status.lux b/stdlib/source/test/aedifex/dependency/status.lux
index 981f18b0e..79e59460f 100644
--- a/stdlib/source/test/aedifex/dependency/status.lux
+++ b/stdlib/source/test/aedifex/dependency/status.lux
@@ -40,7 +40,7 @@
                    [payload (binaryT.random 1)]
                    (_.cover [/.verified]
                             (case (/.verified payload)
-                              (#/.Verified sha1 md5)
+                              {#/.Verified sha1 md5}
                               true
 
                               _
diff --git a/stdlib/source/test/aedifex/hash.lux b/stdlib/source/test/aedifex/hash.lux
index a3220b756..049023718 100644
--- a/stdlib/source/test/aedifex/hash.lux
+++ b/stdlib/source/test/aedifex/hash.lux
@@ -50,18 +50,18 @@
                                   [expected (..random )]
                                   (_.cover [  ]
                                            (and (case ( (/.data expected))
-                                                  (#try.Success actual)
+                                                  {#try.Success actual}
                                                   (\ /.equivalence = expected actual)
 
-                                                  (#try.Failure error)
+                                                  {#try.Failure error}
                                                   false)
                                                 (case ( (\ binary.monoid composite
                                                                         (/.data expected)
                                                                         (/.data expected)))
-                                                  (#try.Success actual)
+                                                  {#try.Success actual}
                                                   false
 
-                                                  (#try.Failure error)
+                                                  {#try.Failure error}
                                                   (exception.match?  error)))))]
 
                                [/.sha-1 /.as_sha-1 /.not_a_sha-1]
@@ -83,10 +83,10 @@
                                            (case (\  decoded
                                                     (format (\  encoded expected)
                                                             "AABBCC"))
-                                             (#try.Success actual)
+                                             {#try.Success actual}
                                              false
 
-                                             (#try.Failure error)
+                                             {#try.Failure error}
                                              (exception.match? /.not_a_hash error))))]
 
                                [/.sha-1_codec /.sha-1]
diff --git a/stdlib/source/test/aedifex/metadata/artifact.lux b/stdlib/source/test/aedifex/metadata/artifact.lux
index 0f0188ea3..a1d3133c5 100644
--- a/stdlib/source/test/aedifex/metadata/artifact.lux
+++ b/stdlib/source/test/aedifex/metadata/artifact.lux
@@ -105,12 +105,12 @@
                      actual (/.read repository artifact)]
                     (_.cover' [/.write /.read]
                               (and (case wrote?
-                                     (#try.Success _) true
-                                     (#try.Failure _) false)
+                                     {#try.Success _} true
+                                     {#try.Failure _} false)
                                    (case actual
-                                     (#try.Success actual)
+                                     {#try.Success actual}
                                      (\ /.equivalence = expected actual)
                                      
-                                     (#try.Failure _)
+                                     {#try.Failure _}
                                      false))))))
             ))))
diff --git a/stdlib/source/test/aedifex/metadata/snapshot.lux b/stdlib/source/test/aedifex/metadata/snapshot.lux
index 39d16bd27..52f7a1562 100644
--- a/stdlib/source/test/aedifex/metadata/snapshot.lux
+++ b/stdlib/source/test/aedifex/metadata/snapshot.lux
@@ -117,12 +117,12 @@
                      actual (/.read repository artifact)]
                     (_.cover' [/.write /.read]
                               (and (case wrote?
-                                     (#try.Success _) true
-                                     (#try.Failure _) false)
+                                     {#try.Success _} true
+                                     {#try.Failure _} false)
                                    (case actual
-                                     (#try.Success actual)
+                                     {#try.Success actual}
                                      (\ /.equivalence = expected actual)
                                      
-                                     (#try.Failure _)
+                                     {#try.Failure _}
                                      false))))))
             ))))
diff --git a/stdlib/source/test/aedifex/package.lux b/stdlib/source/test/aedifex/package.lux
index 61153b8ad..69d31ddcc 100644
--- a/stdlib/source/test/aedifex/package.lux
+++ b/stdlib/source/test/aedifex/package.lux
@@ -64,9 +64,9 @@
                    ($equivalence.spec /.equivalence (\ ! each product.right ..random)))
             
             (_.cover [/.local?]
-                     (/.local? (with@ #/.origin (#//origin.Local "~/yolo") package)))
+                     (/.local? (with@ #/.origin {#//origin.Local "~/yolo"} package)))
             (_.cover [/.remote?]
-                     (/.remote? (with@ #/.origin (#//origin.Remote "https://example.com") package)))
+                     (/.remote? (with@ #/.origin {#//origin.Remote "https://example.com"} package)))
             (_.cover [/.local]
                      (let [expected_pom (|> package (value@ #/.pom) product.left)
                            expected_library (|> package (value@ #/.library) product.left)
@@ -76,13 +76,13 @@
                            [actual_pom binary_pom pom_status] (value@ #/.pom local)
                            [actual_library library_status] (value@ #/.library local)]
                        (and (case (value@ #/.origin local)
-                              (#//origin.Local "") true
+                              {#//origin.Local ""} true
                               _ false)
                             (let [expected_sha1 (//hash.sha-1 expected_library)
                                   expected_md5 (//hash.md5 expected_library)]
                               (and (same? expected_library actual_library)
                                    (case library_status
-                                     (#//status.Verified actual_sha1 expected_md5)
+                                     {#//status.Verified actual_sha1 expected_md5}
                                      (and (//hash\= expected_sha1 actual_sha1)
                                           (//hash\= expected_md5 expected_md5))
                                      
@@ -97,7 +97,7 @@
                                          (in (\ xml.equivalence = actual_pom decoded_pom)))
                                        (try.else false))
                                    (case pom_status
-                                     (#//status.Verified actual_sha1 expected_md5)
+                                     {#//status.Verified actual_sha1 expected_md5}
                                      (and (//hash\= expected_sha1 actual_sha1)
                                           (//hash\= expected_md5 expected_md5))
                                      
@@ -106,17 +106,17 @@
             (_.cover [/.dependencies]
                      (let [expected (value@ #//.dependencies profile)]
                        (case (/.dependencies package)
-                         (#try.Success actual)
+                         {#try.Success actual}
                          (\ set.equivalence = expected actual)
                          
-                         (#try.Failure error)
+                         {#try.Failure error}
                          false)))
             (_.cover [/.repositories]
                      (let [expected (value@ #//.repositories profile)]
                        (case (/.repositories package)
-                         (#try.Success actual)
+                         {#try.Success actual}
                          (\ set.equivalence = expected actual)
                          
-                         (#try.Failure error)
+                         {#try.Failure error}
                          false)))
             ))))
diff --git a/stdlib/source/test/aedifex/parser.lux b/stdlib/source/test/aedifex/parser.lux
index 1152a1dba..3dc073f0d 100644
--- a/stdlib/source/test/aedifex/parser.lux
+++ b/stdlib/source/test/aedifex/parser.lux
@@ -84,7 +84,7 @@
                      //format.project
                      list
                      (.result /.project)
-                     (case> (#try.Success actual)
+                     (case> {#try.Success actual}
                             (|> expected
                                 ..with_empty_profile
                                 dictionary.entries
@@ -95,5 +95,5 @@
                                 (dictionary.of_list text.hash)
                                 (\ //project.equivalence = actual))
                             
-                            (#try.Failure error)
+                            {#try.Failure error}
                             false))))))
diff --git a/stdlib/source/test/aedifex/pom.lux b/stdlib/source/test/aedifex/pom.lux
index 92f13bd4f..4913df25d 100644
--- a/stdlib/source/test/aedifex/pom.lux
+++ b/stdlib/source/test/aedifex/pom.lux
@@ -35,20 +35,20 @@
             (_.cover [/.write /.parser]
                      (case [(/.write expected)
                             (value@ #//.identity expected)]
-                       [(#try.Success pom)
-                        (#.Some _)]
+                       [{#try.Success pom}
+                        {#.Some _}]
                        (case (.result /.parser (list pom))
-                         (#try.Success actual)
+                         {#try.Success actual}
                          (\ //.equivalence =
                             (|> (\ //.monoid identity)
                                 (with@ #//.dependencies (value@ #//.dependencies expected))
                                 (with@ #//.repositories (value@ #//.repositories expected)))
                             actual)
 
-                         (#try.Failure error)
+                         {#try.Failure error}
                          false)
 
-                       [(#try.Failure error)
+                       [{#try.Failure error}
                         #.None]
                        (exception.match? //.no_identity error)
 
diff --git a/stdlib/source/test/aedifex/project.lux b/stdlib/source/test/aedifex/project.lux
index 94e61bd7c..767f8cdb3 100644
--- a/stdlib/source/test/aedifex/project.lux
+++ b/stdlib/source/test/aedifex/project.lux
@@ -84,17 +84,17 @@
                                          (try.else false))))
                        (_.cover [/.unknown_profile]
                                 (case (/.profile project fake_name)
-                                  (#try.Success _)
+                                  {#try.Success _}
                                   false
 
-                                  (#try.Failure error)
+                                  {#try.Failure error}
                                   (exception.match? /.unknown_profile error)))
                        (_.cover [/.circular_dependency]
                                 (case (/.profile circular sub_name)
-                                  (#try.Success _)
+                                  {#try.Success _}
                                   false
 
-                                  (#try.Failure error)
+                                  {#try.Failure error}
                                   (exception.match? /.circular_dependency error)))
                        ))
                  ))))
diff --git a/stdlib/source/test/aedifex/repository.lux b/stdlib/source/test/aedifex/repository.lux
index 0cbea2733..e65503ee9 100644
--- a/stdlib/source/test/aedifex/repository.lux
+++ b/stdlib/source/test/aedifex/repository.lux
@@ -72,17 +72,17 @@
     "@")
   (def: (on_download uri state)
     (case (dictionary.value uri state)
-      (#.Some content)
+      {#.Some content}
       (case (binary.size content)
         0 (exception.except ..not_found [uri])
-        _ (#try.Success [state content]))
+        _ {#try.Success [state content]})
       
       #.None
       (exception.except ..not_found [uri])))
   (def: (on_upload uri content state)
     (if (dictionary.key? state uri)
       (exception.except ..cannot_upload [uri])
-      (#try.Success (dictionary.has uri content state)))))
+      {#try.Success (dictionary.has uri content state)})))
 
 (def: .public test
   Test
diff --git a/stdlib/source/test/aedifex/repository/local.lux b/stdlib/source/test/aedifex/repository/local.lux
index 03c64b69a..b6d647bb9 100644
--- a/stdlib/source/test/aedifex/repository/local.lux
+++ b/stdlib/source/test/aedifex/repository/local.lux
@@ -44,8 +44,8 @@
                    actual (\ repo download uri)]
                   (_.cover' [/.repository]
                             (and (case before_upload
-                                   (#try.Success _) false
-                                   (#try.Failure _) true)
+                                   {#try.Success _} false
+                                   {#try.Failure _} true)
                                  (|> actual
                                      (try\each (binary\= expected))
                                      (try.else false))))))
diff --git a/stdlib/source/test/aedifex/repository/remote.lux b/stdlib/source/test/aedifex/repository/remote.lux
index 9e405ddc5..443ab884e 100644
--- a/stdlib/source/test/aedifex/repository/remote.lux
+++ b/stdlib/source/test/aedifex/repository/remote.lux
@@ -35,7 +35,7 @@
   (-> URL (@http.Body IO))
   (let [url (\ utf8.codec encoded url)]
     (function (_ _)
-      (io.io (#try.Success [(binary.size url) url])))))
+      (io.io {#try.Success [(binary.size url) url]}))))
 
 (def: (good_http user password)
   (-> //identity.User //identity.Password (http.Client IO))
@@ -56,7 +56,7 @@
                 [#@http.headers (http.headers (list))
                  #@http.body (..url_body url)]]
                
-               [#@http.Put (#.Some input)]
+               [#@http.Put {#.Some input}]
                (if (|> headers
                        (dictionary.value "Authorization")
                        (maybe\each (text\= (//identity.basic_auth user password)))
@@ -95,8 +95,8 @@
         ($_ _.and
             (_.cover [/.repository /.user_agent /.Address]
                      (let [repo (/.repository (..good_http user password)
-                                              (#.Some [#//identity.user user
-                                                       #//identity.password password])
+                                              {#.Some [#//identity.user user
+                                                       #//identity.password password]}
                                               address)]
                        (and (|> (\ repo download uri)
                                 io.run!
@@ -113,19 +113,19 @@
                                               #.None
                                               address)]
                        (case (io.run! (\ repo upload uri content))
-                         (#try.Failure error)
+                         {#try.Failure error}
                          (exception.match? /.upload_failure error)
                          
-                         (#try.Success _)
+                         {#try.Success _}
                          false)))
             (_.cover [/.download_failure]
                      (let [repo (/.repository ..bad_http
                                               #.None
                                               address)]
                        (case (io.run! (\ repo download uri))
-                         (#try.Failure error)
+                         {#try.Failure error}
                          (exception.match? /.download_failure error)
                          
-                         (#try.Success _)
+                         {#try.Success _}
                          false)))
             ))))
diff --git a/stdlib/source/test/lux.lux b/stdlib/source/test/lux.lux
index fefe5270e..6a6ef3fac 100644
--- a/stdlib/source/test/lux.lux
+++ b/stdlib/source/test/lux.lux
@@ -176,24 +176,24 @@
     ($_ _.and
         (_.cover [/.try]
                  (case (/.try expected)
-                   (#.Left _)
+                   {#.Left _}
                    false
                    
-                   (#.Right actual)
+                   {#.Right actual}
                    (n.= expected actual)))
         (_.cover [/.undefined]
                  (case (/.try (/.undefined))
-                   (#.Left _)
+                   {#.Left _}
                    true
                    
-                   (#.Right _)
+                   {#.Right _}
                    false))
         (_.cover [/.panic!]
                  (case (/.try (/.panic! expected_error))
-                   (#.Left actual_error)
+                   {#.Left actual_error}
                    (text.contains? expected_error actual_error)
                    
-                   (#.Right _)
+                   {#.Right _}
                    false))
         )))
 
@@ -437,13 +437,13 @@
 
 (/.macro: (found_crosshair? tokens lux)
   (let [[_ _ source_code] (value@ #.source lux)]
-    (#.Right [lux (list (code.bit (text.contains? ..crosshair source_code)))])))
+    {#.Right [lux (list (code.bit (text.contains? ..crosshair source_code)))]}))
 
 (def: for_macro
   Test
   (let [macro (: /.Macro'
                  (function (_ tokens lux)
-                   (#.Right [lux (list)])))]
+                   {#.Right [lux (list)]}))]
     (do random.monad
       [expected random.nat]
       (with_expansions [ (for [@.old (~~ (as_is))]
@@ -468,8 +468,8 @@
 (/.type: for_type/variant
   (Variant
    #Case/0
-   (#Case/1 Nat)
-   (#Case/2 Int Text)))
+   {#Case/1 Nat}
+   {#Case/2 Int Text}))
 
 (/.type: for_type/record
   (Record
@@ -518,7 +518,7 @@
                      (same? /.Nat (/.:of expected)))
             (_.cover [/.primitive]
                      (case (/.primitive "foo" [expected/0 expected/1])
-                       (^ (#.Primitive "foo" (list actual/0 actual/1)))
+                       (^ {#.Primitive "foo" (list actual/0 actual/1)})
                        (and (same? expected/0 actual/0)
                             (same? expected/1 actual/1))
 
@@ -526,28 +526,28 @@
                        false))
             (_.cover [/.type]
                      (and (case (/.type [expected/0 expected/1])
-                            (#.Product actual/0 actual/1)
+                            {#.Product actual/0 actual/1}
                             (and (same? expected/0 actual/0)
                                  (same? expected/1 actual/1))
 
                             _
                             false)
                           (case (/.type (/.Or expected/0 expected/1))
-                            (#.Sum actual/0 actual/1)
+                            {#.Sum actual/0 actual/1}
                             (and (same? expected/0 actual/0)
                                  (same? expected/1 actual/1))
 
                             _
                             false)
                           (case (/.type (-> expected/0 expected/1))
-                            (#.Function actual/0 actual/1)
+                            {#.Function actual/0 actual/1}
                             (and (same? expected/0 actual/0)
                                  (same? expected/1 actual/1))
 
                             _
                             false)
                           (case (/.type (expected/0 expected/1))
-                            (#.Apply actual/1 actual/0)
+                            {#.Apply actual/1 actual/0}
                             (and (same? expected/0 actual/0)
                                  (same? expected/1 actual/1))
 
@@ -562,7 +562,7 @@
             (_.cover [/.Variant]
                      (exec
                        (: for_type/variant
-                          (#Case/1 expected_left))
+                          {#Case/1 expected_left})
                        true))
             (_.cover [/.Record]
                      (exec
@@ -836,11 +836,11 @@
         (_.cover [/.Either]
                  (and (exec
                         (: (/.Either Nat Text)
-                           (#.Left left))
+                           {#.Left left})
                         true)
                       (exec
                         (: (/.Either Nat Text)
-                           (#.Right right))
+                           {#.Right right})
                         true)))
         (_.cover [/.Any]
                  (and (exec
@@ -890,12 +890,12 @@
         (_.cover [/.Rec]
                  (let [list (: (/.Rec NList
                                  (Maybe [Nat NList]))
-                               (#.Some [item/0
-                                        (#.Some [item/1
-                                                 (#.Some [item/2
-                                                          #.None])])]))]
+                               {#.Some [item/0
+                                        {#.Some [item/1
+                                                 {#.Some [item/2
+                                                          #.None]}]}]})]
                    (case list
-                     (#.Some [actual/0 (#.Some [actual/1 (#.Some [actual/2 #.None])])])
+                     {#.Some [actual/0 {#.Some [actual/1 {#.Some [actual/2 #.None]}]}]}
                      (and (same? item/0 actual/0)
                           (same? item/1 actual/1)
                           (same? item/2 actual/2))
@@ -950,11 +950,11 @@
                       (/.case [#left expected_nat #right expected_int]
                         [#left 0 #right +0] true
                         _ false)
-                      (/.case (: (Either Nat Int) (#.Left expected_nat))
-                        (#.Left 0) true
+                      (/.case (: (Either Nat Int) {#.Left expected_nat})
+                        {#.Left 0} true
                         _ false)
-                      (/.case (: (Either Nat Int) (#.Right expected_int))
-                        (#.Right +0) true
+                      (/.case (: (Either Nat Int) {#.Right expected_int})
+                        {#.Right +0} true
                         _ false)
                       ))
         (_.cover [/.^or]
@@ -1083,8 +1083,8 @@
           (case (value@ #.mode info)
             #.Build true
             _ false)]
-      (#.Right [lux (list (code.bit (and conforming_target!
-                                         compiling!)))]))))
+      {#.Right [lux (list (code.bit (and conforming_target!
+                                         compiling!)))]})))
 
 (syntax: (for_meta|Module_State [])
   (do meta.monad
@@ -1146,8 +1146,8 @@
                                           local? (: (-> Ref Bit)
                                                     (function (_ ref)
                                                       (case ref
-                                                        (#.Local _) true
-                                                        (#.Captured _) false)))
+                                                        {#.Local _} true
+                                                        {#.Captured _} false)))
                                           captured? (: (-> Ref Bit)
                                                        (|>> local? not))
                                           binding? (: (-> (-> Ref Bit) Text Bit)
diff --git a/stdlib/source/test/lux/abstract/apply.lux b/stdlib/source/test/lux/abstract/apply.lux
index d5a1cd060..d7c6495c3 100644
--- a/stdlib/source/test/lux/abstract/apply.lux
+++ b/stdlib/source/test/lux/abstract/apply.lux
@@ -26,9 +26,9 @@
             (_.cover [/.composite]
                      (let [expected (n.+ left right)]
                        (case (\ (/.composite maybe.monad maybe.apply list.apply) on
-                                (#.Some (list right))
-                                (#.Some (list (n.+ left))))
-                         (^ (#.Some (list actual)))
+                                {#.Some (list right)}
+                                {#.Some (list (n.+ left))})
+                         (^ {#.Some (list actual)})
                          (n.= expected actual)
 
                          _
diff --git a/stdlib/source/test/lux/abstract/codec.lux b/stdlib/source/test/lux/abstract/codec.lux
index fdaff8185..aadf0d0e2 100644
--- a/stdlib/source/test/lux/abstract/codec.lux
+++ b/stdlib/source/test/lux/abstract/codec.lux
@@ -40,8 +40,8 @@
     (<| (_.covering /._)
         (_.cover [/.composite]
                  (case (|> expected (\ ..codec encoded) (\ ..codec decoded))
-                   (#try.Success actual)
+                   {#try.Success actual}
                    (bit\= expected actual)
                    
-                   (#try.Failure error)
+                   {#try.Failure error}
                    false)))))
diff --git a/stdlib/source/test/lux/abstract/enum.lux b/stdlib/source/test/lux/abstract/enum.lux
index 83505a5be..5e2807e53 100644
--- a/stdlib/source/test/lux/abstract/enum.lux
+++ b/stdlib/source/test/lux/abstract/enum.lux
@@ -38,7 +38,7 @@
                                                   (/.range n.enum start end)
                                                   (list.reversed (/.range n.enum end start)))
                              every_element_is_a_successor? (case range
-                                                             (#.Item head tail)
+                                                             {#.Item head tail}
                                                              (|> (list\mix (function (_ next [verdict prev])
                                                                              [(and verdict
                                                                                    (n.= next (\ n.enum succ prev)))
diff --git a/stdlib/source/test/lux/abstract/equivalence.lux b/stdlib/source/test/lux/abstract/equivalence.lux
index 206150921..799a657cb 100644
--- a/stdlib/source/test/lux/abstract/equivalence.lux
+++ b/stdlib/source/test/lux/abstract/equivalence.lux
@@ -48,7 +48,7 @@
                                                         [#.End #.End]
                                                         true
 
-                                                        [(#.Item leftH lefT) (#.Item rightH rightT)]
+                                                        [{#.Item leftH lefT} {#.Item rightH rightT}]
                                                         (and (n.= leftH rightH)
                                                              (\ equivalence = lefT rightT))
 
diff --git a/stdlib/source/test/lux/abstract/functor.lux b/stdlib/source/test/lux/abstract/functor.lux
index dff57b393..97540f00e 100644
--- a/stdlib/source/test/lux/abstract/functor.lux
+++ b/stdlib/source/test/lux/abstract/functor.lux
@@ -27,16 +27,16 @@
             (_.cover [/.Or /.sum]
                      (and (case (\ (/.sum maybe.functor list.functor) each
                                    (n.+ shift)
-                                   (#.Left (#.Some left)))
-                            (#.Left (#.Some actual))
+                                   {#.Left {#.Some left}})
+                            {#.Left {#.Some actual}}
                             (n.= (n.+ shift left) actual)
 
                             _
                             false)
                           (case (\ (/.sum maybe.functor list.functor) each
                                    (n.+ shift)
-                                   (#.Right (list right)))
-                            (^ (#.Right (list actual)))
+                                   {#.Right (list right)})
+                            (^ {#.Right (list actual)})
                             (n.= (n.+ shift right) actual)
 
                             _
@@ -44,8 +44,8 @@
             (_.cover [/.And /.product]
                      (case (\ (/.product maybe.functor list.functor) each
                               (n.+ shift)
-                              [(#.Some left) (list right)])
-                       (^ [(#.Some actualL) (list actualR)])
+                              [{#.Some left} (list right)])
+                       (^ [{#.Some actualL} (list actualR)])
                        (and (n.= (n.+ shift left) actualL)
                             (n.= (n.+ shift right) actualR))
 
@@ -54,8 +54,8 @@
             (_.cover [/.Then /.composite]
                      (case (\ (/.composite maybe.functor list.functor) each
                               (n.+ shift)
-                              (#.Some (list left)))
-                       (^ (#.Some (list actual)))
+                              {#.Some (list left)})
+                       (^ {#.Some (list actual)})
                        (n.= (n.+ shift left) actual)
 
                        _
diff --git a/stdlib/source/test/lux/abstract/monad/free.lux b/stdlib/source/test/lux/abstract/monad/free.lux
index 39f91dc05..8fc9c96a8 100644
--- a/stdlib/source/test/lux/abstract/monad/free.lux
+++ b/stdlib/source/test/lux/abstract/monad/free.lux
@@ -20,15 +20,15 @@
 
 (def: injection
   (Injection (/.Free List))
-  (|>> #/.Pure))
+  (|>> {#/.Pure}))
 
 (def: (interpret free)
   (All (_ a) (-> (/.Free List a) (List a)))
   (case free
-    (#/.Pure value)
+    {#/.Pure value}
     (list value)
     
-    (#/.Effect effect)
+    {#/.Effect effect}
     (|> effect
         (list\each interpret)
         list.together)))
diff --git a/stdlib/source/test/lux/abstract/predicate.lux b/stdlib/source/test/lux/abstract/predicate.lux
index 8799e27a9..3cc54444b 100644
--- a/stdlib/source/test/lux/abstract/predicate.lux
+++ b/stdlib/source/test/lux/abstract/predicate.lux
@@ -83,7 +83,7 @@
                                                    #.End
                                                    false
 
-                                                   (#.Item head tail)
+                                                   {#.Item head tail}
                                                    (or (even? head)
                                                        (recur tail)))))))]
                      (bit\= (list.any? even? samples)
diff --git a/stdlib/source/test/lux/control/concatenative.lux b/stdlib/source/test/lux/control/concatenative.lux
index 4cc158fd5..d1bb1d315 100644
--- a/stdlib/source/test/lux/control/concatenative.lux
+++ b/stdlib/source/test/lux/control/concatenative.lux
@@ -69,7 +69,7 @@
             (~~ (template [ ]
                   [(_.cover []
                             ((sum.equivalence n.= n.=)
-                             ( sample)
+                             { sample}
                              (||> (/.push sample)
                                   )))]
 
diff --git a/stdlib/source/test/lux/control/concurrency/actor.lux b/stdlib/source/test/lux/control/concurrency/actor.lux
index 27b13bba4..c36e1b074 100644
--- a/stdlib/source/test/lux/control/concurrency/actor.lux
+++ b/stdlib/source/test/lux/control/concurrency/actor.lux
@@ -36,14 +36,14 @@
    (message: (count! [increment Nat] state self)
      Nat
      (let [state' (n.+ increment state)]
-       (async\in (#try.Success [state' state']))))]
+       (async\in {#try.Success [state' state']})))]
   )
 
 (def: (mailed? outcome)
   (-> (Try Any) Bit)
   (case outcome
-    (#try.Success _) true
-    (#try.Failure _) false))
+    {#try.Success _} true
+    {#try.Failure _} false))
 
 (def: .public test
   Test
@@ -92,12 +92,12 @@
                                                                          (do [! async.monad]
                                                                            [outcome (message state self)]
                                                                            (case outcome
-                                                                             (#try.Failure cause)
+                                                                             {#try.Failure cause}
                                                                              (do !
                                                                                [_ (async.future (write cause))]
                                                                                (in outcome))
                                                                              
-                                                                             (#try.Success _)
+                                                                             {#try.Success _}
                                                                              (in outcome))))])
                                                         [])]
                                        (/.poison! actor)))
@@ -105,7 +105,7 @@
                      result (async.future (async.value read))]
                     (_.cover' [/.poisoned]
                               (case result
-                                (#.Some error)
+                                {#.Some error}
                                 (exception.match? /.poisoned error)
 
                                 #.None
@@ -127,10 +127,10 @@
                                           (/.mail! ++! counter)))]
                   (_.cover' [/.dead]
                             (case result
-                              (#try.Success outcome)
+                              {#try.Success outcome}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.dead error)))))
 
             (let [die! (: (/.Mail Nat)
@@ -142,10 +142,10 @@
                                              sent? (/.mail! die! actor)
                                              alive? (/.alive? actor)
                                              obituary (/.obituary' actor)]
-                                            (in (#try.Success [actor sent? alive? obituary]))))]
+                                            (in {#try.Success [actor sent? alive? obituary]})))]
                     (_.cover' [/.Obituary /.obituary']
                               (case result
-                                (^ (#try.Success [actor sent? alive? (#.Some [error state (list single_pending_message)])]))
+                                (^ {#try.Success [actor sent? alive? {#.Some [error state (list single_pending_message)]}]})
                                 (and (..mailed? sent?)
                                      (not alive?)
                                      (exception.match? ..got_wrecked error)
@@ -166,10 +166,10 @@
                                      (n.= 3 output_3))))]
                   (_.cover' [/.Message /.actor: /.message: /.tell!]
                             (case result
-                              (#try.Success outcome)
+                              {#try.Success outcome}
                               outcome
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               false))))
 
             (in (do async.monad
@@ -187,7 +187,7 @@
                                        (..mailed? sent/--?)
                                        (..mailed? poisoned?)
                                        (case obituary
-                                         (^ (#.Some [error final_state (list poison_pill)]))
+                                         (^ {#.Some [error final_state (list poison_pill)]})
                                          (and (exception.match? /.poisoned error)
                                               (n.= (++ (++ initial_state))
                                                    final_state))
@@ -214,10 +214,10 @@
                                                   (if (n.< num_observations events_seen)
                                                     (do !
                                                       [_ (atom.update! (row.suffix event) sink)]
-                                                      (in (#try.Success (++ events_seen))))
+                                                      (in {#try.Success (++ events_seen)}))
                                                     (do !
                                                       [_ stop]
-                                                      (in (#try.Failure "YOLO")))))))
+                                                      (in {#try.Failure "YOLO"}))))))
                                              (frp.sequential 0 events)
                                              agent)]
                               (in agent)))
diff --git a/stdlib/source/test/lux/control/concurrency/async.lux b/stdlib/source/test/lux/control/concurrency/async.lux
index 2194854b5..f117f57f5 100644
--- a/stdlib/source/test/lux/control/concurrency/async.lux
+++ b/stdlib/source/test/lux/control/concurrency/async.lux
@@ -38,8 +38,8 @@
        [?left (/.value left)
         ?right (/.value right)]
        (in (case [?left ?right]
-             [(#.Some left)
-              (#.Some right)]
+             [{#.Some left}
+              {#.Some right}]
              (== left right)
              
              _
@@ -120,7 +120,7 @@
                                 (in rightE))]
                   (_.cover' [/.or]
                             (case [?left ?right]
-                              [(#.Left leftA) (#.Right rightA)]
+                              [{#.Left leftA} {#.Right rightA}]
                               (n.= (n.+ leftE rightE)
                                    (n.+ leftA rightA))
 
@@ -141,7 +141,7 @@
                    ?never (/.future (/.value async))]
                   (_.cover' [/.value]
                             (case [?actual ?never]
-                              [(#.Some actual) #.None]
+                              [{#.Some actual} #.None]
                               (n.= expected actual)
 
                               _
@@ -159,7 +159,7 @@
                    ?actual (/.within waiting_time (in expected))]
                   (_.cover' [/.within]
                             (case [?none ?actual]
-                              [#.None (#.Some 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 d4615020b..c46d0da92 100644
--- a/stdlib/source/test/lux/control/concurrency/frp.lux
+++ b/stdlib/source/test/lux/control/concurrency/frp.lux
@@ -39,8 +39,8 @@
        [?left (async.value left)
         ?right (async.value right)]
        (in (case [?left ?right]
-             [(#.Some (#.Some [left _]))
-              (#.Some (#.Some [right _]))]
+             [{#.Some {#.Some [left _]}}
+              {#.Some {#.Some [right _]}}]
              (== left right)
              
              _
@@ -58,8 +58,8 @@
           #.None
           (in #.End)
 
-          (#.Some [head tail])
-          (\ ! each (|>> (#.Item head))
+          {#.Some [head tail]}
+          (\ ! each (|>> {#.Item head})
              (take_amount (-- amount_of_polls) [channel sink]))))))
 
 (def: .public test
@@ -90,18 +90,18 @@
                                  _ (\ sink feed sample)
                                  _ (\ sink close)]
                                 (in channel)))
-                         (#try.Success channel)
+                         {#try.Success channel}
                          (io.run!
                           (do io.monad
                             [?actual (async.value channel)]
                             (in (case ?actual
-                                  (#.Some (#.Some [actual _]))
+                                  {#.Some {#.Some [actual _]}}
                                   (n.= sample actual)
                                   
                                   _
                                   false))))
                          
-                         (#try.Failure error)
+                         {#try.Failure error}
                          false))
               (_.cover [/.channel_is_already_closed]
                        (case (io.run!
@@ -109,10 +109,10 @@
                                 [.let [[channel sink] (/.channel [])]
                                  _ (\ sink close)]
                                 (\ sink feed sample)))
-                         (#try.Success _)
+                         {#try.Success _}
                          false
                          
-                         (#try.Failure error)
+                         {#try.Failure error}
                          (exception.match? /.channel_is_already_closed error)))
               (in (do async.monad
                     [output (|> sample
@@ -148,7 +148,7 @@
                                                         _ (atom.update! (row.suffix value) sink)]
                                                        (if (n.< (list.size inputs)
                                                                 (++ (row.size current)))
-                                                         (in (#.Some []))
+                                                         (in {#.Some []})
                                                          (do !
                                                            [_ (!signal [])]
                                                            (in #.None)))))
@@ -212,8 +212,8 @@
                                 (/.iterations (function (_ [iterations current])
                                                 (async.resolved
                                                  (if (n.< max_iterations iterations)
-                                                   (#.Some [[(++ iterations) (n.+ shift current)]
-                                                            current])
+                                                   {#.Some [[(++ iterations) (n.+ shift current)]
+                                                            current]}
                                                    #.None))))
                                 /.list)]
                     (_.cover' [/.iterations]
diff --git a/stdlib/source/test/lux/control/concurrency/semaphore.lux b/stdlib/source/test/lux/control/concurrency/semaphore.lux
index 6f87f0889..44b2241f3 100644
--- a/stdlib/source/test/lux/control/concurrency/semaphore.lux
+++ b/stdlib/source/test/lux/control/concurrency/semaphore.lux
@@ -45,7 +45,7 @@
                      [result (async.within ..delay (/.wait! semaphore))]
                      (_.cover' [/.semaphore]
                                (case result
-                                 (#.Some _)
+                                 {#.Some _}
                                  true
 
                                  #.None
@@ -58,7 +58,7 @@
                       result (async.within ..delay (/.wait! semaphore))]
                      (_.cover' [/.wait!]
                                (case result
-                                 (#.Some _)
+                                 {#.Some _}
                                  false
 
                                  #.None
@@ -74,7 +74,7 @@
                       result/1 (async.within ..delay block)]
                      (_.cover' [/.signal!]
                                (case [result/0 result/1 open_positions]
-                                 [#.None (#.Some _) (#try.Success +0)]
+                                 [#.None {#.Some _} {#try.Success +0}]
                                  true
 
                                  _
@@ -86,7 +86,7 @@
                      [outcome (/.signal! semaphore)]
                      (_.cover' [/.semaphore_is_maxed_out]
                                (case outcome
-                                 (#try.Failure error)
+                                 {#try.Failure error}
                                  (exception.match? /.semaphore_is_maxed_out error)
 
                                  _
@@ -148,7 +148,7 @@
                           [0 #.None]
                           true
                           
-                          [_ (#.Some limit)]
+                          [_ {#.Some limit}]
                           (and (n.> 0 raw)
                                (n.= raw (refinement.value limit)))
 
diff --git a/stdlib/source/test/lux/control/continuation.lux b/stdlib/source/test/lux/control/continuation.lux
index ecb4ee77d..9fcea56e8 100644
--- a/stdlib/source/test/lux/control/continuation.lux
+++ b/stdlib/source/test/lux/control/continuation.lux
@@ -75,12 +75,12 @@
                                       #.End
                                       (_\in #.End)
 
-                                      (#.Item x xs')
+                                      {#.Item x xs'}
                                       (do [! /.monad]
                                         [output (/.shift (function (_ k)
                                                            (do !
                                                              [tail (k xs')]
-                                                             (in (#.Item x tail)))))]
+                                                             (in {#.Item x tail}))))]
                                         (visit output)))))]
                      (list\= elems
                              (/.result (/.reset (visit elems))))))
diff --git a/stdlib/source/test/lux/control/exception.lux b/stdlib/source/test/lux/control/exception.lux
index faeac513e..1a0d26c86 100644
--- a/stdlib/source/test/lux/control/exception.lux
+++ b/stdlib/source/test/lux/control/exception.lux
@@ -39,24 +39,24 @@
         ($_ _.and
             (_.cover [/.except]
                      (case (/.except ..an_exception [])
-                       (#try.Success _) false
-                       (#try.Failure _) true))
+                       {#try.Success _} false
+                       {#try.Failure _} true))
             (_.cover [/.error]
                      (case (/.except ..an_exception [])
-                       (#try.Success _)
+                       {#try.Success _}
                        false
                        
-                       (#try.Failure message)
+                       {#try.Failure message}
                        (text\= message (/.error ..an_exception []))))
             (_.cover [/.match?]
                      (/.match? ..an_exception
                                (/.error ..an_exception [])))
             (_.cover [/.assertion]
                      (case (/.assertion ..an_exception [] assertion_succeeded?)
-                       (#try.Success _)
+                       {#try.Success _}
                        assertion_succeeded?
                        
-                       (#try.Failure message)
+                       {#try.Failure message}
                        (and (not assertion_succeeded?)
                             (text\= message (/.error ..an_exception [])))))
             (_.cover [/.when]
@@ -88,27 +88,27 @@
                             (text.contains? field1 enumeration)
                             (text.contains? value1 enumeration))))
             (_.cover [/.with]
-                     (and (case (/.with ..an_exception [] (#try.Success expected))
-                            (#try.Success actual) (n.= expected actual)
-                            (#try.Failure _) false)
-                          (case (/.with ..an_exception [] (#try.Failure ""))
-                            (#try.Success _) false
-                            (#try.Failure message) (text\= message (/.error ..an_exception [])))
+                     (and (case (/.with ..an_exception [] {#try.Success expected})
+                            {#try.Success actual} (n.= expected actual)
+                            {#try.Failure _} false)
+                          (case (/.with ..an_exception [] {#try.Failure ""})
+                            {#try.Success _} false
+                            {#try.Failure message} (text\= message (/.error ..an_exception [])))
                           (case (/.with ..an_exception []
                                   (: (Try Nat)
                                      (/.except ..another_exception [])))
-                            (#try.Success _)
+                            {#try.Success _}
                             false
                             
-                            (#try.Failure message)
+                            {#try.Failure message}
                             (and (text.contains? (/.error ..an_exception []) message)
                                  (text.contains? (/.error ..another_exception []) message)))))
             (_.cover [/.exception:]
                      (case (/.except ..custom_exception [expected])
-                       (#try.Success _)
+                       {#try.Success _}
                        false
                        
-                       (#try.Failure message)
+                       {#try.Failure message}
                        (and (text.contains? ..label message)
                             (text.contains? (%.nat expected) message))))
             ))))
diff --git a/stdlib/source/test/lux/control/function/contract.lux b/stdlib/source/test/lux/control/function/contract.lux
index 2ea5d8e3e..3e50834a7 100644
--- a/stdlib/source/test/lux/control/function/contract.lux
+++ b/stdlib/source/test/lux/control/function/contract.lux
@@ -25,20 +25,20 @@
           (_.cover [/.pre /.pre_condition_failed]
                    (case (try (/.pre (n.even? expected)
                                      true))
-                     (#try.Success output)
+                     {#try.Success output}
                      output
                      
-                     (#try.Failure error)
+                     {#try.Failure error}
                      (and (text.contains? (value@ #exception.label /.pre_condition_failed)
                                           error)
                           (not (n.even? expected)))))
           (_.cover [/.post /.post_condition_failed]
                    (case (try (/.post n.odd?
                                       expected))
-                     (#try.Success actual)
+                     {#try.Success actual}
                      (same? expected actual)
                      
-                     (#try.Failure error)
+                     {#try.Failure error}
                      (and (text.contains? (value@ #exception.label /.post_condition_failed)
                                           error)
                           (not (n.odd? expected)))))
diff --git a/stdlib/source/test/lux/control/maybe.lux b/stdlib/source/test/lux/control/maybe.lux
index 1c3e270a5..2cdce3830 100644
--- a/stdlib/source/test/lux/control/maybe.lux
+++ b/stdlib/source/test/lux/control/maybe.lux
@@ -55,7 +55,7 @@
                                       [a (lifted (io\in left))
                                        b (in right)]
                                       (in (n.+ a b))))
-                           (case> (#.Some actual)
+                           (case> {#.Some actual}
                                   (n.= expected actual)
 
                                   _
@@ -68,21 +68,21 @@
                                                  #.None))
 
                           (same? value (/.else default
-                                               (#.Some value))))))
+                                               {#.Some value})))))
           (do random.monad
             [value random.nat]
             (_.cover [/.trusted]
-                     (same? value (/.trusted (#.Some value)))))
+                     (same? value (/.trusted {#.Some value}))))
           (do random.monad
             [value random.nat]
             (_.cover [/.list]
                      (\ (list.equivalence n.equivalence) =
                         (list value)
-                        (/.list (#.Some value)))))
+                        (/.list {#.Some value}))))
           (do random.monad
             [expected random.nat
              .let [(^open "/\[0]") (/.equivalence n.equivalence)]]
             (_.cover [/.when]
-                     (and (/\= (#.Some expected) (/.when true (#.Some expected)))
-                          (/\= #.None (/.when false (#.Some expected))))))
+                     (and (/\= {#.Some expected} (/.when true {#.Some expected}))
+                          (/\= #.None (/.when false {#.Some expected})))))
           )))
diff --git a/stdlib/source/test/lux/control/parser.lux b/stdlib/source/test/lux/control/parser.lux
index fa3e828dc..119bfebb6 100644
--- a/stdlib/source/test/lux/control/parser.lux
+++ b/stdlib/source/test/lux/control/parser.lux
@@ -43,7 +43,7 @@
 (def: (should_fail expected input)
   (All (_ a) (-> Text (Try a) Bit))
   (case input
-    (#try.Failure actual)
+    {#try.Failure actual}
     (text\= expected actual)
     
     _
@@ -52,7 +52,7 @@
 (def: (enforced? parser input)
   (All (_ s) (-> (Parser s Any) s Bit))
   (case (/.result parser input)
-    (#try.Success [_ []])
+    {#try.Success [_ []]}
     #1
 
     _
@@ -61,7 +61,7 @@
 (def: (found? parser input)
   (All (_ s) (-> (Parser s Bit) s Bit))
   (case (/.result parser input)
-    (#try.Success [_ #1])
+    {#try.Success [_ #1]}
     #1
 
     _
@@ -70,7 +70,7 @@
 (def: (fails? input)
   (All (_ a) (-> (Try a) Bit))
   (case input
-    (#try.Failure _)
+    {#try.Failure _}
     #1
 
     _
@@ -80,7 +80,7 @@
                  then .any
                  input .any])
   (in (list (` (case (~ input)
-                 (^ (#try.Success [(~' _) (~ pattern)]))
+                 (^ {#try.Success [(~' _) (~ pattern)]})
                  (~ then)
 
                  (~' _)
@@ -99,7 +99,7 @@
         (_.cover [/.maybe]
                  (and (|> (list (code.nat expected0))
                           (/.result (/.maybe .nat))
-                          (match (#.Some actual)
+                          (match {#.Some actual}
                                  (n.= expected0 actual)))
                       (|> (list (code.int (.int expected0)))
                           (/.result (/.maybe .nat))
@@ -149,10 +149,10 @@
                        odd (/.only n.odd? .nat)]
                    (and (|> (list (code.nat even0))
                             (/.result (/.or even odd))
-                            (match (#.Left actual) (n.= even0 actual)))
+                            (match {#.Left actual} (n.= even0 actual)))
                         (|> (list (code.nat odd0))
                             (/.result (/.or even odd))
-                            (match (#.Right actual) (n.= odd0 actual)))
+                            (match {#.Right actual} (n.= odd0 actual)))
                         (|> (list (code.bit not0))
                             (/.result (/.or even odd))
                             fails?))))
@@ -339,7 +339,7 @@
   (Comparison (All (_ a i) (Parser i a)))
   (function (_ == left right)
     (case [(/.result left []) (/.result right [])]
-      [(#try.Success [_ left]) (#try.Success [_ right])]
+      [{#try.Success [_ left]} {#try.Success [_ right]}]
       (== left right)
 
       _
@@ -370,10 +370,10 @@
                          (should_fail failure)))
             (_.cover [/.lifted]
                      (and (|> (list)
-                              (/.result (/.lifted (#try.Success expected)))
+                              (/.result (/.lifted {#try.Success expected}))
                               (match actual (n.= expected actual)))
                           (|> (list)
-                              (/.result (/.lifted (#try.Failure failure)))
+                              (/.result (/.lifted {#try.Failure failure}))
                               (should_fail failure))))
             (_.cover [/.assertion]
                      (and (|> (list (code.bit #1) (code.int +123))
diff --git a/stdlib/source/test/lux/control/parser/analysis.lux b/stdlib/source/test/lux/control/parser/analysis.lux
index c1babf741..392e66382 100644
--- a/stdlib/source/test/lux/control/parser/analysis.lux
+++ b/stdlib/source/test/lux/control/parser/analysis.lux
@@ -57,10 +57,10 @@
                   (_.cover [/.result /.any]
                            (|> (list expected)
                                (/.result /.any)
-                               (case> (#try.Success actual)
+                               (case> {#try.Success actual}
                                       (\ analysis.equivalence = expected actual)
 
-                                      (#try.Failure _)
+                                      {#try.Failure _}
                                       false))))
                 (~~ (template [    <=>]
                       [(do [! random.monad]
@@ -68,17 +68,17 @@
                          (_.cover []
                                   (|> (list ( expected))
                                       (/.result )
-                                      (case> (#try.Success actual)
+                                      (case> {#try.Success actual}
                                              (<=> expected actual)
 
-                                             (#try.Failure _)
+                                             {#try.Failure _}
                                              false))))
                        (do [! random.monad]
                          [expected ]
                          (_.cover []
                                   (|> (list ( expected))
                                       (/.result ( expected))
-                                      (!expect (#try.Success _)))))]
+                                      (!expect {#try.Success _}))))]
                       
                       [/.bit /.bit! random.bit analysis.bit bit\=]
                       [/.nat /.nat! random.nat analysis.nat n.=]
@@ -95,54 +95,54 @@
                   (_.cover [/.tuple]
                            (|> (list (analysis.tuple (list (analysis.bit expected))))
                                (/.result (/.tuple /.bit))
-                               (case> (#try.Success actual)
+                               (case> {#try.Success actual}
                                       (bit\= expected actual)
 
-                                      (#try.Failure _)
+                                      {#try.Failure _}
                                       false))))
                 (do [! random.monad]
                   [dummy random.bit]
                   (_.cover [/.end?]
                            (and (|> (/.result /.end? (list))
-                                    (!expect (#try.Success #1)))
+                                    (!expect {#try.Success #1}))
                                 (|> (/.result (do <>.monad
                                                 [verdict /.end?
                                                  _ /.bit]
                                                 (in verdict))
                                               (list (analysis.bit dummy)))
-                                    (!expect (#try.Success #0))))))
+                                    (!expect {#try.Success #0})))))
                 (do [! random.monad]
                   [dummy random.bit]
                   (_.cover [/.end!]
                            (and (|> (/.result /.end! (list))
-                                    (!expect (#try.Success _)))
+                                    (!expect {#try.Success _}))
                                 (|> (/.result /.end! (list (analysis.bit dummy)))
-                                    (!expect (#try.Failure _))))))
+                                    (!expect {#try.Failure _})))))
                 (do [! random.monad]
                   [expected random.bit]
                   (_.cover [/.cannot_parse]
                            (and (|> (list (analysis.bit expected))
                                     (/.result /.nat)
-                                    (case> (#try.Success _)
+                                    (case> {#try.Success _}
                                            false
 
-                                           (#try.Failure error)
+                                           {#try.Failure error}
                                            (exception.match? /.cannot_parse error)))
                                 (|> (list)
                                     (/.result /.bit)
-                                    (case> (#try.Success _)
+                                    (case> {#try.Success _}
                                            false
 
-                                           (#try.Failure error)
+                                           {#try.Failure error}
                                            (exception.match? /.cannot_parse error))))))
                 (do [! random.monad]
                   [expected random.bit]
                   (_.cover [/.unconsumed_input]
                            (|> (list (analysis.bit expected) (analysis.bit expected))
                                (/.result /.bit)
-                               (case> (#try.Success _)
+                               (case> {#try.Success _}
                                       false
 
-                                      (#try.Failure error)
+                                      {#try.Failure error}
                                       (exception.match? /.unconsumed_input error)))))
                 )))))
diff --git a/stdlib/source/test/lux/control/parser/binary.lux b/stdlib/source/test/lux/control/parser/binary.lux
index 7e8ddd47c..40e2fa301 100644
--- a/stdlib/source/test/lux/control/parser/binary.lux
+++ b/stdlib/source/test/lux/control/parser/binary.lux
@@ -56,10 +56,10 @@
   (|> value
       (\ utf8.codec encoded)
       (\ utf8.codec decoded)
-      (case> (#try.Success converted)
+      (case> {#try.Success converted}
              (text\= value converted)
              
-             (#try.Failure error)
+             {#try.Failure error}
              false)))
 
 (def: random_text
@@ -131,7 +131,7 @@
                        (_.cover [  ]
                                 (|> (format.result  expected)
                                     (/.result )
-                                    (!expect (^multi (#try.Success actual)
+                                    (!expect (^multi {#try.Success actual}
                                                      (n.= (.nat expected)
                                                           (.nat actual)))))))]
 
@@ -150,7 +150,7 @@
                    (_.cover [ ]
                             (|> (format.result  expected)
                                 (/.result )
-                                (!expect (^multi (#try.Success actual)
+                                (!expect (^multi {#try.Success actual}
                                                  (\ binary.equivalence = expected actual))))))]
 
                 [/.binary/8 format.binary/8]
@@ -168,7 +168,7 @@
                    (_.cover [ ]
                             (|> (format.result  expected)
                                 (/.result )
-                                (!expect (^multi (#try.Success actual)
+                                (!expect (^multi {#try.Success actual}
                                                  (\ text.equivalence = expected actual))))))]
 
                 [/.utf8/8 format.utf8/8]
@@ -188,7 +188,7 @@
                             (|> expected
                                 (format.result ( format.nat))
                                 (/.result ( /.nat))
-                                (!expect (^multi (#try.Success actual)
+                                (!expect (^multi {#try.Success actual}
                                                  (\ (row.equivalence n.equivalence) = expected actual))))))]
 
                 [/.row/8 format.row/8]
@@ -207,7 +207,7 @@
                             (|> expected
                                 (format.result )
                                 (/.result )
-                                (!expect (^multi (#try.Success actual)
+                                (!expect (^multi {#try.Success actual}
                                                  (\  = expected actual))))))]
 
                 [/.bit format.bit random.bit bit.equivalence]
@@ -220,7 +220,7 @@
                      (|> expected
                          (format.result format.frac)
                          (/.result /.frac)
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (or (\ frac.equivalence = expected actual)
                                               (and (frac.not_a_number? expected)
                                                    (frac.not_a_number? actual))))))))
@@ -232,7 +232,7 @@
                      (|> expected
                          (format.result format.bits/8)
                          (/.result /.bit)
-                         (!expect (^multi (#try.Failure error)
+                         (!expect (^multi {#try.Failure error}
                                           (exception.match? /.not_a_bit error))))))
           )))
 
@@ -246,7 +246,7 @@
                             (|> expected
                                 (format.result )
                                 (/.result )
-                                (!expect (^multi (#try.Success actual)
+                                (!expect (^multi {#try.Success actual}
                                                  (\  = expected actual))))))]
 
                 [/.location format.location random_location location_equivalence]
@@ -260,7 +260,7 @@
                             (|> expected
                                 (format.result )
                                 (/.result )
-                                (!expect (^multi (#try.Success actual)
+                                (!expect (^multi {#try.Success actual}
                                                  (\  = expected actual))))))]
 
                 [/.maybe (/.maybe /.nat) format.maybe (format.maybe format.nat) (random.maybe random.nat) (maybe.equivalence n.equivalence)]
@@ -273,7 +273,7 @@
                      (|> expected
                          (format.result (format.list format.nat))
                          (/.result (/.set n.hash /.nat))
-                         (!expect (^multi (#try.Failure error)
+                         (!expect (^multi {#try.Failure error}
                                           (exception.match? /.set_elements_are_not_unique error))))))
           (do [! random.monad]
             [expected (random.or random.bit random.nat)]
@@ -282,7 +282,7 @@
                          (format.result (format.or format.bit format.nat))
                          (/.result (: (/.Parser (Either Bit Nat))
                                       (/.or /.bit /.nat)))
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (\ (sum.equivalence bit.equivalence n.equivalence) =
                                              expected
                                              actual))))))
@@ -296,7 +296,7 @@
                          (format.result (format.and format.bits/8 format.bit))
                          (/.result (: (/.Parser (Either Bit Nat))
                                       (/.or /.bit /.nat)))
-                         (!expect (^multi (#try.Failure error)
+                         (!expect (^multi {#try.Failure error}
                                           (exception.match? /.invalid_tag error))))))
           (do [! random.monad]
             [expected (random.list ..segment_size random.nat)]
@@ -310,7 +310,7 @@
                                          (/.or /.any
                                                (<>.and /.nat
                                                        recur))))))
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (\ (list.equivalence n.equivalence) =
                                              expected
                                              actual))))))
@@ -325,13 +325,13 @@
                         format.no_op format.instance]
                        (|> (format.instance format.no_op)
                            (/.result /.any)
-                           (!expect (#try.Success _))))
+                           (!expect {#try.Success _})))
               (do [! random.monad]
                 [data (\ ! each (\ utf8.codec encoded) (random.ascii ..segment_size))]
                 (_.cover [/.binary_was_not_fully_read]
                          (|> data
                              (/.result /.any)
-                             (!expect (^multi (#try.Failure error)
+                             (!expect (^multi {#try.Failure error}
                                               (exception.match? /.binary_was_not_fully_read error))))))
               (do [! random.monad]
                 [expected (\ ! each (\ utf8.codec encoded) (random.ascii ..segment_size))]
@@ -339,7 +339,7 @@
                          (|> expected
                              (format.result (format.segment ..segment_size))
                              (/.result (/.segment ..segment_size))
-                             (!expect (^multi (#try.Success actual)
+                             (!expect (^multi {#try.Success actual}
                                               (\ binary.equivalence = expected actual))))))
               (do [! random.monad]
                 [data (\ ! each (\ utf8.codec encoded) (random.ascii ..segment_size))]
@@ -351,7 +351,7 @@
                                           post /.end?]
                                          (in (and (not pre)
                                                   post))))
-                             (!expect (#try.Success #1)))))
+                             (!expect {#try.Success #1}))))
               (do [! random.monad]
                 [to_read (\ ! each (n.% (++ ..segment_size)) random.nat)
                  data (\ ! each (\ utf8.codec encoded) (random.ascii ..segment_size))]
@@ -366,7 +366,7 @@
                                          (in (and (n.= 0 start)
                                                   (n.= to_read offset)
                                                   (n.= ..segment_size nothing_left)))))
-                             (!expect (#try.Success #1)))))
+                             (!expect {#try.Success #1}))))
               (do [! random.monad]
                 [to_read (\ ! each (n.% (++ ..segment_size)) random.nat)
                  data (\ ! each (\ utf8.codec encoded) (random.ascii ..segment_size))]
@@ -380,7 +380,7 @@
                                          (in (and (n.= ..segment_size
                                                        (n.+ to_read remaining))
                                                   (n.= 0 nothing_left)))))
-                             (!expect (#try.Success #1)))))
+                             (!expect {#try.Success #1}))))
               ..size
               ..binary
               ..utf8
diff --git a/stdlib/source/test/lux/control/parser/cli.lux b/stdlib/source/test/lux/control/parser/cli.lux
index 69f8cfe3e..fe10e5ccd 100644
--- a/stdlib/source/test/lux/control/parser/cli.lux
+++ b/stdlib/source/test/lux/control/parser/cli.lux
@@ -42,42 +42,42 @@
         ($_ _.and
             (_.cover [/.result /.any]
                      (|> (/.result /.any (list expected))
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (text\= expected actual)))))
             (_.cover [/.parse]
                      (|> (/.result (/.parse n\decoded) (list expected))
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (text\= expected
                                                   (n\encoded actual))))))
             (_.cover [/.this]
                      (and (|> (/.result (/.this expected) (list expected))
-                              (!expect (#try.Success _)))
+                              (!expect {#try.Success _}))
                           (|> (/.result (/.this expected) (list dummy))
-                              (!expect (#try.Failure _)))))
+                              (!expect {#try.Failure _}))))
             (_.cover [/.somewhere]
                      (|> (/.result (|> (/.somewhere (/.this expected))
                                        (<>.before (<>.some /.any)))
                                    (list.together (list pre_ignore (list expected) post_ignore)))
-                         (!expect (#try.Success _))))
+                         (!expect {#try.Success _})))
             (_.cover [/.end]
                      (and (|> (/.result /.end (list))
-                              (!expect (#try.Success _)))
+                              (!expect {#try.Success _}))
                           (|> (/.result (<>.not /.end) (list expected))
-                              (!expect (#try.Failure _)))))
+                              (!expect {#try.Failure _}))))
             (_.cover [/.named]
                      (|> (/.result (/.named dummy /.any) (list dummy expected))
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (text\= expected actual)))))
             (_.cover [/.parameter]
                      (and (|> (/.result (/.parameter [short long] /.any)
                                         (list short expected))
-                              (!expect (^multi (#try.Success actual)
+                              (!expect (^multi {#try.Success actual}
                                                (text\= expected actual))))
                           (|> (/.result (/.parameter [short long] /.any)
                                         (list long expected))
-                              (!expect (^multi (#try.Success actual)
+                              (!expect (^multi {#try.Success actual}
                                                (text\= expected actual))))
                           (|> (/.result (/.parameter [short long] /.any)
                                         (list dummy expected))
-                              (!expect (#try.Failure _)))))
+                              (!expect {#try.Failure _}))))
             ))))
diff --git a/stdlib/source/test/lux/control/parser/code.lux b/stdlib/source/test/lux/control/parser/code.lux
index 8ee19b7e4..400aea243 100644
--- a/stdlib/source/test/lux/control/parser/code.lux
+++ b/stdlib/source/test/lux/control/parser/code.lux
@@ -48,9 +48,9 @@
                 [expected (\ ! each code.bit random.bit)]
                 (_.cover [/.result]
                          (and (|> (/.result /.any (list expected))
-                                  (!expect (#try.Success _)))
+                                  (!expect {#try.Success _}))
                               (|> (/.result /.any (list))
-                                  (!expect (#try.Failure _))))))
+                                  (!expect {#try.Failure _})))))
               (~~ (template [    ]
                     [(do [! random.monad]
                        [expected 
@@ -58,13 +58,13 @@
                        ($_ _.and
                            (_.cover []
                                     (|> (/.result  (list ( expected)))
-                                        (!expect (^multi (#try.Success actual)
+                                        (!expect (^multi {#try.Success actual}
                                                          (\  = expected actual)))))
                            (_.cover []
                                     (and (|> (/.result ( expected) (list ( expected)))
-                                             (!expect (#try.Success [])))
+                                             (!expect {#try.Success []}))
                                          (|> (/.result ( expected) (list ( dummy)))
-                                             (!expect (#try.Failure _)))))
+                                             (!expect {#try.Failure _}))))
                            ))]
 
                     [/.any /.this! (\ ! each code.bit random.bit) function.identity code.equivalence]
@@ -87,7 +87,7 @@
                                 (|> (/.result ( (<>.and /.nat /.int))
                                               (list ( (list (code.nat expected_left)
                                                                   (code.int expected_right)))))
-                                    (!expect (^multi (#try.Success [actual_left actual_right])
+                                    (!expect (^multi {#try.Success [actual_left actual_right]}
                                                      (and (\ nat.equivalence = expected_left actual_left)
                                                           (\ int.equivalence = expected_right actual_right)))))))]
 
@@ -102,7 +102,7 @@
                          (|> (/.result (<>.and (/.local (list (code.nat expected_local)) /.nat)
                                                /.int)
                                        (list (code.int expected_global)))
-                             (!expect (^multi (#try.Success [actual_local actual_global])
+                             (!expect (^multi {#try.Success [actual_local actual_global]}
                                               (and (\ nat.equivalence = expected_local actual_local)
                                                    (\ int.equivalence = expected_global actual_global)))))))
               (do [! random.monad]
@@ -115,15 +115,15 @@
                                          (in (and (not pre)
                                                   post)))
                                        (list dummy))
-                             (!expect (^multi (#try.Success verdict)
+                             (!expect (^multi {#try.Success verdict}
                                               verdict)))))
               (do [! random.monad]
                 [dummy (\ ! each code.bit random.bit)]
                 (_.cover [/.end!]
                          (and (|> (/.result /.end! (list))
-                                  (!expect (#try.Success [])))
+                                  (!expect {#try.Success []}))
                               (|> (/.result /.end! (list dummy))
-                                  (!expect (#try.Failure _))))))
+                                  (!expect {#try.Failure _})))))
               (do [! random.monad]
                 [expected (\ ! each code.bit random.bit)]
                 (_.cover [/.next]
@@ -133,13 +133,13 @@
                                          (in (and (same? expected pre)
                                                   (same? pre post))))
                                        (list expected))
-                             (!expect (#try.Success _)))))
+                             (!expect {#try.Success _}))))
               (do [! random.monad]
                 [expected (\ ! each code.bit random.bit)]
                 (_.cover [/.not]
                          (and (|> (/.result (/.not /.nat) (list expected))
-                                  (!expect (^multi (#try.Success actual)
+                                  (!expect (^multi {#try.Success actual}
                                                    (same? expected actual))))
                               (|> (/.result (/.not /.bit) (list expected))
-                                  (!expect (#try.Failure _))))))
+                                  (!expect {#try.Failure _})))))
               ))))
diff --git a/stdlib/source/test/lux/control/parser/environment.lux b/stdlib/source/test/lux/control/parser/environment.lux
index 42c09df66..dbef40a52 100644
--- a/stdlib/source/test/lux/control/parser/environment.lux
+++ b/stdlib/source/test/lux/control/parser/environment.lux
@@ -45,9 +45,9 @@
             [property (random.ascii/alpha 1)]
             (_.cover [/.unknown_property]
                      (case (/.result (/.property property) /.empty)
-                       (#try.Success _)
+                       {#try.Success _}
                        false
                        
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.unknown_property error))))
           )))
diff --git a/stdlib/source/test/lux/control/parser/json.lux b/stdlib/source/test/lux/control/parser/json.lux
index 1e440036e..ad35703ab 100644
--- a/stdlib/source/test/lux/control/parser/json.lux
+++ b/stdlib/source/test/lux/control/parser/json.lux
@@ -49,30 +49,30 @@
                 [expected (\ ! each (|>> #json.String) (random.unicode 1))]
                 (_.cover [/.result /.any]
                          (|> (/.result /.any expected)
-                             (!expect (^multi (#try.Success actual)
+                             (!expect (^multi {#try.Success actual}
                                               (\ json.equivalence = expected actual))))))
               (_.cover [/.null]
                        (|> (/.result /.null #json.Null)
-                           (!expect (#try.Success _))))
+                           (!expect {#try.Success _})))
               (~~ (template [     ]
                     [(do [! random.monad]
                        [expected 
                         dummy (|>  (random.only (|>> (\  = expected) not)))]
                        ($_ _.and
                            (_.cover []
-                                    (|> (/.result  ( expected))
-                                        (!expect (^multi (#try.Success actual)
+                                    (|> (/.result  { expected})
+                                        (!expect (^multi {#try.Success actual}
                                                          (\  = expected actual)))))
                            (_.cover []
-                                    (and (|> (/.result ( expected) ( expected))
-                                             (!expect (#try.Success #1)))
-                                         (|> (/.result ( expected) ( dummy))
-                                             (!expect (#try.Success #0)))))
+                                    (and (|> (/.result ( expected) { expected})
+                                             (!expect {#try.Success #1}))
+                                         (|> (/.result ( expected) { dummy})
+                                             (!expect {#try.Success #0}))))
                            (_.cover []
-                                    (and (|> (/.result ( expected) ( expected))
-                                             (!expect (#try.Success _)))
-                                         (|> (/.result ( expected) ( dummy))
-                                             (!expect (#try.Failure _)))))))]
+                                    (and (|> (/.result ( expected) { expected})
+                                             (!expect {#try.Success _}))
+                                         (|> (/.result ( expected) { dummy})
+                                             (!expect {#try.Failure _}))))))]
 
                     [/.boolean /.boolean? /.boolean! random.bit #json.Boolean bit.equivalence]
                     [/.number /.number? /.number! ..safe_frac #json.Number frac.equivalence]
@@ -82,25 +82,25 @@
                 [expected (random.unicode 1)
                  dummy random.bit]
                 (_.cover [/.unexpected_value]
-                         (|> (/.result /.string (#json.Boolean dummy))
-                             (!expect (^multi (#try.Failure error)
+                         (|> (/.result /.string {#json.Boolean dummy})
+                             (!expect (^multi {#try.Failure error}
                                               (exception.match? /.unexpected_value error))))))
               (do [! random.monad]
                 [expected (random.unicode 1)
                  dummy (|> (random.unicode 1) (random.only (|>> (\ text.equivalence = expected) not)))]
                 (_.cover [/.value_mismatch]
-                         (|> (/.result (/.string! expected) (#json.String dummy))
-                             (!expect (^multi (#try.Failure error)
+                         (|> (/.result (/.string! expected) {#json.String dummy})
+                             (!expect (^multi {#try.Failure error}
                                               (exception.match? /.value_mismatch error))))))
               (do [! random.monad]
                 [expected (random.unicode 1)]
                 (_.cover [/.nullable]
                          (and (|> (/.result (/.nullable /.string) #json.Null)
-                                  (!expect (^multi (#try.Success actual)
+                                  (!expect (^multi {#try.Success actual}
                                                    (\ (maybe.equivalence text.equivalence) = #.None actual))))
-                              (|> (/.result (/.nullable /.string) (#json.String expected))
-                                  (!expect (^multi (#try.Success actual)
-                                                   (\ (maybe.equivalence text.equivalence) = (#.Some expected) actual)))))))
+                              (|> (/.result (/.nullable /.string) {#json.String expected})
+                                  (!expect (^multi {#try.Success actual}
+                                                   (\ (maybe.equivalence text.equivalence) = {#.Some expected} actual)))))))
               (do [! random.monad]
                 [size (\ ! each (n.% 10) random.nat)
                  expected (|> (random.unicode 1)
@@ -108,18 +108,18 @@
                               (\ ! each row.of_list))]
                 (_.cover [/.array]
                          (|> (/.result (/.array (<>.some /.string))
-                                       (#json.Array (row\each (|>> #json.String) expected)))
-                             (!expect (^multi (#try.Success actual)
+                                       {#json.Array (row\each (|>> #json.String) expected)})
+                             (!expect (^multi {#try.Success actual}
                                               (\ (row.equivalence text.equivalence) = expected (row.of_list actual)))))))
               (do [! random.monad]
                 [expected (\ ! each (|>> #json.String) (random.unicode 1))]
                 (_.cover [/.unconsumed_input]
-                         (|> (/.result (/.array /.any) (#json.Array (row expected expected)))
-                             (!expect (^multi (#try.Failure error)
+                         (|> (/.result (/.array /.any) {#json.Array (row expected expected)})
+                             (!expect (^multi {#try.Failure error}
                                               (exception.match? /.unconsumed_input error))))))
               (_.cover [/.empty_input]
-                       (|> (/.result (/.array /.any) (#json.Array (row)))
-                           (!expect (^multi (#try.Failure error)
+                       (|> (/.result (/.array /.any) {#json.Array (row)})
+                           (!expect (^multi {#try.Failure error}
                                             (exception.match? /.empty_input error)))))
               (do [! random.monad]
                 [expected_boolean random.bit
@@ -137,12 +137,12 @@
                                                      (/.field boolean_field /.boolean)
                                                      (/.field number_field /.number)
                                                      (/.field string_field /.string)))
-                                       (#json.Object
+                                       {#json.Object
                                         (dictionary.of_list text.hash
-                                                            (list [boolean_field (#json.Boolean expected_boolean)]
-                                                                  [number_field (#json.Number expected_number)]
-                                                                  [string_field (#json.String expected_string)]))))
-                             (!expect (^multi (#try.Success [actual_boolean actual_number actual_string])
+                                                            (list [boolean_field {#json.Boolean expected_boolean}]
+                                                                  [number_field {#json.Number expected_number}]
+                                                                  [string_field {#json.String expected_string}]))})
+                             (!expect (^multi {#try.Success [actual_boolean actual_number actual_string]}
                                               (and (\ bit.equivalence = expected_boolean actual_boolean)
                                                    (\ frac.equivalence = expected_number actual_number)
                                                    (\ text.equivalence = expected_string actual_string)))))))
@@ -153,11 +153,11 @@
                  .let [expected (dictionary.of_list text.hash (list.zipped/2 keys values))]]
                 (_.cover [/.dictionary]
                          (|> (/.result (/.dictionary /.string)
-                                       (#json.Object
+                                       {#json.Object
                                         (|> values
                                             (list\each (|>> #json.String))
                                             (list.zipped/2 keys)
-                                            (dictionary.of_list text.hash))))
-                             (!expect (^multi (#try.Success actual)
+                                            (dictionary.of_list text.hash))})
+                             (!expect (^multi {#try.Success actual}
                                               (\ (dictionary.equivalence text.equivalence) = expected actual))))))
               ))))
diff --git a/stdlib/source/test/lux/control/parser/synthesis.lux b/stdlib/source/test/lux/control/parser/synthesis.lux
index 9068cad62..67906c0a1 100644
--- a/stdlib/source/test/lux/control/parser/synthesis.lux
+++ b/stdlib/source/test/lux/control/parser/synthesis.lux
@@ -68,13 +68,13 @@
                    ($_ _.and
                        (_.cover []
                                 (|> (/.result  (list ( expected)))
-                                    (!expect (^multi (#try.Success actual)
+                                    (!expect (^multi {#try.Success actual}
                                                      (\  = expected actual)))))
                        (_.cover []
                                 (and (|> (/.result ( expected) (list ( expected)))
-                                         (!expect (#try.Success _)))
+                                         (!expect {#try.Success _}))
                                      (|> (/.result ( expected) (list ( dummy)))
-                                         (!expect (^multi (#try.Failure error)
+                                         (!expect (^multi {#try.Failure error}
                                                           (exception.match? /.cannot_parse error))))))
                        ))]
 
@@ -102,14 +102,14 @@
                                                                  (synthesis.i64 expected_i64)
                                                                  (synthesis.f64 expected_f64)
                                                                  (synthesis.text expected_text)))))
-                          (!expect (^multi (#try.Success [actual_bit actual_i64 actual_f64 actual_text])
+                          (!expect (^multi {#try.Success [actual_bit actual_i64 actual_f64 actual_text]}
                                            (and (\ bit.equivalence = expected_bit actual_bit)
                                                 (\ i64.equivalence = expected_i64 actual_i64)
                                                 (\ frac.equivalence = expected_f64 actual_f64)
                                                 (\ text.equivalence = expected_text actual_text)))))
                       (|> (/.result (/.tuple ($_ <>.and /.bit /.i64 /.f64 /.text))
                                     (list (synthesis.text expected_text)))
-                          (!expect (^multi (#try.Failure error)
+                          (!expect (^multi {#try.Failure error}
                                            (exception.match? /.cannot_parse error)))))))
       (do [! random.monad]
         [arity random.nat
@@ -118,14 +118,14 @@
         (_.cover [/.function]
                  (and (|> (/.result (/.function arity /.text)
                                     (list (synthesis.function/abstraction [expected_environment arity (synthesis.text expected_body)])))
-                          (!expect (^multi (#try.Success [actual_environment actual_body])
+                          (!expect (^multi {#try.Success [actual_environment actual_body]}
                                            (and (\ (list.equivalence synthesis.equivalence) =
                                                    expected_environment
                                                    actual_environment)
                                                 (\ text.equivalence = expected_body actual_body)))))
                       (|> (/.result (/.function arity /.text)
                                     (list (synthesis.text expected_body)))
-                          (!expect (^multi (#try.Failure error)
+                          (!expect (^multi {#try.Failure error}
                                            (exception.match? /.cannot_parse error)))))))
       (do [! random.monad]
         [arity random.nat
@@ -134,7 +134,7 @@
         (_.cover [/.wrong_arity]
                  (|> (/.result (/.function (++ arity) /.text)
                                (list (synthesis.function/abstraction [expected_environment arity (synthesis.text expected_body)])))
-                     (!expect (^multi (#try.Failure error)
+                     (!expect (^multi {#try.Failure error}
                                       (exception.match? /.wrong_arity error))))))
       (do [! random.monad]
         [arity (\ ! each (|>> (n.% 10) ++) random.nat)
@@ -146,7 +146,7 @@
                                     (list (synthesis.loop/scope [expected_offset
                                                                  (list\each (|>> synthesis.bit) expected_inits)
                                                                  (synthesis.text expected_body)])))
-                          (!expect (^multi (#try.Success [actual_offset actual_inits actual_body])
+                          (!expect (^multi {#try.Success [actual_offset actual_inits actual_body]}
                                            (and (\ n.equivalence = expected_offset actual_offset)
                                                 (\ (list.equivalence bit.equivalence) =
                                                    expected_inits
@@ -154,7 +154,7 @@
                                                 (\ text.equivalence = expected_body actual_body)))))
                       (|> (/.result (/.loop (<>.many /.bit) /.text)
                                     (list (synthesis.text expected_body)))
-                          (!expect (^multi (#try.Failure error)
+                          (!expect (^multi {#try.Failure error}
                                            (exception.match? /.cannot_parse error)))))))
       ))
 
@@ -167,33 +167,33 @@
             [expected (\ ! each (|>> synthesis.i64) random.nat)]
             (_.cover [/.result /.any]
                      (|> (/.result /.any (list expected))
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (\ synthesis.equivalence = expected actual))))))
           (_.cover [/.empty_input]
                    (|> (/.result /.any (list))
-                       (!expect (^multi (#try.Failure error)
+                       (!expect (^multi {#try.Failure error}
                                         (exception.match? /.empty_input error)))))
           (do [! random.monad]
             [expected (\ ! each (|>> synthesis.i64) random.nat)]
             (_.cover [/.unconsumed_input]
                      (|> (/.result /.any (list expected expected))
-                         (!expect (^multi (#try.Failure error)
+                         (!expect (^multi {#try.Failure error}
                                           (exception.match? /.unconsumed_input error))))))
           (do [! random.monad]
             [dummy (\ ! each (|>> synthesis.i64) random.nat)]
             (_.cover [/.end! /.expected_empty_input]
                      (and (|> (/.result /.end! (list))
-                              (!expect (#try.Success _)))
+                              (!expect {#try.Success _}))
                           (|> (/.result /.end! (list dummy))
-                              (!expect (^multi (#try.Failure error)
+                              (!expect (^multi {#try.Failure error}
                                                (exception.match? /.expected_empty_input error)))))))
           (do [! random.monad]
             [dummy (\ ! each (|>> synthesis.i64) random.nat)]
             (_.cover [/.end?]
                      (and (|> (/.result /.end? (list))
-                              (!expect (#try.Success #1)))
+                              (!expect {#try.Success #1}))
                           (|> (/.result (<>.before /.any /.end?) (list dummy))
-                              (!expect (#try.Success #0))))))
+                              (!expect {#try.Success #0})))))
           (_.for [/.cannot_parse]
                  ($_ _.and
                      ..simple
diff --git a/stdlib/source/test/lux/control/parser/text.lux b/stdlib/source/test/lux/control/parser/text.lux
index 05a28b1ff..8377f6b4b 100644
--- a/stdlib/source/test/lux/control/parser/text.lux
+++ b/stdlib/source/test/lux/control/parser/text.lux
@@ -42,7 +42,7 @@
 (def: (should_fail' sample parser exception)
   (All (_ a e) (-> Text (/.Parser a) (Exception e) Bit))
   (case (/.result parser sample)
-    (#try.Failure error)
+    {#try.Failure error}
     (exception.match? exception error)
     
     _
@@ -51,7 +51,7 @@
 (def: (should_fail sample parser)
   (All (_ a) (-> Text (/.Parser a) Bit))
   (case (/.result parser sample)
-    (#try.Failure _)
+    {#try.Failure _}
     true
     
     _
@@ -301,10 +301,10 @@
             (_.cover [/.result /.end!]
                      (and (|> (/.result /.end!
                                         "")
-                              (!expect (#try.Success _)))
+                              (!expect {#try.Success _}))
                           (|> (/.result /.end!
                                         sample)
-                              (!expect (#try.Failure _))))))
+                              (!expect {#try.Failure _})))))
           (do [! random.monad]
             [.let [size 10]
              expected (random.unicode size)
@@ -313,15 +313,15 @@
             (_.cover [/.this /.cannot_match]
                      (and (|> (/.result (/.this expected)
                                         expected)
-                              (!expect (#try.Success [])))
+                              (!expect {#try.Success []}))
                           (|> (/.result (/.this expected)
                                         dummy)
-                              (!expect (^multi (#try.Failure error)
+                              (!expect (^multi {#try.Failure error}
                                                (exception.match? /.cannot_match error)))))))
           (_.cover [/.Slice /.slice /.cannot_slice]
                    (|> ""
                        (/.result (/.slice /.any!))
-                       (!expect (^multi (#try.Failure error)
+                       (!expect (^multi {#try.Failure error}
                                         (exception.match? /.cannot_slice error)))))
           (do [! random.monad]
             [expected (random.unicode 1)]
@@ -337,14 +337,14 @@
                      (and (..should_pass expected (<>.before /.any /.next))
                           (|> ""
                               (/.result (<>.before /.any /.next))
-                              (!expect (^multi (#try.Failure error)
+                              (!expect (^multi {#try.Failure error}
                                                (exception.match? /.cannot_parse error)))))))
           (do [! random.monad]
             [dummy (random.unicode 1)]
             (_.cover [/.unconsumed_input]
                      (|> (format dummy dummy)
                          (/.result /.any)
-                         (!expect (^multi (#try.Failure error)
+                         (!expect (^multi {#try.Failure error}
                                           (exception.match? /.unconsumed_input error))))))
           (do [! random.monad]
             [sample (random.unicode 1)]
@@ -355,7 +355,7 @@
                                       _ /.any
                                       post /.offset]
                                      (in [pre post])))
-                         (!expect (#try.Success [0 1])))))
+                         (!expect {#try.Success [0 1]}))))
           (do [! random.monad]
             [left (random.unicode 1)
              right (random.unicode 1)
@@ -369,7 +369,7 @@
                                       _ /.any]
                                      (in (and (text\= input pre)
                                               (text\= right post)))))
-                         (!expect (#try.Success #1)))))
+                         (!expect {#try.Success #1}))))
           (do [! random.monad]
             [left (random.unicode 1)
              right (random.unicode 1)
@@ -378,7 +378,7 @@
             (_.cover [/.enclosed]
                      (|> (format left expected right)
                          (/.result (/.enclosed [left right] (/.this expected)))
-                         (!expect (#try.Success _)))))
+                         (!expect {#try.Success _}))))
           (do [! random.monad]
             [input (random.unicode 1)
              output (random.unicode 1)]
@@ -387,13 +387,13 @@
                          (/.result (do <>.monad
                                      [_ (/.local input (/.this input))]
                                      (/.this output)))
-                         (!expect (#try.Success _)))))
+                         (!expect {#try.Success _}))))
           (do [! random.monad]
             [expected (\ ! each (|>> (n.% 8) (\ n.octal encoded)) random.nat)]
             (_.cover [/.then]
                      (|> (list (code.text expected))
                          (.result (/.then /.octal .text))
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (text\= expected actual))))))
           (do [! random.monad]
             [invalid (random.ascii/upper 1)
@@ -405,13 +405,13 @@
                      (and (..should_pass (text.of_char expected) (/.not /.upper))
                           (|> invalid
                               (/.result (/.not /.upper))
-                              (!expect (^multi (#try.Failure error)
+                              (!expect (^multi {#try.Failure error}
                                                (exception.match? /.expected_to_fail error))))
 
                           (..should_pass! (text.of_char expected) (/.not! upper!))
                           (|> invalid
                               (/.result (/.not! upper!))
-                              (!expect (^multi (#try.Failure error)
+                              (!expect (^multi {#try.Failure error}
                                                (exception.match? /.expected_to_fail error)))))))
           (do [! random.monad]
             [upper (random.ascii/upper 1)
diff --git a/stdlib/source/test/lux/control/parser/tree.lux b/stdlib/source/test/lux/control/parser/tree.lux
index 30fc3f5d1..d99273be5 100644
--- a/stdlib/source/test/lux/control/parser/tree.lux
+++ b/stdlib/source/test/lux/control/parser/tree.lux
@@ -34,7 +34,7 @@
      (_.cover 
               (|> (/.result 
                             )
-                  (!expect (^multi (#try.Success actual)
+                  (!expect (^multi {#try.Success actual}
                                    (n.= expected actual))))))])
 
 (template: (!cover/2    )
@@ -43,10 +43,10 @@
       expected (|> random.nat (random.only (|>> (n.= dummy) not)))]
      (_.cover 
               (and (|> (/.result  )
-                       (!expect (^multi (#try.Success actual)
+                       (!expect (^multi {#try.Success actual}
                                         (n.= expected actual))))
                    (|> (/.result  )
-                       (!expect (^multi (#try.Success actual)
+                       (!expect (^multi {#try.Success actual}
                                         (n.= expected actual)))))))])
 
 (def: .public test
@@ -62,7 +62,7 @@
             (_.cover [/.result']
                      (|> (/.result' /.value
                                     (zipper.zipper (tree.leaf expected)))
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (n.= expected actual))))))
           (!cover [/.down]
                   (do //.monad
@@ -163,7 +163,7 @@
                      (`` (and (~~ (template []
                                     [(|> (/.result 
                                                    (tree.leaf dummy))
-                                         (!expect (^multi (#try.Failure error)
+                                         (!expect (^multi {#try.Failure error}
                                                           (exception.match? /.cannot_move_further error))))]
 
                                     [/.down] [/.up]
diff --git a/stdlib/source/test/lux/control/parser/type.lux b/stdlib/source/test/lux/control/parser/type.lux
index 8b843dcdb..3d27819bd 100644
--- a/stdlib/source/test/lux/control/parser/type.lux
+++ b/stdlib/source/test/lux/control/parser/type.lux
@@ -32,7 +32,7 @@
   (Random Type)
   (|> (random.ascii/alpha_num 1)
       (\ random.monad each (function (_ name)
-                             (#.Primitive name (list))))))
+                             {#.Primitive name (list)}))))
 
 (def: matches
   Test
@@ -44,29 +44,29 @@
       ($_ _.and
           (_.cover [/.exactly]
                    (and (|> (/.result (/.exactly expected) expected)
-                            (!expect (#try.Success [])))
+                            (!expect {#try.Success []}))
                         (|> (/.result (/.exactly expected) dummy)
-                            (!expect (^multi (#try.Failure error)
+                            (!expect (^multi {#try.Failure error}
                                              (exception.match? /.types_do_not_match error))))))
           (_.cover [/.sub]
                    (and (|> (/.result (/.sub expected) expected)
-                            (!expect (#try.Success [])))
+                            (!expect {#try.Success []}))
                         (|> (/.result (/.sub Any) expected)
-                            (!expect (#try.Success [])))
+                            (!expect {#try.Success []}))
                         (|> (/.result (/.sub expected) Nothing)
-                            (!expect (#try.Success [])))
+                            (!expect {#try.Success []}))
                         (|> (/.result (/.sub expected) dummy)
-                            (!expect (^multi (#try.Failure error)
+                            (!expect (^multi {#try.Failure error}
                                              (exception.match? /.types_do_not_match error))))))
           (_.cover [/.super]
                    (and (|> (/.result (/.super expected) expected)
-                            (!expect (#try.Success [])))
+                            (!expect {#try.Success []}))
                         (|> (/.result (/.super expected) Any)
-                            (!expect (#try.Success [])))
+                            (!expect {#try.Success []}))
                         (|> (/.result (/.super Nothing) expected)
-                            (!expect (#try.Success [])))
+                            (!expect {#try.Success []}))
                         (|> (/.result (/.super expected) dummy)
-                            (!expect (^multi (#try.Failure error)
+                            (!expect (^multi {#try.Failure error}
                                              (exception.match? /.types_do_not_match error))))))
           )))
 
@@ -81,13 +81,13 @@
                   [(_.cover [ ]
                             (and (|> (/.result ( ($_ //.and /.any /.any /.any))
                                                ( (list expected_left expected_middle expected_right)))
-                                     (!expect (^multi (#try.Success [actual_left actual_middle actual_right])
+                                     (!expect (^multi {#try.Success [actual_left actual_middle actual_right]}
                                                       (and (type\= expected_left actual_left)
                                                            (type\= expected_middle actual_middle)
                                                            (type\= expected_right actual_right)))))
                                  (|> (/.result ( ($_ //.and /.any /.any /.any))
                                                ( (list expected_left expected_middle expected_right)))
-                                     (!expect (^multi (#try.Failure error)
+                                     (!expect (^multi {#try.Failure error}
                                                       (exception.match?  error))))))]
 
                   [/.variant /.not_variant type.variant type.tuple]
@@ -97,24 +97,24 @@
             (_.cover [/.function /.not_function]
                      (and (|> (/.result (/.function ($_ //.and /.any /.any) /.any)
                                         (type.function (list expected_left expected_middle) expected_right))
-                              (!expect (^multi (#try.Success [[actual_left actual_middle] actual_right])
+                              (!expect (^multi {#try.Success [[actual_left actual_middle] actual_right]}
                                                (and (type\= expected_left actual_left)
                                                     (type\= expected_middle actual_middle)
                                                     (type\= expected_right actual_right)))))
                           (|> (/.result (/.function ($_ //.and /.any /.any) /.any)
                                         (type.variant (list expected_left expected_middle expected_right)))
-                              (!expect (^multi (#try.Failure error)
+                              (!expect (^multi {#try.Failure error}
                                                (exception.match? /.not_function error))))))
             (_.cover [/.applied /.not_application]
                      (and (|> (/.result (/.applied ($_ //.and /.any /.any /.any))
                                         (type.application (list expected_middle expected_right) expected_left))
-                              (!expect (^multi (#try.Success [actual_left actual_middle actual_right])
+                              (!expect (^multi {#try.Success [actual_left actual_middle actual_right]}
                                                (and (type\= expected_left actual_left)
                                                     (type\= expected_middle actual_middle)
                                                     (type\= expected_right actual_right)))))
                           (|> (/.result (/.applied ($_ //.and /.any /.any /.any))
                                         (type.variant (list expected_left expected_middle expected_right)))
-                              (!expect (^multi (#try.Failure error)
+                              (!expect (^multi {#try.Failure error}
                                                (exception.match? /.not_application error))))))
             ))))
 
@@ -128,38 +128,38 @@
     ($_ _.and
         (_.cover [/.not_parameter]
                  (|> (/.result /.parameter not_parameter)
-                     (!expect (^multi (#try.Failure error)
+                     (!expect (^multi {#try.Failure error}
                                       (exception.match? /.not_parameter error)))))
         (_.cover [/.unknown_parameter]
-                 (|> (/.result /.parameter (#.Parameter parameter))
-                     (!expect (^multi (#try.Failure error)
+                 (|> (/.result /.parameter {#.Parameter parameter})
+                     (!expect (^multi {#try.Failure error}
                                       (exception.match? /.unknown_parameter error)))))
         (_.cover [/.with_extension]
                  (|> (/.result (<| (/.with_extension quantification)
                                    (/.with_extension argument)
                                    /.any)
                                not_parameter)
-                     (!expect (^multi (#try.Success [quantification\\binding argument\\binding actual])
+                     (!expect (^multi {#try.Success [quantification\\binding argument\\binding actual]}
                                       (same? not_parameter actual)))))
         (_.cover [/.parameter]
                  (|> (/.result (<| (/.with_extension quantification)
                                    (/.with_extension argument)
                                    /.parameter)
-                               (#.Parameter 0))
-                     (!expect (#try.Success [quantification\\binding argument\\binding _]))))
+                               {#.Parameter 0})
+                     (!expect {#try.Success [quantification\\binding argument\\binding _]})))
         (_.cover [/.wrong_parameter]
                  (|> (/.result (<| (/.with_extension quantification)
                                    (/.with_extension argument)
                                    (/.parameter! 1))
-                               (#.Parameter 0))
-                     (!expect (^multi (#try.Failure error)
+                               {#.Parameter 0})
+                     (!expect (^multi {#try.Failure error}
                                       (exception.match? /.wrong_parameter error)))))
         (_.cover [/.parameter!]
                  (|> (/.result (<| (/.with_extension quantification)
                                    (/.with_extension argument)
                                    (/.parameter! 0))
-                               (#.Parameter 0))
-                     (!expect (#try.Success [quantification\\binding argument\\binding _]))))
+                               {#.Parameter 0})
+                     (!expect {#try.Success [quantification\\binding argument\\binding _]})))
         )))
 
 (def: polymorphic
@@ -171,16 +171,16 @@
         (_.cover [/.not_polymorphic]
                  (and (|> (/.result (/.polymorphic /.any)
                                     not_polymorphic)
-                          (!expect (^multi (#try.Failure error)
+                          (!expect (^multi {#try.Failure error}
                                            (exception.match? /.not_polymorphic error))))
                       (|> (/.result (/.polymorphic /.any)
                                     (type.univ_q 0 not_polymorphic))
-                          (!expect (^multi (#try.Failure error)
+                          (!expect (^multi {#try.Failure error}
                                            (exception.match? /.not_polymorphic error))))))
         (_.cover [/.polymorphic]
                  (|> (/.result (/.polymorphic /.any)
                                (type.univ_q expected_inputs not_polymorphic))
-                     (!expect (^multi (#try.Success [g!poly actual_inputs bodyT])
+                     (!expect (^multi {#try.Success [g!poly actual_inputs bodyT]}
                                       (and (n.= expected_inputs (list.size actual_inputs))
                                            (same? not_polymorphic bodyT))))))
         )))
@@ -194,7 +194,7 @@
             [expected ..primitive]
             (_.cover [/.result /.any]
                      (|> (/.result /.any expected)
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (type\= expected actual))))))
           (do [! random.monad]
             [expected ..primitive]
@@ -204,10 +204,10 @@
                                            _ /.any]
                                           (in actual))
                                         expected)
-                              (!expect (^multi (#try.Success actual)
+                              (!expect (^multi {#try.Success actual}
                                                (type\= expected actual))))
                           (|> (/.result /.next expected)
-                              (!expect (^multi (#try.Failure error)
+                              (!expect (^multi {#try.Failure error}
                                                (exception.match? /.unconsumed_input error)))))))
           (do [! random.monad]
             [expected ..primitive]
@@ -217,7 +217,7 @@
                                                      [_ /.any]
                                                      )
                                                    expected)
-                                         (!expect (^multi (#try.Failure error)
+                                         (!expect (^multi {#try.Failure error}
                                                           (exception.match? /.empty_input error))))]
 
                                     [/.any]
@@ -231,7 +231,7 @@
                                       _ /.any]
                                      (in env))
                                    expected)
-                         (!expect (^multi (#try.Success environment)
+                         (!expect (^multi {#try.Success environment}
                                           (same? /.fresh environment))))))
           (do [! random.monad]
             [expected ..primitive
@@ -243,14 +243,14 @@
                                      (/.local (list expected)
                                               /.any))
                                    dummy)
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (type\= expected actual))))))
           (do [! random.monad]
             [expected random.nat]
             (_.cover [/.existential /.not_existential]
                      (|> (/.result /.existential
-                                   (#.Ex expected))
-                         (!expect (^multi (#try.Success actual)
+                                   {#.Ex expected})
+                         (!expect (^multi {#try.Success actual}
                                           (n.= expected actual))))))
           (do [! random.monad]
             [expected_name (random.and (random.ascii/alpha_num 1)
@@ -258,8 +258,8 @@
              expected_type ..primitive]
             (_.cover [/.named /.not_named]
                      (|> (/.result /.named
-                                   (#.Named expected_name expected_type))
-                         (!expect (^multi (#try.Success [actual_name actual_type])
+                                   {#.Named expected_name expected_type})
+                         (!expect (^multi {#try.Success [actual_name actual_type]}
                                           (and (name\= expected_name actual_name)
                                                (type\= expected_type actual_type)))))))
           ..aggregate
diff --git a/stdlib/source/test/lux/control/parser/xml.lux b/stdlib/source/test/lux/control/parser/xml.lux
index b61b993a2..15c1fdd88 100644
--- a/stdlib/source/test/lux/control/parser/xml.lux
+++ b/stdlib/source/test/lux/control/parser/xml.lux
@@ -41,7 +41,7 @@
        (_.cover []
                 (`` (and (~~ (template [ ]
                                [(|> (/.result  (list ))
-                                    (!expect (^multi (#try.Failure error)
+                                    (!expect (^multi {#try.Failure error}
                                                      (exception.match?  error))))]
 
                                <>)))))))])
@@ -62,12 +62,12 @@
           (do [! random.monad]
             [expected (random.ascii/alpha 1)]
             (_.cover [/.result /.text]
-                     (|> (/.result /.text (list (#xml.Text expected)))
-                         (!expect (^multi (#try.Success actual)
+                     (|> (/.result /.text (list {#xml.Text expected}))
+                         (!expect (^multi {#try.Success actual}
                                           (text\= expected actual))))))
           (!failure /.unconsumed_inputs
                     [[(//\in expected)
-                      (#xml.Text expected)]])
+                      {#xml.Text expected}]])
           (do [! random.monad]
             [expected (\ ! each (|>> #xml.Text) (random.ascii/alpha 1))]
             (_.cover [/.any]
@@ -81,17 +81,17 @@
                                      [actual /.tag
                                       _ /.any]
                                      (in (name\= expected actual)))
-                                   (list (#xml.Node expected (dictionary.empty name.hash) (list))))
-                         (!expect (#try.Success #1)))))
+                                   (list {#xml.Node expected (dictionary.empty name.hash) (list)}))
+                         (!expect {#try.Success #1}))))
           (do [! random.monad]
             [expected ..random_tag]
             (_.cover [/.node]
                      (|> (/.result (/.node expected (//\in []))
-                                   (list (#xml.Node expected (dictionary.empty name.hash) (list))))
-                         (!expect (#try.Success [])))))
+                                   (list {#xml.Node expected (dictionary.empty name.hash) (list)}))
+                         (!expect {#try.Success []}))))
           (!failure /.wrong_tag
                     [[(/.node ["" expected] (//\in []))
-                      (#xml.Node [expected ""] (dictionary.empty name.hash) (list))]])
+                      {#xml.Node [expected ""] (dictionary.empty name.hash) (list)}]])
           (do [! random.monad]
             [expected_tag ..random_tag
              expected_attribute ..random_attribute
@@ -100,54 +100,54 @@
                      (|> (/.result (<| (/.node expected_tag)
                                        (//.after (/.attribute expected_attribute))
                                        (//\in []))
-                                   (list (#xml.Node expected_tag
-                                                    (|> (dictionary.empty name.hash)
-                                                        (dictionary.has expected_attribute expected_value))
-                                                    (list))))
-                         (!expect (#try.Success [])))))
+                                   (list {#xml.Node expected_tag
+                                          (|> (dictionary.empty name.hash)
+                                              (dictionary.has expected_attribute expected_value))
+                                          (list)}))
+                         (!expect {#try.Success []}))))
           (!failure /.unknown_attribute
                     [[(/.attribute ["" expected])
-                      (#xml.Node [expected expected]
-                                 (|> (dictionary.empty name.hash)
-                                     (dictionary.has [expected ""] expected))
-                                 (list))]])
+                      {#xml.Node [expected expected]
+                       (|> (dictionary.empty name.hash)
+                           (dictionary.has [expected ""] expected))
+                       (list)}]])
           (!failure /.empty_input
                     [[(do //.monad
                         [_ /.any]
                         /.any)
-                      (#xml.Text expected)]
+                      {#xml.Text expected}]
                      [(do //.monad
                         [_ /.any]
                         /.text)
-                      (#xml.Text expected)]
+                      {#xml.Text expected}]
                      [(do //.monad
                         [_ /.any]
                         (/.node [expected expected]
                                 (//\in [])))
-                      (#xml.Node [expected expected]
-                                 (dictionary.empty name.hash)
-                                 (list))]
+                      {#xml.Node [expected expected]
+                       (dictionary.empty name.hash)
+                       (list)}]
                      [(do //.monad
                         [_ /.any]
                         (/.node [expected expected]
                                 (/.attribute [expected expected])))
-                      (#xml.Node [expected expected]
-                                 (|> (dictionary.empty name.hash)
-                                     (dictionary.has [expected expected] expected))
-                                 (list))]])
+                      {#xml.Node [expected expected]
+                       (|> (dictionary.empty name.hash)
+                           (dictionary.has [expected expected] expected))
+                       (list)}]])
           (!failure /.unexpected_input
                     [[/.text
-                      (#xml.Node [expected expected] (dictionary.empty name.hash) (list))]
+                      {#xml.Node [expected expected] (dictionary.empty name.hash) (list)}]
                      [(/.node [expected expected]
                               (//\in []))
-                      (#xml.Text expected)]
+                      {#xml.Text expected}]
                      [(/.node [expected expected]
                               (/.attribute [expected expected]))
-                      (#xml.Text expected)]])
+                      {#xml.Text expected}]])
           (do [! random.monad]
             [.let [node (: (-> xml.Tag (List xml.XML) xml.XML)
                            (function (_ tag children)
-                             (#xml.Node tag (dictionary.empty name.hash) children)))]
+                             {#xml.Node tag (dictionary.empty name.hash) children}))]
              parent ..random_tag
              right ..random_tag
              wrong (random.only (|>> (name\= right) not)
@@ -167,12 +167,12 @@
                                                    (list.together (list (list.repeated repetitions (node wrong (list)))
                                                                         (list (node right (list)))
                                                                         (list.repeated repetitions (node wrong (list))))))))
-                             (!expect (#try.Success []))))
+                             (!expect {#try.Success []})))
                 (_.cover [/.nowhere]
                          (|> (/.result parser
                                        (list (node parent
                                                    (list.repeated repetitions (node wrong (list))))))
-                             (!expect (^multi (#try.Failure error)
+                             (!expect (^multi {#try.Failure error}
                                               (exception.match? /.nowhere error)))))
                 ))
           )))
diff --git a/stdlib/source/test/lux/control/region.lux b/stdlib/source/test/lux/control/region.lux
index 6b4f5b55c..da88cb31e 100644
--- a/stdlib/source/test/lux/control/region.lux
+++ b/stdlib/source/test/lux/control/region.lux
@@ -33,19 +33,19 @@
 (def: (success? result)
   (All (_ a) (-> (Try a) Bit))
   (case result
-    (#try.Success _)
+    {#try.Success _}
     true
     
-    (#try.Failure _)
+    {#try.Failure _}
     false))
 
 (def: (throws? exception result)
   (All (_ e a) (-> (Exception e) (Try a) Bit))
   (case result
-    (#try.Success _)
+    {#try.Success _}
     false
     
-    (#try.Failure error)
+    {#try.Failure error}
     (exception.match? exception error)))
 
 (def: (injection value)
@@ -53,7 +53,7 @@
   (function (_ [region scope])
     (function (_ !)
       [scope
-       (#try.Success value)])))
+       {#try.Success value}])))
 
 (def: comparison
   (Comparison (All (_ a) (All (_ ! r) (Region r (Thread !) a))))
@@ -70,7 +70,7 @@
                      
                      (Try a)
                      (thread.result (:expected (/.run! thread.monad right))))]
-      [(#try.Success left) (#try.Success right)]
+      [{#try.Success left} {#try.Success right}]
       (== left right)
 
       _
@@ -104,7 +104,7 @@
                                count_clean_up (function (_ value)
                                                 (do !
                                                   [_ (thread.update! ++ clean_up_counter)]
-                                                  (in (#try.Success []))))]
+                                                  (in {#try.Success []})))]
                          outcome (/.run! !
                                          (do [! (/.monad !)]
                                            [_ (monad.each ! (/.acquire! //@ count_clean_up)
@@ -122,7 +122,7 @@
                                count_clean_up (function (_ value)
                                                 (do !
                                                   [_ (thread.update! ++ clean_up_counter)]
-                                                  (in (#try.Success []))))]
+                                                  (in {#try.Success []})))]
                          outcome (/.run! !
                                          (do [! (/.monad !)]
                                            [_ (monad.each ! (/.acquire! //@ count_clean_up)
@@ -141,7 +141,7 @@
                                count_clean_up (function (_ value)
                                                 (do !
                                                   [_ (thread.update! ++ clean_up_counter)]
-                                                  (in (#try.Success []))))]
+                                                  (in {#try.Success []})))]
                          outcome (/.run! !
                                          (do [! (/.monad !)]
                                            [_ (monad.each ! (/.acquire! //@ count_clean_up)
diff --git a/stdlib/source/test/lux/control/remember.lux b/stdlib/source/test/lux/control/remember.lux
index 680238ff9..3b210813d 100644
--- a/stdlib/source/test/lux/control/remember.lux
+++ b/stdlib/source/test/lux/control/remember.lux
@@ -39,17 +39,17 @@
       (~ (code.text message))
       (~+ (case focus
             #.None (list)
-            (#.Some focus) (list focus))))))
+            {#.Some focus} (list focus))))))
 
 (def: (attempt computation)
   (All (_ a) (-> (Meta a) (Meta (Try a))))
   (function (_ compiler)
     (case (computation compiler)
-      (#try.Success [compiler output])
-      (#try.Success [compiler (#try.Success output)])
+      {#try.Success [compiler output]}
+      {#try.Success [compiler {#try.Success output}]}
 
-      (#try.Failure error)
-      (#try.Success [compiler (#try.Failure error)]))))
+      {#try.Failure error}
+      {#try.Success [compiler {#try.Failure error}]})))
 
 (def: (test_failure deadline message focus failure)
   (-> Date Text (Maybe Code) Text Bit)
@@ -59,7 +59,7 @@
          #.None
          true
          
-         (#.Some focus)
+         {#.Some focus}
          (text.contains? (%.code focus) failure))))
 
 (syntax: (test_macro [macro .identifier
@@ -74,31 +74,31 @@
         expected (product.right (random.result prng ..focus))]
     (do meta.monad
       [should_fail0 (..attempt (macro.expansion (..memory macro yesterday message #.None)))
-       should_fail1 (..attempt (macro.expansion (..memory macro yesterday message (#.Some expected))))
+       should_fail1 (..attempt (macro.expansion (..memory macro yesterday message {#.Some expected})))
        should_succeed0 (..attempt (macro.expansion (..memory macro tomorrow message #.None)))
-       should_succeed1 (..attempt (macro.expansion (..memory macro tomorrow message (#.Some expected))))]
+       should_succeed1 (..attempt (macro.expansion (..memory macro tomorrow message {#.Some expected})))]
       (in (list (code.bit (and (case should_fail0
-                                 (#try.Failure error)
+                                 {#try.Failure error}
                                  (and (test_failure yesterday message #.None error)
                                       (text.contains? extra error))
 
                                  _
                                  false)
                                (case should_fail1
-                                 (#try.Failure error)
-                                 (and (test_failure yesterday message (#.Some expected) error)
+                                 {#try.Failure error}
+                                 (and (test_failure yesterday message {#.Some expected} error)
                                       (text.contains? extra error))
 
                                  _
                                  false)
                                (case should_succeed0
-                                 (^ (#try.Success (list)))
+                                 (^ {#try.Success (list)})
                                  true
 
                                  _
                                  false)
                                (case should_succeed1
-                                 (^ (#try.Success (list actual)))
+                                 (^ {#try.Success (list actual)})
                                  (same? expected actual)
 
                                  _
@@ -116,8 +116,8 @@
             (_.cover [/.must_remember]
                      (and (test_failure deadline message #.None
                                         (exception.error /.must_remember [deadline deadline message #.None]))
-                          (test_failure deadline message (#.Some focus)
-                                        (exception.error /.must_remember [deadline deadline message (#.Some focus)]))))
+                          (test_failure deadline message {#.Some focus}
+                                        (exception.error /.must_remember [deadline deadline message {#.Some focus}]))))
             (_.cover [/.remember]
                      (..test_macro /.remember ""))
             (_.cover [/.to_do]
diff --git a/stdlib/source/test/lux/control/try.lux b/stdlib/source/test/lux/control/try.lux
index 80b68423f..3e38574b2 100644
--- a/stdlib/source/test/lux/control/try.lux
+++ b/stdlib/source/test/lux/control/try.lux
@@ -57,28 +57,28 @@
 
           (_.cover [/.trusted]
                    (n.= expected
-                        (/.trusted (#/.Success expected))))
+                        (/.trusted {#/.Success expected})))
           (_.cover [/.of_maybe]
-                   (case [(/.of_maybe (#.Some expected))
+                   (case [(/.of_maybe {#.Some expected})
                           (/.of_maybe #.None)]
-                     [(#/.Success actual) (#/.Failure _)]
+                     [{#/.Success actual} {#/.Failure _}]
                      (n.= expected actual)
 
                      _
                      false))
           (_.cover [/.maybe]
-                   (case [(/.maybe (#/.Success expected))
-                          (/.maybe (: (/.Try Nat) (#/.Failure error)))]
-                     [(#.Some actual) #.None]
+                   (case [(/.maybe {#/.Success expected})
+                          (/.maybe (: (/.Try Nat) {#/.Failure error}))]
+                     [{#.Some actual} #.None]
                      (n.= expected actual)
 
                      _
                      false))
           (_.cover [/.else]
                    (and (n.= expected
-                             (/.else alternative (#/.Success expected)))
+                             (/.else alternative {#/.Success expected}))
                         (n.= alternative
-                             (/.else alternative (: (Try Nat) (#/.Failure error))))))
+                             (/.else alternative (: (Try Nat) {#/.Failure error})))))
           (_.cover [/.with /.lifted]
                    (let [lifted (/.lifted io.monad)]
                      (|> (do (/.with io.monad)
@@ -86,7 +86,7 @@
                             b (in alternative)]
                            (in (n.+ a b)))
                          io.run!
-                         (case> (#/.Success result)
+                         (case> {#/.Success result}
                                 (n.= (n.+ expected alternative)
                                      result)
 
diff --git a/stdlib/source/test/lux/data/binary.lux b/stdlib/source/test/lux/data/binary.lux
index 1fb97272c..d301efd1c 100644
--- a/stdlib/source/test/lux/data/binary.lux
+++ b/stdlib/source/test/lux/data/binary.lux
@@ -25,10 +25,10 @@
 (def: (succeed result)
   (-> (Try Bit) Bit)
   (case result
-    (#try.Failure _)
+    {#try.Failure _}
     false
 
-    (#try.Success output)
+    {#try.Success output}
     output))
 
 (def: .public (random size)
@@ -45,10 +45,10 @@
 (def: (throws? exception try)
   (All (_ e a) (-> (Exception e) (Try a) Bit))
   (case try
-    (#try.Failure error)
+    {#try.Failure error}
     (exception.match? exception error)
 
-    (#try.Success _)
+    {#try.Success _}
     false))
 
 (def: (binary_io power read write value)
@@ -72,7 +72,7 @@
 (def: as_list
   (-> /.Binary (List Nat))
   (/.aggregate (function (_ head tail)
-                 (#.Item head tail))
+                 {#.Item head tail})
                (list)))
 
 (def: .public test
@@ -123,7 +123,7 @@
                               (and (n.= length (/.size random_slice))
                                    (case [(monad.each try.monad (|>> (n.+ offset) (reader sample)) idxs)
                                           (monad.each try.monad (reader random_slice) idxs)]
-                                     [(#try.Success binary_vals) (#try.Success slice_vals)]
+                                     [{#try.Success binary_vals} {#try.Success slice_vals}]
                                      (\ (list.equivalence n.equivalence) = binary_vals slice_vals)
 
                                      _
@@ -141,16 +141,16 @@
                                    #.End
                                    false
 
-                                   (#.Item head tail)
+                                   {#.Item head tail}
                                    (n.= (list.mix n.+ 0 tail)
                                         (/.aggregate n.+ 0 (/.after 1 sample))))))
                    (_.cover [/.copy]
                             (and (case (/.copy size 0 sample 0 (/.empty size))
-                                   (#try.Success output)
+                                   {#try.Success output}
                                    (and (not (same? sample output))
                                         (\ /.equivalence = sample output))
 
-                                   (#try.Failure _)
+                                   {#try.Failure _}
                                    false)
                                  (succeed
                                   (do try.monad
diff --git a/stdlib/source/test/lux/data/collection/array.lux b/stdlib/source/test/lux/data/collection/array.lux
index 46783bc56..243d77203 100644
--- a/stdlib/source/test/lux/data/collection/array.lux
+++ b/stdlib/source/test/lux/data/collection/array.lux
@@ -65,9 +65,9 @@
                         (/.example+ (function (_ idx member)
                                       (n.even? member))
                                     the_array)]
-                   [(#.Some expected) (#.Some [idx actual])]
+                   [{#.Some expected} {#.Some [idx actual]}]
                    (case (/.read! idx the_array)
-                     (#.Some again)
+                     {#.Some again}
                      (and (n.= expected actual)
                           (n.= actual again))
                      
@@ -109,7 +109,7 @@
                                           (/.empty size)))))
             (_.cover [/.type_name]
                      (case /.Array
-                       (^ (#.Named _ (#.UnivQ _ (#.Primitive nominal_type (list (#.Parameter 1))))))
+                       (^ {#.Named _ {#.UnivQ _ {#.Primitive nominal_type (list {#.Parameter 1})}}})
                        (same? /.type_name nominal_type)
 
                        _
@@ -120,7 +120,7 @@
                                          (/.write! 0 expected))]
                        (case [(/.read! 0 the_array)
                               (/.read! 1 the_array)]
-                         [(#.Some actual) #.None]
+                         [{#.Some actual} #.None]
                          (n.= expected actual)
 
                          _
@@ -131,7 +131,7 @@
                                          (/.write! 0 expected))]
                        (case [(/.read! 0 the_array)
                               (/.read! 0 (/.delete! 0 the_array))]
-                         [(#.Some actual) #.None]
+                         [{#.Some actual} #.None]
                          (n.= expected actual)
 
                          _
@@ -149,7 +149,7 @@
                                          (/.write! 0 base)
                                          (/.update! 0 (n.+ shift)))]
                        (case (/.read! 0 the_array)
-                         (#.Some actual)
+                         {#.Some actual}
                          (n.= expected actual)
 
                          _
@@ -162,7 +162,7 @@
                                          (/.upsert! 1 base (n.+ shift)))]
                        (case [(/.read! 0 the_array)
                               (/.read! 1 the_array)]
-                         [(#.Some actual/0) (#.Some actual/1)]
+                         [{#.Some actual/0} {#.Some actual/1}]
                          (and (n.= expected actual/0)
                               (n.= expected actual/1))
 
@@ -199,7 +199,7 @@
                               (list.every? (function (_ value)
                                              (or (n.even? value)
                                                  (same? default value)))
-                                           (/.list (#.Some default) the_array))))))
+                                           (/.list {#.Some default} the_array))))))
             (do !
               [amount (\ ! each (n.% (++ size)) random.nat)]
               (_.cover [/.copy!]
diff --git a/stdlib/source/test/lux/data/collection/dictionary.lux b/stdlib/source/test/lux/data/collection/dictionary.lux
index 788f6c3eb..2f8a58bfc 100644
--- a/stdlib/source/test/lux/data/collection/dictionary.lux
+++ b/stdlib/source/test/lux/data/collection/dictionary.lux
@@ -147,39 +147,39 @@
         
         (_.cover [/.value]
                  (and (list.every? (function (_ key) (case (/.value key dict)
-                                                       (#.Some _) true
+                                                       {#.Some _} true
                                                        _          false))
                                    (/.keys dict))
                       (case (/.value non_key dict)
-                        (#.Some _) false
+                        {#.Some _} false
                         _          true)))
         
         (_.cover [/.has]
                  (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)
+                        {#.Some v} (n.= test_val v)
                         _          true)))
         
         (_.cover [/.has' /.key_already_exists]
                  (let [can_put_new_keys!
                        (case (/.has' non_key test_val dict)
-                         (#try.Success dict)
+                         {#try.Success dict}
                          (case (/.value non_key dict)
-                           (#.Some v) (n.= test_val v)
+                           {#.Some v} (n.= test_val v)
                            _          true)
 
-                         (#try.Failure _)
+                         {#try.Failure _}
                          false)
                        
                        cannot_put_old_keys!
                        (or (n.= 0 size)
                            (let [first_key (|> dict /.keys list.head maybe.trusted)]
                              (case (/.has' first_key test_val dict)
-                               (#try.Success _)
+                               {#try.Success _}
                                false
                                
-                               (#try.Failure error)
+                               {#try.Failure error}
                                (exception.match? /.key_already_exists error))))]
                    (and can_put_new_keys!
                         cannot_put_old_keys!)))
@@ -192,7 +192,7 @@
                         #.None
                         true
                         
-                        (#.Some known_key)
+                        {#.Some known_key}
                         (n.= (-- (/.size dict))
                              (/.size (/.lacks known_key dict))))))
         
@@ -200,7 +200,7 @@
                  (let [base (/.has non_key test_val dict)
                        updt (/.revised non_key ++ base)]
                    (case [(/.value non_key base) (/.value non_key updt)]
-                     [(#.Some x) (#.Some y)]
+                     [{#.Some x} {#.Some y}]
                      (n.= (++ x) y)
 
                      _
@@ -209,7 +209,7 @@
         (_.cover [/.revised']
                  (let [can_upsert_new_key!
                        (case (/.value non_key (/.revised' non_key test_val ++ dict))
-                         (#.Some inserted)
+                         {#.Some inserted}
                          (n.= (++ test_val) inserted)
 
                          #.None
@@ -220,9 +220,9 @@
                          #.None
                          true
                          
-                         (#.Some [known_key known_value])
+                         {#.Some [known_key known_value]}
                          (case (/.value known_key (/.revised' known_key test_val ++ dict))
-                           (#.Some updated)
+                           {#.Some updated}
                            (n.= (++ known_value) updated)
 
                            #.None
diff --git a/stdlib/source/test/lux/data/collection/dictionary/ordered.lux b/stdlib/source/test/lux/data/collection/dictionary/ordered.lux
index 65bb6226d..94dd0e61d 100644
--- a/stdlib/source/test/lux/data/collection/dictionary/ordered.lux
+++ b/stdlib/source/test/lux/data/collection/dictionary/ordered.lux
@@ -78,7 +78,7 @@
                        [#.None #.None]
                        #1
 
-                       [(#.Some reference) (#.Some sample)]
+                       [{#.Some reference} {#.Some sample}]
                        (n.= reference sample)
 
                        _
@@ -88,7 +88,7 @@
                        [#.None #.None]
                        #1
 
-                       [(#.Some reference) (#.Some sample)]
+                       [{#.Some reference} {#.Some sample}]
                        (n.= reference sample)
 
                        _
@@ -117,7 +117,7 @@
                      (let [sample+ (/.has extra_key extra_value sample)]
                        (case [(/.value extra_key sample)
                               (/.value extra_key sample+)]
-                         [#.None (#.Some actual)]
+                         [#.None {#.Some actual}]
                          (n.= extra_value actual)
                          
                          _
diff --git a/stdlib/source/test/lux/data/collection/list.lux b/stdlib/source/test/lux/data/collection/list.lux
index e4776e1ab..b2411ce74 100644
--- a/stdlib/source/test/lux/data/collection/list.lux
+++ b/stdlib/source/test/lux/data/collection/list.lux
@@ -168,7 +168,7 @@
           (_.cover [/.item]
                    (/.every? (function (_ [index expected])
                                (case (/.item index sample)
-                                 (#.Some actual)
+                                 {#.Some actual}
                                  (n.= expected actual)
                                  
                                  #.None
@@ -238,7 +238,7 @@
                     [($_ _.and
                          (_.cover []
                                   (case [(
 sample) ( sample)]
-                                    [(#.Item expected _) (#.Some actual)]
+                                    [{#.Item expected _} {#.Some actual}]
                                     (n.= expected actual)
 
                                     [#.End #.None]
@@ -248,7 +248,7 @@
                                     false))
                          (_.cover []
                                   (case [(
 sample) ( sample)]
-                                    [(#.Item _ expected) (#.Some actual)]
+                                    [{#.Item _ expected} {#.Some actual}]
                                     (/\= (
 expected) actual)
 
                                     [#.End #.None]
@@ -355,7 +355,7 @@
         choose (: (-> Nat (Maybe Text))
                   (function (_ value)
                     (if (n.even? value)
-                      (#.Some (\ n.decimal encoded value))
+                      {#.Some (\ n.decimal encoded value)}
                       #.None)))]
     (do [! random.monad]
       [sample ..random]
@@ -366,7 +366,7 @@
                               (/\each (\ n.decimal encoded))
                               /.head)
                           (/.one choose sample)]
-                     [(#.Some expected) (#.Some actual)]
+                     [{#.Some expected} {#.Some actual}]
                      (text\= expected actual)
 
                      [#.None #.None]
@@ -382,7 +382,7 @@
                       (/.all choose sample)))
           (_.cover [/.example]
                    (case (/.example n.even? sample)
-                     (#.Some found)
+                     {#.Some found}
                      (n.even? found)
 
                      #.None
@@ -419,7 +419,7 @@
                              (/\= (/.indices size)
                                   (/.iterations (function (_ index)
                                                   (if (n.< size index)
-                                                    (#.Some (++ index))
+                                                    {#.Some (++ index)}
                                                     #.None))
                                                 0)))))
               (_.cover [/.mixes]
diff --git a/stdlib/source/test/lux/data/collection/queue.lux b/stdlib/source/test/lux/data/collection/queue.lux
index 117617468..795806329 100644
--- a/stdlib/source/test/lux/data/collection/queue.lux
+++ b/stdlib/source/test/lux/data/collection/queue.lux
@@ -60,7 +60,7 @@
                             all_empty_queues_look_the_same!)))
             (_.cover [/.front]
                      (case [members (/.front sample)]
-                       [(#.Item head tail) (#.Some first)]
+                       [{#.Item head tail} {#.Some first}]
                        (n.= head first)
                        
                        [#.End #.None]
@@ -95,7 +95,7 @@
                             has_expected_order!)))
             (_.cover [/.next]
                      (case members
-                       (#.Item target expected)
+                       {#.Item target expected}
                        (let [popped (/.next sample)
 
                              size_decreases!
diff --git a/stdlib/source/test/lux/data/collection/queue/priority.lux b/stdlib/source/test/lux/data/collection/queue/priority.lux
index 0ce7111f6..6ec5cb958 100644
--- a/stdlib/source/test/lux/data/collection/queue/priority.lux
+++ b/stdlib/source/test/lux/data/collection/queue/priority.lux
@@ -49,14 +49,14 @@
                      (/.empty? /.empty))
             (_.cover [/.front]
                      (case (/.front sample)
-                       (#.Some first)
+                       {#.Some first}
                        (n.> 0 (/.size sample))
                        
                        #.None
                        (/.empty? sample)))
             (_.cover [/.member?]
                      (case (/.front sample)
-                       (#.Some first)
+                       {#.Some first}
                        (/.member? n.equivalence sample first)
                        
                        #.None
diff --git a/stdlib/source/test/lux/data/collection/row.lux b/stdlib/source/test/lux/data/collection/row.lux
index fa4f7271f..684619006 100644
--- a/stdlib/source/test/lux/data/collection/row.lux
+++ b/stdlib/source/test/lux/data/collection/row.lux
@@ -93,10 +93,10 @@
           ($_ _.and
               (_.cover [/.item]
                        (case (/.item good_index sample)
-                         (#try.Success member)
+                         {#try.Success member}
                          (/.member? n.equivalence sample member)
                          
-                         (#try.Failure error)
+                         {#try.Failure error}
                          false))
               (_.cover [/.has]
                        (<| (try.else false)
@@ -118,10 +118,10 @@
                        (let [fails! (: (All (_ a) (-> (Try a) Bit))
                                        (function (_ situation)
                                          (case situation
-                                           (#try.Success member)
+                                           {#try.Success member}
                                            false
                                            
-                                           (#try.Failure error)
+                                           {#try.Failure error}
                                            (exception.match? /.index_out_of_bounds error))))]
                          (and (fails! (/.item bad_index sample))
                               (fails! (/.has bad_index non_member sample))
diff --git a/stdlib/source/test/lux/data/collection/set/ordered.lux b/stdlib/source/test/lux/data/collection/set/ordered.lux
index b89bad1bb..89ad780c7 100644
--- a/stdlib/source/test/lux/data/collection/set/ordered.lux
+++ b/stdlib/source/test/lux/data/collection/set/ordered.lux
@@ -74,7 +74,7 @@
                 (~~ (template [ ]
                       [(_.cover []
                                 (case ( setL)
-                                  (#.Some value)
+                                  {#.Some value}
                                   (|> setL /.list (list.every? ( value)))
 
                                   #.None
diff --git a/stdlib/source/test/lux/data/collection/stack.lux b/stdlib/source/test/lux/data/collection/stack.lux
index eb05c1e67..928dc475a 100644
--- a/stdlib/source/test/lux/data/collection/stack.lux
+++ b/stdlib/source/test/lux/data/collection/stack.lux
@@ -48,20 +48,20 @@
                        #.None
                        (/.empty? sample)
                        
-                       (#.Some _)
+                       {#.Some _}
                        (not (/.empty? sample))))
             (_.cover [/.next]
                      (case (/.next sample)
                        #.None
                        (/.empty? sample)
                        
-                       (#.Some [top remaining])
+                       {#.Some [top remaining]}
                        (\ (/.equivalence n.equivalence) =
                           sample
                           (/.top top remaining))))
             (_.cover [/.top]
                      (case (/.next (/.top expected_top sample))
-                       (#.Some [actual_top actual_sample])
+                       {#.Some [actual_top actual_sample]}
                        (and (same? expected_top actual_top)
                             (same? sample actual_sample))
                        
diff --git a/stdlib/source/test/lux/data/collection/tree/finger.lux b/stdlib/source/test/lux/data/collection/tree/finger.lux
index a929dbaa5..c067ba36c 100644
--- a/stdlib/source/test/lux/data/collection/tree/finger.lux
+++ b/stdlib/source/test/lux/data/collection/tree/finger.lux
@@ -51,21 +51,21 @@
                                             (\ ..builder leaf tag_right expected_right))))))
             (_.cover [/.root]
                      (and (case (/.root (\ ..builder leaf tag_left expected_left))
-                            (#.Left actual)
+                            {#.Left actual}
                             (n.= expected_left actual)
                             
-                            (#.Right _)
+                            {#.Right _}
                             false)
                           (case (/.root (\ ..builder branch
                                            (\ ..builder leaf tag_left expected_left)
                                            (\ ..builder leaf tag_right expected_right)))
-                            (#.Left _)
+                            {#.Left _}
                             false
                             
-                            (#.Right [left right])
+                            {#.Right [left right]}
                             (case [(/.root left)
                                    (/.root right)]
-                              [(#.Left actual_left) (#.Left actual_right)]
+                              [{#.Left actual_left} {#.Left actual_right}]
                               (and (n.= expected_left actual_left)
                                    (n.= expected_right actual_right))
                               
diff --git a/stdlib/source/test/lux/data/format/json.lux b/stdlib/source/test/lux/data/format/json.lux
index 82faaba7f..1e5015f46 100644
--- a/stdlib/source/test/lux/data/format/json.lux
+++ b/stdlib/source/test/lux/data/format/json.lux
@@ -96,12 +96,12 @@
                 ($_ _.and
                     (_.cover [/.object /.fields]
                              (case (/.fields object)
-                               (#try.Success actual)
+                               {#try.Success actual}
                                (\ (list.equivalence text.equivalence) =
                                   (list\each product.left expected)
                                   actual)
                                
-                               (#try.Failure error)
+                               {#try.Failure error}
                                false))
                     (_.cover [/.field]
                              (list.every? (function (_ [key expected])
@@ -118,19 +118,19 @@
                 (_.cover [/.has]
                          (<| (try.else false)
                              (do try.monad
-                               [object (/.has key (#/.Number expected) (/.object (list)))
+                               [object (/.has key {#/.Number expected} (/.object (list)))
                                 .let [can_find_known_key!
                                       (|> object
                                           (/.field key)
-                                          (try\each (\= (#/.Number expected)))
+                                          (try\each (\= {#/.Number expected}))
                                           (try.else false))
 
                                       cannot_find_unknown_key!
                                       (case (/.field unknown object)
-                                        (#try.Success _)
+                                        {#try.Success _}
                                         false
 
-                                        (#try.Failure error)
+                                        {#try.Failure error}
                                         true)]]
                                (in (and can_find_known_key!
                                         cannot_find_unknown_key!))))))
@@ -139,7 +139,7 @@
                        [key (random.ascii/alpha 1)
                         value ]
                        (_.cover [ ]
-                                (|> (/.object (list [key ( value)]))
+                                (|> (/.object (list [key { value}]))
                                     ( key)
                                     (try\each (\  = value))
                                     (try.else false))))]
@@ -154,9 +154,9 @@
                                  (number)
                                  (string)
                                  (row.row #/.Null
-                                                     (#/.Boolean )
-                                                     (#/.Number )
-                                                     (#/.String ))
+                                                     {#/.Boolean }
+                                                     {#/.Number }
+                                                     {#/.String })
                                  (string)
                                  (string)
                                  (string)
@@ -167,13 +167,13 @@
                 (_.cover [/.json]
                          (and (\= #/.Null (/.json #null))
                               (~~ (template [ ]
-                                    [(\= ( ) (/.json ))]
+                                    [(\= { } (/.json ))]
                                     
                                     [#/.Boolean ]
                                     [#/.Number ]
                                     [#/.String ]
                                     ))
-                              (\= (#/.Array ) (/.json [#null   ]))
+                              (\= {#/.Array } (/.json [#null   ]))
                               (let [object (/.json { #null
                                                      
                                                      
@@ -190,10 +190,10 @@
                                        value5 (/.field  object)
                                        value6 (/.field  value5)]
                                       (in (and (\= #/.Null value0)
-                                               (\= (#/.Boolean ) value1)
-                                               (\= (#/.Number ) value2)
-                                               (\= (#/.String ) value3)
-                                               (\= (#/.Array ) value4)
-                                               (\= (#/.Number ) value6))))))
+                                               (\= {#/.Boolean } value1)
+                                               (\= {#/.Number } value2)
+                                               (\= {#/.String } value3)
+                                               (\= {#/.Array } value4)
+                                               (\= {#/.Number } value6))))))
                               )))
               ))))
diff --git a/stdlib/source/test/lux/data/format/tar.lux b/stdlib/source/test/lux/data/format/tar.lux
index d595955b1..835ce822e 100644
--- a/stdlib/source/test/lux/data/format/tar.lux
+++ b/stdlib/source/test/lux/data/format/tar.lux
@@ -47,27 +47,27 @@
            (`` ($_ _.and
                    (_.cover [/.path /.from_path]
                             (case (/.path expected)
-                              (#try.Success actual)
+                              {#try.Success actual}
                               (text\= expected
                                       (/.from_path actual))
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               false))
                    (_.cover [/.no_path]
                             (text\= "" (/.from_path /.no_path)))
                    (_.cover [/.path_size /.path_is_too_long]
                             (case (/.path invalid)
-                              (#try.Success _)
+                              {#try.Success _}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.path_is_too_long error)))
                    (_.cover [/.not_ascii]
                             (case (/.path not_ascii)
-                              (#try.Success actual)
+                              {#try.Success actual}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.not_ascii error)))
                    )))))
 
@@ -82,25 +82,25 @@
            (`` ($_ _.and
                    (_.cover [/.name /.from_name]
                             (case (/.name expected)
-                              (#try.Success actual)
+                              {#try.Success actual}
                               (text\= expected
                                       (/.from_name actual))
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               false))
                    (_.cover [/.name_size /.name_is_too_long]
                             (case (/.name invalid)
-                              (#try.Success _)
+                              {#try.Success _}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.name_is_too_long error)))
                    (_.cover [/.not_ascii]
                             (case (/.name not_ascii)
-                              (#try.Success actual)
+                              {#try.Success actual}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.not_ascii error)))
                    )))))
 
@@ -113,18 +113,18 @@
            (`` ($_ _.and
                    (_.cover [/.small /.from_small]
                             (case (/.small expected)
-                              (#try.Success actual)
+                              {#try.Success actual}
                               (n.= expected
                                    (/.from_small actual))
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               false))
                    (_.cover [/.small_limit /.not_a_small_number]
                             (case (/.small invalid)
-                              (#try.Success actual)
+                              {#try.Success actual}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.not_a_small_number error)))
                    )))))
 
@@ -137,18 +137,18 @@
            (`` ($_ _.and
                    (_.cover [/.big /.from_big]
                             (case (/.big expected)
-                              (#try.Success actual)
+                              {#try.Success actual}
                               (n.= expected
                                    (/.from_big actual))
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               false))
                    (_.cover [/.big_limit /.not_a_big_number]
                             (case (/.big invalid)
-                              (#try.Success actual)
+                              {#try.Success actual}
                               false
 
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.not_a_big_number error)))
                    )))))
 
@@ -171,11 +171,11 @@
                   [(_.cover []
                             (|> (do try.monad
                                   [expected_path (/.path expected_path)
-                                   tar (|> (row.row ( expected_path))
+                                   tar (|> (row.row { expected_path})
                                            (format.result /.writer)
                                            (.result /.parser))]
                                   (in (case (row.list tar)
-                                        (^ (list ( actual_path)))
+                                        (^ (list { actual_path}))
                                         (text\= (/.from_path expected_path)
                                                 (/.from_path actual_path))
 
@@ -193,18 +193,18 @@
                                        (|> (do try.monad
                                              [expected_path (/.path expected_path)
                                               expected_content (/.content content)
-                                              tar (|> (row.row ( [expected_path
+                                              tar (|> (row.row { [expected_path
                                                                        expected_moment
                                                                        /.none
                                                                        [#/.user [#/.name /.anonymous
                                                                                  #/.id /.no_id]
                                                                         #/.group [#/.name /.anonymous
                                                                                   #/.id /.no_id]]
-                                                                       expected_content]))
+                                                                       expected_content]})
                                                       (format.result /.writer)
                                                       (.result /.parser))]
                                              (in (case (row.list tar)
-                                                   (^ (list ( [actual_path actual_moment actual_mode actual_ownership actual_content])))
+                                                   (^ (list { [actual_path actual_moment actual_mode actual_ownership actual_content]}))
                                                    (let [seconds (: (-> Instant Int)
                                                                     (|>> instant.relative (duration.ticks duration.second)))]
                                                      (and (text\= (/.from_path expected_path)
@@ -251,18 +251,18 @@
                             (|> (do try.monad
                                   [path (/.path path)
                                    content (/.content (binary.empty 0))
-                                   tar (|> (row.row (#/.Normal [path
+                                   tar (|> (row.row {#/.Normal [path
                                                                 (instant.of_millis +0)
                                                                 expected_mode
                                                                 [#/.user [#/.name /.anonymous
                                                                           #/.id /.no_id]
                                                                  #/.group [#/.name /.anonymous
                                                                            #/.id /.no_id]]
-                                                                content]))
+                                                                content]})
                                            (format.result /.writer)
                                            (.result /.parser))]
                                   (in (case (row.list tar)
-                                        (^ (list (#/.Normal [_ _ actual_mode _ _])))
+                                        (^ (list {#/.Normal [_ _ actual_mode _ _]}))
                                         (n.= (/.mode expected_mode)
                                              (/.mode actual_mode))
 
@@ -274,18 +274,18 @@
                                    (|> (do try.monad
                                          [path (/.path path)
                                           content (/.content (binary.empty 0))
-                                          tar (|> (row.row (#/.Normal [path
+                                          tar (|> (row.row {#/.Normal [path
                                                                        (instant.of_millis +0)
                                                                        
                                                                        [#/.user [#/.name /.anonymous
                                                                                  #/.id /.no_id]
                                                                         #/.group [#/.name /.anonymous
                                                                                   #/.id /.no_id]]
-                                                                       content]))
+                                                                       content]})
                                                   (format.result /.writer)
                                                   (.result /.parser))]
                                          (in (case (row.list tar)
-                                               (^ (list (#/.Normal [_ _ actual_mode _ _])))
+                                               (^ (list {#/.Normal [_ _ actual_mode _ _]}))
                                                (n.= (/.mode )
                                                     (/.mode actual_mode))
 
@@ -324,35 +324,35 @@
            ($_ _.and
                (_.cover [/.name_size /.name_is_too_long]
                         (case (/.name invalid)
-                          (#try.Success _)
+                          {#try.Success _}
                           false
 
-                          (#try.Failure error)
+                          {#try.Failure error}
                           (exception.match? /.name_is_too_long error)))
                (_.cover [/.not_ascii]
                         (case (/.name not_ascii)
-                          (#try.Success actual)
+                          {#try.Success actual}
                           false
 
-                          (#try.Failure error)
+                          {#try.Failure error}
                           (exception.match? /.not_ascii error)))
                (_.cover [/.Name /.name /.from_name]
                         (|> (do try.monad
                               [path (/.path path)
                                content (/.content (binary.empty 0))
                                expected (/.name expected)
-                               tar (|> (row.row (#/.Normal [path
+                               tar (|> (row.row {#/.Normal [path
                                                             (instant.of_millis +0)
                                                             /.none
                                                             [#/.user [#/.name expected
                                                                       #/.id /.no_id]
                                                              #/.group [#/.name /.anonymous
                                                                        #/.id /.no_id]]
-                                                            content]))
+                                                            content]})
                                        (format.result /.writer)
                                        (.result /.parser))]
                               (in (case (row.list tar)
-                                    (^ (list (#/.Normal [_ _ _ actual_ownership _])))
+                                    (^ (list {#/.Normal [_ _ _ actual_ownership _]}))
                                     (and (text\= (/.from_name expected)
                                                  (/.from_name (value@ [#/.user #/.name] actual_ownership)))
                                          (text\= (/.from_name /.anonymous)
@@ -365,18 +365,18 @@
                         (|> (do try.monad
                               [path (/.path path)
                                content (/.content (binary.empty 0))
-                               tar (|> (row.row (#/.Normal [path
+                               tar (|> (row.row {#/.Normal [path
                                                             (instant.of_millis +0)
                                                             /.none
                                                             [#/.user [#/.name /.anonymous
                                                                       #/.id /.no_id]
                                                              #/.group [#/.name /.anonymous
                                                                        #/.id /.no_id]]
-                                                            content]))
+                                                            content]})
                                        (format.result /.writer)
                                        (.result /.parser))]
                               (in (case (row.list tar)
-                                    (^ (list (#/.Normal [_ _ _ actual_ownership _])))
+                                    (^ (list {#/.Normal [_ _ _ actual_ownership _]}))
                                     (and (text\= (/.from_name /.anonymous)
                                                  (/.from_name (value@ [#/.user #/.name] actual_ownership)))
                                          (n.= (/.from_small /.no_id)
@@ -407,10 +407,10 @@
             (_.cover [/.invalid_end_of_archive]
                      (let [dump (format.result /.writer row.empty)]
                        (case (.result /.parser (binary\composite dump dump))
-                         (#try.Success _)
+                         {#try.Success _}
                          false
                          
-                         (#try.Failure error)
+                         {#try.Failure error}
                          (exception.match? /.invalid_end_of_archive error))))
             
             ..path
diff --git a/stdlib/source/test/lux/data/sum.lux b/stdlib/source/test/lux/data/sum.lux
index c0fae2333..bc1d9c70c 100644
--- a/stdlib/source/test/lux/data/sum.lux
+++ b/stdlib/source/test/lux/data/sum.lux
@@ -37,19 +37,19 @@
               (_.cover [/.hash]
                        (let [hash (/.hash i.hash n.hash)]
                          (and (n.= (\ i.hash hash left)
-                                   (\ hash hash (#.Left left)))
+                                   (\ hash hash {#.Left left}))
                               (n.= (\ n.hash hash right)
-                                   (\ hash hash (#.Right right)))))))
+                                   (\ hash hash {#.Right right}))))))
 
             (_.cover [/.left]
                      (|> (/.left expected)
                          (: (Or Nat Nat))
-                         (case> (0 #0 actual) (n.= expected actual)
+                         (case> {0 #0 actual} (n.= expected actual)
                                 _ false)))
             (_.cover [/.right]
                      (|> (/.right expected)
                          (: (Or Nat Nat))
-                         (case> (0 #1 actual) (n.= expected actual)
+                         (case> {0 #1 actual} (n.= expected actual)
                                 _ false)))
             (_.cover [/.either]
                      (and (|> (/.left expected)
@@ -64,11 +64,11 @@
                      (and (|> (/.left expected)
                               (: (Or Nat Nat))
                               (/.then (n.+ shift) (n.- shift))
-                              (case> (0 #0 actual) (n.= (n.+ shift expected) actual) _ false))
+                              (case> {0 #0 actual} (n.= (n.+ shift expected) actual) _ false))
                           (|> (/.right expected)
                               (: (Or Nat Nat))
                               (/.then (n.+ shift) (n.- shift))
-                              (case> (0 #1 actual) (n.= (n.- shift expected) actual) _ false))))
+                              (case> {0 #1 actual} (n.= (n.- shift expected) actual) _ false))))
             (do !
               [size (\ ! each (n.% 5) random.nat)
                expected (random.list size random.nat)]
diff --git a/stdlib/source/test/lux/data/text.lux b/stdlib/source/test/lux/data/text.lux
index ea5bfce13..305268a0b 100644
--- a/stdlib/source/test/lux/data/text.lux
+++ b/stdlib/source/test/lux/data/text.lux
@@ -152,9 +152,9 @@
          expected (\ ! each (n.% size) random.nat)]
         (_.cover [/.char]
                  (case (/.char expected sample)
-                   (#.Some char)
+                   {#.Some char}
                    (case (/.index (/.of_char char) sample)
-                     (#.Some actual)
+                     {#.Some actual}
                      (n.= expected actual)
 
                      _
@@ -210,7 +210,7 @@
                     (/.replaced/1 pre post (\ /.monoid composite pre static))))
         (_.cover [/.split_by]
                  (case (/.split_by static ($_ (\ /.monoid composite) pre static post))
-                   (#.Some [left right])
+                   {#.Some [left right]}
                    (and (\ /.equivalence = pre left)
                         (\ /.equivalence = post right))
                    
@@ -290,7 +290,7 @@
             ($_ _.and
                 (_.cover [/.split_at]
                          (|> (/.split_at sizeL sample)
-                             (case> (#.Right [_l _r])
+                             (case> {#.Right [_l _r]}
                                     (and (/\= sampleL _l)
                                          (/\= sampleR _r)
                                          (/\= sample (/.together (list _l _r))))
@@ -302,7 +302,7 @@
                               (/.clip sizeL (n.- sizeL (/.size sample)) sample)
                               (/.clip_since sizeL sample)
                               (/.clip_since 0 sample)]
-                             (case> [(#.Right _l) (#.Right _r) (#.Right _r') (#.Right _f)]
+                             (case> [{#.Right _l} {#.Right _r} {#.Right _r'} {#.Right _f}]
                                     (and (/\= sampleL _l)
                                          (/\= sampleR _r)
                                          (/\= _r _r')
diff --git a/stdlib/source/test/lux/data/text/escape.lux b/stdlib/source/test/lux/data/text/escape.lux
index 43242b1cf..6a658d960 100644
--- a/stdlib/source/test/lux/data/text/escape.lux
+++ b/stdlib/source/test/lux/data/text/escape.lux
@@ -105,11 +105,11 @@
                                (/.escapable? right))
                          (let [escaped (/.escaped expected)]
                            (case (/.un_escaped escaped)
-                             (#try.Success un_escaped)
+                             {#try.Success un_escaped}
                              (and (not (text\= escaped expected))
                                   (text\= un_escaped expected))
                              
-                             (#try.Failure error)
+                             {#try.Failure error}
                              false))
                          (text\= expected (/.escaped expected))))))
           (do [! random.monad]
@@ -117,10 +117,10 @@
                        (\ ! each text.of_char))]
             (_.cover [/.dangling_escape]
                      (case (/.un_escaped (format (/.escaped dummy) "\"))
-                       (#try.Success _)
+                       {#try.Success _}
                        false
 
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.dangling_escape error))))
           (do [! random.monad]
             [dummy (|> (random.char unicode.character)
@@ -128,10 +128,10 @@
                        (\ ! each text.of_char))]
             (_.cover [/.invalid_escape]
                      (case (/.un_escaped (format "\" dummy))
-                       (#try.Success _)
+                       {#try.Success _}
                        false
 
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.invalid_escape error))))
           (do [! random.monad]
             [too_short (|> (random.char unicode.character)
@@ -139,15 +139,15 @@
              code (|> (random.unicode 4)
                       (random.only (function (_ code)
                                      (case (\ n.hex decoded code)
-                                       (#try.Failure error) true
-                                       (#try.Success _) false))))]
+                                       {#try.Failure error} true
+                                       {#try.Success _} false))))]
             (_.cover [/.invalid_unicode_escape]
                      (template.let [(!invalid )
                                     [(case (/.un_escaped (format "\u" ))
-                                       (#try.Success _)
+                                       {#try.Success _}
                                        false
 
-                                       (#try.Failure error)
+                                       {#try.Failure error}
                                        (exception.match? /.invalid_unicode_escape error))]]
                        (and (!invalid (\ n.hex encoded too_short))
                             (!invalid code)))))
diff --git a/stdlib/source/test/lux/data/text/format.lux b/stdlib/source/test/lux/data/text/format.lux
index 141705e33..ddd4d0afb 100644
--- a/stdlib/source/test/lux/data/text/format.lux
+++ b/stdlib/source/test/lux/data/text/format.lux
@@ -170,7 +170,7 @@
                            #.None
                            true
                            
-                           (#.Some value)
+                           {#.Some value}
                            (text.contains? (/.nat value)
                                            (/.maybe /.nat sample)))))
               (do [! random.monad]
diff --git a/stdlib/source/test/lux/data/text/regex.lux b/stdlib/source/test/lux/data/text/regex.lux
index b77909f5a..554a47eff 100644
--- a/stdlib/source/test/lux/data/text/regex.lux
+++ b/stdlib/source/test/lux/data/text/regex.lux
@@ -26,7 +26,7 @@
   (-> (Parser Text) Text Bit)
   (|> input
       (.result regex)
-      (case> (#try.Success parsed)
+      (case> {#try.Success parsed}
              (text\= parsed input)
 
              _
@@ -36,7 +36,7 @@
   (-> Text (Parser Text) Text Bit)
   (|> input
       (.result regex)
-      (case> (#try.Success parsed)
+      (case> {#try.Success parsed}
              (text\= test parsed)
 
              _
@@ -46,7 +46,7 @@
   (All (_ a) (-> (Parser a) Text Bit))
   (|> input
       (.result regex)
-      (case> (#try.Failure _)
+      (case> {#try.Failure _}
              true
 
              _
@@ -58,7 +58,7 @@
   (macro.with_identifiers [g!message g!_]
     (in (list (` (|> (~ input)
                      (.result (~ regex))
-                     (case> (^ (#try.Success (~ pattern)))
+                     (case> (^ {#try.Success (~ pattern)})
                             true
 
                             (~ g!_)
@@ -259,27 +259,27 @@
   Test
   ($_ _.and
       (_.test "Can specify alternative patterns."
-              (and (should_check ["a" (0 #0 [])] (/.regex "a|b") "a")
-                   (should_check ["b" (0 #1 [])] (/.regex "a|b") "b")
+              (and (should_check ["a" {0 #0 []}] (/.regex "a|b") "a")
+                   (should_check ["b" {0 #1 []}] (/.regex "a|b") "b")
                    (should_fail (/.regex "a|b") "c")))
       (_.test "Can have groups within alternations."
-              (and (should_check ["abc" (0 #0 ["b" "c"])] (/.regex "a(.)(.)|b(.)(.)") "abc")
-                   (should_check ["bcd" (0 #1 ["c" "d"])] (/.regex "a(.)(.)|b(.)(.)") "bcd")
+              (and (should_check ["abc" {0 #0 ["b" "c"]}] (/.regex "a(.)(.)|b(.)(.)") "abc")
+                   (should_check ["bcd" {0 #1 ["c" "d"]}] (/.regex "a(.)(.)|b(.)(.)") "bcd")
                    (should_fail (/.regex "a(.)(.)|b(.)(.)") "cde")
 
-                   (should_check ["123-456-7890" (0 #0 ["123" "456-7890" "456" "7890"])]
+                   (should_check ["123-456-7890" {0 #0 ["123" "456-7890" "456" "7890"]}]
                                  (/.regex "(\d{3})-((\d{3})-(\d{4}))|b(.)d")
                                  "123-456-7890")))
       ))
 
 (syntax: (expands? [form .any])
   (function (_ lux)
-    (#try.Success [lux (list (code.bit (case (macro.single_expansion form lux)
-                                         (#try.Success _)
+    {#try.Success [lux (list (code.bit (case (macro.single_expansion form lux)
+                                         {#try.Success _}
                                          true
 
-                                         (#try.Failure error)
-                                         false)))])))
+                                         {#try.Failure error}
+                                         false)))]}))
 
 (def: .public test
   Test
diff --git a/stdlib/source/test/lux/debug.lux b/stdlib/source/test/lux/debug.lux
index fbd5a9b12..80f78b281 100644
--- a/stdlib/source/test/lux/debug.lux
+++ b/stdlib/source/test/lux/debug.lux
@@ -78,14 +78,14 @@
      sample_frac random.frac]
     (in (`` (and (case (/.representation (type [Bit Int Frac])
                                          [sample_bit sample_int sample_frac])
-                   (#try.Success actual)
+                   {#try.Success actual}
                    (text\= (format "[" (%.bit sample_bit)
                                    " " (%.int sample_int)
                                    " " (%.frac sample_frac)
                                    "]")
                            actual)
 
-                   (#try.Failure error)
+                   {#try.Failure error}
                    false)
                  ... TODO: Uncomment after switching from the old (tag+last?) to the new (lefts+right?) representation for variants 
                  ... (~~ (template [   ]
@@ -179,16 +179,16 @@
                                      (try\each (text\= (%.maybe %.nat )))
                                      (try.else false))]
                                 
-                                [(#.Some sample_nat)]
+                                [{#.Some sample_nat}]
                                 [#.None]
                                 ))
                           )))
         (_.cover [/.cannot_represent_value]
                  (case (/.representation (-> Nat Nat) (|>>))
-                   (#try.Success representation)
+                   {#try.Success representation}
                    false
 
-                   (#try.Failure error)
+                   {#try.Failure error}
                    (exception.match? /.cannot_represent_value error)))
         )))
 
@@ -219,11 +219,11 @@
 (syntax: (macro_error [macro .any])
   (function (_ compiler)
     (case ((macro.expansion macro) compiler)
-      (#try.Failure error)
-      (#try.Success [compiler (list (code.text error))])
+      {#try.Failure error}
+      {#try.Success [compiler (list (code.text error))]}
       
-      (#try.Success _)
-      (#try.Failure "OOPS!"))))
+      {#try.Success _}
+      {#try.Failure "OOPS!"})))
 
 (type: My_Text
   Text)
diff --git a/stdlib/source/test/lux/documentation.lux b/stdlib/source/test/lux/documentation.lux
index 0fd8ffff1..d4979d44e 100644
--- a/stdlib/source/test/lux/documentation.lux
+++ b/stdlib/source/test/lux/documentation.lux
@@ -22,12 +22,12 @@
 
 (syntax: (macro_error [macro .any])
   (function (_ compiler)
-    (#try.Success [compiler (list (code.bit (case ((macro.expansion macro) compiler)
-                                              (#try.Failure error)
+    {#try.Success [compiler (list (code.bit (case ((macro.expansion macro) compiler)
+                                              {#try.Failure error}
                                               true
                                               
-                                              (#try.Success _)
-                                              false)))])))
+                                              {#try.Success _}
+                                              false)))]}))
 
 (syntax: (description [])
   (\ meta.monad each
diff --git a/stdlib/source/test/lux/extension.lux b/stdlib/source/test/lux/extension.lux
index 52994d6a1..6076ca6ee 100644
--- a/stdlib/source/test/lux/extension.lux
+++ b/stdlib/source/test/lux/extension.lux
@@ -64,7 +64,7 @@
         (let [! phase.monad]
           (|> parameters
               (monad.each ! (phase archive))
-              (\ ! each (|>> (#analysis.Extension self))))))
+              (\ ! each (|>> {#analysis.Extension self})))))
 
       (synthesis: (..my_synthesis self phase archive [pass_through .any])
         (phase archive pass_through))
@@ -74,13 +74,13 @@
         (let [! phase.monad]
           (|> parameters
               (monad.each ! (phase archive))
-              (\ ! each (|>> (#analysis.Extension self))))))
+              (\ ! each (|>> {#analysis.Extension self})))))
 
       (synthesis: (..my_generation self phase archive [parameters (<>.some .any)])
         (let [! phase.monad]
           (|> parameters
               (monad.each ! (phase archive))
-              (\ ! each (|>> (#synthesis.Extension self))))))
+              (\ ! each (|>> {#synthesis.Extension self})))))
 
       (generation: (..my_generation self phase archive [pass_through .any])
         (for [@.jvm
@@ -89,15 +89,15 @@
              (phase archive pass_through)))
 
       (analysis: (..dummy_generation self phase archive [])
-        (\ phase.monad in (#analysis.Extension self (list))))
+        (\ phase.monad in {#analysis.Extension self (list)}))
 
       (synthesis: (..dummy_generation self phase archive [])
-        (\ phase.monad in (#synthesis.Extension self (list))))
+        (\ phase.monad in {#synthesis.Extension self (list)}))
 
       (generation: (..dummy_generation self phase archive [])
         (\ phase.monad in
            (for [@.jvm
-                 (row.row (#jvm.Constant (#jvm.LDC (#jvm.String self))))
+                 (row.row {#jvm.Constant {#jvm.LDC {#jvm.String self}}})
 
                  @.js (js.string self)
                  @.python (python.unicode self)
diff --git a/stdlib/source/test/lux/ffi.jvm.lux b/stdlib/source/test/lux/ffi.jvm.lux
index 431e72641..0e5933bbb 100644
--- a/stdlib/source/test/lux/ffi.jvm.lux
+++ b/stdlib/source/test/lux/ffi.jvm.lux
@@ -62,11 +62,11 @@
   (function (_ lux)
     (|> (macro.single_expansion expression)
         (meta.result lux)
-        (case> (#try.Success expansion)
-               (#try.Failure "OOPS!")
+        (case> {#try.Success expansion}
+               {#try.Failure "OOPS!"}
                
-               (#try.Failure error)
-               (#try.Success [lux (list (code.text error))])))))
+               {#try.Failure error}
+               {#try.Success [lux (list (code.text error))]}))))
 
 (def: for_conversions
   Test
@@ -150,10 +150,10 @@
                    (random.ascii 1))]
         ($_ _.and
             (_.cover [/.check]
-                     (and (case (/.check java/lang/String sample) (#.Some _) true #.None false)
-                          (case (/.check java/lang/Long sample) (#.Some _) false #.None true)
-                          (case (/.check java/lang/Object sample) (#.Some _) true #.None false)
-                          (case (/.check java/lang/Object (/.null)) (#.Some _) false #.None true)))
+                     (and (case (/.check java/lang/String sample) {#.Some _} true #.None false)
+                          (case (/.check java/lang/Long sample) {#.Some _} false #.None true)
+                          (case (/.check java/lang/Object sample) {#.Some _} true #.None false)
+                          (case (/.check java/lang/Object (/.null)) {#.Some _} false #.None true)))
             (_.cover [/.synchronized]
                      (/.synchronized sample #1))
             (_.cover [/.class_for]
@@ -165,10 +165,10 @@
                      (and (|> (/.??? (/.null))
                               (: (Maybe java/lang/Object))
                               (case> #.None #1
-                                     (#.Some _) #0))
+                                     {#.Some _} #0))
                           (|> (/.??? sample)
                               (: (Maybe java/lang/Object))
-                              (case> (#.Some _) #1
+                              (case> {#.Some _} #1
                                      #.None #0))))
             (_.cover [/.!!!]
                      (and (|> (/.??? (/.null))
@@ -287,17 +287,17 @@
                               expected))))
            example/1!
            (and (case (test/TestInterface1::actual1 false object/1)
-                  (#try.Success actual)
+                  {#try.Success actual}
                   (same? (: Any expected)
                          (: Any actual))
                   
-                  (#try.Failure error)
+                  {#try.Failure error}
                   false)
                 (case (test/TestInterface1::actual1 true object/1)
-                  (#try.Success actual)
+                  {#try.Success actual}
                   false
                   
-                  (#try.Failure error)
+                  {#try.Failure error}
                   true))
 
            object/2 (/.object [] [test/TestInterface2]
@@ -508,17 +508,17 @@
            object/1 (test/TestClass1::new (.int expected))
            example/1!
            (and (case (test/TestInterface1::actual1 false object/1)
-                  (#try.Success actual)
+                  {#try.Success actual}
                   (n.= expected
                        (:as Nat actual))
                   
-                  (#try.Failure error)
+                  {#try.Failure error}
                   false)
                 (case (test/TestInterface1::actual1 true object/1)
-                  (#try.Success actual)
+                  {#try.Success actual}
                   false
                   
-                  (#try.Failure error)
+                  {#try.Failure error}
                   true))
 
            object/2 (test/TestClass2::new)
@@ -586,10 +586,10 @@
   (function (_ lux)
     (|> (macro.single_expansion expression)
         (meta.result lux)
-        (case> (#try.Success expansion)
+        (case> {#try.Success expansion}
                true
                
-               (#try.Failure error)
+               {#try.Failure error}
                false)
         code.bit
         list
diff --git a/stdlib/source/test/lux/ffi.lua.lux b/stdlib/source/test/lux/ffi.lua.lux
index 96e4b7ec8..1e20f80ca 100644
--- a/stdlib/source/test/lux/ffi.lua.lux
+++ b/stdlib/source/test/lux/ffi.lua.lux
@@ -54,6 +54,6 @@
                            true))
                 (_.cover [/.import:]
                          (case (io.run! (..os/getenv string))
-                           (#.Some _) true
+                           {#.Some _} true
                            #.None true))
                 )))))
diff --git a/stdlib/source/test/lux/ffi.old.lux b/stdlib/source/test/lux/ffi.old.lux
index df05fdf29..7f53f7da4 100644
--- a/stdlib/source/test/lux/ffi.old.lux
+++ b/stdlib/source/test/lux/ffi.old.lux
@@ -182,7 +182,7 @@
                           (case> #.None #1
                                  _ #0))
                       (|> (: (Maybe java/lang/Object) (/.??? sample))
-                          (case> (#.Some _) #1
+                          (case> {#.Some _} #1
                                  _ #0))))
         (_.cover [/.!!!]
                  (and (/.null? (/.!!! (/.??? (/.null))))
@@ -197,10 +197,10 @@
      increase random.int]
     ($_ _.and
         (_.cover [/.check]
-                 (and (case (/.check java/lang/String sample) (#.Some _) true #.None false)
-                      (case (/.check java/lang/Long sample) (#.Some _) false #.None true)
-                      (case (/.check java/lang/Object sample) (#.Some _) true #.None false)
-                      (case (/.check java/lang/Object (/.null)) (#.Some _) false #.None true)))
+                 (and (case (/.check java/lang/String sample) {#.Some _} true #.None false)
+                      (case (/.check java/lang/Long sample) {#.Some _} false #.None true)
+                      (case (/.check java/lang/Object sample) {#.Some _} true #.None false)
+                      (case (/.check java/lang/Object (/.null)) {#.Some _} false #.None true)))
         (_.cover [/.synchronized]
                  (/.synchronized sample #1))
         (_.cover [/.class_for /.import:]
diff --git a/stdlib/source/test/lux/locale.lux b/stdlib/source/test/lux/locale.lux
index ed9bb4970..f8856abca 100644
--- a/stdlib/source/test/lux/locale.lux
+++ b/stdlib/source/test/lux/locale.lux
@@ -43,7 +43,7 @@
     [language ..random_language
      territory ..random_territory
      encoding ..random_encoding]
-    (in (/.locale language (#.Some territory) (#.Some encoding)))))
+    (in (/.locale language {#.Some territory} {#.Some encoding}))))
 
 (def: .public test
   Test
@@ -60,15 +60,15 @@
                    ($_ _.and
                        (|> ..random_language
                            (\ ! each (function (_ language)
-                                       (/.locale language (#.Some fixed_territory) (#.Some fixed_encoding))))
+                                       (/.locale language {#.Some fixed_territory} {#.Some fixed_encoding})))
                            ($hash.spec /.hash))
                        (|> ..random_territory
                            (\ ! each (function (_ territory)
-                                       (/.locale fixed_language (#.Some territory) (#.Some fixed_encoding))))
+                                       (/.locale fixed_language {#.Some territory} {#.Some fixed_encoding})))
                            ($hash.spec /.hash))
                        (|> ..random_encoding
                            (\ ! each (function (_ encoding)
-                                       (/.locale fixed_language (#.Some fixed_territory) (#.Some encoding))))
+                                       (/.locale fixed_language {#.Some fixed_territory} {#.Some encoding})))
                            ($hash.spec /.hash))
                        )))
           
@@ -77,9 +77,9 @@
              territory ..random_territory
              encoding ..random_encoding
              .let [l_locale (/.locale language #.None #.None)
-                   lt_locale (/.locale language (#.Some territory) #.None)
-                   le_locale (/.locale language #.None (#.Some encoding))
-                   lte_locale (/.locale language (#.Some territory) (#.Some encoding))]
+                   lt_locale (/.locale language {#.Some territory} #.None)
+                   le_locale (/.locale language #.None {#.Some encoding})
+                   lte_locale (/.locale language {#.Some territory} {#.Some encoding})]
              .let [language_check (and (text\= (language.code language)
                                                (/.code l_locale))
                                        (list.every? (|>> /.code (text.starts_with? (language.code language)))
diff --git a/stdlib/source/test/lux/macro.lux b/stdlib/source/test/lux/macro.lux
index 694a10f7d..2266d973a 100644
--- a/stdlib/source/test/lux/macro.lux
+++ b/stdlib/source/test/lux/macro.lux
@@ -39,7 +39,7 @@
 
 (template: (!global )
   [(: [Text .Global]
-      [(template.text []) (#.Definition [true .Macro ])])])
+      [(template.text []) {#.Definition [true .Macro ]}])])
 
 (syntax: (pow/2 [number .any])
   (in (list (` (nat.* (~ number) (~ number))))))
@@ -70,7 +70,7 @@
                              #.mode    #.Build]
           #.source          [location.dummy 0 ""]
           #.location         location.dummy
-          #.current_module  (#.Some current_module)
+          #.current_module  {#.Some current_module}
           #.modules         (list [macro_module
                                    [#.module_hash        0
                                     #.module_aliases     (list)
@@ -140,7 +140,7 @@
                      (bit\= (not (nat.= 1 repetitions))
                             (|> (/.one_expansion (` (..repeated (~ (code.nat repetitions)) (~ pow/1))))
                                 (meta.result lux)
-                                (!expect (#try.Failure _)))))
+                                (!expect {#try.Failure _}))))
             ))))
 
 (def: .public test
@@ -154,13 +154,13 @@
                          (|> (/.identifier identifier_prefix)
                              (\ meta.monad each %.code)
                              (meta.result lux)
-                             (!expect (^multi (#try.Success actual_identifier)
+                             (!expect (^multi {#try.Success actual_identifier}
                                               (and (text.contains? identifier_prefix actual_identifier)
                                                    (text.contains? (%.nat seed) actual_identifier))))))
                 (_.cover [/.wrong_syntax_error]
                          (|> (/.single_expansion (` (/.log_single_expansion!)))
                              (meta.result lux)
-                             (!expect (^multi (#try.Failure error)
+                             (!expect (^multi {#try.Failure error}
                                               (text.contains? (/.wrong_syntax_error (name_of /.log_single_expansion!))
                                                               error)))))
                 (_.cover [/.with_identifiers]
@@ -168,7 +168,7 @@
                            (|> (/.with_identifiers []
                                  (\ meta.monad in ))
                                (meta.result lux)
-                               (!expect (^multi (#try.Success [_ (#.Identifier ["" actual])])
+                               (!expect (^multi {#try.Success [_ {#.Identifier ["" actual]}]}
                                                 (text.contains? (template.text [])
                                                                 actual))))))
                 ))
diff --git a/stdlib/source/test/lux/macro/code.lux b/stdlib/source/test/lux/macro/code.lux
index 1e694ada1..f14970009 100644
--- a/stdlib/source/test/lux/macro/code.lux
+++ b/stdlib/source/test/lux/macro/code.lux
@@ -67,11 +67,11 @@
         start (: Source
                  [location.dummy 0 source_code])]
     (case (parse start)
-      (#.Left [end error])
-      (#try.Failure error)
+      {#.Left [end error]}
+      {#try.Failure error}
       
-      (#.Right [end lux_code])
-      (#try.Success lux_code))))
+      {#.Right [end lux_code]}
+      {#try.Success lux_code})))
 
 (def: (replacement_simulation [original substitute])
   (-> [Code Code] (Random [Code Code]))
@@ -110,15 +110,15 @@
                    [expected ]
                    (_.cover []
                             (and (case (..read (/.format ( expected)))
-                                   (#try.Success actual)
+                                   {#try.Success actual}
                                    (\ /.equivalence =
                                       actual
                                       ( expected))
                                    
-                                   (#try.Failure error)
+                                   {#try.Failure error}
                                    false)
                                  (\ /.equivalence =
-                                    [location.dummy ( expected)]
+                                    [location.dummy { expected}]
                                     ( expected)))))]
 
                 [/.bit random.bit #.Bit]
@@ -137,15 +137,15 @@
                    [expected ]
                    (_.cover []
                             (and (case (..read (/.format ( expected)))
-                                   (#try.Success actual)
+                                   {#try.Success actual}
                                    (\ /.equivalence =
                                       actual
                                       ( expected))
                                    
-                                   (#try.Failure error)
+                                   {#try.Failure error}
                                    false)
                                  (\ /.equivalence =
-                                    [location.dummy ( ["" expected])]
+                                    [location.dummy { ["" expected]}]
                                     ( expected)))
                             ))]
 
diff --git a/stdlib/source/test/lux/macro/local.lux b/stdlib/source/test/lux/macro/local.lux
index 1016ccdef..b36094399 100644
--- a/stdlib/source/test/lux/macro/local.lux
+++ b/stdlib/source/test/lux/macro/local.lux
@@ -30,17 +30,17 @@
 (syntax: (macro_error [macro .any])
   (function (_ compiler)
     (case ((macro.expansion macro) compiler)
-      (#try.Failure error)
-      (#try.Success [compiler (list (code.text error))])
+      {#try.Failure error}
+      {#try.Success [compiler (list (code.text error))]}
       
-      (#try.Success _)
-      (#try.Failure "OOPS!"))))
+      {#try.Success _}
+      {#try.Failure "OOPS!"})))
 
 (def: (constant output)
   (-> Code Macro)
   ("lux macro"
    (function (_ inputs lux)
-     (#try.Success [lux (list output)]))))
+     {#try.Success [lux (list output)]})))
 
 (syntax: (with [name (.tuple (<>.and .text .text))
                 constant .any
@@ -54,8 +54,8 @@
            (let [remove_macro! (: (-> .Module .Module)
                                   (revised@ #.definitions (plist.lacks short)))]
              (function (_ lux)
-               (#try.Success [(revised@ #.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)]
                                (exec (~ pop!)
diff --git a/stdlib/source/test/lux/macro/syntax/check.lux b/stdlib/source/test/lux/macro/syntax/check.lux
index 8ea3f25e5..de1e3fe56 100644
--- a/stdlib/source/test/lux/macro/syntax/check.lux
+++ b/stdlib/source/test/lux/macro/syntax/check.lux
@@ -40,9 +40,9 @@
                      (case (.result /.parser
                                           (list (/.format [#/.type type
                                                            #/.value value])))
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false
                        
-                       (#try.Success check)
+                       {#try.Success check}
                        (and (code\= type (value@ #/.type check))
                             (code\= value (value@ #/.value check)))))))))
diff --git a/stdlib/source/test/lux/macro/syntax/declaration.lux b/stdlib/source/test/lux/macro/syntax/declaration.lux
index e87028628..f14762ad6 100644
--- a/stdlib/source/test/lux/macro/syntax/declaration.lux
+++ b/stdlib/source/test/lux/macro/syntax/declaration.lux
@@ -40,8 +40,8 @@
             (_.cover [/.format /.parser]
                      (case (.result /.parser
                                           (list (/.format expected)))
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false
                        
-                       (#try.Success actual)
+                       {#try.Success actual}
                        (\ /.equivalence = expected actual)))))))
diff --git a/stdlib/source/test/lux/macro/syntax/definition.lux b/stdlib/source/test/lux/macro/syntax/definition.lux
index cb5867a2a..b76f75cdb 100644
--- a/stdlib/source/test/lux/macro/syntax/definition.lux
+++ b/stdlib/source/test/lux/macro/syntax/definition.lux
@@ -69,28 +69,28 @@
                 (_.cover [/.format /.parser]
                          (case (.result (/.parser compiler)
                                               (list (/.format expected)))
-                           (#try.Failure error)
+                           {#try.Failure error}
                            false
                            
-                           (#try.Success actual)
+                           {#try.Success actual}
                            (\ /.equivalence = expected actual)))
                 (_.cover [/.typed]
-                         (let [expected (with@ #/.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)
+                             {#try.Failure error}
                              false
                              
-                             (#try.Success actual)
+                             {#try.Success actual}
                              (\ /.equivalence = expected actual))))
                 (_.cover [/.lacks_type]
-                         (let [expected (with@ #/.value (#.Right untyped_value) expected)]
+                         (let [expected (with@ #/.value {#.Right untyped_value} expected)]
                            (case (.result (/.typed compiler)
                                                 (list (/.format expected)))
-                             (#try.Failure error)
+                             {#try.Failure error}
                              (exception.match? /.lacks_type error)
                              
-                             (#try.Success actual)
+                             {#try.Success actual}
                              false)))
                 )))
       ))
diff --git a/stdlib/source/test/lux/macro/syntax/export.lux b/stdlib/source/test/lux/macro/syntax/export.lux
index 17396ad9c..ac95210a2 100644
--- a/stdlib/source/test/lux/macro/syntax/export.lux
+++ b/stdlib/source/test/lux/macro/syntax/export.lux
@@ -33,7 +33,7 @@
         [[expected_export_policy expected_un_exported] ..export]
         (_.cover [/.parser /.default_policy]
                  (|> (case expected_export_policy
-                       (#.Some expected_export_policy)
+                       {#.Some expected_export_policy}
                        (list expected_export_policy (code.nat expected_un_exported))
 
                        #.None
diff --git a/stdlib/source/test/lux/macro/syntax/input.lux b/stdlib/source/test/lux/macro/syntax/input.lux
index bed8f2768..b822f1b94 100644
--- a/stdlib/source/test/lux/macro/syntax/input.lux
+++ b/stdlib/source/test/lux/macro/syntax/input.lux
@@ -41,8 +41,8 @@
             [expected ..random]
             (_.cover [/.format /.parser]
                      (case (.result /.parser (list (/.format (list expected))))
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false
                        
-                       (#try.Success actual)
+                       {#try.Success actual}
                        (\ (list.equivalence /.equivalence) = (list expected) actual)))))))
diff --git a/stdlib/source/test/lux/macro/template.lux b/stdlib/source/test/lux/macro/template.lux
index 8a79d62a5..74263e302 100644
--- a/stdlib/source/test/lux/macro/template.lux
+++ b/stdlib/source/test/lux/macro/template.lux
@@ -31,11 +31,11 @@
 (syntax: (macro_error [macro .any])
   (function (_ compiler)
     (case ((macro.expansion macro) compiler)
-      (#try.Failure error)
-      (#try.Success [compiler (list (code.text error))])
+      {#try.Failure error}
+      {#try.Success [compiler (list (code.text error))]}
       
-      (#try.Success _)
-      (#try.Failure "OOPS!"))))
+      {#try.Success _}
+      {#try.Failure "OOPS!"})))
 
 (def: .public test
   Test
diff --git a/stdlib/source/test/lux/math/logic/fuzzy.lux b/stdlib/source/test/lux/math/logic/fuzzy.lux
index d7e6d1000..d4887967e 100644
--- a/stdlib/source/test/lux/math/logic/fuzzy.lux
+++ b/stdlib/source/test/lux/math/logic/fuzzy.lux
@@ -93,7 +93,7 @@
          (random.one (function (_ thresholds)
                        (case thresholds
                          (^ (list threshold_0 threshold_1 threshold_2 threshold_3))
-                         (#.Some [threshold_0 threshold_1 threshold_2 threshold_3])
+                         {#.Some [threshold_0 threshold_1 threshold_2 threshold_3]}
 
                          _
                          #.None))))
@@ -177,7 +177,7 @@
              (random.one (function (_ thresholds)
                            (case thresholds
                              (^ (list threshold_0 threshold_1 threshold_2 threshold_3))
-                             (#.Some [threshold_0 threshold_1 threshold_2 threshold_3])
+                             {#.Some [threshold_0 threshold_1 threshold_2 threshold_3]}
 
                              _
                              #.None))))]
diff --git a/stdlib/source/test/lux/math/modular.lux b/stdlib/source/test/lux/math/modular.lux
index 0cb8a6456..bee6e09a5 100644
--- a/stdlib/source/test/lux/math/modular.lux
+++ b/stdlib/source/test/lux/math/modular.lux
@@ -66,10 +66,10 @@
                          (case (|> param
                                    (\ (/.codec param\\%) encoded)
                                    (\ (/.codec subject\\%) decoded))
-                           (#try.Failure error)
+                           {#try.Failure error}
                            (exception.match? /.incorrect_modulus error)
                            
-                           (#try.Success _)
+                           {#try.Success _}
                            false))
                 (_.cover [/.modulus]
                          (and (type\= (:of (/.modulus subject))
@@ -96,7 +96,7 @@
                                co_prime? (i.co_prime? (//.divisor (/.modulus subject))
                                                       (/.value subject))]
                            (case (/.inverse subject)
-                             (#.Some subject^-1)
+                             {#.Some subject^-1}
                              (and co_prime?
                                   (|> subject
                                       (/.* subject^-1)
@@ -116,9 +116,9 @@
                                        (/.= subject))))))
                 (_.cover [/.moduli_are_not_equal]
                          (case (/.adapter subject\\% param\\%)
-                           (#try.Failure error)
+                           {#try.Failure error}
                            (exception.match? /.moduli_are_not_equal error)
                            
-                           (#try.Success _)
+                           {#try.Success _}
                            false))
                 )))))
diff --git a/stdlib/source/test/lux/math/modulus.lux b/stdlib/source/test/lux/math/modulus.lux
index 74a61ff8c..d13cb6817 100644
--- a/stdlib/source/test/lux/math/modulus.lux
+++ b/stdlib/source/test/lux/math/modulus.lux
@@ -42,17 +42,17 @@
         ($_ _.and
             (_.cover [/.modulus /.divisor]
                      (case (/.modulus divisor)
-                       (#try.Success modulus)
+                       {#try.Success modulus}
                        (i.= divisor (/.divisor modulus))
                        
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (i.= +0 divisor)))
             (_.cover [/.zero_cannot_be_a_modulus]
                      (case (/.modulus +0)
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.zero_cannot_be_a_modulus error)
 
-                       (#try.Success modulus)
+                       {#try.Success modulus}
                        false))
             (_.cover [/.literal]
                      (with_expansions [ (|divisor|)]
diff --git a/stdlib/source/test/lux/math/number.lux b/stdlib/source/test/lux/math/number.lux
index 861a8bfdb..6614235b4 100644
--- a/stdlib/source/test/lux/math/number.lux
+++ b/stdlib/source/test/lux/math/number.lux
@@ -35,10 +35,10 @@
           (_.cover [/.bin]
                    (`` (and (~~ (template [<=>  ]
                                   [(case (\  decoded (..clean_commas ))
-                                     (#try.Success actual)
+                                     {#try.Success actual}
                                      (<=> (/.bin ) actual)
 
-                                     (#try.Failure error)
+                                     {#try.Failure error}
                                      false)]
 
                                   [n.= n.binary "11001001"]
@@ -56,10 +56,10 @@
           (_.cover [/.oct]
                    (`` (and (~~ (template [<=>  ]
                                   [(case (\  decoded (..clean_commas ))
-                                     (#try.Success actual)
+                                     {#try.Success actual}
                                      (<=> (/.oct ) actual)
 
-                                     (#try.Failure error)
+                                     {#try.Failure error}
                                      false)]
 
                                   [n.= n.octal "615243"]
@@ -77,10 +77,10 @@
           (_.cover [/.hex]
                    (`` (and (~~ (template [<=>  ]
                                   [(case (\  decoded (..clean_commas ))
-                                     (#try.Success actual)
+                                     {#try.Success actual}
                                      (<=> (/.hex ) actual)
 
-                                     (#try.Failure error)
+                                     {#try.Failure error}
                                      false)]
 
                                   [n.= n.hex "deadBEEF"]
diff --git a/stdlib/source/test/lux/math/number/i64.lux b/stdlib/source/test/lux/math/number/i64.lux
index fd8d55789..a9bde8474 100644
--- a/stdlib/source/test/lux/math/number/i64.lux
+++ b/stdlib/source/test/lux/math/number/i64.lux
@@ -128,7 +128,7 @@
              (_.cover [/.sub]
                       (n.= 0 size))
 
-             (#.Some sub)
+             {#.Some sub}
              (do [! random.monad]
                [.let [limit (|> (-- (\ sub width))
                                 /.mask
diff --git a/stdlib/source/test/lux/math/number/ratio.lux b/stdlib/source/test/lux/math/number/ratio.lux
index 332345387..2bced4d50 100644
--- a/stdlib/source/test/lux/math/number/ratio.lux
+++ b/stdlib/source/test/lux/math/number/ratio.lux
@@ -79,7 +79,7 @@
 
                                with_denominator!
                                (case (/.nat (/.ratio numerator denominator))
-                                 (#.Some factor)
+                                 {#.Some factor}
                                  (and (n.= 0 (n.% denominator numerator))
                                       (n.= numerator (n.* factor denominator)))
                                  
@@ -111,7 +111,7 @@
                            (and (/.= right
                                      (|> div (/.* left) (/.+ rem)))
                                 (case (/.nat div)
-                                  (#.Some _) true
+                                  {#.Some _} true
                                   #.None false)))))
               (do random.monad
                 [left ..random
diff --git a/stdlib/source/test/lux/meta.lux b/stdlib/source/test/lux/meta.lux
index fa5e55c24..86af8bc90 100644
--- a/stdlib/source/test/lux/meta.lux
+++ b/stdlib/source/test/lux/meta.lux
@@ -54,13 +54,13 @@
                                             #.mode    #.Build]
                          #.source          [location.dummy 0 source_code]
                          #.location         location.dummy
-                         #.current_module  (#.Some expected_current_module)
+                         #.current_module  {#.Some expected_current_module}
                          #.modules         (list)
                          #.scopes          (list)
                          #.type_context    [#.ex_counter 0
                                             #.var_counter 0
                                             #.var_bindings (list)]
-                         #.expected        (#.Some (#.Primitive primitive_type (list)))
+                         #.expected        {#.Some {#.Primitive primitive_type (list)}}
                          #.seed            expected_seed
                          #.scope_type_vars (list)
                          #.extensions      []
@@ -70,18 +70,18 @@
         (_.cover [/.result]
                  (|> (\ /.monad in expected)
                      (/.result expected_lux)
-                     (!expect (^multi (#try.Success actual)
+                     (!expect (^multi {#try.Success actual}
                                       (n.= expected actual)))))
         (_.cover [/.result']
                  (|> (\ /.monad in expected)
                      (/.result' expected_lux)
-                     (!expect (^multi (#try.Success [actual_lux actual])
+                     (!expect (^multi {#try.Success [actual_lux actual]}
                                       (and (same? expected_lux actual_lux)
                                            (n.= expected actual))))))
         (_.cover [/.compiler_state]
                  (|> /.compiler_state
                      (/.result expected_lux)
-                     (!expect (^multi (#try.Success actual_lux)
+                     (!expect (^multi {#try.Success actual_lux}
                                       (same? expected_lux actual_lux)))))
         )))
 
@@ -102,13 +102,13 @@
                                             #.mode    #.Build]
                          #.source          [location.dummy 0 source_code]
                          #.location         location.dummy
-                         #.current_module  (#.Some expected_current_module)
+                         #.current_module  {#.Some expected_current_module}
                          #.modules         (list)
                          #.scopes          (list)
                          #.type_context    [#.ex_counter 0
                                             #.var_counter 0
                                             #.var_bindings (list)]
-                         #.expected        (#.Some (#.Primitive primitive_type (list)))
+                         #.expected        {#.Some {#.Primitive primitive_type (list)}}
                          #.seed            expected_seed
                          #.scope_type_vars (list)
                          #.extensions      []
@@ -119,43 +119,43 @@
                  (|> (/.failure expected_error)
                      (: (Meta Any))
                      (/.result expected_lux)
-                     (!expect (^multi (#try.Failure actual_error)
+                     (!expect (^multi {#try.Failure actual_error}
                                       (text\= (location.with location.dummy expected_error)
                                               actual_error)))))
         (_.cover [/.assertion]
                  (and (|> (/.assertion expected_error true)
                           (: (Meta Any))
                           (/.result expected_lux)
-                          (!expect (#try.Success [])))
+                          (!expect {#try.Success []}))
                       (|> (/.assertion expected_error false)
                           (/.result expected_lux)
-                          (!expect (^multi (#try.Failure actual_error)
+                          (!expect (^multi {#try.Failure actual_error}
                                            (text\= expected_error actual_error))))))
         (_.cover [/.either]
                  (and (|> (/.either (\ /.monad in expected)
                                     (: (Meta Nat)
                                        (/.failure expected_error)))
                           (/.result expected_lux)
-                          (!expect (^multi (#try.Success actual)
+                          (!expect (^multi {#try.Success actual}
                                            (n.= expected actual))))
                       (|> (/.either (: (Meta Nat)
                                        (/.failure expected_error))
                                     (\ /.monad in expected))
                           (/.result expected_lux)
-                          (!expect (^multi (#try.Success actual)
+                          (!expect (^multi {#try.Success actual}
                                            (n.= expected actual))))
                       (|> (/.either (: (Meta Nat)
                                        (/.failure expected_error))
                                     (: (Meta Nat)
                                        (/.failure expected_error)))
                           (/.result expected_lux)
-                          (!expect (^multi (#try.Failure actual_error)
+                          (!expect (^multi {#try.Failure actual_error}
                                            (text\= (location.with location.dummy expected_error)
                                                    actual_error))))
                       (|> (/.either (\ /.monad in expected)
                                     (\ /.monad in dummy))
                           (/.result expected_lux)
-                          (!expect (^multi (#try.Success actual)
+                          (!expect (^multi {#try.Success actual}
                                            (n.= expected actual))))
                       ))
         )))
@@ -197,13 +197,13 @@
                                             #.mode    #.Build]
                          #.source          [location.dummy 0 source_code]
                          #.location         location.dummy
-                         #.current_module  (#.Some expected_current_module)
+                         #.current_module  {#.Some expected_current_module}
                          #.modules         expected_modules
                          #.scopes          (list)
                          #.type_context    [#.ex_counter 0
                                             #.var_counter 0
                                             #.var_bindings (list)]
-                         #.expected        (#.Some (#.Primitive primitive_type (list)))
+                         #.expected        {#.Some {#.Primitive primitive_type (list)}}
                          #.seed            expected_seed
                          #.scope_type_vars (list)
                          #.extensions      []
@@ -214,29 +214,29 @@
             (_.cover [/.current_module_name]
                      (|> /.current_module_name
                          (/.result expected_lux)
-                         (!expect (^multi (#try.Success actual_current_module)
+                         (!expect (^multi {#try.Success actual_current_module}
                                           (text\= expected_current_module actual_current_module)))))
             (_.cover [/.current_module]
                      (|> /.current_module
                          (/.result expected_lux)
-                         (!expect (^multi (#try.Success actual_module)
+                         (!expect (^multi {#try.Success actual_module}
                                           (same? expected_module actual_module)))))
             (_.cover [/.module]
                      (|> (/.module expected_current_module)
                          (/.result expected_lux)
-                         (!expect (^multi (#try.Success actual_module)
+                         (!expect (^multi {#try.Success actual_module}
                                           (same? expected_module actual_module)))))
             (_.cover [/.module_exists?]
                      (and (|> (/.module_exists? expected_current_module)
                               (/.result expected_lux)
-                              (!expect (#try.Success #1)))
+                              (!expect {#try.Success #1}))
                           (|> (/.module_exists? dummy_module)
                               (/.result expected_lux)
-                              (!expect (#try.Success #0)))))
+                              (!expect {#try.Success #0}))))
             (_.cover [/.modules]
                      (|> /.modules
                          (/.result expected_lux)
-                         (!expect (^multi (#try.Success actual_modules)
+                         (!expect (^multi {#try.Success actual_modules}
                                           (same? expected_modules actual_modules)))))
             (_.cover [/.imported_modules]
                      (and (|> (/.imported_modules expected_current_module)
@@ -260,12 +260,12 @@
             (_.cover [/.normal]
                      (and (|> (/.normal ["" expected_short])
                               (/.result expected_lux)
-                              (!expect (^multi (#try.Success [actual_module actual_short])
+                              (!expect (^multi {#try.Success [actual_module actual_short]}
                                                (and (text\= expected_current_module actual_module)
                                                     (same? expected_short actual_short)))))
                           (|> (/.normal [dummy_module expected_short])
                               (/.result expected_lux)
-                              (!expect (^multi (#try.Success [actual_module actual_short])
+                              (!expect (^multi {#try.Success [actual_module actual_short]}
                                                (and (text\= dummy_module actual_module)
                                                     (same? expected_short actual_short)))))))
             ))))
@@ -284,7 +284,7 @@
      source_code (random.ascii/upper 1)
      expected_current_module (random.ascii/upper 1)
      expected_type (\ ! each (function (_ name)
-                               (#.Primitive name (list)))
+                               {#.Primitive name (list)})
                       (random.ascii/upper 1))
      expected_seed random.nat
      expected random.nat
@@ -298,11 +298,11 @@
                                             #.mode    #.Build]
                          #.source          [location.dummy 0 source_code]
                          #.location         expected_location
-                         #.current_module  (#.Some expected_current_module)
+                         #.current_module  {#.Some expected_current_module}
                          #.modules         (list)
                          #.scopes          (list)
                          #.type_context    type_context
-                         #.expected        (#.Some expected_type)
+                         #.expected        {#.Some expected_type}
                          #.seed            expected_seed
                          #.scope_type_vars (list)
                          #.extensions      []
@@ -315,18 +315,18 @@
                         post /.seed]
                        (in [pre post]))
                      (/.result expected_lux)
-                     (!expect (^multi (#try.Success [actual_pre actual_post])
+                     (!expect (^multi {#try.Success [actual_pre actual_post]}
                                       (and (n.= expected_seed actual_pre)
                                            (n.= (++ expected_seed) actual_post))))))
         (_.cover [/.location]
                  (|> /.location
                      (/.result expected_lux)
-                     (!expect (^multi (#try.Success actual_location)
+                     (!expect (^multi {#try.Success actual_location}
                                       (same? expected_location actual_location)))))
         (_.cover [/.expected_type]
                  (|> /.expected_type
                      (/.result expected_lux)
-                     (!expect (^multi (#try.Success actual_type)
+                     (!expect (^multi {#try.Success actual_type}
                                       (same? expected_type actual_type)))))
         (_.cover [.Type_Context /.type_context]
                  (|> /.type_context
@@ -343,7 +343,7 @@
                                         (random.ascii/upper 1))
      expected_short (random.ascii/upper 1)
      expected_type (\ ! each (function (_ name)
-                               (#.Primitive name (list)))
+                               {#.Primitive name (list)})
                       (random.ascii/upper 1))
      expected_value (random.either (in .def:)
                                    (in .macro:))
@@ -355,12 +355,12 @@
               (function (_ exported? def_type)
                 (let [current_globals (: (List [Text .Global])
                                          (list [expected_short
-                                                (#.Alias [expected_macro_module expected_short])]))
+                                                {#.Alias [expected_macro_module expected_short]}]))
                       macro_globals (: (List [Text .Global])
                                        (case def_type
-                                         (#.Some def_type)
+                                         {#.Some def_type}
                                          (list [expected_short
-                                                (#.Definition [exported? def_type expected_value])])
+                                                {#.Definition [exported? def_type expected_value]}])
 
                                          #.None
                                          (list)))]
@@ -371,7 +371,7 @@
                                        #.mode    #.Build]
                     #.source          [location.dummy 0 ""]
                     #.location         location.dummy
-                    #.current_module  (#.Some expected_current_module)
+                    #.current_module  {#.Some expected_current_module}
                     #.modules         (list [expected_current_module
                                              [#.module_hash        0
                                               #.module_aliases     (list)
@@ -397,54 +397,54 @@
     ($_ _.and
         (_.cover [.Global .Alias /.globals]
                  (let [[current_globals macro_globals expected_lux]
-                       (expected_lux true (#.Some .Macro))
+                       (expected_lux true {#.Some .Macro})
 
                        current_globals!
                        (|> (/.globals expected_current_module)
                            (/.result expected_lux)
-                           (!expect (^multi (#try.Success actual_globals)
+                           (!expect (^multi {#try.Success actual_globals}
                                             (same? current_globals actual_globals))))
 
                        macro_globals!
                        (|> (/.globals expected_macro_module)
                            (/.result expected_lux)
-                           (!expect (^multi (#try.Success actual_globals)
+                           (!expect (^multi {#try.Success actual_globals}
                                             (same? macro_globals actual_globals))))]
                    (and current_globals!
                         macro_globals!)))
         (_.cover [.Definition /.definitions]
                  (let [[current_globals macro_globals expected_lux]
-                       (expected_lux true (#.Some .Macro))]
+                       (expected_lux true {#.Some .Macro})]
                    (and (|> (/.definitions expected_current_module)
                             (/.result expected_lux)
-                            (!expect (^multi (#try.Success actual_definitions)
+                            (!expect (^multi {#try.Success actual_definitions}
                                              (n.= 0 (list.size actual_definitions)))))
                         (|> (/.definitions expected_macro_module)
                             (/.result expected_lux)
-                            (!expect (^multi (#try.Success actual_definitions)
+                            (!expect (^multi {#try.Success actual_definitions}
                                              (n.= 1 (list.size actual_definitions)))))
                         )))
         (_.cover [/.exports]
                  (and (let [[current_globals macro_globals expected_lux]
-                            (expected_lux true (#.Some .Macro))]
+                            (expected_lux true {#.Some .Macro})]
                         (and (|> (/.exports expected_current_module)
                                  (/.result expected_lux)
-                                 (!expect (^multi (#try.Success actual_definitions)
+                                 (!expect (^multi {#try.Success actual_definitions}
                                                   (n.= 0 (list.size actual_definitions)))))
                              (|> (/.exports expected_macro_module)
                                  (/.result expected_lux)
-                                 (!expect (^multi (#try.Success actual_definitions)
+                                 (!expect (^multi {#try.Success actual_definitions}
                                                   (n.= 1 (list.size actual_definitions)))))
                              ))
                       (let [[current_globals macro_globals expected_lux]
-                            (expected_lux false (#.Some .Macro))]
+                            (expected_lux false {#.Some .Macro})]
                         (and (|> (/.exports expected_current_module)
                                  (/.result expected_lux)
-                                 (!expect (^multi (#try.Success actual_definitions)
+                                 (!expect (^multi {#try.Success actual_definitions}
                                                   (n.= 0 (list.size actual_definitions)))))
                              (|> (/.exports expected_macro_module)
                                  (/.result expected_lux)
-                                 (!expect (^multi (#try.Success actual_definitions)
+                                 (!expect (^multi {#try.Success actual_definitions}
                                                   (n.= 0 (list.size actual_definitions)))))
                              ))))
         )))
@@ -458,7 +458,7 @@
                                         (random.ascii/upper 1))
      expected_short (random.ascii/upper 1)
      expected_type (\ ! each (function (_ name)
-                               (#.Primitive name (list)))
+                               {#.Primitive name (list)})
                       (random.ascii/upper 1))
      expected_value (random.either (in .def:)
                                    (in .macro:))
@@ -470,12 +470,12 @@
               (function (_ exported? def_type)
                 (let [current_globals (: (List [Text .Global])
                                          (list [expected_short
-                                                (#.Alias [expected_macro_module expected_short])]))
+                                                {#.Alias [expected_macro_module expected_short]}]))
                       macro_globals (: (List [Text .Global])
                                        (case def_type
-                                         (#.Some def_type)
+                                         {#.Some def_type}
                                          (list [expected_short
-                                                (#.Definition [exported? def_type expected_value])])
+                                                {#.Definition [exported? def_type expected_value]}])
 
                                          #.None
                                          (list)))]
@@ -486,7 +486,7 @@
                                        #.mode    #.Build]
                     #.source          [location.dummy 0 ""]
                     #.location         location.dummy
-                    #.current_module  (#.Some expected_current_module)
+                    #.current_module  {#.Some expected_current_module}
                     #.modules         (list [expected_current_module
                                              [#.module_hash        0
                                               #.module_aliases     (list)
@@ -512,44 +512,44 @@
     ($_ _.and
         (_.cover [/.export]
                  (and (let [[current_globals macro_globals expected_lux]
-                            (expected_lux true (#.Some expected_type))]
+                            (expected_lux true {#.Some expected_type})]
                         (|> (/.export [expected_macro_module expected_short])
                             (/.result expected_lux)
-                            (!expect (#try.Success _))))
+                            (!expect {#try.Success _})))
                       (let [[current_globals macro_globals expected_lux]
-                            (expected_lux false (#.Some expected_type))]
+                            (expected_lux false {#.Some expected_type})]
                         (|> (/.export [expected_macro_module expected_short])
                             (/.result expected_lux)
-                            (!expect (#try.Failure _))))))
+                            (!expect {#try.Failure _})))))
         (_.cover [/.macro]
                  (let [same_module!
                        (let [[current_globals macro_globals expected_lux]
-                             (expected_lux true (#.Some .Macro))]
+                             (expected_lux true {#.Some .Macro})]
                          (|> (/.macro [expected_macro_module expected_short])
                              (/.result expected_lux)
-                             (!expect (^multi (#try.Success (#.Some actual_value))
+                             (!expect (^multi {#try.Success {#.Some actual_value}}
                                               (same? expected_value actual_value)))))
 
                        not_macro!
                        (let [[current_globals macro_globals expected_lux]
-                             (expected_lux true (#.Some expected_type))]
+                             (expected_lux true {#.Some expected_type})]
                          (|> (/.macro [expected_macro_module expected_short])
                              (/.result expected_lux)
-                             (!expect (#try.Success #.None))))
+                             (!expect {#try.Success #.None})))
 
                        not_found!
                        (let [[current_globals macro_globals expected_lux]
                              (expected_lux true #.None)]
                          (|> (/.macro [expected_macro_module expected_short])
                              (/.result expected_lux)
-                             (!expect (#try.Success #.None))))
+                             (!expect {#try.Success #.None})))
 
                        aliasing!
                        (let [[current_globals macro_globals expected_lux]
-                             (expected_lux true (#.Some .Macro))]
+                             (expected_lux true {#.Some .Macro})]
                          (|> (/.macro [expected_current_module expected_short])
                              (/.result expected_lux)
-                             (!expect (^multi (#try.Success (#.Some actual_value))
+                             (!expect (^multi {#try.Success {#.Some actual_value}}
                                               (same? expected_value actual_value)))))]
                    (and same_module!
                         not_macro!
@@ -557,7 +557,7 @@
                         aliasing!)))
         (_.cover [/.de_aliased]
                  (let [[current_globals macro_globals expected_lux]
-                       (expected_lux true (#.Some .Macro))]
+                       (expected_lux true {#.Some .Macro})]
                    (and (|> (/.de_aliased [expected_macro_module expected_short])
                             (/.result expected_lux)
                             (try\each (name\= [expected_macro_module expected_short]))
@@ -568,12 +568,12 @@
                             (try.else false)))))
         (_.cover [/.definition]
                  (let [[current_globals macro_globals expected_lux]
-                       (expected_lux expected_exported? (#.Some expected_type))
+                       (expected_lux expected_exported? {#.Some expected_type})
 
                        definition!
                        (|> (/.definition [expected_macro_module expected_short])
                            (/.result expected_lux)
-                           (!expect (^multi (#try.Success (#.Definition [actual_exported? actual_type actual_value]))
+                           (!expect (^multi {#try.Success {#.Definition [actual_exported? actual_type actual_value]}}
                                             (and (bit\= expected_exported? actual_exported?)
                                                  (same? expected_type actual_type)
                                                  (same? (:as Any expected_value) actual_value)))))
@@ -581,42 +581,42 @@
                        alias!
                        (|> (/.definition [expected_current_module expected_short])
                            (/.result expected_lux)
-                           (!expect (^multi (#try.Success (#.Alias [actual_module actual_short]))
+                           (!expect (^multi {#try.Success {#.Alias [actual_module actual_short]}}
                                             (and (same? expected_macro_module actual_module)
                                                  (same? expected_short actual_short)))))]
                    (and definition!
                         alias!)))
         (_.cover [/.definition_type]
                  (let [[current_globals macro_globals expected_lux]
-                       (expected_lux expected_exported? (#.Some expected_type))
+                       (expected_lux expected_exported? {#.Some expected_type})
 
                        definition!
                        (|> (/.definition_type [expected_macro_module expected_short])
                            (/.result expected_lux)
-                           (!expect (^multi (#try.Success actual_type)
+                           (!expect (^multi {#try.Success actual_type}
                                             (same? expected_type actual_type))))
 
                        alias!
                        (|> (/.definition_type [expected_current_module expected_short])
                            (/.result expected_lux)
-                           (!expect (^multi (#try.Success actual_type)
+                           (!expect (^multi {#try.Success actual_type}
                                             (same? expected_type actual_type))))]
                    (and definition!
                         alias!)))
         (_.cover [/.type_definition]
                  (let [[current_globals macro_globals expected_lux]
-                       (expected_lux expected_exported? (#.Some .Type))
+                       (expected_lux expected_exported? {#.Some .Type})
 
                        definition!
                        (|> (/.type_definition [expected_macro_module expected_short])
                            (/.result expected_lux)
-                           (!expect (^multi (#try.Success actual_value)
+                           (!expect (^multi {#try.Success actual_value}
                                             (same? (:as .Type expected_value) actual_value))))
 
                        alias!
                        (|> (/.type_definition [expected_current_module expected_short])
                            (/.result expected_lux)
-                           (!expect (^multi (#try.Success actual_value)
+                           (!expect (^multi {#try.Success actual_value}
                                             (same? (:as .Type expected_value) actual_value))))]
                    (and definition!
                         alias!)))
@@ -644,11 +644,11 @@
                                   (\ ! each set.list)
                                   (random.and (in head)))))]
      tags_0 random_labels
-     tags_1 (let [set/0 (set.of_list text.hash (#.Item tags_0))]
+     tags_1 (let [set/0 (set.of_list text.hash {#.Item tags_0})]
               (random.only (|>> #.Item (list.any? (set.member? set/0))not)
                            random_labels))
-     .let [type_0 (#.Primitive name_0 (list))
-           type_1 (#.Primitive name_1 (list))
+     .let [type_0 {#.Primitive name_0 (list)}
+           type_1 {#.Primitive name_1 (list)}
            
            expected_lux
            (: Lux
@@ -657,7 +657,7 @@
                                   #.mode    #.Build]
                #.source          [location.dummy 0 ""]
                #.location        location.dummy
-               #.current_module  (#.Some current_module)
+               #.current_module  {#.Some current_module}
                #.modules         (list [current_module
                                         [#.module_hash        0
                                          #.module_aliases     (list)
@@ -667,17 +667,17 @@
                                        [tag_module
                                         [#.module_hash        0
                                          #.module_aliases     (list)
-                                         #.definitions        (list& [name_0 (#.Type [false type_0 (#.Left tags_0)])]
-                                                                     [name_1 (#.Type [true type_1 (#.Right tags_1)])]
+                                         #.definitions        (list& [name_0 {#.Type [false type_0 {#.Left tags_0}]}]
+                                                                     [name_1 {#.Type [true type_1 {#.Right tags_1}]}]
                                                                      ($_ list\composite
-                                                                         (|> (#.Item tags_0)
+                                                                         (|> {#.Item tags_0}
                                                                              list.enumeration
                                                                              (list\each (function (_ [index short])
-                                                                                          [(format "#" short) (#.Label [false type_0 (#.Item tags_0) index])])))
-                                                                         (|> (#.Item tags_1)
+                                                                                          [(format "#" short) {#.Label [false type_0 {#.Item tags_0} index]}])))
+                                                                         (|> {#.Item tags_1}
                                                                              list.enumeration
                                                                              (list\each (function (_ [index short])
-                                                                                          [(format "#" short) (#.Slot [true type_1 (#.Item tags_1) index])])))))
+                                                                                          [(format "#" short) {#.Slot [true type_1 {#.Item tags_1} index]}])))))
                                          #.imports            (list)
                                          #.module_state       #.Active]])
                #.scopes          (list)
@@ -698,29 +698,29 @@
                                      type.equivalence))]
                    (|> (/.tag_lists tag_module)
                        (/.result expected_lux)
-                       (try\each (\ equivalence = (list [(list\each (|>> [tag_module]) (#.Item tags_1))
+                       (try\each (\ equivalence = (list [(list\each (|>> [tag_module]) {#.Item tags_1})
                                                          type_1])))
                        (try.else false))))
         (_.cover [/.tags_of]
                  (|> (/.tags_of [tag_module name_1])
                      (/.result expected_lux)
-                     (try\each (\ (maybe.equivalence (list.equivalence name.equivalence)) = (#.Some (list\each (|>> [tag_module]) (#.Item tags_1)))))
+                     (try\each (\ (maybe.equivalence (list.equivalence name.equivalence)) = {#.Some (list\each (|>> [tag_module]) {#.Item tags_1})}))
                      (try.else false)))
         (_.cover [/.slot]
-                 (|> (#.Item tags_1)
+                 (|> {#.Item tags_1}
                      list.enumeration
                      (list.every? (function (_ [expected_index tag])
                                     (|> [tag_module tag]
                                         /.slot
                                         (/.result expected_lux)
-                                        (!expect (^multi (#try.Success [actual_index actual_tags actual_type])
+                                        (!expect (^multi {#try.Success [actual_index actual_tags actual_type]}
                                                          (let [correct_index!
                                                                (n.= expected_index
                                                                     actual_index)
 
                                                                correct_tags!
                                                                (\ (list.equivalence name.equivalence) =
-                                                                  (list\each (|>> [tag_module]) (#.Item tags_1))
+                                                                  (list\each (|>> [tag_module]) {#.Item tags_1})
                                                                   actual_tags)
 
                                                                correct_type!
@@ -742,19 +742,19 @@
                                               (random.one (function (_ values)
                                                             (case values
                                                               (^ (list name_0 name_1 name_2 name_3 name_4))
-                                                              (#.Some [name_0 name_1 name_2 name_3 name_4])
+                                                              {#.Some [name_0 name_1 name_2 name_3 name_4]}
 
                                                               _
                                                               #.None))))
-     .let [type_0 (#.Primitive name_0 (list))
-           type_1 (#.Primitive name_1 (list))
-           type_2 (#.Primitive name_2 (list))
-           type_3 (#.Primitive name_3 (list))
-           type_4 (#.Primitive name_4 (list))
+     .let [type_0 {#.Primitive name_0 (list)}
+           type_1 {#.Primitive name_1 (list)}
+           type_2 {#.Primitive name_2 (list)}
+           type_3 {#.Primitive name_3 (list)}
+           type_4 {#.Primitive name_4 (list)}
 
            globals (: (List [Text .Global])
                       (list [name_4
-                             (#.Definition [false type_4 []])]))
+                             {#.Definition [false type_4 []]}]))
 
            scopes (list [#.name     (list)
                          #.inner    0
@@ -782,7 +782,7 @@
                                   #.mode    #.Build]
                #.source          [location.dummy 0 ""]
                #.location        location.dummy
-               #.current_module  (#.Some current_module)
+               #.current_module  {#.Some current_module}
                #.modules         (list [current_module
                                         [#.module_hash        0
                                          #.module_aliases     (list)
@@ -866,7 +866,7 @@
   (function (_ == left right)
     (case [(/.result init left)
            (/.result init right)]
-      [(#try.Success left) (#try.Success right)]
+      [{#try.Success left} {#try.Success right}]
       (== left right)
       
       _
@@ -883,7 +883,7 @@
              source_code (random.ascii/upper 1)
              expected_current_module (random.ascii/upper 1)
              expected_type (\ ! each (function (_ name)
-                                       (#.Primitive name (list)))
+                                       {#.Primitive name (list)})
                               (random.ascii/upper 1))
              expected_seed random.nat
              expected random.nat
@@ -894,13 +894,13 @@
                                                     #.mode    #.Build]
                                  #.source          [expected_location 0 source_code]
                                  #.location         expected_location
-                                 #.current_module  (#.Some expected_current_module)
+                                 #.current_module  {#.Some expected_current_module}
                                  #.modules         (list)
                                  #.scopes          (list)
                                  #.type_context    [#.ex_counter 0
                                                     #.var_counter 0
                                                     #.var_bindings (list)]
-                                 #.expected        (#.Some expected_type)
+                                 #.expected        {#.Some expected_type}
                                  #.seed            expected_seed
                                  #.scope_type_vars (list)
                                  #.extensions      []
@@ -923,7 +923,7 @@
                                     (: (Try Nat))
                                     /.lifted
                                     (/.result expected_lux)
-                                    (!expect (^multi (#try.Failure actual)
+                                    (!expect (^multi {#try.Failure actual}
                                                      (text\= (location.with expected_location expected_error)
                                                              actual))))
                                 (|> expected_value
@@ -931,7 +931,7 @@
                                     (: (Try Nat))
                                     /.lifted
                                     (/.result expected_lux)
-                                    (!expect (^multi (#try.Success actual)
+                                    (!expect (^multi {#try.Success actual}
                                                      (same? expected_value actual)))))))
                 
                 ..compiler_related
diff --git a/stdlib/source/test/lux/program.lux b/stdlib/source/test/lux/program.lux
index 6dc3667c2..18bc932e8 100644
--- a/stdlib/source/test/lux/program.lux
+++ b/stdlib/source/test/lux/program.lux
@@ -66,8 +66,8 @@
                           (case (try ((: (-> (List Text) (io.IO Any))
                                          (..actual_program ))
                                       inputs))
-                            (#try.Success _)
+                            {#try.Success _}
                             false
                             
-                            (#try.Failure _)
+                            {#try.Failure _}
                             true))))))))
diff --git a/stdlib/source/test/lux/static.lux b/stdlib/source/test/lux/static.lux
index 048d0511b..d603b4d85 100644
--- a/stdlib/source/test/lux/static.lux
+++ b/stdlib/source/test/lux/static.lux
@@ -31,7 +31,7 @@
                                                              ()
                                                              ( (<+>  ))]
                                             (case (' )
-                                              [_ ( l+r)]
+                                              [_ { l+r}]
                                               (<=> l+r (<+>  ))
 
                                               _
@@ -46,7 +46,7 @@
                                                       (/.random_frac)
                                                       (/.frac (f.+  ))]
                                      (case (' )
-                                       [_ (#.Frac l+r)]
+                                       [_ {#.Frac l+r}]
                                        (or (f.= l+r (f.+  ))
                                            (and (f.not_a_number? l+r)
                                                 (f.not_a_number? (f.+  ))
@@ -60,7 +60,7 @@
                                                       (/.random code.text (random.ascii/alpha_num 1))
                                                       (/.text (format  ))]
                                      (case (' )
-                                       [_ (#.Text l+r)]
+                                       [_ {#.Text l+r}]
                                        (text\= l+r (format  ))
 
                                        _
@@ -70,7 +70,7 @@
                                                       (/.random code.text (random.ascii/alpha_num 1))
                                                       (/.literal code.text (format  ))]
                                      (case (' )
-                                       [_ (#.Text l+r)]
+                                       [_ {#.Text l+r}]
                                        (text\= l+r (format  ))
 
                                        _
diff --git a/stdlib/source/test/lux/target/jvm.lux b/stdlib/source/test/lux/target/jvm.lux
index 9fa008544..0d17df0ff 100644
--- a/stdlib/source/test/lux/target/jvm.lux
+++ b/stdlib/source/test/lux/target/jvm.lux
@@ -117,9 +117,9 @@
                                                            method_name
                                                            (/type.method [(list) (list) ..$Object (list)])
                                                            (list)
-                                                           (#.Some (do /.monad
+                                                           {#.Some (do /.monad
                                                                      [_ bytecode]
-                                                                     /.areturn))))
+                                                                     /.areturn)}))
                                      (row.row))
                  .let [bytecode (format.result /class.writer class)
                        loader (/loader.memory (/loader.new_library []))]
@@ -127,10 +127,10 @@
                  class (io.run! (/loader.load class_name loader))
                  method (try (get_method method_name class))]
                 (java/lang/reflect/Method::invoke (ffi.null) (ffi.array java/lang/Object 0) method))
-          (#try.Success actual)
+          {#try.Success actual}
           (test actual)
           
-          (#try.Failure error)
+          {#try.Failure error}
           false))))
 
 (type: (Primitive a)
@@ -861,7 +861,7 @@
                                                             constructor
                                                             constructor::type
                                                             (list)
-                                                            (#.Some (do /.monad
+                                                            {#.Some (do /.monad
                                                                       [_ /.aload_0
                                                                        _ (/.invokespecial ..$Object constructor (/type.method [(list) (list) /type.void (list)]))
                                                                        _ (..$Long::literal part0)
@@ -869,14 +869,14 @@
                                                                        _ /.aload_0
                                                                        _ /.lload_1
                                                                        _ (/.putfield $Self object_field /type.long)]
-                                                                      /.return)))
+                                                                      /.return)})
                                             (/method.method ($_ /modifier\composite
                                                                 /method.public
                                                                 /method.static)
                                                             static_method
                                                             (/type.method [(list) (list) ..$Long (list)])
                                                             (list)
-                                                            (#.Some (do /.monad
+                                                            {#.Some (do /.monad
                                                                       [_ (/.new $Self)
                                                                        _ /.dup
                                                                        _ (..$Long::literal part1)
@@ -885,7 +885,7 @@
                                                                        _ (/.getstatic $Self class_field /type.long)
                                                                        _ /.ladd
                                                                        _ ..$Long::wrap]
-                                                                      /.areturn))))
+                                                                      /.areturn)}))
                                       (row.row))
                         try.trusted
                         (format.result /class.writer))
@@ -897,10 +897,10 @@
                      method (try (get_method static_method class))
                      output (java/lang/reflect/Method::invoke (ffi.null) (ffi.array java/lang/Object 0) method)]
                     (in (:as Int output)))
-              (#try.Success actual)
+              {#try.Success actual}
               (i.= (:as Int expected) (:as Int actual))
 
-              (#try.Failure error)
+              {#try.Failure error}
               false))))
 
 (def: array
@@ -1031,7 +1031,7 @@
                   (..bytecode (|>> (:as Nat) (n.= sizesH)))
                   (do [! /.monad]
                     [_ (monad.each ! (|>> (:as java/lang/Long) ffi.long_to_int ..$Integer::literal)
-                                   (#.Item sizesH sizesT))
+                                   {#.Item sizesH sizesT})
                      _ (/.multianewarray type (|> dimensions /unsigned.u1 try.trusted))
                      _ ?length]
                     $Long::wrap))))
@@ -1337,23 +1337,23 @@
                                                                                        primitive_method_name
                                                                                        primitive_method_type
                                                                                        (list)
-                                                                                       (#.Some (do /.monad
+                                                                                       {#.Some (do /.monad
                                                                                                  [_ ((value@ #literal primitive) expected)]
-                                                                                                 return)))
+                                                                                                 return)})
                                                                        (/method.method ..method_modifier
                                                                                        object_method_name
                                                                                        (/type.method [(list) (list) (value@ #boxed primitive) (list)])
                                                                                        (list)
-                                                                                       (#.Some (do /.monad
+                                                                                       {#.Some (do /.monad
                                                                                                  [_ (/.invokestatic $Self primitive_method_name primitive_method_type)
                                                                                                   _ (case substitute
                                                                                                       #.None
                                                                                                       (in [])
 
-                                                                                                      (#.Some substitute)
+                                                                                                      {#.Some substitute}
                                                                                                       (substitute expected))
                                                                                                   _ (value@ #wrap primitive)]
-                                                                                                 /.areturn))))
+                                                                                                 /.areturn)}))
                                                                  (row.row))
                                              .let [bytecode (format.result /class.writer class)
                                                    loader (/loader.memory (/loader.new_library []))]
@@ -1361,10 +1361,10 @@
                                              class (io.run! (/loader.load class_name loader))
                                              method (try (get_method object_method_name class))]
                                             (java/lang/reflect/Method::invoke (ffi.null) (ffi.array java/lang/Object 0) method))
-                                      (#try.Success actual)
+                                      {#try.Success actual}
                                       (test expected actual)
 
-                                      (#try.Failure error)
+                                      {#try.Failure error}
                                       false)
                                     ))))]
     ($_ _.and
@@ -1380,7 +1380,7 @@
                                                  #random ..$String::random
                                                  #literal (function.constant /.nop)])
                                              /.return
-                                             (#.Some ..$String::literal)
+                                             {#.Some ..$String::literal}
                                              (function (_ expected actual) (text\= (:as Text expected) (:as Text actual)))))
         )))
 
@@ -1623,9 +1623,9 @@
                                        name
                                        method::type
                                        (list)
-                                       (#.Some (do /.monad
+                                       {#.Some (do /.monad
                                                  [_ (..$Long::literal value)]
-                                                 /.lreturn)))))
+                                                 /.lreturn)})))
 
            interface_bytecode (|> (/class.class /version.v6_0 ($_ /modifier\composite /class.public /class.abstract /class.interface)
                                                 (/name.internal interface_class)
@@ -1646,10 +1646,10 @@
                                                                      ""
                                                                      constructor::type
                                                                      (list)
-                                                                     (#.Some (do /.monad
+                                                                     {#.Some (do /.monad
                                                                                [_ /.aload_0
                                                                                 _ (/.invokespecial ..$Object "" constructor::type)]
-                                                                               /.return)))
+                                                                               /.return)})
                                                      (method inherited_method part0)
                                                      (method overriden_method fake_part2)
                                                      (/method.method ($_ /modifier\composite /method.public /method.abstract)
@@ -1671,10 +1671,10 @@
                                                                      ""
                                                                      constructor::type
                                                                      (list)
-                                                                     (#.Some (do /.monad
+                                                                     {#.Some (do /.monad
                                                                                [_ /.aload_0
                                                                                 _ (/.invokespecial $Abstract "" constructor::type)]
-                                                                               /.return)))
+                                                                               /.return)})
                                                      (method virtual_method part1)
                                                      (method overriden_method part2)
                                                      (method abstract_method part3)
@@ -1685,7 +1685,7 @@
                                                                      static_method
                                                                      (/type.method [(list) (list) ..$Long (list)])
                                                                      (list)
-                                                                     (#.Some (do /.monad
+                                                                     {#.Some (do /.monad
                                                                                [_ (/.new $Concrete)
                                                                                 _ /.dup
                                                                                 _ (/.invokespecial $Concrete "" constructor::type)
@@ -1700,7 +1700,7 @@
                                                                                 _ (invoke $Abstract abstract_method)
                                                                                 _ /.ladd
                                                                                 _ ..$Long::wrap]
-                                                                               /.areturn))))
+                                                                               /.areturn)}))
                                                (row.row))
                                  try.trusted
                                  (format.result /class.writer))
@@ -1714,10 +1714,10 @@
                      method (try (get_method static_method class))
                      output (java/lang/reflect/Method::invoke (ffi.null) (ffi.array java/lang/Object 0) method)]
                     (in (:as Int output)))
-              (#try.Success actual)
+              {#try.Success actual}
               (i.= (:as Int expected) (:as Int actual))
 
-              (#try.Failure error)
+              {#try.Failure error}
               false))))
 
 (def: .public test
diff --git a/stdlib/source/test/lux/time.lux b/stdlib/source/test/lux/time.lux
index 178818c3e..32bb9d67c 100644
--- a/stdlib/source/test/lux/time.lux
+++ b/stdlib/source/test/lux/time.lux
@@ -76,8 +76,8 @@
                                       (text.prefix )
                                       (text.suffix )
                                       (\ /.codec decoded)
-                                      (case> (#try.Success _) true
-                                             (#try.Failure error) false))
+                                      (case> {#try.Success _} true
+                                             {#try.Failure error} false))
                                   
                                   invalid!
                                   (|> 
@@ -85,10 +85,10 @@
                                       (text.prefix )
                                       (text.suffix )
                                       (\ /.codec decoded)
-                                      (case> (#try.Success _)
+                                      (case> {#try.Success _}
                                              false
                                              
-                                             (#try.Failure error)
+                                             {#try.Failure error}
                                              (exception.match?  error)))]
                               (and valid!
                                    invalid!)))]
@@ -102,8 +102,8 @@
                          %.nat
                          (format "00:00:00.")
                          (\ /.codec decoded)
-                         (case> (#try.Success _) true
-                                (#try.Failure error) false)))
+                         (case> {#try.Success _} true
+                                {#try.Failure error} false)))
             ))))
 
 (def: .public test
@@ -127,10 +127,10 @@
                              (try.else false)))
                 (_.cover [/.time_exceeds_a_day]
                          (case (/.of_millis out_of_bounds)
-                           (#try.Success _)
+                           {#try.Success _}
                            false
                            
-                           (#try.Failure error)
+                           {#try.Failure error}
                            (exception.match? /.time_exceeds_a_day error)))
                 (_.cover [/.midnight]
                          (|> /.midnight
diff --git a/stdlib/source/test/lux/time/date.lux b/stdlib/source/test/lux/time/date.lux
index 5862b2ea5..24d18c5b9 100644
--- a/stdlib/source/test/lux/time/date.lux
+++ b/stdlib/source/test/lux/time/date.lux
@@ -53,10 +53,10 @@
                      (case (/.date (/.year expected)
                                    (/.month expected)
                                    (n.+ 31 (/.day_of_month expected)))
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.invalid_day error)
                        
-                       (#try.Success _)
+                       {#try.Success _}
                        false)))
           (do random.monad
             [expected random.date]
@@ -88,9 +88,9 @@
                                  "-" (%.nat day))]]
             (_.cover [/.invalid_month]
                      (case (.result /.parser input)
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.invalid_month error)
                        
-                       (#try.Success _)
+                       {#try.Success _}
                        false)))
           )))
diff --git a/stdlib/source/test/lux/time/day.lux b/stdlib/source/test/lux/time/day.lux
index f1bcc932d..04d267d79 100644
--- a/stdlib/source/test/lux/time/day.lux
+++ b/stdlib/source/test/lux/time/day.lux
@@ -60,10 +60,10 @@
               [not_a_day (random.ascii/upper 1)]
               (_.cover [/.not_a_day_of_the_week]
                        (case (\ /.codec decoded not_a_day)
-                         (#try.Failure error)
+                         {#try.Failure error}
                          (exception.match? /.not_a_day_of_the_week error)
                          
-                         (#try.Success _)
+                         {#try.Success _}
                          false)))
             (_.cover [/.number /.by_number]
                      (|> expected
@@ -73,10 +73,10 @@
                          (try.else false)))
             (_.cover [/.invalid_day]
                      (case (/.by_number invalid)
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.invalid_day error)
                        
-                       (#try.Success _)
+                       {#try.Success _}
                        false))
             (_.cover [/.week]
                      (let [all (list.size /.week)
diff --git a/stdlib/source/test/lux/time/instant.lux b/stdlib/source/test/lux/time/instant.lux
index f25348f9a..57050174e 100644
--- a/stdlib/source/test/lux/time/instant.lux
+++ b/stdlib/source/test/lux/time/instant.lux
@@ -98,9 +98,9 @@
                             (apply duration.inverse day\pred 7)))))
           (_.cover [/.now]
                    (case (try (io.run! /.now))
-                     (#try.Success _)
+                     {#try.Success _}
                      true
                      
-                     (#try.Failure _)
+                     {#try.Failure _}
                      false))
           )))
diff --git a/stdlib/source/test/lux/time/month.lux b/stdlib/source/test/lux/time/month.lux
index 7e4ad8433..4db1303b3 100644
--- a/stdlib/source/test/lux/time/month.lux
+++ b/stdlib/source/test/lux/time/month.lux
@@ -64,10 +64,10 @@
                              (try.else false)))
                 (_.cover [/.invalid_month]
                          (case (/.by_number invalid)
-                           (#try.Failure error)
+                           {#try.Failure error}
                            (exception.match? /.invalid_month error)
                            
-                           (#try.Success _)
+                           {#try.Success _}
                            false))
                 (_.cover [/.year]
                          (let [all (list.size /.year)
@@ -92,9 +92,9 @@
                   [not_a_month (random.ascii/upper 1)]
                   (_.cover [/.not_a_month_of_the_year]
                            (case (\ /.codec decoded not_a_month)
-                             (#try.Failure error)
+                             {#try.Failure error}
                              (exception.match? /.not_a_month_of_the_year error)
                              
-                             (#try.Success _)
+                             {#try.Success _}
                              false)))
                 )))))
diff --git a/stdlib/source/test/lux/time/year.lux b/stdlib/source/test/lux/time/year.lux
index 121d74822..1d949bf44 100644
--- a/stdlib/source/test/lux/time/year.lux
+++ b/stdlib/source/test/lux/time/year.lux
@@ -49,25 +49,25 @@
                 (_.cover [/.year]
                          (bit\= (i.= +0 expected)
                                 (case (/.year expected)
-                                  (#try.Success _)
+                                  {#try.Success _}
                                   false
 
-                                  (#try.Failure _)
+                                  {#try.Failure _}
                                   true)))
                 (_.cover [/.value]
                          (case (/.year expected)
-                           (#try.Success year)
+                           {#try.Success year}
                            (i.= expected (/.value year))
 
-                           (#try.Failure _)
+                           {#try.Failure _}
                            (i.= +0 expected)))
                 ))
           (_.cover [/.there_is_no_year_0]
                    (case (/.year +0)
-                     (#try.Success _)
+                     {#try.Success _}
                      false
 
-                     (#try.Failure error)
+                     {#try.Failure error}
                      (exception.match? /.there_is_no_year_0 error)))
           (_.cover [/.days]
                    (n.= (.nat (//duration.ticks //duration.day //duration.normal_year))
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 4f87450ba..c152bb5c2 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
@@ -44,28 +44,28 @@
     #.End
     #.End
 
-    (#.Item head+ #.End)
+    {#.Item head+ #.End}
     (list\each (|>> list) head+)
 
-    (#.Item head+ tail++)
+    {#.Item head+ tail++}
     (do list.monad
       [tail+ (exhaustive_weaving tail++)
        head head+]
-      (in (#.Item head tail+)))))
+      (in {#.Item head tail+}))))
 
 (def: .public (exhaustive_branches allow_literals? variantTC inputC)
   (-> Bit (List [Code Code]) Code (Random (List Code)))
   (case inputC
-    [_ (#.Bit _)]
+    [_ {#.Bit _}]
     (r\in (list (' #0) (' #1)))
 
     (^template [  ]
-      [[_ ( _)]
+      [[_ { _}]
        (if allow_literals?
          (do [! r.monad]
            [?sample (r.maybe )]
            (case ?sample
-             (#.Some sample)
+             {#.Some sample}
              (do !
                [else (exhaustive_branches allow_literals? variantTC inputC)]
                (in (list& ( sample) else)))
@@ -79,20 +79,20 @@
      [#.Frac r.frac        code.frac]
      [#.Text (r.unicode 5) code.text])
     
-    (^ [_ (#.Tuple (list))])
+    (^ [_ {#.Tuple (list)}])
     (r\in (list (' [])))
 
-    [_ (#.Tuple members)]
+    [_ {#.Tuple members}]
     (do [! r.monad]
       [member_wise_patterns (monad.each ! (exhaustive_branches allow_literals? variantTC) members)]
       (in (|> member_wise_patterns
               exhaustive_weaving
               (list\each code.tuple))))
 
-    (^ [_ (#.Record (list))])
+    (^ [_ {#.Record (list)}])
     (r\in (list (' {})))
 
-    [_ (#.Record kvs)]
+    [_ {#.Record kvs}]
     (do [! r.monad]
       [.let [ks (list\each product.left kvs)
              vs (list\each product.right kvs)]
@@ -101,7 +101,7 @@
               exhaustive_weaving
               (list\each (|>> (list.zipped/2 ks) code.record)))))
 
-    (^ [_ (#.Form (list [_ (#.Tag _)] _))])
+    (^ [_ {#.Form (list [_ {#.Tag _}] _)}])
     (do [! r.monad]
       [bundles (monad.each !
                            (function (_ [_tag _code])
@@ -163,11 +163,11 @@
                                 ////analysis.with_scope
                                 (do phase.monad
                                   [_ (//module.declare_tags variant_tags false
-                                                            (#.Named [module_name variant_name]
-                                                                     (type.variant primitivesT)))
+                                                            {#.Named [module_name variant_name]
+                                                             (type.variant primitivesT)})
                                    _ (//module.declare_tags record_tags false
-                                                            (#.Named [module_name record_name]
-                                                                     (type.tuple primitivesT)))])
+                                                            {#.Named [module_name record_name]
+                                                             (type.tuple primitivesT)})])
                                 (//module.with_module 0 module_name)))]
          exhaustive_patterns (exhaustive_branches true variantTC inputC)
          .let [exhaustive_branchesC (list\each (branch outputC)
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 afd5276d4..73ef650e6 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
@@ -43,11 +43,11 @@
   (|> analysis
       (//type.with_type expectedT)
       (phase.result _primitive.state)
-      (case> (#try.Success applyA)
+      (case> {#try.Success applyA}
              (let [[funcA argsA] (////analysis.application applyA)]
                (n.= num_args (list.size argsA)))
 
-             (#try.Failure _)
+             {#try.Failure _}
              false)))
 
 (def: abstraction
@@ -90,7 +90,7 @@
      [outputT outputC] _primitive.primitive
      .let [funcT (type.function inputsT outputT)
            partialT (type.function (list.after partial_args inputsT) outputT)
-           varT (#.Parameter 1)
+           varT {#.Parameter 1}
            polyT (<| (type.univ_q 1)
                      (type.function (list.together (list (list.first var_idx inputsT)
                                                          (list varT)
@@ -101,9 +101,9 @@
            partial_polyT1 (<| (type.function partial_poly_inputsT)
                               poly_inputT)
            partial_polyT2 (<| (type.univ_q 1)
-                              (type.function (#.Item varT partial_poly_inputsT))
+                              (type.function {#.Item varT partial_poly_inputsT})
                               varT)
-           dummy_function (#////analysis.Function (list) (#////analysis.Reference (////reference.local 1)))]]
+           dummy_function {#////analysis.Function (list) {#////analysis.Reference (////reference.local 1)}}]]
     (<| (_.context (%.name (name_of /.apply)))
         ($_ _.and
             (_.test "Can analyse monomorphic type application."
diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/primitive.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/primitive.lux
index d3ef99670..1ca30c317 100644
--- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/primitive.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/primitive.lux
@@ -34,12 +34,12 @@
 
 (def: .public (expander macro inputs state)
   Expander
-  (#try.Failure "NOPE"))
+  {#try.Failure "NOPE"})
 
 (def: .public (eval archive count type expression)
   Eval
   (function (_ state)
-    (#try.Failure "NO!")))
+    {#try.Failure "NO!"}))
 
 (def: .public phase
   ////analysis.Phase
@@ -76,20 +76,20 @@
   (|> analysis
       //type.with_inference
       (phase.result ..state)
-      (case> (#try.Success [inferred_type output])
+      (case> {#try.Success [inferred_type output]}
              (if (same? expected_type inferred_type)
-               (#try.Success output)
+               {#try.Success output}
                (exception.except wrong_inference [expected_type inferred_type]))
 
-             (#try.Failure error)
-             (#try.Failure error))))
+             {#try.Failure error}
+             {#try.Failure error})))
 
 (def: .public test
   (<| (_.context (name.module (name_of /._)))
       (`` ($_ _.and
               (_.test (%.name (name_of #////analysis.Unit))
                       (|> (infer Any (..phase archive.empty (' [])))
-                          (case> (^ (#try.Success (#////analysis.Primitive (#////analysis.Unit output))))
+                          (case> (^ {#try.Success {#////analysis.Primitive {#////analysis.Unit output}}})
                                  (same? [] output)
 
                                  _
@@ -99,7 +99,7 @@
                        [sample ]
                        (_.test (%.name (name_of ))
                                (|> (infer  (..phase archive.empty ( sample)))
-                                   (case> (#try.Success (#////analysis.Primitive ( output)))
+                                   (case> {#try.Success {#////analysis.Primitive { output}}}
                                           (same? sample output)
 
                                           _
diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/reference.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/reference.lux
index 1db1336ea..981b2604f 100644
--- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/reference.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/reference.lux
@@ -38,10 +38,10 @@
 (template [  ]
   [(def: 
      Check
-     (|>> (case> (#try.Success _)
+     (|>> (case> {#try.Success _}
                  
 
-                 (#try.Failure _)
+                 {#try.Failure _}
                  )))]
 
   [success? true false]
@@ -52,7 +52,7 @@
   (-> Text [Bit Text] [Bit Text] Check Bit)
   (|> (do [! phase.monad]
         [_ (//module.with_module 0 def_module
-             (//module.define var_name (#.Right [export? Any []])))]
+             (//module.define var_name {#.Right [export? Any []]}))]
         (//module.with_module 0 dependent_module
           (do !
             [_ (if import?
@@ -79,7 +79,7 @@
                             (//type.with_inference
                               (_primitive.phase archive.empty (code.local_identifier var_name)))))
                         (phase.result _primitive.state)
-                        (case> (^ (#try.Success [inferredT (#////analysis.Reference (////reference.local var))]))
+                        (case> (^ {#try.Success [inferredT {#////analysis.Reference (////reference.local var)}]})
                                (and (type\= expectedT inferredT)
                                     (n.= 0 var))
 
@@ -88,12 +88,12 @@
             (_.test "Can analyse definition (in the same module)."
                     (let [def_name [def_module var_name]]
                       (|> (do phase.monad
-                            [_ (//module.define var_name (#.Right [false expectedT []]))]
+                            [_ (//module.define var_name {#.Right [false expectedT []]})]
                             (//type.with_inference
                               (_primitive.phase archive.empty (code.identifier def_name))))
                           (//module.with_module 0 def_module)
                           (phase.result _primitive.state)
-                          (case> (^ (#try.Success [_ inferredT (#////analysis.Reference (////reference.constant constant_name))]))
+                          (case> (^ {#try.Success [_ inferredT {#////analysis.Reference (////reference.constant constant_name)}]})
                                  (and (type\= expectedT inferredT)
                                       (name\= def_name constant_name))
 
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 4ad22a9fe..9d276e070 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
@@ -43,7 +43,7 @@
   [(def: .public 
      (All (_ a) (-> (Operation a) Bit))
      (|>> (phase.result _primitive.state)
-          (case> (#try.Success _)
+          (case> {#try.Success _}
                  
 
                  _
@@ -71,7 +71,7 @@
   (|> analysis
       (//type.with_type type)
       (phase.result _primitive.state)
-      (case> (^ (#try.Success (////analysis.variant variant)))
+      (case> (^ {#try.Success (////analysis.variant variant)})
              (check_sum' tag size variant)
 
              _
@@ -89,7 +89,7 @@
       (with_tags module tags variantT)
       (//type.with_type expectedT)
       (phase.result _primitive.state)
-      (case> (^ (#try.Success [_ (////analysis.variant variant)]))
+      (case> (^ {#try.Success [_ (////analysis.variant variant)]})
              (check_sum' tag (list.size tags) variant)
 
              _
@@ -111,7 +111,7 @@
       (with_tags module tags recordT)
       (//type.with_type expectedT)
       (phase.result _primitive.state)
-      (case> (#try.Success [_ productA])
+      (case> {#try.Success [_ productA]}
              (correct_size? size productA)
 
              _
@@ -128,7 +128,7 @@
            [valueT valueC] (maybe.trusted (list.item choice primitives))
            +size (++ size)
            +primitives (list.together (list (list.first choice primitives)
-                                            (list [(#.Parameter 1) +valueC])
+                                            (list [{#.Parameter 1} +valueC])
                                             (list.after choice primitives)))
            [+valueT +valueC] (maybe.trusted (list.item +choice +primitives))
            +variantT (type.variant (list\each product.left +primitives))]]
@@ -145,7 +145,7 @@
                           (//type.with_type varT
                             (/.sum _primitive.phase choice archive.empty valueC)))
                         (phase.result _primitive.state)
-                        (case> (^ (#try.Success (////analysis.variant variant)))
+                        (case> (^ {#try.Success (////analysis.variant variant)})
                                (check_sum' choice size variant)
 
                                _
@@ -178,7 +178,7 @@
      .let [tupleT (type.tuple (list\each product.left primitives))
            [singletonT singletonC] (|> primitives (list.item choice) maybe.trusted)
            +primitives (list.together (list (list.first choice primitives)
-                                            (list [(#.Parameter 1) +valueC])
+                                            (list [{#.Parameter 1} +valueC])
                                             (list.after choice primitives)))
            +tupleT (type.tuple (list\each product.left +primitives))]]
     (<| (_.context (%.name (name_of /.product)))
@@ -187,7 +187,7 @@
                     (|> (//type.with_type tupleT
                           (/.product archive.empty _primitive.phase (list\each product.right primitives)))
                         (phase.result _primitive.state)
-                        (case> (#try.Success tupleA)
+                        (case> {#try.Success tupleA}
                                (correct_size? size tupleA)
 
                                _
@@ -196,7 +196,7 @@
                     (|> (//type.with_inference
                           (/.product archive.empty _primitive.phase (list\each product.right primitives)))
                         (phase.result _primitive.state)
-                        (case> (#try.Success [_type tupleA])
+                        (case> {#try.Success [_type tupleA]}
                                (and (check.subsumes? tupleT _type)
                                     (correct_size? size tupleA))
 
@@ -214,7 +214,7 @@
                           (//type.with_type varT
                             (/.product archive.empty _primitive.phase (list\each product.right primitives))))
                         (phase.result _primitive.state)
-                        (case> (#try.Success tupleA)
+                        (case> {#try.Success tupleA}
                                (correct_size? size tupleA)
 
                                _
@@ -238,8 +238,8 @@
      primitives (r.list size _primitive.primitive)
      module_name (r.unicode 5)
      type_name (r.unicode 5)
-     .let [with_name (|>> (#.Named [module_name type_name]))
-           varT (#.Parameter 1)
+     .let [with_name (|>> {#.Named [module_name type_name]})
+           varT {#.Parameter 1}
            primitivesT (list\each product.left primitives)
            [choiceT choiceC] (maybe.trusted (list.item choice primitives))
            [other_choiceT other_choiceC] (maybe.trusted (list.item other_choice primitives))
@@ -283,17 +283,17 @@
      module_name (r.unicode 5)
      type_name (r.unicode 5)
      choice (|> r.nat (\ ! each (n.% size)))
-     .let [varT (#.Parameter 1)
+     .let [varT {#.Parameter 1}
            tagsC (list\each (|>> [module_name] code.tag) tags)
            primitivesT (list\each product.left primitives)
            primitivesC (list\each product.right primitives)
-           monoT (#.Named [module_name type_name] (type.tuple primitivesT))
+           monoT {#.Named [module_name type_name] (type.tuple primitivesT)}
            recordC (list.zipped/2 tagsC primitivesC)
            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]))]]
+                     {#.Named [module_name type_name]})]]
     (<| (_.context (%.name (name_of /.record)))
         (_.test "Can infer."
                 (|> (/.record archive.empty _primitive.phase recordC)
diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
index 2528ff9c1..aaf4f1ae6 100644
--- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux
@@ -39,10 +39,10 @@
                                (////type.with_type output_type
                                                    (_primitive.phase archive.empty (` ((~ (code.text procedure)) (~+ params))))))
          (phase.result _primitive.state)
-         (case> (#try.Success _)
+         (case> {#try.Success _}
                 
 
-                (#try.Failure _)
+                {#try.Failure _}
                 )))]
 
   [check_success+ true false]
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 af22d952d..881c2f678 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
@@ -46,8 +46,8 @@
      temp (|> random.nat (\ ! each (n.% 100)))
      .let [maskA (analysis.control/case
                   [maskedA
-                   [[(#analysis.Bind temp)
-                     (#analysis.Reference (////reference.local temp))]
+                   [[{#analysis.Bind temp}
+                     {#analysis.Reference (////reference.local temp)}]
                     (list)]])]]
     (_.cover [/.synthesize_masking]
              (|> maskA
@@ -64,14 +64,14 @@
      outputA //primitive.primitive
      .let [letA (analysis.control/case
                  [inputA
-                  [[(#analysis.Bind registerA)
+                  [[{#analysis.Bind registerA}
                     outputA]
                    (list)]])]]
     (_.cover [/.synthesize_let]
              (|> letA
                  (//.phase archive.empty)
                  (phase.result [///bundle.empty synthesis.init])
-                 (case> (^ (#try.Success (synthesis.branch/let [inputS registerS outputS])))
+                 (case> (^ {#try.Success (synthesis.branch/let [inputS registerS outputS])})
                         (and (n.= registerA registerS)
                              (//primitive.corresponds? inputA inputS)
                              (//primitive.corresponds? outputA outputS))
@@ -87,10 +87,10 @@
      thenA //primitive.primitive
      elseA //primitive.primitive
      .let [thenB (: Branch
-                    [(#analysis.Simple (#analysis.Bit true))
+                    [{#analysis.Simple {#analysis.Bit true}}
                      thenA])
            elseB (: Branch
-                    [(#analysis.Simple (#analysis.Bit false))
+                    [{#analysis.Simple {#analysis.Bit false}}
                      elseA])
            ifA (if then|else
                  (analysis.control/case [inputA [thenB (list elseB)]])
@@ -99,7 +99,7 @@
              (|> ifA
                  (//.phase archive.empty)
                  (phase.result [///bundle.empty synthesis.init])
-                 (case> (^ (#try.Success (synthesis.branch/if [inputS thenS elseS])))
+                 (case> (^ {#try.Success (synthesis.branch/if [inputS thenS elseS])})
                         (and (//primitive.corresponds? inputA inputS)
                              (//primitive.corresponds? thenA thenS)
                              (//primitive.corresponds? elseA elseS))
@@ -113,8 +113,8 @@
     [lefts (|> random.nat (\ ! each (n.% 10)))
      right? random.bit]
     (in (if right?
-          (#.Right lefts)
-          (#.Left lefts)))))
+          {#.Right lefts}
+          {#.Left lefts}))))
 
 (def: random_path
   (Random (analysis.Tuple synthesis.Member))
@@ -129,16 +129,16 @@
     [@member random.nat]
     (in [(list\mix (function (_ member inner)
                      (case member
-                       (#.Left lefts)
+                       {#.Left lefts}
                        (analysis.pattern/tuple
                         (list\composite (list.repeated lefts (analysis.pattern/unit))
                                         (list inner (analysis.pattern/unit))))
                        
-                       (#.Right lefts)
+                       {#.Right lefts}
                        (analysis.pattern/tuple
                         (list\composite (list.repeated (++ lefts) (analysis.pattern/unit))
                                         (list inner)))))
-                   (#analysis.Bind @member)
+                   {#analysis.Bind @member}
                    (list.reversed path))
          @member])))
 
@@ -152,13 +152,13 @@
      pathA ..random_path
      [pattern @member] (get_pattern pathA)
      .let [getA (analysis.control/case [recordA [[pattern
-                                                  (#analysis.Reference (////reference.local @member))]
+                                                  {#analysis.Reference (////reference.local @member)}]
                                                  (list)]])]]
     (_.cover [/.synthesize_get]
              (|> getA
                  (//.phase archive.empty)
                  (phase.result [///bundle.empty synthesis.init])
-                 (case> (^ (#try.Success (synthesis.branch/get [pathS recordS])))
+                 (case> (^ {#try.Success (synthesis.branch/get [pathS recordS])})
                         (and (\ (list.equivalence (sum.equivalence n.= n.=)) = pathA pathS)
                              (//primitive.corresponds? recordA recordS))
 
@@ -171,10 +171,10 @@
     [test random.bit
      then random.nat
      else random.nat]
-    (in [(#synthesis.Alt (#synthesis.Seq (synthesis.path/bit test)
-                                         (#synthesis.Then (synthesis.i64 (.i64 then))))
-                         (#synthesis.Seq (synthesis.path/bit (not test))
-                                         (#synthesis.Then (synthesis.i64 (.i64 else)))))
+    (in [{#synthesis.Alt {#synthesis.Seq (synthesis.path/bit test)
+                          {#synthesis.Then (synthesis.i64 (.i64 then))}}
+          {#synthesis.Seq (synthesis.path/bit (not test))
+           {#synthesis.Then (synthesis.i64 (.i64 else))}}}
          [[#analysis.when (analysis.pattern/bit test)
            #analysis.then (analysis.nat then)]
           (list [#analysis.when (analysis.pattern/bit (not test))
@@ -198,11 +198,11 @@
        [[test/0 test/1 test/2 test/3 test/4] (random_five  )
         [body/0 body/1 body/2 body/3 body/4] (random_five  )]
        (in [($_ #synthesis.Alt
-                (#synthesis.Seq ( test/0) (#synthesis.Then ( body/0)))
-                (#synthesis.Seq ( test/1) (#synthesis.Then ( body/1)))
-                (#synthesis.Seq ( test/2) (#synthesis.Then ( body/2)))
-                (#synthesis.Seq ( test/3) (#synthesis.Then ( body/3)))
-                (#synthesis.Seq ( test/4) (#synthesis.Then ( body/4))))
+                {#synthesis.Seq ( test/0) {#synthesis.Then ( body/0)}}
+                {#synthesis.Seq ( test/1) {#synthesis.Then ( body/1)}}
+                {#synthesis.Seq ( test/2) {#synthesis.Then ( body/2)}}
+                {#synthesis.Seq ( test/3) {#synthesis.Then ( body/3)}}
+                {#synthesis.Seq ( test/4) {#synthesis.Then ( body/4)}})
             [[#analysis.when ( test/0) #analysis.then ( body/0)]
              (list [#analysis.when ( test/1) #analysis.then ( body/1)]
                    [#analysis.when ( test/2) #analysis.then ( body/2)]
@@ -237,10 +237,10 @@
                    (function (_ lefts right? value body)
                      ($_ #synthesis.Seq
                          (synthesis.path/side (if right?
-                                                (#.Right lefts)
-                                                (#.Left lefts)))
+                                                {#.Right lefts}
+                                                {#.Left lefts}))
                          (synthesis.path/text value)
-                         (#synthesis.Then (synthesis.f64 body)))))
+                         {#synthesis.Then (synthesis.f64 body)})))
            branch (: (-> Nat Bit Text Frac Branch)
                      (function (_ lefts right? value body)
                        [#analysis.when (analysis.pattern/variant [#analysis.lefts lefts
@@ -276,17 +276,17 @@
                      (if right?
                        ($_ #synthesis.Seq
                            (synthesis.path/member (if right?
-                                                    (#.Right lefts)
-                                                    (#.Left lefts)))
+                                                    {#.Right lefts}
+                                                    {#.Left lefts}))
                            (synthesis.path/text value)
-                           (#synthesis.Then (synthesis.f64 body)))
+                           {#synthesis.Then (synthesis.f64 body)})
                        ($_ #synthesis.Seq
                            (synthesis.path/member (if right?
-                                                    (#.Right lefts)
-                                                    (#.Left lefts)))
+                                                    {#.Right lefts}
+                                                    {#.Left lefts}))
                            (synthesis.path/text value)
                            #synthesis.Pop
-                           (#synthesis.Then (synthesis.f64 body))))))
+                           {#synthesis.Then (synthesis.f64 body)}))))
            branch (: (-> Nat Bit Text Frac Branch)
                      (function (_ lefts right? value body)
                        [#analysis.when (if right?
@@ -298,10 +298,10 @@
                                                                            (analysis.pattern/unit)))))
                         #analysis.then (analysis.frac body)]))]]
     (in [(list\mix (function (_ left right)
-                     (#synthesis.Alt left right))
+                     {#synthesis.Alt left right})
                    (path (++ mid_size) true value/last body/last)
                    (|> (list.zipped/2 value/mid body/mid)
-                       (#.Item [value/first body/first])
+                       {#.Item [value/first body/first]}
                        list.enumeration
                        (list\each (function (_ [lefts' [value body]])
                                     (path lefts' false value body)))
@@ -333,7 +333,7 @@
     (_.cover [/.synthesize_case]
              (|> (/.synthesize_case //.phase archive.empty expected_input match)
                  (phase.result [///bundle.empty synthesis.init])
-                 (case> (^ (#try.Success (synthesis.branch/case [actual_input actual_path])))
+                 (case> (^ {#try.Success (synthesis.branch/case [actual_input actual_path])})
                         (and (\ synthesis.equivalence = expected_input actual_input)
                              (\ synthesis.path_equivalence = expected_path actual_path))
 
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 8c8b6c4a5..5396c5b9c 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
@@ -52,12 +52,12 @@
   (-> Arity Analysis Analysis)
   (list\mix (function (_ arity_1 body)
               (case arity_1
-                0 (#analysis.Function (list) body)
-                _ (#analysis.Function ($_ list\composite
+                0 {#analysis.Function (list) body}
+                _ {#analysis.Function ($_ list\composite
                                           (list\each (|>> #variable.Foreign)
                                                      (list.indices arity_1))
-                                          (list (#variable.Local 1)))
-                                      body)))
+                                          (list {#variable.Local 1}))
+                   body}))
             body
             (list.reversed (list.indices arity))))
 
@@ -151,8 +151,8 @@
     (in [(not (n.= 0 register))
          (synthesis.variable/local register)
          (if (n.= arity register)
-           (#analysis.Reference (reference.local 1))
-           (#analysis.Reference (reference.foreign register)))])))
+           {#analysis.Reference (reference.local 1)}
+           {#analysis.Reference (reference.foreign register)})])))
 
 (def: (random_constant output?)
   Scenario
@@ -161,7 +161,7 @@
      short (random.unicode 1)]
     (in [true
          (synthesis.constant [module short])
-         (#analysis.Reference (reference.constant [module short]))])))
+         {#analysis.Reference (reference.constant [module short])}])))
 
 (def: (random_reference arity output?)
   (-> Arity Scenario)
@@ -180,8 +180,8 @@
      lefts (|> random.nat (\ ! each (n.% 10)))
      right? random.bit
      .let [side|member (if right?
-                         (#.Right lefts)
-                         (#.Left lefts))]]
+                         {#.Right lefts}
+                         {#.Left lefts})]]
     (in [(and loop?_input
               loop?_output)
          (synthesis.branch/case [expected_input
@@ -211,30 +211,30 @@
                                            (synthesis.path/bind (++ arity))
                                            synthesis.path/pop
                                            (synthesis.path/then expected_output))))])
-         (#analysis.Case actual_input
-                         [[#analysis.when (analysis.pattern/unit)
-                           #analysis.then actual_output]
-                          (list [#analysis.when (analysis.pattern/bit bit_test)
-                                 #analysis.then actual_output]
-                                [#analysis.when (analysis.pattern/nat (.nat i64_test))
-                                 #analysis.then actual_output]
-                                [#analysis.when (analysis.pattern/frac f64_test)
-                                 #analysis.then actual_output]
-                                [#analysis.when (analysis.pattern/text text_test)
-                                 #analysis.then actual_output]
-                                [#analysis.when (#analysis.Bind 2)
-                                 #analysis.then actual_output]
-                                [#analysis.when (analysis.pattern/variant
-                                                 [#analysis.lefts lefts
-                                                  #analysis.right? right?
-                                                  #analysis.value (#analysis.Bind 2)])
-                                 #analysis.then actual_output]
-                                [#analysis.when (analysis.pattern/tuple
-                                                 (list\composite (list.repeated lefts (analysis.pattern/unit))
-                                                                 (if right?
-                                                                   (list (analysis.pattern/unit) (#analysis.Bind 2))
-                                                                   (list (#analysis.Bind 2) (analysis.pattern/unit)))))
-                                 #analysis.then actual_output])])])))
+         {#analysis.Case actual_input
+          [[#analysis.when (analysis.pattern/unit)
+            #analysis.then actual_output]
+           (list [#analysis.when (analysis.pattern/bit bit_test)
+                  #analysis.then actual_output]
+                 [#analysis.when (analysis.pattern/nat (.nat i64_test))
+                  #analysis.then actual_output]
+                 [#analysis.when (analysis.pattern/frac f64_test)
+                  #analysis.then actual_output]
+                 [#analysis.when (analysis.pattern/text text_test)
+                  #analysis.then actual_output]
+                 [#analysis.when {#analysis.Bind 2}
+                  #analysis.then actual_output]
+                 [#analysis.when (analysis.pattern/variant
+                                  [#analysis.lefts lefts
+                                   #analysis.right? right?
+                                   #analysis.value {#analysis.Bind 2}])
+                  #analysis.then actual_output]
+                 [#analysis.when (analysis.pattern/tuple
+                                  (list\composite (list.repeated lefts (analysis.pattern/unit))
+                                                  (if right?
+                                                    (list (analysis.pattern/unit) {#analysis.Bind 2})
+                                                    (list {#analysis.Bind 2} (analysis.pattern/unit)))))
+                  #analysis.then actual_output])]}])))
 
 (def: (random_let arity random_value output?)
   (-> Arity Scenario Scenario)
@@ -246,10 +246,10 @@
          (synthesis.branch/let [expected_input
                                 (++ arity)
                                 expected_output])
-         (#analysis.Case actual_input
-                         [[#analysis.when (#analysis.Bind 2)
-                           #analysis.then actual_output]
-                          (list)])])))
+         {#analysis.Case actual_input
+          [[#analysis.when {#analysis.Bind 2}
+            #analysis.then actual_output]
+           (list)]}])))
 
 (def: (random_if random_value output?)
   (-> Scenario Scenario)
@@ -265,16 +265,16 @@
                                expected_then
                                expected_else])
          (if flip?
-           (#analysis.Case actual_test
-                           [[#analysis.when (analysis.pattern/bit false)
-                             #analysis.then actual_else]
-                            (list [#analysis.when (analysis.pattern/bit true)
-                                   #analysis.then actual_then])])
-           (#analysis.Case actual_test
-                           [[#analysis.when (analysis.pattern/bit true)
-                             #analysis.then actual_then]
-                            (list [#analysis.when (analysis.pattern/bit false)
-                                   #analysis.then actual_else])]))])))
+           {#analysis.Case actual_test
+            [[#analysis.when (analysis.pattern/bit false)
+              #analysis.then actual_else]
+             (list [#analysis.when (analysis.pattern/bit true)
+                    #analysis.then actual_then])]}
+           {#analysis.Case actual_test
+            [[#analysis.when (analysis.pattern/bit true)
+              #analysis.then actual_then]
+             (list [#analysis.when (analysis.pattern/bit false)
+                    #analysis.then actual_else])]})])))
 
 (def: (random_get random_value output?)
   (-> Scenario Scenario)
@@ -284,17 +284,17 @@
      [loop?_record expected_record actual_record] (random_value false)]
     (in [loop?_record
          (synthesis.branch/get [(list (if right?
-                                        (#.Right lefts)
-                                        (#.Left lefts)))
+                                        {#.Right lefts}
+                                        {#.Left lefts}))
                                 expected_record])
-         (#analysis.Case actual_record
-                         [[#analysis.when (analysis.pattern/tuple
-                                           (list\composite (list.repeated lefts (analysis.pattern/unit))
-                                                           (if right?
-                                                             (list (analysis.pattern/unit) (#analysis.Bind 2))
-                                                             (list (#analysis.Bind 2) (analysis.pattern/unit)))))
-                           #analysis.then (#analysis.Reference (reference.local 2))]
-                          (list)])])))
+         {#analysis.Case actual_record
+          [[#analysis.when (analysis.pattern/tuple
+                            (list\composite (list.repeated lefts (analysis.pattern/unit))
+                                            (if right?
+                                              (list (analysis.pattern/unit) {#analysis.Bind 2})
+                                              (list {#analysis.Bind 2} (analysis.pattern/unit)))))
+            #analysis.then {#analysis.Reference (reference.local 2)}]
+           (list)]}])))
 
 (def: (random_branch arity random_value output?)
   (-> Arity Scenario Scenario)
@@ -309,9 +309,9 @@
     [resets (random.list arity (random_value false))]
     (in [true
          (synthesis.loop/recur (list\each (|>> product.right product.left) resets))
-         (analysis.apply [(#analysis.Reference (case arity
+         (analysis.apply [{#analysis.Reference (case arity
                                                  1 (reference.local 0)
-                                                 _ (reference.foreign 0)))
+                                                 _ (reference.foreign 0))}
                           (list\each (|>> product.right product.right) resets)])])))
 
 (def: (random_scope arity output?)
@@ -347,7 +347,7 @@
      .let [environment ($_ list\composite
                            (list\each (|>> #variable.Foreign)
                                       (list.indices arity))
-                           (list (#variable.Local 1)))]]
+                           (list {#variable.Local 1}))]]
     (in [true
          (synthesis.function/abstraction
           [#synthesis.environment environment
@@ -356,8 +356,8 @@
                             [#synthesis.start 1
                              #synthesis.inits (list)
                              #synthesis.iteration expected_output])])
-         (#analysis.Function environment
-                             actual_output)])))
+         {#analysis.Function environment
+          actual_output}])))
 
 (def: (random_apply random_value output?)
   (-> Scenario Scenario)
@@ -401,8 +401,8 @@
     (in [(and loop?_first
               loop?_second
               loop?_third)
-         (#synthesis.Extension name (list expected_first expected_second expected_third))
-         (#analysis.Extension name (list actual_first actual_second actual_third))])))
+         {#synthesis.Extension name (list expected_first expected_second expected_third)}
+         {#analysis.Extension name (list actual_first actual_second actual_third)}])))
 
 (def: (random_body arity)
   (-> Arity Scenario)
@@ -432,7 +432,7 @@
              (|> input
                  (//.phase archive.empty)
                  (phase.result [///bundle.empty synthesis.init])
-                 (!expect (^multi (#try.Success actual)
+                 (!expect (^multi {#try.Success actual}
                                   (\ synthesis.equivalence = expected actual)))))))
 
 (def: application
@@ -445,14 +445,14 @@
              (and (|> (analysis.apply [funcA argsA])
                       (//.phase archive.empty)
                       (phase.result [///bundle.empty synthesis.init])
-                      (!expect (^multi (^ (#try.Success (synthesis.function/apply [funcS argsS])))
+                      (!expect (^multi (^ {#try.Success (synthesis.function/apply [funcS argsS])})
                                        (and (//primitive.corresponds? funcA funcS)
                                             (list.every? (product.uncurried //primitive.corresponds?)
                                                          (list.zipped/2 argsA argsS))))))
                   (|> (analysis.apply [funcA (list)])
                       (//.phase archive.empty)
                       (phase.result [///bundle.empty synthesis.init])
-                      (!expect (^multi (#try.Success funcS)
+                      (!expect (^multi {#try.Success funcS}
                                        (//primitive.corresponds? funcA funcS))))))))
 
 (def: .public test
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 63a6f2546..c27d08c14 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
@@ -57,8 +57,8 @@
   (let [local (do [! random.monad]
                 [register (\ ! each (|>> (n.% arity) ++) random.nat)]
                 (in [next
-                     [(#variable.Local (/.register_optimization offset register))
-                      (#variable.Local register)]]))]
+                     [{#variable.Local (/.register_optimization offset register)}
+                      {#variable.Local register}]]))]
     (case offset
       0 local
       _ ($_ random.either
@@ -66,8 +66,8 @@
             (do [! random.monad]
               [foreign (\ ! each (n.% offset) random.nat)]
               (in [next
-                   [(#variable.Local foreign)
-                    (#variable.Foreign foreign)]]))))))
+                   [{#variable.Local foreign}
+                    {#variable.Foreign foreign}]]))))))
 
 (def: (reference offset arity next)
   (Scenario Synthesis)
@@ -248,8 +248,8 @@
      [next [secondE secondA]] (..reference offset arity next)
      [next [thirdE thirdA]] (..reference offset arity next)]
     (in [next
-         [(#//.Extension name (list firstE secondE thirdE))
-          (#//.Extension name (list firstA secondA thirdA))]])))
+         [{#//.Extension name (list firstE secondE thirdE)}
+          {#//.Extension name (list firstA secondA thirdA)}]])))
 
 (def: (scenario offset arity next)
   (Scenario Synthesis)
@@ -279,8 +279,8 @@
                                                                 (list\each (|>> #variable.Local)))
                                             #//.arity arity
                                             #//.body iteration])
-                       (^ (#.Some (//.loop/scope [actual_offset actual_inits
-                                                  actual])))
+                       (^ {#.Some (//.loop/scope [actual_offset actual_inits
+                                                  actual])})
                        (and (n.= expected_offset
                                  actual_offset)
                             (\ (list.equivalence //.equivalence) =
diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/primitive.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/primitive.lux
index 4b37cbb5a..79e26221b 100644
--- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/primitive.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/primitive.lux
@@ -39,14 +39,14 @@
                       r.rev
                       r.frac
                       (r.unicode 5)))]
-    (in (#////analysis.Primitive primitive))))
+    (in {#////analysis.Primitive primitive})))
 
 (def: .public (corresponds? analysis synthesis)
   (-> Analysis Synthesis Bit)
   (`` (case [analysis synthesis]
         (~~ (template [   ]
-              [[(#////analysis.Primitive ( expected))
-                (#////synthesis.Primitive ( actual))]
+              [[{#////analysis.Primitive ( expected)}
+                {#////synthesis.Primitive ( actual)}]
                (same? (|> expected )
                       (|> actual ))]
 
@@ -78,10 +78,10 @@
                     [(do r.monad
                        [expected ]
                        (_.test (%.name (name_of ))
-                               (|> (#////analysis.Primitive ( expected))
+                               (|> {#////analysis.Primitive ( expected)}
                                    (//.phase archive.empty)
                                    (phase.result [///bundle.empty ////synthesis.init])
-                                   (case> (#try.Success (#////synthesis.Primitive ( actual)))
+                                   (case> {#try.Success {#////synthesis.Primitive ( actual)}}
                                           (same? expected actual)
 
                                           _
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 60a4bdeec..c9334a880 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
@@ -47,7 +47,7 @@
             (|> (////analysis.variant [lefts right? memberA])
                 (//.phase archive.empty)
                 (phase.result [///bundle.empty ////synthesis.init])
-                (case> (^ (#try.Success (////synthesis.variant [leftsS right?S valueS])))
+                (case> (^ {#try.Success (////synthesis.variant [leftsS right?S valueS])})
                        (let [tagS (if right?S (++ leftsS) leftsS)]
                          (and (n.= tagA tagS)
                               (|> tagS (n.= (-- size)) (bit\= right?S))
@@ -65,7 +65,7 @@
             (|> (////analysis.tuple membersA)
                 (//.phase archive.empty)
                 (phase.result [///bundle.empty ////synthesis.init])
-                (case> (^ (#try.Success (////synthesis.tuple membersS)))
+                (case> (^ {#try.Success (////synthesis.tuple membersS)})
                        (and (n.= size (list.size membersS))
                             (list.every? (product.uncurried //primitive.corresponds?)
                                          (list.zipped/2 membersA membersS)))
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 7ba708602..b7713c5bd 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
@@ -74,14 +74,14 @@
                                   (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))])
+                                     {#synthesis.Seq #synthesis.Pop
+                                      {#synthesis.Then expected_output}}])
              (if let?
                (synthesis.branch/let [actual_input fake_register actual_output])
                (synthesis.branch/case [actual_input
-                                       (#synthesis.Seq (#synthesis.Bind fake_register)
-                                                       (#synthesis.Seq #synthesis.Pop
-                                                                       (#synthesis.Then actual_output)))]))]))
+                                       {#synthesis.Seq {#synthesis.Bind fake_register}
+                                        {#synthesis.Seq #synthesis.Pop
+                                         {#synthesis.Then actual_output}}}]))]))
       (scenario context))))
 
 (def: (variant_scenario scenario context)
@@ -137,8 +137,8 @@
     [lefts random.nat
      right? random.bit]
     (in (if right?
-          (#.Right lefts)
-          (#.Left lefts)))))
+          {#.Right lefts}
+          {#.Left lefts}))))
 
 (def: (get_scenario scenario context)
   (-> (Scenario Synthesis) (Scenario Synthesis))
@@ -160,31 +160,31 @@
               (do [! random.monad]
                 [_ (in [])
                  [expected_then actual_then] (scenario context)]
-                (in [(#synthesis.Seq #synthesis.Pop
-                                     (#synthesis.Then expected_then))
-                     (#synthesis.Seq #synthesis.Pop
-                                     (#synthesis.Then actual_then))]))
+                (in [{#synthesis.Seq #synthesis.Pop
+                      {#synthesis.Then expected_then}}
+                     {#synthesis.Seq #synthesis.Pop
+                      {#synthesis.Then actual_then}}]))
               (do [! random.monad]
                 [_ (in [])
                  .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)))
-                     (#synthesis.Seq (#synthesis.Bind fake_register)
-                                     (#synthesis.Seq #synthesis.Pop
-                                                     (#synthesis.Then actual_then)))])))
+                (in [{#synthesis.Seq {#synthesis.Bind real_register}
+                      {#synthesis.Seq #synthesis.Pop
+                       {#synthesis.Then expected_then}}}
+                     {#synthesis.Seq {#synthesis.Bind fake_register}
+                      {#synthesis.Seq #synthesis.Pop
+                       {#synthesis.Then actual_then}}}])))
           ($_ random.either
               (~~ (template [ ]
                     [(do [! random.monad]
                        [test 
                         [expected_then actual_then] (scenario context)]
-                       (in [(#synthesis.Seq (#synthesis.Test ( test))
-                                            (#synthesis.Then expected_then))
-                            (#synthesis.Seq (#synthesis.Test ( test))
-                                            (#synthesis.Then actual_then))]))]
+                       (in [{#synthesis.Seq {#synthesis.Test { test}}
+                             {#synthesis.Then expected_then}}
+                            {#synthesis.Seq {#synthesis.Test { test}}
+                             {#synthesis.Then actual_then}}]))]
 
                     [#synthesis.Bit random.bit]
                     [#synthesis.I64 (\ ! each .i64 random.nat)]
@@ -195,23 +195,23 @@
               (do [! random.monad]
                 [side ..random_side
                  [expected_next actual_next] (path_scenario scenario context)]
-                (in [(#synthesis.Seq (#synthesis.Access (#synthesis.Side side))
-                                     expected_next)
-                     (#synthesis.Seq (#synthesis.Access (#synthesis.Side side))
-                                     actual_next)]))
+                (in [{#synthesis.Seq {#synthesis.Access {#synthesis.Side side}}
+                      expected_next}
+                     {#synthesis.Seq {#synthesis.Access {#synthesis.Side side}}
+                      actual_next}]))
               (do [! random.monad]
                 [member ..random_member
                  [expected_next actual_next] (path_scenario scenario context)]
-                (in [(#synthesis.Seq (#synthesis.Access (#synthesis.Member member))
-                                     expected_next)
-                     (#synthesis.Seq (#synthesis.Access (#synthesis.Member member))
-                                     actual_next)])))
+                (in [{#synthesis.Seq {#synthesis.Access {#synthesis.Member member}}
+                      expected_next}
+                     {#synthesis.Seq {#synthesis.Access {#synthesis.Member member}}
+                      actual_next}])))
           (do [! random.monad]
             [_ (in [])
              [expected_left actual_left] (path_scenario scenario context)
              [expected_right actual_right] (path_scenario scenario context)]
-            (in [(#synthesis.Alt expected_left expected_right)
-                 (#synthesis.Alt actual_left actual_right)]))
+            (in [{#synthesis.Alt expected_left expected_right}
+                 {#synthesis.Alt actual_left actual_right}]))
           )))
 
 (def: (case_scenario scenario context)
@@ -330,6 +330,6 @@
             [[expected input] (..scenario ..default)]
             (_.cover [/.optimization]
                      (|> (/.optimization input)
-                         (!expect (^multi (#try.Success actual)
+                         (!expect (^multi {#try.Success actual}
                                           (\ synthesis.equivalence = expected actual))))))
           )))
diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/syntax.lux b/stdlib/source/test/lux/tool/compiler/language/lux/syntax.lux
index 32dcae9de..e9daa8e53 100644
--- a/stdlib/source/test/lux/tool/compiler/language/lux/syntax.lux
+++ b/stdlib/source/test/lux/tool/compiler/language/lux/syntax.lux
@@ -80,10 +80,10 @@
                 (case (let [source_code (%.code sample)]
                         (/.parse "" (dictionary.empty text.hash) (text.size source_code)
                                  [location.dummy 0 source_code]))
-                  (#.Left error)
+                  {#.Left error}
                   false
 
-                  (#.Right [_ parsed])
+                  {#.Right [_ parsed]}
                   (\ code.equivalence = parsed sample)))
         (do !
           [other code^]
@@ -92,16 +92,16 @@
                         source_code//size (text.size source_code)]
                     (case (/.parse "" (dictionary.empty text.hash) source_code//size
                                    [location.dummy 0 source_code])
-                      (#.Left error)
+                      {#.Left error}
                       false
 
-                      (#.Right [remaining =sample])
+                      {#.Right [remaining =sample]}
                       (case (/.parse "" (dictionary.empty text.hash) source_code//size
                                      remaining)
-                        (#.Left error)
+                        {#.Left error}
                         false
 
-                        (#.Right [_ =other])
+                        {#.Right [_ =other]}
                         (and (\ code.equivalence = sample =sample)
                              (\ code.equivalence = other =other)))))))
         )))
@@ -130,10 +130,10 @@
                             source_code//size (text.size source_code)]
                         (/.parse "" (dictionary.empty text.hash) source_code//size
                                  [location.dummy 0 source_code]))
-                  (#.Left error)
+                  {#.Left error}
                   false
 
-                  (#.Right [_ parsed])
+                  {#.Right [_ parsed]}
                   (\ code.equivalence = parsed sample)))
         )))
 
diff --git a/stdlib/source/test/lux/type.lux b/stdlib/source/test/lux/type.lux
index 94f7b92fd..65bcf2d81 100644
--- a/stdlib/source/test/lux/type.lux
+++ b/stdlib/source/test/lux/type.lux
@@ -80,13 +80,13 @@
                  ($equivalence.spec /.equivalence (..random 0)))
           
           (do [! random.monad]
-            [anonymousT (random.only (|>> (case> (#.Named _ _) false
+            [anonymousT (random.only (|>> (case> {#.Named _ _} false
                                                  _ true))
                                      (..random 0))
              name/0 ..name
              name/1 ..name
-             .let [namedT (#.Named name/0 anonymousT)
-                   aliasedT (#.Named name/1 namedT)]]
+             .let [namedT {#.Named name/0 anonymousT}
+                   aliasedT {#.Named name/1 namedT}]]
             ($_ _.and
                 (_.cover [/.de_aliased]
                          (\ /.equivalence = namedT (/.de_aliased aliasedT)))
@@ -97,7 +97,7 @@
              members (|> (..random 0)
                          (random.only (function (_ type)
                                         (case type
-                                          (^or (#.Sum _) (#.Product _))
+                                          (^or {#.Sum _} {#.Product _})
                                           #0
 
                                           _
@@ -123,7 +123,7 @@
                             (do maybe.monad
                               [partial (/.applied (list Bit) Ann)
                                full (/.applied (list Int) partial)]
-                              (in (\ /.equivalence = full (#.Product Bit Int)))))
+                              (in (\ /.equivalence = full {#.Product Bit Int}))))
                         (|> (/.applied (list Bit) Text)
                             (case> #.None #1 _ #0))))
           (do [! random.monad]
@@ -132,7 +132,7 @@
              extra (|> (..random 0)
                        (random.only (function (_ type)
                                       (case type
-                                        (^or (#.Function _) (#.Apply _))
+                                        (^or {#.Function _} {#.Apply _})
                                         #0
 
                                         _
@@ -153,7 +153,7 @@
              body_type (|> (..random 0)
                            (random.only (function (_ type)
                                           (case type
-                                            (^or (#.UnivQ _) (#.ExQ _))
+                                            (^or {#.UnivQ _} {#.ExQ _})
                                             #0
 
                                             _
@@ -179,7 +179,7 @@
              element_type (|> (..random 0)
                               (random.only (function (_ type)
                                              (case type
-                                               (^ (#.Primitive name (list element_type)))
+                                               (^ {#.Primitive name (list element_type)})
                                                (not (text\= array.type_name name))
 
                                                _
diff --git a/stdlib/source/test/lux/type/abstract.lux b/stdlib/source/test/lux/type/abstract.lux
index 9004d7fbe..826569dae 100644
--- a/stdlib/source/test/lux/type/abstract.lux
+++ b/stdlib/source/test/lux/type/abstract.lux
@@ -37,12 +37,12 @@
          (syntax: (with_no_active_frames [macro .any])
            (function (_ compiler)
              (let [verdict (case ((macro.expansion macro) compiler)
-                             (#try.Failure error)
+                             {#try.Failure error}
                              (exception.match? /.no_active_frames error)
                              
-                             (#try.Success _)
+                             {#try.Success _}
                              false)]
-               (#try.Success [compiler (list (code.bit verdict))]))))
+               {#try.Success [compiler (list (code.bit verdict))]})))
 
          (with_expansions [no_current! (..with_no_active_frames (..current))
                            no_specific! (..with_no_active_frames (..specific))]
diff --git a/stdlib/source/test/lux/type/check.lux b/stdlib/source/test/lux/type/check.lux
index d3825ef80..1f5c396e6 100644
--- a/stdlib/source/test/lux/type/check.lux
+++ b/stdlib/source/test/lux/type/check.lux
@@ -71,18 +71,19 @@
 (def: (valid_type? type)
   (-> Type Bit)
   (case type
-    (#.Primitive name params)
+    {#.Primitive name params}
     (list.every? valid_type? params)
     
-    (#.Ex id)
+    {#.Ex id}
     #1
 
     (^template []
-      [( left right)
-       (and (valid_type? left) (valid_type? right))])
+      [{ left right}
+       (and (valid_type? left)
+            (valid_type? right))])
     ([#.Sum] [#.Product] [#.Function])
 
-    (#.Named name type')
+    {#.Named name type'}
     (valid_type? type')
 
     _
@@ -96,7 +97,7 @@
   (Comparison (All (_ a) (/.Check a)))
   (function (_ == left right)
     (case [(/.result /.fresh_context left) (/.result /.fresh_context right)]
-      [(#try.Success left) (#try.Success right)]
+      [{#try.Success left} {#try.Success right}]
       (== left right)
 
       _
@@ -124,25 +125,25 @@
                  (case (/.result /.fresh_context
                                  (: (/.Check Any)
                                     (/.failure expected)))
-                   (#try.Success _) false
-                   (#try.Failure actual) (same? expected actual))))
+                   {#try.Success _} false
+                   {#try.Failure actual} (same? expected actual))))
       (do random.monad
         [expected (random.ascii/upper 10)]
         (_.cover [/.assertion]
                  (and (case (/.result /.fresh_context
                                       (: (/.Check Any)
                                          (/.assertion expected true)))
-                        (#try.Success _) true
-                        (#try.Failure actual) false)
+                        {#try.Success _} true
+                        {#try.Failure actual} false)
                       (case (/.result /.fresh_context (/.assertion expected false))
-                        (#try.Success _) false
-                        (#try.Failure actual) (same? expected actual)))))
+                        {#try.Success _} false
+                        {#try.Failure actual} (same? expected actual)))))
       (_.cover [/.except]
                (case (/.result /.fresh_context
                                (: (/.Check Any)
                                   (/.except ..yolo [])))
-                 (#try.Success _) false
-                 (#try.Failure error) (exception.match? ..yolo error)))
+                 {#try.Success _} false
+                 {#try.Failure error} (exception.match? ..yolo error)))
       ))
 
 (def: var
@@ -153,27 +154,27 @@
                    (case (/.result /.fresh_context
                                    (do /.monad
                                      [[var_id var_type] /.var]
-                                     (in (type\= var_type (#.Var var_id)))))
-                     (#try.Success verdict) verdict
-                     (#try.Failure error) false))
+                                     (in (type\= var_type {#.Var var_id}))))
+                     {#try.Success verdict} verdict
+                     {#try.Failure error} false))
           (do random.monad
             [nominal (random.ascii/upper 10)]
             (_.cover [/.bind]
                      (case (/.result /.fresh_context
                                      (do /.monad
                                        [[var_id var_type] /.var
-                                        _ (/.bind (#.Primitive nominal (list))
+                                        _ (/.bind {#.Primitive nominal (list)}
                                                   var_id)]
                                        (in true)))
-                       (#try.Success _) true
-                       (#try.Failure error) false)))
+                       {#try.Success _} true
+                       {#try.Failure error} false)))
           (do random.monad
             [nominal (random.ascii/upper 10)]
             (_.cover [/.bound?]
                      (and (|> (do /.monad
                                 [[var_id var_type] /.var
                                  pre (/.bound? var_id)
-                                 _ (/.bind (#.Primitive nominal (list))
+                                 _ (/.bind {#.Primitive nominal (list)}
                                            var_id)
                                  post (/.bound? var_id)]
                                 (in (and (not pre)
@@ -196,36 +197,36 @@
                      (case (/.result /.fresh_context
                                      (do /.monad
                                        [[var_id var_type] /.var
-                                        _ (/.bind (#.Primitive nominal (list))
+                                        _ (/.bind {#.Primitive nominal (list)}
                                                   var_id)]
-                                       (/.bind (#.Primitive nominal (list))
+                                       (/.bind {#.Primitive nominal (list)}
                                                var_id)))
-                       (#try.Success _)
+                       {#try.Success _}
                        false
                        
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.cannot_rebind_var error))))
           (do random.monad
             [nominal (random.ascii/upper 10)
              var_id random.nat]
             (_.cover [/.unknown_type_var]
                      (case (/.result /.fresh_context
-                                     (/.bind (#.Primitive nominal (list))
+                                     (/.bind {#.Primitive nominal (list)}
                                              var_id))
-                       (#try.Success _)
+                       {#try.Success _}
                        false
                        
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.unknown_type_var error))))
           (do random.monad
             [nominal (random.ascii/upper 10)
-             .let [expected (#.Primitive nominal (list))]]
+             .let [expected {#.Primitive nominal (list)}]]
             (_.cover [/.peek]
                      (and (|> (do /.monad
                                 [[var_id var_type] /.var]
                                 (/.peek var_id))
                               (/.result /.fresh_context)
-                              (case> (#try.Success #.None) true
+                              (case> {#try.Success #.None} true
                                      _ false))
                           (|> (do /.monad
                                 [[var_id var/0] /.var
@@ -233,41 +234,41 @@
                                  _ (/.check var/0 var/1)]
                                 (/.peek var_id))
                               (/.result /.fresh_context)
-                              (case> (#try.Success #.None) true
+                              (case> {#try.Success #.None} true
                                      _ false))
                           (|> (do /.monad
                                 [[var_id var_type] /.var
                                  _ (/.bind expected var_id)]
                                 (/.peek var_id))
                               (/.result /.fresh_context)
-                              (case> (#try.Success (#.Some actual))
+                              (case> {#try.Success {#.Some actual}}
                                      (same? expected actual)
                                      
                                      _
                                      false)))))
           (do random.monad
             [nominal (random.ascii/upper 10)
-             .let [expected (#.Primitive nominal (list))]]
+             .let [expected {#.Primitive nominal (list)}]]
             (_.cover [/.read]
                      (case (/.result /.fresh_context
                                      (do /.monad
                                        [[var_id var_type] /.var
                                         _ (/.bind expected var_id)]
                                        (/.read var_id)))
-                       (#try.Success actual)
+                       {#try.Success actual}
                        (same? expected actual)
                        
                        _
                        false)))
           (do random.monad
             [nominal (random.ascii/upper 10)
-             .let [expected (#.Primitive nominal (list))]]
+             .let [expected {#.Primitive nominal (list)}]]
             (_.cover [/.unbound_type_var]
                      (case (/.result /.fresh_context
                                      (do /.monad
                                        [[var_id var_type] /.var]
                                        (/.read var_id)))
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.unbound_type_var error)
 
                        _
@@ -283,43 +284,43 @@
                     (list.empty? (value@ #.var_bindings /.fresh_context))))
       (_.cover [/.context]
                (and (case (/.result /.fresh_context /.context)
-                      (#try.Success actual)
+                      {#try.Success actual}
                       (same? /.fresh_context actual)
                       
-                      (#try.Failure error)
+                      {#try.Failure error}
                       false)
                     (case (/.result /.fresh_context
                                     (do /.monad
                                       [_ /.var]
                                       /.context))
-                      (#try.Success actual)
+                      {#try.Success 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)
+                      {#try.Failure error}
                       false)))
       (_.cover [/.existential]
                (case (/.result /.fresh_context
                                (do /.monad
                                  [_ /.existential]
                                  /.context))
-                 (#try.Success actual)
+                 {#try.Success 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)
+                 {#try.Failure error}
                  false))
       ))
 
 (def: succeeds?
   (All (_ a) (-> (/.Check a) Bit))
   (|>> (/.result /.fresh_context)
-       (case> (#try.Success _)
+       (case> {#try.Success _}
               true
 
-              (#try.Failure error)
+              {#try.Failure error}
               false)))
 
 (def: fails?
@@ -331,7 +332,7 @@
   (Random Type)
   (do random.monad
     [name (random.ascii/upper 10)]
-    (in (#.Primitive name (list)))))
+    (in {#.Primitive name (list)})))
 
 (def: (non_twins = random)
   (All (_ a) (-> (-> a a Bit) (Random a) (Random [a a])))
@@ -349,22 +350,22 @@
 (def: (handles_nominal_types! name/0 name/1 parameter/0 parameter/1)
   (-> Text Text Type Type Bit)
   (let [names_matter!
-        (and (..succeeds? (/.check (#.Primitive name/0 (list))
-                                   (#.Primitive name/0 (list))))
-             (..fails? (/.check (#.Primitive name/0 (list))
-                                (#.Primitive name/1 (list)))))
+        (and (..succeeds? (/.check {#.Primitive name/0 (list)}
+                                   {#.Primitive name/0 (list)}))
+             (..fails? (/.check {#.Primitive name/0 (list)}
+                                {#.Primitive name/1 (list)})))
 
         parameters_matter!
-        (and (..succeeds? (/.check (#.Primitive name/0 (list parameter/0))
-                                   (#.Primitive name/0 (list parameter/0))))
-             (..fails? (/.check (#.Primitive name/0 (list parameter/0))
-                                (#.Primitive name/0 (list parameter/1)))))
+        (and (..succeeds? (/.check {#.Primitive name/0 (list parameter/0)}
+                                   {#.Primitive name/0 (list parameter/0)}))
+             (..fails? (/.check {#.Primitive name/0 (list parameter/0)}
+                                {#.Primitive name/0 (list parameter/1)})))
 
         covariant_parameters!
-        (and (..succeeds? (/.check (#.Primitive name/0 (list Super))
-                                   (#.Primitive name/0 (list Sub))))
-             (..fails? (/.check (#.Primitive name/0 (list Sub))
-                                (#.Primitive name/0 (list Super)))))]
+        (and (..succeeds? (/.check {#.Primitive name/0 (list Super)}
+                                   {#.Primitive name/0 (list Sub)}))
+             (..fails? (/.check {#.Primitive name/0 (list Sub)}
+                                {#.Primitive name/0 (list Super)})))]
     (and names_matter!
          parameters_matter!
          covariant_parameters!)))
@@ -372,15 +373,15 @@
 (template [ ]
   [(def: ( name/0 name/1)
      (-> Text Text Bit)
-     (let [pair/0 ( (#.Primitive name/0 (list)) (#.Primitive name/0 (list)))
-           pair/1 ( (#.Primitive name/1 (list)) (#.Primitive name/1 (list)))
+     (let [pair/0 { {#.Primitive name/0 (list)} {#.Primitive name/0 (list)}}
+           pair/1 { {#.Primitive name/1 (list)} {#.Primitive name/1 (list)}}
            
            invariant!
            (and (..succeeds? (/.check pair/0 pair/0))
                 (..fails? (/.check pair/0 pair/1)))
 
-           super_pair ( Super Super)
-           sub_pair ( Sub Sub)
+           super_pair { Super Super}
+           sub_pair { Sub Sub}
            
            covariant!
            (and (..succeeds? (/.check super_pair sub_pair))
@@ -395,22 +396,22 @@
 (def: (handles_function_variance! nominal)
   (-> Type Bit)
   (let [functions_have_contravariant_inputs!
-        (..succeeds? (/.check (#.Function Sub nominal) (#.Function Super nominal)))
+        (..succeeds? (/.check {#.Function Sub nominal} {#.Function Super nominal}))
         
         functions_have_covariant_outputs!
-        (..succeeds? (/.check (#.Function nominal Super) (#.Function nominal Sub)))]
+        (..succeeds? (/.check {#.Function nominal Super} {#.Function nominal Sub}))]
     (and functions_have_contravariant_inputs!
          functions_have_covariant_outputs!)))
 
 (def: (verdict check)
   (All (_ _) (-> (/.Check _) (/.Check Bit)))
   (function (_ context)
-    (#try.Success [context (case (check context)
-                             (#try.Success _)
+    {#try.Success [context (case (check context)
+                             {#try.Success _}
                              true
 
-                             (#try.Failure _)
-                             false)])))
+                             {#try.Failure _}
+                             false)]}))
 
 (def: (build_ring tail_size)
   (-> Nat (/.Check [Type (List Type) Type]))
@@ -577,9 +578,9 @@
 
 (def: (names_do_not_affect_types! left_name right_name nominal)
   (-> Name Name Type Bit)
-  (and (..succeeds? (/.check (#.Named left_name Any) nominal))
-       (..succeeds? (/.check Any (#.Named right_name nominal)))
-       (..succeeds? (/.check (#.Named left_name Any) (#.Named right_name nominal)))))
+  (and (..succeeds? (/.check {#.Named left_name Any} nominal))
+       (..succeeds? (/.check Any {#.Named right_name nominal}))
+       (..succeeds? (/.check {#.Named left_name Any} {#.Named right_name nominal}))))
 
 ... TODO: Test all the crazy corner cases from /.check_apply
 (def: (handles_application! nominal/0 nominal/1)
@@ -637,20 +638,20 @@
    (function (_ dirty_type)
      (`` ($_ random.either
              (random\each (function (_ id)
-                            (function.constant (#.Ex id)))
+                            (function.constant {#.Ex id}))
                           random.nat)
              (do random.monad
                [module (random.ascii/upper 10)
                 short (random.ascii/upper 10)
                 anonymousT dirty_type]
                (in (function (_ holeT)
-                     (#.Named [module short] (anonymousT holeT)))))
+                     {#.Named [module short] (anonymousT holeT)})))
              (~~ (template []
                    [(do random.monad
                       [leftT dirty_type
                        rightT dirty_type]
                       (in (function (_ holeT)
-                            ( (leftT holeT) (rightT holeT)))))]
+                            { (leftT holeT) (rightT holeT)})))]
 
                    [#.Sum]
                    [#.Product]
@@ -661,15 +662,15 @@
                [name (random.ascii/upper 10)
                 parameterT dirty_type]
                (in (function (_ holeT)
-                     (#.Primitive name (list (parameterT holeT))))))
+                     {#.Primitive name (list (parameterT holeT))})))
              (~~ (template []
                    [(do [! random.monad]
                       [funcT dirty_type
                        argT dirty_type
                        body random.nat]
                       (in (function (_ holeT)
-                            ( (list (funcT holeT) (argT holeT))
-                                   (#.Parameter body)))))]
+                            { (list (funcT holeT) (argT holeT))
+                             {#.Parameter body}})))]
 
                    [#.UnivQ]
                    [#.ExQ]
@@ -704,7 +705,7 @@
   (do random.monad
     [primitive (random.ascii/upper 3)
      parameters (random.list parameters (primitive_type (-- parameters)))]
-    (in (#.Primitive primitive parameters))))
+    (in {#.Primitive primitive parameters})))
 
 (def: clean_type
   (Random Type)
@@ -726,16 +727,16 @@
   (do random.monad
     [primitive (random.ascii/upper 10)
      example ..clean_type]
-    (in (and (/.subsumes? (#.Primitive primitive (list))
-                          (#.Primitive primitive (list)))
-             (/.subsumes? (#.Primitive primitive (list .Any))
-                          (#.Primitive primitive (list example)))
-             (not (/.subsumes? (#.Primitive primitive (list example))
-                               (#.Primitive primitive (list .Any))))
-             (/.subsumes? (#.Primitive primitive (list example))
-                          (#.Primitive primitive (list .Nothing)))
-             (not (/.subsumes? (#.Primitive primitive (list .Nothing))
-                               (#.Primitive primitive (list example))))
+    (in (and (/.subsumes? {#.Primitive primitive (list)}
+                          {#.Primitive primitive (list)})
+             (/.subsumes? {#.Primitive primitive (list .Any)}
+                          {#.Primitive primitive (list example)})
+             (not (/.subsumes? {#.Primitive primitive (list example)}
+                               {#.Primitive primitive (list .Any)}))
+             (/.subsumes? {#.Primitive primitive (list example)}
+                          {#.Primitive primitive (list .Nothing)})
+             (not (/.subsumes? {#.Primitive primitive (list .Nothing)}
+                               {#.Primitive primitive (list example)}))
              ))))
 
 (def: for_subsumption|sum
@@ -743,14 +744,14 @@
   (do random.monad
     [left ..clean_type
      right ..clean_type]
-    (in (and (/.subsumes? (#.Sum .Any .Any)
-                          (#.Sum left right))
-             (not (/.subsumes? (#.Sum left right)
-                               (#.Sum .Any .Any)))
-             (/.subsumes? (#.Sum left right)
-                          (#.Sum .Nothing .Nothing))
-             (not (/.subsumes? (#.Sum .Nothing .Nothing)
-                               (#.Sum left right)))
+    (in (and (/.subsumes? {#.Sum .Any .Any}
+                          {#.Sum left right})
+             (not (/.subsumes? {#.Sum left right}
+                               {#.Sum .Any .Any}))
+             (/.subsumes? {#.Sum left right}
+                          {#.Sum .Nothing .Nothing})
+             (not (/.subsumes? {#.Sum .Nothing .Nothing}
+                               {#.Sum left right}))
              ))))
 
 (def: for_subsumption|product
@@ -758,14 +759,14 @@
   (do random.monad
     [left ..clean_type
      right ..clean_type]
-    (in (and (/.subsumes? (#.Product .Any .Any)
-                          (#.Product left right))
-             (not (/.subsumes? (#.Product left right)
-                               (#.Product .Any .Any)))
-             (/.subsumes? (#.Product left right)
-                          (#.Product .Nothing .Nothing))
-             (not (/.subsumes? (#.Product .Nothing .Nothing)
-                               (#.Product left right)))
+    (in (and (/.subsumes? {#.Product .Any .Any}
+                          {#.Product left right})
+             (not (/.subsumes? {#.Product left right}
+                               {#.Product .Any .Any}))
+             (/.subsumes? {#.Product left right}
+                          {#.Product .Nothing .Nothing})
+             (not (/.subsumes? {#.Product .Nothing .Nothing}
+                               {#.Product left right}))
              ))))
 
 (def: for_subsumption|function
@@ -773,12 +774,12 @@
   (do random.monad
     [left ..clean_type
      right ..clean_type]
-    (in (and (/.subsumes? (#.Function .Nothing .Any)
-                          (#.Function left right))
-             (not (/.subsumes? (#.Function left right)
-                               (#.Function .Nothing .Any)))
-             (not (/.subsumes? (#.Function .Any .Nothing)
-                               (#.Function left right)))
+    (in (and (/.subsumes? {#.Function .Nothing .Any}
+                          {#.Function left right})
+             (not (/.subsumes? {#.Function left right}
+                               {#.Function .Nothing .Any}))
+             (not (/.subsumes? {#.Function .Any .Nothing}
+                               {#.Function left right}))
              ))))
 
 (template [ ]
@@ -787,8 +788,8 @@
      (do random.monad
        [id random.nat
         example ..clean_type]
-       (in (not (or (/.subsumes? ( id) example)
-                    (/.subsumes? example ( id)))))))]
+       (in (not (or (/.subsumes? { id} example)
+                    (/.subsumes? example { id}))))))]
 
   [#.Var for_subsumption|variable]
   [#.Ex for_subsumption|existential]
@@ -809,10 +810,10 @@
     [module (random.ascii/upper 10)
      short (random.ascii/upper 10)
      example ..clean_type]
-    (in (and (/.subsumes? (#.Named [module short] example)
+    (in (and (/.subsumes? {#.Named [module short] example}
                           example)
              (/.subsumes? example
-                          (#.Named [module short] example))
+                          {#.Named [module short] example})
              ))))
 
 (def: for_subsumption
@@ -850,8 +851,8 @@
             (_.cover [/.result]
                      (case (/.result /.fresh_context
                                      (\ /.monad in expected))
-                       (#try.Success actual) (same? expected actual)
-                       (#try.Failure error) false)))
+                       {#try.Success actual} (same? expected actual)
+                       {#try.Failure error} false)))
           ..error_handling
           ..var
           ..context
diff --git a/stdlib/source/test/lux/type/dynamic.lux b/stdlib/source/test/lux/type/dynamic.lux
index b9787f8bf..695caa566 100644
--- a/stdlib/source/test/lux/type/dynamic.lux
+++ b/stdlib/source/test/lux/type/dynamic.lux
@@ -26,23 +26,23 @@
         ($_ _.and
             (_.cover [/.:dynamic /.:static]
                      (case (/.:static Nat (/.:dynamic expected))
-                       (#try.Success actual)
+                       {#try.Success actual}
                        (n.= expected actual)
                        
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false))
             (_.cover [/.wrong_type]
                      (case (/.:static Text (/.:dynamic expected))
-                       (#try.Success actual)
+                       {#try.Success actual}
                        false
                        
-                       (#try.Failure error)
+                       {#try.Failure error}
                        (exception.match? /.wrong_type error)))
             (_.cover [/.format]
                      (case (/.format (/.:dynamic expected))
-                       (#try.Success actual)
+                       {#try.Success actual}
                        (text\= (%.nat expected) actual)
                        
-                       (#try.Failure _)
+                       {#try.Failure _}
                        false))
             ))))
diff --git a/stdlib/source/test/lux/type/poly/equivalence.lux b/stdlib/source/test/lux/type/poly/equivalence.lux
index 63854e535..738578386 100644
--- a/stdlib/source/test/lux/type/poly/equivalence.lux
+++ b/stdlib/source/test/lux/type/poly/equivalence.lux
@@ -25,15 +25,15 @@
 
 (type: Variant
   (.Variant
-   (#Case0 Bit)
-   (#Case1 Int)
-   (#Case2 Frac)))
+   {#Case0 Bit}
+   {#Case1 Int}
+   {#Case2 Frac}))
 
 (type: Recursive
   (Rec Recursive
     (.Variant
-     (#Number Frac)
-     (#Addition Frac Recursive))))
+     {#Number Frac}
+     {#Addition Frac Recursive})))
 
 (type: Record
   (.Record
diff --git a/stdlib/source/test/lux/type/poly/json.lux b/stdlib/source/test/lux/type/poly/json.lux
index 0f78aa976..0332e7d00 100644
--- a/stdlib/source/test/lux/type/poly/json.lux
+++ b/stdlib/source/test/lux/type/poly/json.lux
@@ -50,15 +50,15 @@
 
 (type: Variant
   (.Variant
-   (#Bit Bit)
-   (#Text Text)
-   (#Frac Frac)))
+   {#Bit Bit}
+   {#Text Text}
+   {#Frac Frac}))
 
 (type: Recursive
   (Rec Recursive
     (.Variant
-     (#Number Frac)
-     (#Addition Frac Recursive))))
+     {#Number Frac}
+     {#Addition Frac Recursive})))
 
 (type: Record
   (.Record
diff --git a/stdlib/source/test/lux/type/refinement.lux b/stdlib/source/test/lux/type/refinement.lux
index 1b2c17e36..bebde21e2 100644
--- a/stdlib/source/test/lux/type/refinement.lux
+++ b/stdlib/source/test/lux/type/refinement.lux
@@ -39,7 +39,7 @@
                    ($_ _.and
                        (_.cover [/.refiner]
                                 (case (/.refiner predicate raw)
-                                  (#.Some refined)
+                                  {#.Some refined}
                                   (predicate raw)
                                   
                                   #.None
diff --git a/stdlib/source/test/lux/type/resource.lux b/stdlib/source/test/lux/type/resource.lux
index e8c4b0fba..f78fb8473 100644
--- a/stdlib/source/test/lux/type/resource.lux
+++ b/stdlib/source/test/lux/type/resource.lux
@@ -160,13 +160,13 @@
   (monad.do meta.monad
     [[_ _ exception] (meta.export exception)]
     (function (_ compiler)
-      (#.Right [compiler
+      {#.Right [compiler
                 (list (code.bit (case ((macro.single_expansion to_expand) compiler)
-                                  (#try.Success _)
+                                  {#try.Success _}
                                   false
                                   
-                                  (#try.Failure error)
-                                  true)))]))))
+                                  {#try.Failure error}
+                                  true)))]})))
 
 (def: .public test
   Test
diff --git a/stdlib/source/test/lux/world/console.lux b/stdlib/source/test/lux/world/console.lux
index 3f54d54a7..eaf882016 100644
--- a/stdlib/source/test/lux/world/console.lux
+++ b/stdlib/source/test/lux/world/console.lux
@@ -41,12 +41,12 @@
    (def: (on_write message [dead? content])
      (if dead?
        (exception.except ..dead [])
-       (#try.Success [dead? (format content message)])))
+       {#try.Success [dead? (format content message)]}))
 
    (def: (on_close [dead? content])
      (if dead?
        (exception.except ..dead [])
-       (#try.Success [true content])))))
+       {#try.Success [true content]}))))
 
 (def: .public test
   Test
diff --git a/stdlib/source/test/lux/world/file/watch.lux b/stdlib/source/test/lux/world/file/watch.lux
index aee4f4922..5ad722723 100644
--- a/stdlib/source/test/lux/world/file/watch.lux
+++ b/stdlib/source/test/lux/world/file/watch.lux
@@ -76,16 +76,16 @@
                ?stop (\ watcher stop directory)]
               (_.cover' [/.not_being_watched]
                         (and (case ?concern
-                               (#try.Failure error)
+                               {#try.Failure error}
                                (exception.match? /.not_being_watched error)
 
-                               (#try.Success _)
+                               {#try.Success _}
                                false)
                              (case ?stop
-                               (#try.Failure error)
+                               {#try.Failure error}
                                (exception.match? /.not_being_watched error)
 
-                               (#try.Success _)
+                               {#try.Success _}
                                false)))))
         )))
 
@@ -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.after 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 [])]
@@ -191,9 +191,9 @@
                   [started? ( \ watcher start /.all directory)]
                   (_.cover' [/.cannot_poll_a_non_existent_directory]
                             (case started?
-                              (#try.Success _)
+                              {#try.Success _}
                               false
                               
-                              (#try.Failure error)
+                              {#try.Failure error}
                               (exception.match? /.cannot_poll_a_non_existent_directory error))))))
           )))
diff --git a/stdlib/source/test/lux/world/net/http/client.lux b/stdlib/source/test/lux/world/net/http/client.lux
index 1f80ba26b..9a789fd70 100644
--- a/stdlib/source/test/lux/world/net/http/client.lux
+++ b/stdlib/source/test/lux/world/net/http/client.lux
@@ -59,11 +59,11 @@
                                        data (|> value
                                                 (\ nat.decimal encoded)
                                                 (\ utf8.codec encoded))]
-                                   (#try.Success [//status.ok
+                                   {#try.Success [//status.ok
                                                   [#//.headers headers
                                                    #//.body (function (_ ?wanted_bytes)
-                                                              (io.io (#try.Success [(binary.size data)
-                                                                                    data])))]]))))))]]
+                                                              (io.io {#try.Success [(binary.size data)
+                                                                                    data]}))]]})))))]]
         (`` ($_ _.and
                 (~~ (template [ ]
                       [(_.cover []
diff --git a/stdlib/source/test/lux/world/program.lux b/stdlib/source/test/lux/world/program.lux
index eafafecaa..c498a939b 100644
--- a/stdlib/source/test/lux/world/program.lux
+++ b/stdlib/source/test/lux/world/program.lux
@@ -70,9 +70,9 @@
                        (|> unknown
                            (\ program variable)
                            io.run!
-                           (case> (#try.Success _)
+                           (case> {#try.Success _}
                                   false
                                   
-                                  (#try.Failure error)
+                                  {#try.Failure error}
                                   (exception.match? /.unknown_environment_variable error)))))
             ))))
diff --git a/stdlib/source/test/lux/world/shell.lux b/stdlib/source/test/lux/world/shell.lux
index 8d98b5f1f..daa0a5e11 100644
--- a/stdlib/source/test/lux/world/shell.lux
+++ b/stdlib/source/test/lux/world/shell.lux
@@ -44,22 +44,22 @@
    (def: (on_error dead?)
      (if dead?
        (exception.except ..dead [])
-       (#try.Success [dead? ""])))
+       {#try.Success [dead? ""]}))
    
    (def: (on_write message dead?)
      (if dead?
        (exception.except ..dead [])
-       (#try.Success dead?)))
+       {#try.Success dead?}))
 
    (def: (on_destroy dead?)
      (if dead?
        (exception.except ..dead [])
-       (#try.Success true)))
+       {#try.Success true}))
 
    (def: (on_await dead?)
      (if dead?
        (exception.except ..dead [])
-       (#try.Success [true /.normal])))))
+       {#try.Success [true /.normal]}))))
 
 (def: (io_shell command oops input destruction exit)
   (-> /.Command Text Text Text /.Exit (/.Shell IO))
@@ -70,15 +70,15 @@
          (: (/.Process IO))
          (implementation
           (def: (read _)
-            (io.io (#try.Success command)))
+            (io.io {#try.Success command}))
           (def: (error _)
-            (io.io (#try.Success oops)))
+            (io.io {#try.Success oops}))
           (def: (write message)
-            (io.io (#try.Failure message)))
+            (io.io {#try.Failure message}))
           (def: (destroy _)
-            (io.io (#try.Failure destruction)))
+            (io.io {#try.Failure destruction}))
           (def: (await _)
-            (io.io (#try.Success exit))))))))
+            (io.io {#try.Success exit})))))))
 
 (def: .public test
   Test
@@ -103,20 +103,20 @@
                               error (\ process error [])
                               wrote! (do !
                                        [write (\ process write input)]
-                                       (in (#try.Success (case write
-                                                           (#try.Success _)
+                                       (in {#try.Success (case write
+                                                           {#try.Success _}
                                                            false
                                                            
-                                                           (#try.Failure write)
-                                                           (text\= input write)))))
+                                                           {#try.Failure write}
+                                                           (text\= input write))}))
                               destroyed! (do !
                                            [destroy (\ process destroy [])]
-                                           (in (#try.Success (case destroy
-                                                               (#try.Success _)
+                                           (in {#try.Success (case destroy
+                                                               {#try.Success _}
                                                                false
                                                                
-                                                               (#try.Failure destroy)
-                                                               (text\= destruction destroy)))))
+                                                               {#try.Failure destroy}
+                                                               (text\= destruction destroy))}))
                               await (\ process await [])]
                              (in (and (text\= command read)
                                       (text\= oops error)
-- 
cgit v1.2.3