From 891b1cfc82322f8017f0a4f6b707d6fe52024545 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Fri, 3 Sep 2021 21:51:30 -0400 Subject: Unified tuple and record syntax. --- .../book/the_lux_programming_language/index.md | 4 +- licentia/project.lux | 4 +- licentia/source/program/licentia/document.lux | 5 +- licentia/source/program/licentia/input.lux | 6 +- licentia/source/program/licentia/license.lux | 82 +++--- .../source/program/licentia/license/addendum.lux | 4 +- .../source/program/licentia/license/copyright.lux | 5 +- .../source/program/licentia/license/definition.lux | 9 +- licentia/source/program/licentia/license/time.lux | 5 +- licentia/source/program/licentia/output.lux | 48 ++-- licentia/source/test/licentia.lux | 4 +- lux-bootstrapper/src/lux/analyser.clj | 4 - lux-bootstrapper/src/lux/analyser/case.clj | 86 +++--- lux-bootstrapper/src/lux/analyser/lux.clj | 30 ++- lux-bootstrapper/src/lux/analyser/record.clj | 81 +++--- lux-bootstrapper/src/lux/base.clj | 22 +- lux-cl/source/program.lux | 8 +- lux-js/project.lux | 8 +- lux-js/source/program.lux | 8 +- lux-jvm/source/luxc/lang/directive/jvm.lux | 8 +- lux-jvm/source/luxc/lang/host/jvm.lux | 32 ++- lux-jvm/source/program.lux | 12 +- lux-lua/project.lux | 4 +- lux-lua/source/program.lux | 12 +- lux-php/source/program.lux | 10 +- lux-python/project.lux | 4 +- lux-python/source/program.lux | 8 +- lux-r/source/program.lux | 8 +- lux-ruby/project.lux | 4 +- lux-ruby/source/program.lux | 8 +- lux-scheme/source/program.lux | 8 +- stdlib/commands.md | 4 + stdlib/project.lux | 28 +- stdlib/source/documentation/lux.lux | 5 +- stdlib/source/documentation/lux/type/poly.lux | 4 +- stdlib/source/library/lux.lux | 298 +++++++++++---------- .../source/library/lux/abstract/monad/indexed.lux | 8 +- .../source/library/lux/control/concatenative.lux | 4 +- .../library/lux/control/concurrency/actor.lux | 28 +- .../library/lux/control/concurrency/atom.lux | 12 +- .../library/lux/control/concurrency/semaphore.lux | 16 +- .../source/library/lux/control/concurrency/stm.lux | 12 +- .../library/lux/control/concurrency/thread.lux | 8 +- stdlib/source/library/lux/control/exception.lux | 8 +- .../source/library/lux/control/function/mutual.lux | 8 +- stdlib/source/library/lux/control/parser/text.lux | 16 +- .../source/library/lux/control/security/policy.lux | 8 +- stdlib/source/library/lux/control/writer.lux | 4 +- .../library/lux/data/collection/dictionary.lux | 8 +- .../lux/data/collection/dictionary/ordered.lux | 16 +- .../source/library/lux/data/collection/queue.lux | 16 +- stdlib/source/library/lux/data/collection/row.lux | 12 +- stdlib/source/library/lux/data/collection/tree.lux | 20 +- .../library/lux/data/collection/tree/finger.lux | 12 +- .../library/lux/data/collection/tree/zipper.lux | 54 ++-- stdlib/source/library/lux/data/color.lux | 64 ++--- stdlib/source/library/lux/data/color/named.lux | 4 +- stdlib/source/library/lux/data/format/css.lux | 4 +- stdlib/source/library/lux/data/format/css/font.lux | 8 +- .../library/lux/data/format/css/selector.lux | 4 +- .../source/library/lux/data/format/css/value.lux | 4 +- stdlib/source/library/lux/data/format/html.lux | 16 +- stdlib/source/library/lux/data/format/tar.lux | 36 +-- stdlib/source/library/lux/data/store.lux | 8 +- stdlib/source/library/lux/data/trace.lux | 10 +- stdlib/source/library/lux/documentation.lux | 22 +- stdlib/source/library/lux/extension.lux | 4 +- stdlib/source/library/lux/ffi.js.lux | 4 +- stdlib/source/library/lux/ffi.jvm.lux | 77 +++--- stdlib/source/library/lux/ffi.lua.lux | 4 +- stdlib/source/library/lux/ffi.old.lux | 94 ++++--- stdlib/source/library/lux/ffi.php.lux | 4 +- stdlib/source/library/lux/ffi.py.lux | 4 +- stdlib/source/library/lux/ffi.rb.lux | 4 +- stdlib/source/library/lux/ffi.scm.lux | 4 +- stdlib/source/library/lux/locale/language.lux | 8 +- stdlib/source/library/lux/locale/territory.lux | 8 +- stdlib/source/library/lux/macro/syntax/check.lux | 4 +- .../library/lux/macro/syntax/declaration.lux | 4 +- .../source/library/lux/macro/syntax/definition.lux | 8 +- stdlib/source/library/lux/macro/syntax/input.lux | 4 +- stdlib/source/library/lux/macro/template.lux | 8 +- stdlib/source/library/lux/math/modular.lux | 12 +- stdlib/source/library/lux/math/number/complex.lux | 84 +++--- stdlib/source/library/lux/math/number/frac.lux | 2 +- stdlib/source/library/lux/math/number/ratio.lux | 20 +- stdlib/source/library/lux/meta.lux | 51 ++-- stdlib/source/library/lux/meta/location.lux | 4 +- stdlib/source/library/lux/target/common_lisp.lux | 8 +- stdlib/source/library/lux/target/jvm/attribute.lux | 12 +- .../library/lux/target/jvm/attribute/code.lux | 4 +- .../lux/target/jvm/attribute/code/exception.lux | 4 +- stdlib/source/library/lux/target/jvm/bytecode.lux | 20 +- .../lux/target/jvm/bytecode/environment.lux | 8 +- .../lux/target/jvm/bytecode/environment/limit.lux | 8 +- stdlib/source/library/lux/target/jvm/class.lux | 8 +- stdlib/source/library/lux/target/jvm/constant.lux | 8 +- .../library/lux/target/jvm/constant/pool.lux | 8 +- stdlib/source/library/lux/target/jvm/field.lux | 8 +- stdlib/source/library/lux/target/jvm/method.lux | 12 +- stdlib/source/library/lux/target/jvm/type.lux | 4 +- stdlib/source/library/lux/target/php.lux | 8 +- stdlib/source/library/lux/target/python.lux | 4 +- stdlib/source/library/lux/target/ruby.lux | 4 +- stdlib/source/library/lux/target/scheme.lux | 4 +- stdlib/source/library/lux/test.lux | 12 +- stdlib/source/library/lux/time.lux | 8 +- stdlib/source/library/lux/time/date.lux | 8 +- stdlib/source/library/lux/tool/compiler.lux | 8 +- .../library/lux/tool/compiler/default/init.lux | 24 +- .../library/lux/tool/compiler/default/platform.lux | 16 +- .../library/lux/tool/compiler/language/lux.lux | 4 +- .../lux/tool/compiler/language/lux/analysis.lux | 28 +- .../lux/tool/compiler/language/lux/directive.lux | 24 +- .../lux/tool/compiler/language/lux/generation.lux | 8 +- .../tool/compiler/language/lux/phase/analysis.lux | 27 +- .../compiler/language/lux/phase/analysis/case.lux | 126 +++++---- .../language/lux/phase/analysis/module.lux | 4 +- .../compiler/language/lux/phase/analysis/scope.lux | 8 +- .../language/lux/phase/analysis/structure.lux | 207 ++++++++------ .../tool/compiler/language/lux/phase/extension.lux | 4 +- .../language/lux/phase/extension/analysis/jvm.lux | 16 +- .../language/lux/phase/extension/directive/jvm.lux | 4 +- .../language/lux/phase/extension/directive/lux.lux | 9 +- .../language/lux/phase/generation/php/runtime.lux | 4 +- .../compiler/language/lux/phase/synthesis/case.lux | 8 +- .../language/lux/phase/synthesis/function.lux | 12 +- .../compiler/language/lux/phase/synthesis/loop.lux | 4 +- .../lux/tool/compiler/language/lux/synthesis.lux | 20 +- .../library/lux/tool/compiler/meta/archive.lux | 12 +- .../lux/tool/compiler/meta/archive/artifact.lux | 20 +- .../lux/tool/compiler/meta/archive/descriptor.lux | 4 +- .../lux/tool/compiler/meta/archive/document.lux | 8 +- .../lux/tool/compiler/meta/archive/signature.lux | 4 +- .../lux/tool/compiler/meta/cache/dependency.lux | 4 +- .../library/lux/tool/compiler/meta/io/context.lux | 4 +- .../lux/tool/compiler/meta/packager/scheme.lux | 8 +- stdlib/source/library/lux/tool/interpreter.lux | 8 +- stdlib/source/library/lux/type.lux | 4 +- stdlib/source/library/lux/type/abstract.lux | 4 +- stdlib/source/library/lux/type/check.lux | 4 +- stdlib/source/library/lux/type/implicit.lux | 8 +- stdlib/source/library/lux/type/quotient.lux | 8 +- stdlib/source/library/lux/type/refinement.lux | 12 +- stdlib/source/library/lux/world/db/jdbc.lux | 8 +- stdlib/source/library/lux/world/file.lux | 8 +- stdlib/source/library/lux/world/file/watch.lux | 16 +- stdlib/source/library/lux/world/input/keyboard.lux | 8 +- stdlib/source/library/lux/world/net.lux | 4 +- stdlib/source/library/lux/world/net/http.lux | 20 +- .../source/library/lux/world/net/http/client.lux | 4 +- stdlib/source/library/lux/world/net/http/mime.lux | 4 +- .../source/library/lux/world/net/http/response.lux | 8 +- .../library/lux/world/output/video/resolution.lux | 8 +- .../library/lux/world/service/authentication.lux | 9 +- stdlib/source/library/lux/world/service/crud.lux | 14 +- .../source/library/lux/world/service/inventory.lux | 14 +- .../source/library/lux/world/service/journal.lux | 18 +- stdlib/source/library/lux/world/service/mail.lux | 5 +- stdlib/source/program/aedifex/artifact.lux | 4 +- .../program/aedifex/artifact/snapshot/stamp.lux | 4 +- .../program/aedifex/artifact/snapshot/version.lux | 4 +- .../aedifex/artifact/snapshot/version/value.lux | 4 +- .../source/program/aedifex/artifact/time/time.lux | 4 +- .../source/program/aedifex/artifact/versioning.lux | 8 +- stdlib/source/program/aedifex/command/deploy.lux | 4 +- stdlib/source/program/aedifex/command/install.lux | 4 +- stdlib/source/program/aedifex/dependency.lux | 4 +- .../program/aedifex/dependency/deployment.lux | 8 +- .../program/aedifex/dependency/resolution.lux | 8 +- stdlib/source/program/aedifex/format.lux | 33 +-- .../source/program/aedifex/metadata/artifact.lux | 12 +- .../source/program/aedifex/metadata/snapshot.lux | 22 +- stdlib/source/program/aedifex/package.lux | 8 +- stdlib/source/program/aedifex/parser.lux | 30 +-- stdlib/source/program/aedifex/pom.lux | 6 +- stdlib/source/program/aedifex/profile.lux | 24 +- .../source/program/aedifex/repository/identity.lux | 4 +- stdlib/source/program/aedifex/runtime.lux | 8 +- stdlib/source/program/compositor/export.lux | 8 +- stdlib/source/program/compositor/static.lux | 4 +- stdlib/source/program/scriptum.lux | 17 +- .../specification/compositor/generation/case.lux | 4 +- .../specification/compositor/generation/common.lux | 8 +- .../compositor/generation/function.lux | 28 +- .../compositor/generation/structure.lux | 4 +- .../aedifex/artifact/snapshot/version/value.lux | 4 +- stdlib/source/test/aedifex/cache.lux | 4 +- stdlib/source/test/aedifex/command/build.lux | 12 +- stdlib/source/test/aedifex/command/deps.lux | 8 +- .../source/test/aedifex/dependency/deployment.lux | 4 +- .../source/test/aedifex/dependency/resolution.lux | 32 +-- stdlib/source/test/aedifex/metadata/artifact.lux | 8 +- stdlib/source/test/aedifex/metadata/snapshot.lux | 4 +- stdlib/source/test/aedifex/repository/remote.lux | 20 +- stdlib/source/test/lux.lux | 44 +-- .../source/test/lux/control/concurrency/actor.lux | 4 +- stdlib/source/test/lux/data/collection/tree.lux | 4 +- stdlib/source/test/lux/data/format/tar.lux | 40 +-- stdlib/source/test/lux/locale/language.lux | 8 +- stdlib/source/test/lux/locale/territory.lux | 8 +- stdlib/source/test/lux/macro.lux | 18 +- stdlib/source/test/lux/macro/syntax/check.lux | 4 +- stdlib/source/test/lux/macro/syntax/definition.lux | 10 +- stdlib/source/test/lux/meta.lux | 160 +++++------ stdlib/source/test/lux/target/jvm.lux | 44 +-- .../compiler/language/lux/phase/synthesis/case.lux | 28 +- .../language/lux/phase/synthesis/function.lux | 93 +++---- .../compiler/language/lux/phase/synthesis/loop.lux | 28 +- .../language/lux/phase/synthesis/variable.lux | 8 +- stdlib/source/test/lux/type/poly/equivalence.lux | 4 +- stdlib/source/test/lux/type/poly/json.lux | 4 +- stdlib/source/test/lux/world/net/http/client.lux | 4 +- 213 files changed, 1869 insertions(+), 1747 deletions(-) diff --git a/documentation/book/the_lux_programming_language/index.md b/documentation/book/the_lux_programming_language/index.md index 327eab5cc..4351f0be7 100644 --- a/documentation/book/the_lux_programming_language/index.md +++ b/documentation/book/the_lux_programming_language/index.md @@ -1,7 +1,7 @@ # Table of contents * [Introduction](introduction.md) -* [Chapter 1: Getting started](chapter_*md) +* [Chapter 1: Getting started](chapter_1.md) _Where you will learn how to set up a development environment for Lux._ * [Chapter 2: The basics](chapter_2.md) _Where you will learn the fundamentals of Lux programming._ @@ -21,7 +21,7 @@ _Where we go meta. For real._ * [Chapter 10: Code and macros](chapter_10.md) _Where magic turns into science._ -* [Chapter 11: Syntax macros](chapter_1*md) +* [Chapter 11: Syntax macros](chapter_11.md) _Where science turns into magic once more._ * [Chapter 12: I/O](chapter_12.md) _Where you will learn how to interact with the outside world._ diff --git a/licentia/project.lux b/licentia/project.lux index 93f43aa47..6560fdf56 100644 --- a/licentia/project.lux +++ b/licentia/project.lux @@ -1,4 +1,4 @@ -{#identity ["com.github.luxlang" "licentia" "0.6.0-SNAPSHOT"] +[#identity ["com.github.luxlang" "licentia" "0.6.0-SNAPSHOT"] #description "A program for producing free/open-source/reciprocal licenses." #deploy_repositories {"snapshots" "https://oss.sonatype.org/content/repositories/snapshots/" @@ -15,4 +15,4 @@ ... #compiler ["com.github.luxlang" "lux-ruby" "0.6.0-SNAPSHOT" "jar"] #program "program/licentia" - #test "test/licentia"} + #test "test/licentia"] diff --git a/licentia/source/program/licentia/document.lux b/licentia/source/program/licentia/document.lux index 7b159b8f5..07a4e2b83 100644 --- a/licentia/source/program/licentia/document.lux +++ b/licentia/source/program/licentia/document.lux @@ -40,8 +40,9 @@ ) (type: .public Section - {#title Text - #content Text}) + (Record + [#title Text + #content Text])) (def: .public (section value) (-> Section Text) diff --git a/licentia/source/program/licentia/input.lux b/licentia/source/program/licentia/input.lux index ede659fcf..f6a438e7f 100644 --- a/licentia/source/program/licentia/input.lux +++ b/licentia/source/program/licentia/input.lux @@ -67,8 +67,8 @@ (do <>.monad [start (.field "start" ..amount) end (.field "end" ..amount) - #let [period {#time.start start - #time.end end}] + #let [period [#time.start start + #time.end end]] _ (<>.assert (exception.construct ..invalid_period [period]) (n.<= end start))] (wrap period)))) @@ -163,6 +163,6 @@ (.field "extension" ..extension) (.field "black-lists" (.array (<>.some ..black_list))) (.field "attribution" (.nullable ..attribution)) - (<>.default {#//.commons_clause? false} + (<>.default [#//.commons_clause? false] (.field "addendum" ..addendum)) ))) diff --git a/licentia/source/program/licentia/license.lux b/licentia/source/program/licentia/license.lux index 9060915a3..052ad1f05 100644 --- a/licentia/source/program/licentia/license.lux +++ b/licentia/source/program/licentia/license.lux @@ -6,58 +6,70 @@ ["#." copyright]]) (type: .public Identification - {#name Text - #version Text}) + (Record + [#name Text + #version Text])) (type: .public Termination - {#patent_retaliation? Bit - #termination_period Days - #grace_period Days}) + (Record + [#patent_retaliation? Bit + #termination_period Days + #grace_period Days])) (type: .public Liability - {#can_accept? Bit - #disclaim_high_risk? Bit}) + (Record + [#can_accept? Bit + #disclaim_high_risk? Bit])) (type: .public Distribution - {#can_re_license? Bit - #can_multi_license? Bit}) + (Record + [#can_re_license? Bit + #can_multi_license? Bit])) (type: .public Commercial - {#can_sell? Bit - #require_contributor_credit? Bit - #allow_contributor_endorsement? Bit}) + (Record + [#can_sell? Bit + #require_contributor_credit? Bit + #allow_contributor_endorsement? Bit])) (type: .public Extension - {#same_license? Bit - #must_be_distinguishable? Bit - #notification_period (Maybe (Period Months)) - #must_describe_modifications? Bit}) + (Record + [#same_license? Bit + #must_be_distinguishable? Bit + #notification_period (Maybe (Period Months)) + #must_describe_modifications? Bit])) -(type: .public Entity Text) +(type: .public Entity + Text) (type: .public Black_List - {#justification (Maybe Text) - #entities (List Entity)}) + (Record + [#justification (Maybe Text) + #entities (List Entity)])) -(type: .public URL Text) +(type: .public URL + Text) (type: .public Attribution - {#copyright_notice Text - #phrase (Maybe Text) - #url URL - #image (Maybe URL)}) + (Record + [#copyright_notice Text + #phrase (Maybe Text) + #url URL + #image (Maybe URL)])) (type: .public Addendum - {#commons_clause? Bit}) + (Record + [#commons_clause? Bit])) (type: .public License - {#copyright_holders (List /copyright.Holder) - #identification (Maybe Identification) - #termination Termination - #liability Liability - #distribution Distribution - #commercial Commercial - #extension Extension - #black_lists (List Black_List) - #attribution (Maybe Attribution) - #addendum Addendum}) + (Record + [#copyright_holders (List /copyright.Holder) + #identification (Maybe Identification) + #termination Termination + #liability Liability + #distribution Distribution + #commercial Commercial + #extension Extension + #black_lists (List Black_List) + #attribution (Maybe Attribution) + #addendum Addendum])) diff --git a/licentia/source/program/licentia/license/addendum.lux b/licentia/source/program/licentia/license/addendum.lux index a3518f68e..1fffda746 100644 --- a/licentia/source/program/licentia/license/addendum.lux +++ b/licentia/source/program/licentia/license/addendum.lux @@ -19,8 +19,8 @@ (-> Addendum Text) (`` (format (~~ (template [ <condition> <content>] [(if <condition> - ($.block ($.section {#$.title <title> - #$.content <content>})) + ($.block ($.section [#$.title <title> + #$.content <content>])) "")] ["“Commons Clause” License Condition v1.0" diff --git a/licentia/source/program/licentia/license/copyright.lux b/licentia/source/program/licentia/license/copyright.lux index 7c2d838c1..3d48653b6 100644 --- a/licentia/source/program/licentia/license/copyright.lux +++ b/licentia/source/program/licentia/license/copyright.lux @@ -5,5 +5,6 @@ [time (#+ Year Period)]]) (type: .public Holder - {#name Text - #period (Period Year)}) + (Record + [#name Text + #period (Period Year)])) diff --git a/licentia/source/program/licentia/license/definition.lux b/licentia/source/program/licentia/license/definition.lux index 81be7ffc6..0765a488f 100644 --- a/licentia/source/program/licentia/license/definition.lux +++ b/licentia/source/program/licentia/license/definition.lux @@ -8,8 +8,9 @@ ["$" document]]) (type: .public Definition - {#term Text - #meaning Text}) + (Record + [#term Text + #meaning Text])) (def: not_a_contribution_notice (format text.double_quote "Not a Contribution" text.double_quote)) @@ -47,8 +48,8 @@ (template [<name> <term> <meaning>] [(def: .public <name> Definition - {#term <term> - #meaning <meaning>})] + [#term <term> + #meaning <meaning>])] [license "This License" ($.paragraph (list (format "the terms and conditions defined in this document")))] diff --git a/licentia/source/program/licentia/license/time.lux b/licentia/source/program/licentia/license/time.lux index de6d613b7..e19f7ef16 100644 --- a/licentia/source/program/licentia/license/time.lux +++ b/licentia/source/program/licentia/license/time.lux @@ -12,5 +12,6 @@ Nat) (type: .public (Period a) - {#start a - #end a}) + (Record + [#start a + #end a])) diff --git a/licentia/source/program/licentia/output.lux b/licentia/source/program/licentia/output.lux index c4dd78214..03380ece9 100644 --- a/licentia/source/program/licentia/output.lux +++ b/licentia/source/program/licentia/output.lux @@ -48,8 +48,8 @@ (def: .public (grant termination) (-> Termination Text) (`` (format (~~ (template [<title> <content>] - [($.block ($.section {#$.title <title> - #$.content <content>}))] + [($.block ($.section [#$.title <title> + #$.content <content>]))] ["Grant of Copyright License" grant.copyright] @@ -70,8 +70,8 @@ (def: .public limitation Text (`` (format (~~ (template [<title> <content>] - [($.block ($.section {#$.title <title> - #$.content <content>}))] + [($.block ($.section [#$.title <title> + #$.content <content>]))] ["Limitations on Grant Scope" limitation.grant] @@ -85,8 +85,8 @@ (def: .public assurance Text (`` (format (~~ (template [<title> <content>] - [($.block ($.section {#$.title <title> - #$.content <content>}))] + [($.block ($.section [#$.title <title> + #$.content <content>]))] ["Representation" assurance.representation] @@ -98,8 +98,8 @@ (-> Liability Text) (`` (format (~~ (template [<title> <condition> <content>] [(if <condition> - ($.block ($.section {#$.title <title> - #$.content <content>})) + ($.block ($.section [#$.title <title> + #$.content <content>])) "")] ["Disclaimer of Warranty" @@ -126,8 +126,8 @@ (-> Distribution Text) (`` (format (~~ (template [<title> <condition> <content>] [(if <condition> - ($.block ($.section {#$.title <title> - #$.content <content>})) + ($.block ($.section [#$.title <title> + #$.content <content>])) "")] [(format "Distribution of a " _.source_code_form) @@ -147,8 +147,8 @@ (-> Commercial Text) (`` (format (~~ (template [<title> <condition> <content>] [(if <condition> - ($.block ($.section {#$.title <title> - #$.content <content>})) + ($.block ($.section [#$.title <title> + #$.content <content>])) "")] ["Non-Commerciality" @@ -174,8 +174,8 @@ [false ""])] (`` (format (~~ (template [<condition> <title> <content>] [(if <condition> - ($.block ($.section {#$.title <title> - #$.content <content>})) + ($.block ($.section [#$.title <title> + #$.content <content>])) "")] [(value@ #license.same_license? value) "License Retention" @@ -216,8 +216,8 @@ (-> Bit Text) (`` (format (~~ (template [<title> <condition> <content>] [(if <condition> - ($.block ($.section {#$.title <title> - #$.content <content>})) + ($.block ($.section [#$.title <title> + #$.content <content>])) "")] ["Entire Agreement" @@ -271,25 +271,25 @@ "" black_lists - ($.block ($.section {#$.title (format "Denial of " _.license) + ($.block ($.section [#$.title (format "Denial of " _.license) #$.content (|> black_lists (list\each black_list.black_list) - (text.interposed ..black_list_spacing))}))) + (text.interposed ..black_list_spacing))]))) - ($.section {#$.title "Definitions" + ($.section [#$.title "Definitions" #$.content (|> definition.all (list\each (|>> ..definition $.block)) - (text.interposed ""))}) + (text.interposed ""))]) - ($.block ($.section {#$.title (format "Acceptance of " _.license) - #$.content limitation.acceptance})) + ($.block ($.section [#$.title (format "Acceptance of " _.license) + #$.content limitation.acceptance])) (..grant (value@ #license.termination value)) ..limitation ..assurance - ($.block ($.section {#$.title (format _.submission " of " ($.plural _.contribution)) - #$.content submission.contribution})) + ($.block ($.section [#$.title (format _.submission " of " ($.plural _.contribution)) + #$.content submission.contribution])) (..liability (value@ #license.liability value)) (..distribution (value@ #license.distribution value)) diff --git a/licentia/source/test/licentia.lux b/licentia/source/test/licentia.lux index e9178a996..7238b6c71 100644 --- a/licentia/source/test/licentia.lux +++ b/licentia/source/test/licentia.lux @@ -53,8 +53,8 @@ end (\ ! each (|>> (n.% wiggle_room) (n.max 1)) random.nat)] - (wrap {#time.start start - #time.end end}))) + (wrap [#time.start start + #time.end end]))) (def: copyright_holder (Random copyright.Holder) diff --git a/lux-bootstrapper/src/lux/analyser.clj b/lux-bootstrapper/src/lux/analyser.clj index ccd0144f6..27323be2b 100644 --- a/lux-bootstrapper/src/lux/analyser.clj +++ b/lux-bootstrapper/src/lux/analyser.clj @@ -87,10 +87,6 @@ (return (&/|list (&&/|meta exo-type location (&&/$text ?value))))) (&/$Tuple ?elems) - (&/with-analysis-meta location exo-type - (&&lux/analyse-tuple analyse (&/$Right exo-type) ?elems)) - - (&/$Record ?elems) (&/with-analysis-meta location exo-type (&&lux/analyse-record analyse exo-type ?elems)) diff --git a/lux-bootstrapper/src/lux/analyser/case.clj b/lux-bootstrapper/src/lux/analyser/case.clj index 062467ca3..49d781c3b 100644 --- a/lux-bootstrapper/src/lux/analyser/case.clj +++ b/lux-bootstrapper/src/lux/analyser/case.clj @@ -298,51 +298,51 @@ =kont kont] (return (&/T [($TextTestAC ?value) =kont]))) - (&/$Tuple ?members) - (|case ?members - (&/$End) - (|do [_ (&type/check value-type &type/Any) - =kont kont] - (return (&/T [($TupleTestAC (&/|list)) =kont]))) + (&/$Tuple (&/$End)) + (|do [_ (&type/check value-type &type/Any) + =kont kont] + (return (&/T [($TupleTestAC (&/|list)) =kont]))) - (&/$Item ?member (&/$End)) - (analyse-pattern var?? value-type ?member kont) + (&/$Tuple (&/$Item ?member (&/$End))) + (analyse-pattern var?? value-type ?member kont) - _ - (|do [must-infer? (&type/unknown? value-type) - value-type* (if must-infer? - (|do [member-types (&/map% (fn [_] &type/create-var+) (&/|range (&/|length ?members)))] - (return (&type/fold-prod member-types))) - (adjust-type value-type))] - (|case value-type* - (&/$Product _) - (|let [num-elems (&/|length ?members) - [_shorter _tuple-types] (&type/tuple-types-for (&/|length ?members) value-type*)] - (if (= num-elems _shorter) - (|do [[=tests =kont] (&/fold (fn [kont* vm] - (|let [[v m] vm] - (|do [[=test [=tests =kont]] (analyse-pattern &/$None v m kont*)] - (return (&/T [(&/$Item =test =tests) =kont]))))) - (|do [=kont kont] - (return (&/T [&/$End =kont]))) - (&/|reverse (&/zip2 _tuple-types ?members)))] - (return (&/T [($TupleTestAC =tests) =kont]))) - (&/fail-with-loc (str "[Pattern-matching Error] Pattern-matching mismatch. Requires tuple[" (&/|length (&type/flatten-prod value-type*)) "]. Given tuple [" (&/|length ?members) "].\n" - " At: " (&/show-ast pattern) "\n" - "Expected type: " (&type/show-type value-type*) "\n" - " Actual type: " (&type/show-type value-type))))) - - _ - (&/fail-with-loc (str "[Pattern-matching Error] Tuples require tuple-types: " (&type/show-type value-type)))))) - - (&/$Record pairs) - (|do [[rec-members rec-type] (&&record/order-record pairs) - must-infer? (&type/unknown? value-type) - rec-type* (if must-infer? - (&type/instantiate-inference rec-type) - (return value-type)) - _ (&type/check value-type rec-type*)] - (analyse-pattern &/$None rec-type* (&/T [meta (&/$Tuple rec-members)]) kont)) + (&/$Tuple ?members) + (|do [rec-members&rec-type (&&record/order-record ?members)] + (|case rec-members&rec-type + (&/$Some [rec-members rec-type]) + (|do [must-infer? (&type/unknown? value-type) + rec-type* (if must-infer? + (&type/instantiate-inference rec-type) + (return value-type)) + _ (&type/check value-type rec-type*)] + (analyse-pattern &/$None rec-type* (&/T [meta (&/$Tuple rec-members)]) kont)) + + (&/$None) + (|do [must-infer? (&type/unknown? value-type) + value-type* (if must-infer? + (|do [member-types (&/map% (fn [_] &type/create-var+) (&/|range (&/|length ?members)))] + (return (&type/fold-prod member-types))) + (adjust-type value-type))] + (|case value-type* + (&/$Product _) + (|let [num-elems (&/|length ?members) + [_shorter _tuple-types] (&type/tuple-types-for (&/|length ?members) value-type*)] + (if (= num-elems _shorter) + (|do [[=tests =kont] (&/fold (fn [kont* vm] + (|let [[v m] vm] + (|do [[=test [=tests =kont]] (analyse-pattern &/$None v m kont*)] + (return (&/T [(&/$Item =test =tests) =kont]))))) + (|do [=kont kont] + (return (&/T [&/$End =kont]))) + (&/|reverse (&/zip2 _tuple-types ?members)))] + (return (&/T [($TupleTestAC =tests) =kont]))) + (&/fail-with-loc (str "[Pattern-matching Error] Pattern-matching mismatch. Requires tuple[" (&/|length (&type/flatten-prod value-type*)) "]. Given tuple [" (&/|length ?members) "].\n" + " At: " (&/show-ast pattern) "\n" + "Expected type: " (&type/show-type value-type*) "\n" + " Actual type: " (&type/show-type value-type))))) + + _ + (&/fail-with-loc (str "[Pattern-matching Error] Tuples require tuple-types: " (&type/show-type value-type))))))) (&/$Tag ?ident) (|do [[=module =name] (&&/resolved-ident ?ident) diff --git a/lux-bootstrapper/src/lux/analyser/lux.clj b/lux-bootstrapper/src/lux/analyser/lux.clj index 8b93faea8..7b8019211 100644 --- a/lux-bootstrapper/src/lux/analyser/lux.clj +++ b/lux-bootstrapper/src/lux/analyser/lux.clj @@ -245,20 +245,24 @@ ))) (defn analyse-record [analyse exo-type ?elems] - (|do [[rec-members rec-type] (&&record/order-record ?elems)] - (|case exo-type - (&/$Var id) - (|do [verdict (&type/bound? id)] - (if verdict - (analyse-tuple analyse (&/$Right exo-type) rec-members) - (|do [[[tuple-type tuple-location] tuple-analysis] (&&/cap-1 (analyse-tuple analyse (&/$Left rec-type) rec-members)) - _ (&type/check exo-type tuple-type)] - (return (&/|list (&&/|meta exo-type tuple-location - tuple-analysis)))))) + (|do [rec-members&rec-type (&&record/order-record ?elems)] + (|case rec-members&rec-type + (&/$Some [rec-members rec-type]) + (|case exo-type + (&/$Var id) + (|do [verdict (&type/bound? id)] + (if verdict + (analyse-tuple analyse (&/$Right exo-type) rec-members) + (|do [[[tuple-type tuple-location] tuple-analysis] (&&/cap-1 (analyse-tuple analyse (&/$Left rec-type) rec-members)) + _ (&type/check exo-type tuple-type)] + (return (&/|list (&&/|meta exo-type tuple-location + tuple-analysis)))))) - _ - (analyse-tuple analyse (&/$Right exo-type) rec-members) - ))) + _ + (analyse-tuple analyse (&/$Right exo-type) rec-members)) + + (&/$None) + (analyse-tuple analyse (&/$Right exo-type) ?elems)))) (defn ^:private analyse-global [analyse exo-type module name] (|do [[[r-module r-name] [exported? endo-type ?annotations ?value]] (&&module/find-def module name) diff --git a/lux-bootstrapper/src/lux/analyser/record.clj b/lux-bootstrapper/src/lux/analyser/record.clj index 7af3c17ac..09fd8b988 100644 --- a/lux-bootstrapper/src/lux/analyser/record.clj +++ b/lux-bootstrapper/src/lux/analyser/record.clj @@ -8,37 +8,56 @@ ;; [Exports] (defn order-record - "(-> (List (, Syntax Syntax)) (Lux (List Syntax)))" + "(-> (List Syntax) (Lux (Maybe (List Syntax))))" [pairs] - (|do [[module slot-group slot-type] (|case pairs - (&/$End) - (|do [module &/get-module-name] - (return (&/T [module &/$End &type/Any]))) - - (&/$Item [[_ (&/$Tag slot1)] _] _) - (|do [[module name] (&&/resolved-ident slot1) - [_exported? type slots _index] (&&module/find-slot module (str "#" name))] - (return (&/T [module slots type]))) + (if (even? (&/|length pairs)) + (let [pairs (&/|as-pairs pairs)] + (|do [module&slot-group&slot-type (|case pairs + (&/$End) + (|do [module &/get-module-name] + (return (&/$Some (&/T [module &/$End &type/Any])))) + + (&/$Item [[_ (&/$Tag slot0)] _] _) + (|do [[module name] (&&/resolved-ident slot0) + _exported?&type&slots&_index (fn [lux] + (|case ((&&module/find-slot module (str "#" name)) lux) + (&/$Left error) + (&/$Right (&/T [lux &/$None])) + + (&/$Right [lux* output]) + (&/$Right (&/T [lux* (&/$Some output)]))))] + (|case _exported?&type&slots&_index + (&/$Some [_exported? type slots _index]) + (return (&/$Some (&/T [module slots type]))) - _ - (&/fail-with-loc "[Analyser Error] Wrong syntax for records. Odd elements must be slots.")) - =pairs (&/map% (fn [kv] - (|case kv - [[_ (&/$Tag k)] v] - (|do [=k (&&/resolved-ident k)] - (return (&/T [(&/ident->text =k) v]))) + (&/$None) + (return &/$None))) - _ - (&/fail-with-loc "[Analyser Error] Wrong syntax for records. Odd elements must be slots."))) - pairs) - _ (let [num-expected (&/|length slot-group) - num-got (&/|length =pairs)] - (&/assert! (= num-expected num-got) - (str "[Analyser Error] Wrong number of record members. Expected " num-expected ", but got " num-got "."))) - =members (&/map% (fn [slot] - (let [slot (&/ident->text (&/T [module slot]))] - (if-let [member (&/|get slot =pairs)] - (return member) - (&/fail-with-loc (str "[Analyser Error] Missing slot: " slot))))) - slot-group)] - (return (&/T [=members slot-type])))) + _ + (return &/$None))] + (|case module&slot-group&slot-type + (&/$Some [module slot-group slot-type]) + (|do [=pairs (&/map% (fn [kv] + (|case kv + [[_ (&/$Tag k)] v] + (|do [=k (&&/resolved-ident k)] + (return (&/T [(&/ident->text =k) v]))) + + _ + (&/fail-with-loc "[Analyser Error] Wrong syntax for records. Odd elements must be slots."))) + pairs) + _ (let [num-expected (&/|length slot-group) + num-got (&/|length =pairs)] + (&/assert! (= num-expected num-got) + (str "[Analyser Error] Wrong number of record members. Expected " num-expected ", but got " num-got "."))) + =members (&/map% (fn [slot] + (let [slot (&/ident->text (&/T [module slot]))] + (if-let [member (&/|get slot =pairs)] + (return member) + (&/fail-with-loc (str "[Analyser Error] Missing slot: " slot))))) + slot-group)] + (return (&/$Some (&/T [=members slot-type])))) + + (&/$None) + (return &/$None)))) + (return &/$None))) diff --git a/lux-bootstrapper/src/lux/base.clj b/lux-bootstrapper/src/lux/base.clj index f95c4d6d5..b19bb4fae 100644 --- a/lux-bootstrapper/src/lux/base.clj +++ b/lux-bootstrapper/src/lux/base.clj @@ -273,7 +273,7 @@ :else pattern)) (defmacro |case [value & branches] - (assert (= 0 (mod (count branches) 2))) + (assert (even? (count branches))) (let [value* (if (vector? value) [`(T [~@value])] [value])] @@ -381,7 +381,7 @@ )))) (defmacro |do [steps return] - (assert (= 0 (rem (count steps) 2)) "The number of steps must be even!") + (assert (even? (count steps)) "The number of steps must be even!") (reduce (fn [inner [label computation]] (case label :let `(|let ~computation ~inner) @@ -580,20 +580,22 @@ (defn list-join [xss] (fold |++ $End xss)) -(defn |as-pairs [xs] - (|case xs - ($Item x ($Item y xs*)) - ($Item (T [x y]) (|as-pairs xs*)) - - _ - $End)) - (defn |reverse [xs] (fold (fn [tail head] ($Item head tail)) $End xs)) +(defn |as-pairs [xs] + (loop [input xs + output $End] + (|case input + ($Item headL ($Item headR tail)) + (recur tail ($Item (T [headL headR]) output)) + + _ + (|reverse output)))) + (defn add-loc [meta ^String msg] (if (.startsWith msg "@") msg diff --git a/lux-cl/source/program.lux b/lux-cl/source/program.lux index 3b52fcdd2..55ea81ec4 100644 --- a/lux-cl/source/program.lux +++ b/lux-cl/source/program.lux @@ -337,11 +337,11 @@ (IO (Platform [_.Tag Register] (_.Expression Any) (_.Expression Any))) (do io.monad [host ..host] - (wrap {#platform.&file_system (file.async file.default) + (wrap [#platform.&file_system (file.async file.default) #platform.host host #platform.phase common_lisp.generate #platform.runtime runtime.generate - #platform.write (|>> _.code (\ encoding.utf8 encoded))}))) + #platform.write (|>> _.code (\ encoding.utf8 encoded))]))) (def: get_ecl_cli_inputs (let [@idx (_.var "i")] @@ -411,10 +411,10 @@ (do io.monad [platform ..platform] (exec (do promise.monad - [_ (/.compiler {#/static.host @.common_lisp + [_ (/.compiler [#/static.host @.common_lisp #/static.host_module_extension extension #/static.target (/cli.target service) - #/static.artifact_extension extension} + #/static.artifact_extension extension] ..expander analysis.bundle (io.io platform) diff --git a/lux-js/project.lux b/lux-js/project.lux index 2163ba34c..ec5be294c 100644 --- a/lux-js/project.lux +++ b/lux-js/project.lux @@ -1,5 +1,5 @@ {"" - {#identity ["com.github.luxlang" "lux-js" "0.6.0-SNAPSHOT"] + [#identity ["com.github.luxlang" "lux-js" "0.6.0-SNAPSHOT"] #description "A JavaScript compiler for Lux." #deploy_repositories {"snapshots" "https://oss.sonatype.org/content/repositories/snapshots/" @@ -10,8 +10,8 @@ #dependencies [["com.github.luxlang" "stdlib" "0.6.0-SNAPSHOT" "tar"]] - #program "program"} + #program "program"] "jvm" - {#compiler ["com.github.luxlang" "lux-jvm" "0.6.0-SNAPSHOT" "jar"] - #dependencies [["org.openjdk.nashorn" "nashorn-core" "15.1" "jar"]]}} + [#compiler ["com.github.luxlang" "lux-jvm" "0.6.0-SNAPSHOT" "jar"] + #dependencies [["org.openjdk.nashorn" "nashorn-core" "15.1" "jar"]]]} diff --git a/lux-js/source/program.lux b/lux-js/source/program.lux index ea9011dac..0fcf22f56 100644 --- a/lux-js/source/program.lux +++ b/lux-js/source/program.lux @@ -587,14 +587,14 @@ (IO (Platform [Register Text] _.Expression _.Statement)) (do io.monad [host ..host] - (in {#platform.&file_system (for {@.old (file.async file.default) + (in [#platform.&file_system (for {@.old (file.async file.default) @.jvm (file.async file.default) @.js file.default}) #platform.host host #platform.phase js.generate #platform.runtime runtime.generate #platform.phase_wrapper ..phase_wrapper - #platform.write (|>> _.code (\ utf8.codec encoded))}))) + #platform.write (|>> _.code (\ utf8.codec encoded))]))) (def: (program context program) (Program _.Expression _.Statement) @@ -660,10 +660,10 @@ (program: [service /cli.service] (let [extension ".js"] (exec (do async.monad - [_ (/.compiler {#/static.host @.js + [_ (/.compiler [#/static.host @.js #/static.host_module_extension extension #/static.target (/cli.target service) - #/static.artifact_extension extension} + #/static.artifact_extension extension] ..expander analysis.bundle ..platform diff --git a/lux-jvm/source/luxc/lang/directive/jvm.lux b/lux-jvm/source/luxc/lang/directive/jvm.lux index 22715276b..8be0777a8 100644 --- a/lux-jvm/source/luxc/lang/directive/jvm.lux +++ b/lux-jvm/source/luxc/lang/directive/jvm.lux @@ -619,12 +619,12 @@ (type: Method_Declaration (Record - {#name Text + [#name Text #annotations (List Annotation) #type_variables (List (Type Var)) #exceptions (List (Type Class)) #arguments (List (Type Value)) - #return (Type Value)})) + #return (Type Value)])) (def: method_declaration (Parser Method_Declaration) @@ -819,9 +819,9 @@ (def: (constraint tv) (-> (Type Var) Constraint) - {#/type.name (parser.name tv) + [#/type.name (parser.name tv) #/type.super_class java/lang/Object - #/type.super_interfaces (list)}) + #/type.super_interfaces (list)]) (def: visibility (-> ffi.Privacy jvm.Visibility) diff --git a/lux-jvm/source/luxc/lang/host/jvm.lux b/lux-jvm/source/luxc/lang/host/jvm.lux index df9575ef4..44cc680eb 100644 --- a/lux-jvm/source/luxc/lang/host/jvm.lux +++ b/lux-jvm/source/luxc/lang/host/jvm.lux @@ -10,7 +10,7 @@ [data [binary (#+ Binary)] [collection - ["." list ("#/." functor)]]] + ["." list ("#\." monad)]]] [macro ["." code] [syntax (#+ syntax:)]] @@ -96,10 +96,10 @@ options (<code>.tuple (<>.many <code>.local_identifier))]) (let [g!type (code.local_identifier type) g!none (code.local_identifier none) - g!tags+ (list/each code.local_tag options) + g!tags+ (list\each code.local_tag options) g!_left (code.local_identifier "_left") g!_right (code.local_identifier "_right") - g!options+ (list/each (function (_ option) + g!options+ (list\each (function (_ option) (` (def: .public (~ (code.local_identifier option)) (~ g!type) (|> (~ g!none) @@ -107,22 +107,28 @@ options)] (in (list& (` (type: .public (~ g!type) (.Record - (~ (code.record (list/each (function (_ tag) - [tag (` .Bit)]) - g!tags+)))))) + (~ (|> g!tags+ + (list\each (function (_ tag) + (list tag (` .Bit)))) + list\conjoint + code.tuple))))) (` (def: .public (~ g!none) (~ g!type) - (~ (code.record (list/each (function (_ tag) - [tag (` #0)]) - g!tags+))))) + (~ (|> g!tags+ + (list\each (function (_ tag) + (list tag (` #0)))) + list\conjoint + code.tuple)))) (` (def: .public ((~ (code.local_identifier ++)) (~ g!_left) (~ g!_right)) (-> (~ g!type) (~ g!type) (~ g!type)) - (~ (code.record (list/each (function (_ tag) - [tag (` (or (value@ (~ tag) (~ g!_left)) - (value@ (~ tag) (~ g!_right))))]) - g!tags+))))) + (~ (|> g!tags+ + (list\each (function (_ tag) + (list tag (` (or (value@ (~ tag) (~ g!_left)) + (value@ (~ tag) (~ g!_right))))))) + list\conjoint + code.tuple)))) g!options+)))) diff --git a/lux-jvm/source/program.lux b/lux-jvm/source/program.lux index 3a2e3a55b..304e2195f 100644 --- a/lux-jvm/source/program.lux +++ b/lux-jvm/source/program.lux @@ -234,14 +234,14 @@ [... host jvm/host.host [loader host] jvm.host] (in [loader - {#platform.&file_system (file.async file.default) + [#platform.&file_system (file.async file.default) #platform.host host ... #platform.phase jvm.generate #platform.phase expression.translate ... #platform.runtime runtime.generate #platform.runtime runtime.translate #platform.phase_wrapper ..phase_wrapper - #platform.write product.right}]))) + #platform.write product.right]]))) (def: (extender phase_wrapper) (-> phase.Wrapper Extender) @@ -277,16 +277,16 @@ (async.future (\ world/program.default exit +0))) (program: [service /cli.service] - (let [static {#/static.host @.jvm + (let [static [#/static.host @.jvm #/static.host_module_extension ".jvm" #/static.target (/cli.target service) - #/static.artifact_extension ".class"}] + #/static.artifact_extension ".class"]] (exec (do async.monad [[loader platform] (async.future ..platform) - _ (/.compiler {#/static.host @.jvm + _ (/.compiler [#/static.host @.jvm #/static.host_module_extension ".jvm" #/static.target (/cli.target service) - #/static.artifact_extension ".class"} + #/static.artifact_extension ".class"] ..expander (analysis.bundle loader) (io.io platform) diff --git a/lux-lua/project.lux b/lux-lua/project.lux index 855257f3f..4d0c10a35 100644 --- a/lux-lua/project.lux +++ b/lux-lua/project.lux @@ -1,5 +1,5 @@ {"" - {#identity ["com.github.luxlang" "lux-lua" "0.6.0-SNAPSHOT"] + [#identity ["com.github.luxlang" "lux-lua" "0.6.0-SNAPSHOT"] #deploy_repositories {"snapshots" "https://oss.sonatype.org/content/repositories/snapshots/" "releases" "https://oss.sonatype.org/service/local/staging/deploy/maven2/"} @@ -13,4 +13,4 @@ ["net.sandius.rembulan" "rembulan-stdlib" "0.1-SNAPSHOT" "jar"] ["net.sandius.rembulan" "rembulan-compiler" "0.1-SNAPSHOT" "jar"]] - #program "program"}} + #program "program"]} diff --git a/lux-lua/source/program.lux b/lux-lua/source/program.lux index 0f153241d..a8e8c4e93 100644 --- a/lux-lua/source/program.lux +++ b/lux-lua/source/program.lux @@ -781,24 +781,24 @@ (do io.monad [[baggage host] ..host] (in [baggage - {#platform.&file_system (file.async file.default) + [#platform.&file_system (file.async file.default) #platform.host host #platform.phase lua.generate #platform.runtime runtime.generate #platform.phase_wrapper ..phase_wrapper - #platform.write (|>> _.code (\ utf8.codec encoded))}])))] + #platform.write (|>> _.code (\ utf8.codec encoded))]])))] (for {@.old <jvm> @.jvm <jvm> @.lua (def: platform (IO (Platform [Register _.Label] _.Expression _.Statement)) (do io.monad [host ..host] - (in {#platform.&file_system (file.async file.default) + (in [#platform.&file_system (file.async file.default) #platform.host host #platform.phase lua.generate #platform.runtime runtime.generate #platform.phase_wrapper ..phase_wrapper - #platform.write (|>> _.code (\ utf8.codec encoded))})))})) + #platform.write (|>> _.code (\ utf8.codec encoded))])))})) (def: (program context program) (Program _.Expression _.Statement) @@ -819,10 +819,10 @@ @.lua platform})) ..platform] (exec (do async.monad - [_ (/.compiler {#/static.host @.lua + [_ (/.compiler [#/static.host @.lua #/static.host_module_extension extension #/static.target (/cli.target service) - #/static.artifact_extension extension} + #/static.artifact_extension extension] (for {@.old (..expander baggage) @.jvm (..expander baggage) @.lua ..expander}) diff --git a/lux-php/source/program.lux b/lux-php/source/program.lux index 13664b166..a756c18a8 100644 --- a/lux-php/source/program.lux +++ b/lux-php/source/program.lux @@ -155,7 +155,7 @@ (ffi.import: php/runtime/invoke/InvokeHelper ["#::." ("static" callAny [php/runtime/Memory [php/runtime/Memory] php/runtime/env/Environment php/runtime/env/TraceInfo] - "try" php/runtime/Memory)]) + "try" php/runtime/Memory)]) (ffi.import: php/runtime/lang/Closure ["#::." @@ -504,11 +504,11 @@ (IO (Platform [Nat _.Label] _.Expression _.Statement)) (do io.monad [host ..host] - (wrap {#platform.&file_system (file.async file.default) + (wrap [#platform.&file_system (file.async file.default) #platform.host host #platform.phase php.generate #platform.runtime runtime.generate - #platform.write (|>> _.code (\ utf8.codec encoded))}))) + #platform.write (|>> _.code (\ utf8.codec encoded))]))) (def: (program context program) (Program _.Expression _.Statement) @@ -561,10 +561,10 @@ (do io.monad [platform ..platform] (exec (do promise.monad - [_ (/.compiler {#/static.host @.php + [_ (/.compiler [#/static.host @.php #/static.host_module_extension extension #/static.target (/cli.target service) - #/static.artifact_extension extension} + #/static.artifact_extension extension] ..expander analysis.bundle (io.io platform) diff --git a/lux-python/project.lux b/lux-python/project.lux index f429d8687..57672fdea 100644 --- a/lux-python/project.lux +++ b/lux-python/project.lux @@ -1,5 +1,5 @@ {"" - {#identity ["com.github.luxlang" "lux-python" "0.6.0-SNAPSHOT"] + [#identity ["com.github.luxlang" "lux-python" "0.6.0-SNAPSHOT"] #deploy_repositories {"snapshots" "https://oss.sonatype.org/content/repositories/snapshots/" "releases" "https://oss.sonatype.org/service/local/staging/deploy/maven2/"} @@ -11,4 +11,4 @@ #dependencies [["com.github.luxlang" "stdlib" "0.6.0-SNAPSHOT" "tar"] ["org.python" "jython-standalone" "2.7.2" "jar"]] - #program "program"}} + #program "program"]} diff --git a/lux-python/source/program.lux b/lux-python/source/program.lux index 9ddb061e8..713d4e854 100644 --- a/lux-python/source/program.lux +++ b/lux-python/source/program.lux @@ -471,12 +471,12 @@ (IO (Platform Register (_.Expression Any) (_.Statement Any))) (do io.monad [host ..host] - (in {#platform.&file_system (file.async file.default) + (in [#platform.&file_system (file.async file.default) #platform.host host #platform.phase python.generate #platform.runtime runtime.generate #platform.phase_wrapper ..phase_wrapper - #platform.write (|>> _.code (\ utf8.codec encoded))}))) + #platform.write (|>> _.code (\ utf8.codec encoded))]))) (def: (program context program) (Program (_.Expression Any) (_.Statement Any)) @@ -512,10 +512,10 @@ (let [extension ".py"] (exec (do async.monad - [_ (/.compiler {#/static.host @.python + [_ (/.compiler [#/static.host @.python #/static.host_module_extension extension #/static.target (/cli.target service) - #/static.artifact_extension extension} + #/static.artifact_extension extension] ..expander analysis.bundle ..platform diff --git a/lux-r/source/program.lux b/lux-r/source/program.lux index 8a5792e17..18f074100 100644 --- a/lux-r/source/program.lux +++ b/lux-r/source/program.lux @@ -543,11 +543,11 @@ (do io.monad [[interpreter host] ..host] (wrap [interpreter - {#platform.&file_system (file.async file.default) + [#platform.&file_system (file.async file.default) #platform.host host #platform.phase r.generate #platform.runtime runtime.generate - #platform.write (|>> _.code (\ utf8.codec encoded))}]))) + #platform.write (|>> _.code (\ utf8.codec encoded))]]))) (def: (program context program) (Program _.Expression _.Expression) @@ -594,10 +594,10 @@ (do io.monad [[interpreter platform] ..platform] (exec (do promise.monad - [_ (/.compiler {#/static.host @.r + [_ (/.compiler [#/static.host @.r #/static.host_module_extension extension #/static.target (/cli.target service) - #/static.artifact_extension extension} + #/static.artifact_extension extension] (..expander interpreter) analysis.bundle (io.io platform) diff --git a/lux-ruby/project.lux b/lux-ruby/project.lux index 99f794bc8..b9e998cde 100644 --- a/lux-ruby/project.lux +++ b/lux-ruby/project.lux @@ -1,5 +1,5 @@ {"" - {#identity ["com.github.luxlang" "lux-ruby" "0.6.0-SNAPSHOT"] + [#identity ["com.github.luxlang" "lux-ruby" "0.6.0-SNAPSHOT"] #description "A Ruby compiler for Lux." #deploy_repositories {"snapshots" "https://oss.sonatype.org/content/repositories/snapshots/" @@ -12,4 +12,4 @@ #dependencies [["com.github.luxlang" "stdlib" "0.6.0-SNAPSHOT" "tar"] ["org.jruby" "jruby-complete" "9.2.15.0" "jar"]] - #program "program"}} + #program "program"]} diff --git a/lux-ruby/source/program.lux b/lux-ruby/source/program.lux index c76b44b96..d2b32c0be 100644 --- a/lux-ruby/source/program.lux +++ b/lux-ruby/source/program.lux @@ -800,12 +800,12 @@ (IO (Platform Register _.Expression _.Statement)) (do io.monad [host ..host] - (in {#platform.&file_system (file.async file.default) + (in [#platform.&file_system (file.async file.default) #platform.host host #platform.phase ruby.generate #platform.runtime runtime.generate #platform.phase_wrapper ..phase_wrapper - #platform.write (|>> _.code (\ utf8.codec encoded))}))) + #platform.write (|>> _.code (\ utf8.codec encoded))]))) (def: (program context program) (Program _.Expression _.Statement) @@ -820,10 +820,10 @@ (program: [service /cli.service] (let [extension ".rb"] (exec (do async.monad - [_ (/.compiler {#/static.host @.ruby + [_ (/.compiler [#/static.host @.ruby #/static.host_module_extension extension #/static.target (/cli.target service) - #/static.artifact_extension extension} + #/static.artifact_extension extension] ..expander analysis.bundle ..platform diff --git a/lux-scheme/source/program.lux b/lux-scheme/source/program.lux index 3371bb506..4e261a4de 100644 --- a/lux-scheme/source/program.lux +++ b/lux-scheme/source/program.lux @@ -395,11 +395,11 @@ (IO (Platform _.Var _.Expression _.Expression)) (do io.monad [host ..host] - (wrap {#platform.&file_system (file.async file.default) + (wrap [#platform.&file_system (file.async file.default) #platform.host host #platform.phase scheme.generate #platform.runtime runtime.generate - #platform.write (|>> _.code (\ encoding.utf8 encoded))}))) + #platform.write (|>> _.code (\ encoding.utf8 encoded))]))) (def: (program context program) (Program _.Expression _.Expression) @@ -450,10 +450,10 @@ [platform ..platform now instant.now] (exec (do promise.monad - [_ (/.compiler {#/static.host @.scheme + [_ (/.compiler [#/static.host @.scheme #/static.host_module_extension extension #/static.target (/cli.target service) - #/static.artifact_extension extension} + #/static.artifact_extension extension] ..expander analysis.bundle (io.io platform) diff --git a/stdlib/commands.md b/stdlib/commands.md index dc74aa294..893e0d271 100644 --- a/stdlib/commands.md +++ b/stdlib/commands.md @@ -71,6 +71,10 @@ cd ~/lux/stdlib/ \ ## Build ``` +cd ~/lux/stdlib/ \ +&& lein clean \ +&& lein with-profile aedifex lux auto build + cd ~/lux/stdlib/ \ && lux clean \ && lux with jvm with aedifex auto build diff --git a/stdlib/project.lux b/stdlib/project.lux index 5e1b4d02a..5c6601eb0 100644 --- a/stdlib/project.lux +++ b/stdlib/project.lux @@ -1,36 +1,36 @@ -{"" - {#identity ["com.github.luxlang" "stdlib" "0.6.0-SNAPSHOT"] +["" + [#identity ["com.github.luxlang" "stdlib" "0.6.0-SNAPSHOT"] #deploy_repositories {"snapshots" "https://oss.sonatype.org/content/repositories/snapshots/" "releases" "https://oss.sonatype.org/service/local/staging/deploy/maven2/"} #repositories ["https://oss.sonatype.org/content/repositories/snapshots/" - "https://oss.sonatype.org/service/local/staging/deploy/maven2/"]} + "https://oss.sonatype.org/service/local/staging/deploy/maven2/"]] "jvm" - {#compiler ["com.github.luxlang" "lux-jvm" "0.6.0-SNAPSHOT" "jar"]} + [#compiler ["com.github.luxlang" "lux-jvm" "0.6.0-SNAPSHOT" "jar"]] "js" - {#compiler ["com.github.luxlang" "lux-js" "0.6.0-SNAPSHOT" "js"]} + [#compiler ["com.github.luxlang" "lux-js" "0.6.0-SNAPSHOT" "js"]] "python" - {#compiler ["com.github.luxlang" "lux-python" "0.6.0-SNAPSHOT" "jar"]} + [#compiler ["com.github.luxlang" "lux-python" "0.6.0-SNAPSHOT" "jar"]] "lua" - {#compiler ["com.github.luxlang" "lux-lua" "0.6.0-SNAPSHOT" "jar"]} + [#compiler ["com.github.luxlang" "lux-lua" "0.6.0-SNAPSHOT" "jar"]] "ruby" - {#compiler ["com.github.luxlang" "lux-ruby" "0.6.0-SNAPSHOT" "jar"]} + [#compiler ["com.github.luxlang" "lux-ruby" "0.6.0-SNAPSHOT" "jar"]] "bibliotheca" - {#description "Standard library for the Lux programming language." - #test "test/lux"} + [#description "Standard library for the Lux programming language." + #test "test/lux"] "documentation" - {#program "documentation/lux" - #test "documentation/lux"} + [#program "documentation/lux" + #test "documentation/lux"] "aedifex" - {#description "A build system/tool made exclusively for Lux." + [#description "A build system/tool made exclusively for Lux." #program "program/aedifex" - #test "test/aedifex"}} + #test "test/aedifex"]] diff --git a/stdlib/source/documentation/lux.lux b/stdlib/source/documentation/lux.lux index b7f1025ad..85b93f5f7 100644 --- a/stdlib/source/documentation/lux.lux +++ b/stdlib/source/documentation/lux.lux @@ -497,8 +497,8 @@ \n "WARNING: Only use it within the type: macro.") [(type: Refer (Record - {#refer_defs Referrals - #refer_open (List Openings)}))]) + [#refer_defs Referrals + #refer_open (List Openings)]))]) (documentation: /.type: "The type-definition macro." @@ -717,7 +717,6 @@ [identifier ["yolo" "lol"] "yolo.lol"] [form (list (bit #1)) "(#1)"] [tuple (list (bit #1)) "[#1]"] - [record (list [(bit #1) (int +123)]) "{#1 +123}"] )] ($_ and <tests> diff --git a/stdlib/source/documentation/lux/type/poly.lux b/stdlib/source/documentation/lux/type/poly.lux index bbdbfd0d0..88558bd17 100644 --- a/stdlib/source/documentation/lux/type/poly.lux +++ b/stdlib/source/documentation/lux/type/poly.lux @@ -33,7 +33,7 @@ (type: Record (.Record - {#bit Bit + [#bit Bit #frac Frac #text Text #maybe (Maybe Frac) @@ -43,7 +43,7 @@ #tuple [Bit Text Frac] #recursive Recursive #date Date - #grams (Qty Gram)})) + #grams (Qty Gram)])) (derived: equivalence ($equivalence.equivalence diff --git a/stdlib/source/library/lux.lux b/stdlib/source/library/lux.lux index d717434be..e9b07fe8f 100644 --- a/stdlib/source/library/lux.lux +++ b/stdlib/source/library/lux.lux @@ -196,9 +196,10 @@ #1) ... (type: .public Location -... {#module Text -... #line Nat -... #column Nat}) +... (Record +... [#module Text +... #line Nat +... #column Nat])) ("lux def type tagged" Location (#Named ["library/lux" "Location"] (#Product Text (#Product Nat Nat))) @@ -208,8 +209,9 @@ #1) ... (type: .public (Ann m v) -... {#meta m -... #datum v}) +... (Record +... [#meta m +... #datum v])) ("lux def type tagged" Ann (#Named ["library/lux" "Ann"] (#UnivQ #End @@ -442,8 +444,9 @@ .public) ... (type: .public (Bindings k v) -... {#counter Nat -... #mappings (List [k v])}) +... (Record +... [#counter Nat +... #mappings (List [k v])])) ("lux def type tagged" Bindings (#Named ["library/lux" "Bindings"] (#UnivQ #End @@ -472,10 +475,11 @@ .public) ... (type: .public Scope -... {#name (List Text) -... #inner Nat -... #locals (Bindings Text [Type Nat]) -... #captured (Bindings Text [Type Ref])}) +... (Record +... [#name (List Text) +... #inner Nat +... #locals (Bindings Text [Type Nat]) +... #captured (Bindings Text [Type Ref])])) ("lux def type tagged" Scope (#Named ["library/lux" "Scope"] (#Product ... name @@ -540,12 +544,12 @@ ... (type: .public Module ... (Record -... {#module_hash Nat +... [#module_hash Nat ... #module_aliases (List [Text Text]) ... #definitions (List [Text Global]) ... #imports (List Text) ... #module_annotations (Maybe Code) -... #module_state Module_State})) +... #module_state Module_State])) ("lux def type tagged" Module (#Named ["library/lux" "Module"] (#Product @@ -571,9 +575,10 @@ .public) ... (type: .public Type_Context -... {#ex_counter Nat -... #var_counter Nat -... #var_bindings (List [Nat (Maybe Type)])}) +... (Record +... [#ex_counter Nat +... #var_counter Nat +... #var_bindings (List [Nat (Maybe Type)])])) ("lux def type tagged" Type_Context (#Named ["library/lux" "Type_Context"] (#Product ... ex_counter @@ -604,9 +609,10 @@ .public) ... (type: .public Info -... {#target Text -... #version Text -... #mode Mode}) +... (Record +... [#target Text +... #version Text +... #mode Mode])) ("lux def type tagged" Info (#Named ["library/lux" "Info"] (#Product @@ -622,19 +628,20 @@ .public) ... (type: .public Lux -... {#info Info -... #source Source -... #location Location -... #current_module (Maybe Text) -... #modules (List [Text Module]) -... #scopes (List Scope) -... #type_context Type_Context -... #expected (Maybe Type) -... #seed Nat -... #scope_type_vars (List Nat) -... #extensions Any -... #eval (-> Type Code (-> Lux (Either Text [Lux Any]))) -... #host Any}) +... (Record +... [#info Info +... #source Source +... #location Location +... #current_module (Maybe Text) +... #modules (List [Text Module]) +... #scopes (List Scope) +... #type_context Type_Context +... #expected (Maybe Type) +... #seed Nat +... #scope_type_vars (List Nat) +... #extensions Any +... #eval (-> Type Code (-> Lux (Either Text [Lux Any]))) +... #host Any])) ("lux def type tagged" Lux (#Named ["library/lux" "Lux"] ({Lux @@ -1162,15 +1169,15 @@ (def:'' .private (initialized_quantification? lux) #End (#Function Lux Bit) - ({{#info _ #source _ #current_module _ #modules _ + ({[#info _ #source _ #current_module _ #modules _ #scopes scopes #type_context _ #host _ #seed _ #expected _ #location _ #extensions _ - #scope_type_vars _ #eval _} + #scope_type_vars _ #eval _] (list\mix (function'' [scope verdict] ({#1 #1 - _ ({{#name _ #inner _ #captured _ - #locals {#counter _ - #mappings locals}} + _ ({[#name _ #inner _ #captured _ + #locals [#counter _ + #mappings locals]] (list\mix (function'' [local verdict] ({[local _] ({#1 #1 @@ -1518,19 +1525,19 @@ (def:''' .private maybe_monad #End ($' Monad Maybe) - {#in + [#in (function' [x] (#Some x)) #then (function' [f ma] ({#None #None (#Some a) (f a)} - ma))}) + ma))]) (def:''' .private meta_monad #End ($' Monad Meta) - {#in + [#in (function' [x] (function' [state] (#Right state x))) @@ -1543,7 +1550,7 @@ (#Right [state' a]) (f a state')} - (ma state))))}) + (ma state))))]) (macro:' .private (do tokens) ({(#Item monad (#Item [_ (#Tuple bindings)] (#Item body #End))) @@ -1570,7 +1577,8 @@ var)))) body (list\reversed (pairs bindings)))] - (in_meta (list (form$ (list (record$ (list [(record$ (list [(tag$ ["library/lux" "in"]) g!in] [(tag$ ["library/lux" "then"]) g!then])) + (in_meta (list (form$ (list (record$ (list [(tuple$ (list (tag$ ["library/lux" "in"]) g!in + (tag$ ["library/lux" "then"]) g!then)) body'])) monad))))) @@ -1585,7 +1593,7 @@ (-> a ($' m b)) ($' List a) ($' m ($' List b)))) - (let' [{#in in #then _} m] + (let' [[#in in #then _] m] ({#End (in #End) @@ -1604,7 +1612,7 @@ b ($' List a) ($' m b))) - (let' [{#in in #then _} m] + (let' [[#in in #then _] m] ({#End (in y) @@ -1660,11 +1668,11 @@ #End (-> Name ($' Meta Name)) (let' [[module name] full_name - {#info info #source source #current_module _ #modules modules + [#info info #source source #current_module _ #modules modules #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_annotations _ #module_state _}) + #scope_type_vars scope_type_vars #eval _eval] state] + ({(#Some [#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_annotations _ #module_state _]) ({(#Some constant) ({(#Alias real_name) (#Right [state real_name]) @@ -1849,10 +1857,10 @@ (def:'' .private (current_module_name state) #End ($' Meta Text) - ({{#info info #source source #current_module current_module #modules modules + ({[#info info #source source #current_module current_module #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} + #scope_type_vars scope_type_vars #eval _eval] ({(#Some module_name) (#Right [state module_name]) @@ -2201,7 +2209,7 @@ ($' Maybe Macro)) (do maybe_monad [$module (plist\value module modules) - gdef (let' [{#module_hash _ #module_aliases _ #definitions bindings #imports _ #module_annotations _ #module_state _} ("lux type check" Module $module)] + gdef (let' [[#module_hash _ #module_aliases _ #definitions bindings #imports _ #module_annotations _ #module_state _] ("lux type check" Module $module)] (plist\value name bindings))] ({(#Alias [r_module r_name]) (macro'' modules current_module r_module r_name) @@ -2244,11 +2252,11 @@ [current_module current_module_name] (let' [[module name] full_name] (function' [state] - ({{#info info #source source #current_module _ #modules modules + ({[#info info #source source #current_module _ #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} + #scope_type_vars scope_type_vars #eval _eval] (#Right state (macro'' modules current_module module name))} state))))) @@ -2533,16 +2541,16 @@ (def:''' .private (identifier prefix state) #End (-> Text ($' Meta Code)) - ({{#info info #source source #current_module _ #modules modules + ({[#info info #source source #current_module _ #modules modules #scopes scopes #type_context types #host host #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 + #scope_type_vars scope_type_vars #eval _eval] + (#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} + #scope_type_vars scope_type_vars #eval _eval] (local_identifier$ ($_ text\composite "__gensym__" prefix (nat\encoded seed))))} state)) @@ -3255,10 +3263,10 @@ (def: (module name) (-> Text (Meta Module)) (function (_ state) - (let [{#info info #source source #current_module _ #modules modules + (let [[#info info #source source #current_module _ #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} state] + #scope_type_vars scope_type_vars #eval _eval] state] (case (plist\value name modules) (#Some module) (#Right state module) @@ -3270,7 +3278,7 @@ (-> Name (Meta [Nat (List Name) Bit Type])) (do meta_monad [=module (..module module) - .let [{#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_annotations _ #module_state _} =module]] + .let [[#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_annotations _ #module_state _] =module]] (case (plist\value (text\composite "#" name) definitions) (#Some (#Slot [exported type group index])) (in_meta [index @@ -3298,7 +3306,7 @@ (#Named [module name] unnamed) (do meta_monad [=module (..module module) - .let [{#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_annotations _ #module_state _} =module]] + .let [[#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_annotations _ #module_state _] =module]] (case (plist\value name definitions) (#Some (#Type [exported? (#Named _ _type) (#Right slots)])) (case (interface_methods _type) @@ -3319,10 +3327,10 @@ (def: expected_type (Meta Type) (function (_ state) - (let [{#info info #source source #current_module _ #modules modules + (let [[#info info #source source #current_module _ #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} state] + #scope_type_vars scope_type_vars #eval _eval] state] (case expected (#Some type) (#Right state type) @@ -3394,13 +3402,13 @@ (list\each (function (_ tag) [(product\right tag) (tag$ tag)]) tags))] members (monad\each meta_monad - (: (-> Code (Meta [Code Code])) + (: (-> Code (Meta (List Code))) (function (_ token) (case token (^ [_ (#Form (list [_ (#Text "lux def")] [_ (#Identifier "" tag_name)] value meta export_policy))]) (case (plist\value tag_name tag_mappings) (#Some tag) - (in [tag value]) + (in (list tag value)) _ (failure (text\composite "Unknown implementation member: " tag_name))) @@ -3408,7 +3416,7 @@ _ (failure "Invalid implementation member.")))) (list\conjoint tokens'))] - (in (list (record$ members))))) + (in (list (tuple$ (list\conjoint members)))))) (def: (text\interposed separator parts) (-> Text (List Text) Text) @@ -3539,20 +3547,10 @@ _ #None)) -(def: un_paired - (-> (List [Code Code]) (List Code)) - (let [pair_list (: (-> [Code Code] (List Code)) - (function (_ [left right]) - (list left right)))] - (function (_ it) - (|> it - (list\each pair_list) - list\conjoint)))) - (macro: .public (Record tokens) (case tokens - (^ (list [_ (#Record record)])) - (case (everyP slotP (un_paired record)) + (^ (list [_ (#Tuple record)])) + (case (everyP slotP record) (#Some slots) (in_meta (list (` (..Tuple (~+ (list\each product\right slots)))) (tuple$ (list\each (function (_ slot) @@ -3728,14 +3726,14 @@ (type: Refer (Record - {#refer_defs Referrals - #refer_open (List Openings)})) + [#refer_defs Referrals + #refer_open (List Openings)])) (type: Importation (Record - {#import_name Text + [#import_name Text #import_alias (Maybe Text) - #import_refer Refer})) + #import_refer Refer])) (def: (referral_references defs) (-> (List Code) (Meta (List Text))) @@ -3921,10 +3919,10 @@ [_ (#Identifier ["" module_name])] (do meta_monad [absolute_module_name (..absolute_module_name nested? relative_root module_name)] - (in (list {#import_name absolute_module_name + (in (list [#import_name absolute_module_name #import_alias #None - #import_refer {#refer_defs #All - #refer_open (list)}}))) + #import_refer [#refer_defs #All + #refer_open (list)]]))) ... Nested (^ [_ (#Tuple (list& [_ (#Identifier ["" module_name])] extra))]) @@ -3945,10 +3943,10 @@ sub_imports _ - (list& {#import_name absolute_module_name + (list& [#import_name absolute_module_name #import_alias #None - #import_refer {#refer_defs referral - #refer_open openings}} + #import_refer [#refer_defs referral + #refer_open openings]] sub_imports)))) (^ [_ (#Tuple (list& [_ (#Text alias)] [_ (#Identifier ["" module_name])] extra))]) @@ -3970,10 +3968,10 @@ sub_imports _ - (list& {#import_name absolute_module_name + (list& [#import_name absolute_module_name #import_alias (#Some module_alias) - #import_refer {#refer_defs referral - #refer_open openings}} + #import_refer [#refer_defs referral + #refer_open openings]] sub_imports)))) ... Unrecognized syntax. @@ -3989,10 +3987,10 @@ (def: (exported_definitions module state) (-> Text (Meta (List Text))) (let [[current_module modules] (case state - {#info info #source source #current_module current_module #modules modules + [#info info #source source #current_module current_module #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} + #scope_type_vars scope_type_vars #eval _eval] [current_module modules])] (case (plist\value module modules) (#Some =module) @@ -4018,7 +4016,7 @@ (#Slot _) (list)))) - (let [{#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_annotations _ #module_state _} =module] + (let [[#module_hash _ #module_aliases _ #definitions definitions #imports _ #module_annotations _ #module_state _] =module] definitions))] (#Right state (list\conjoint to_alias))) @@ -4069,17 +4067,17 @@ (def: (in_env name state) (-> Text Lux (Maybe Type)) (case state - {#info info #source source #current_module _ #modules modules + [#info info #source source #current_module _ #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} + #scope_type_vars scope_type_vars #eval _eval] (list\one (: (-> Scope (Maybe Type)) (function (_ env) (case env - {#name _ + [#name _ #inner _ - #locals {#counter _ #mappings locals} - #captured {#counter _ #mappings closure}} + #locals [#counter _ #mappings locals] + #captured [#counter _ #mappings closure]] (on_either (list\one (: (-> [Text [Type Any]] (Maybe Type)) (function (_ [bname [type _]]) (if (text\= name bname) @@ -4092,15 +4090,15 @@ (def: (definition_type name state) (-> Name Lux (Maybe Type)) (let [[v_module v_name] name - {#info info #source source #current_module _ #modules modules + [#info info #source source #current_module _ #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} state] + #scope_type_vars scope_type_vars #eval _eval] state] (case (plist\value v_module modules) #None #None - (#Some {#definitions definitions #module_hash _ #module_aliases _ #imports _ #module_annotations _ #module_state _}) + (#Some [#definitions definitions #module_hash _ #module_aliases _ #imports _ #module_annotations _ #module_state _]) (case (plist\value v_name definitions) #None #None @@ -4125,15 +4123,15 @@ (def: (definition_value name state) (-> Name (Meta [Type Any])) (let [[v_module v_name] name - {#info info #source source #current_module _ #modules modules + [#info info #source source #current_module _ #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} state] + #scope_type_vars scope_type_vars #eval _eval] state] (case (plist\value v_module modules) #None (#Left (text\composite "Unknown definition: " (name\encoded name))) - (#Some {#definitions definitions #module_hash _ #module_aliases _ #imports _ #module_annotations _ #module_state _}) + (#Some [#definitions definitions #module_hash _ #module_aliases _ #imports _ #module_annotations _ #module_state _]) (case (plist\value v_name definitions) #None (#Left (text\composite "Unknown definition: " (name\encoded name))) @@ -4192,11 +4190,11 @@ (#Left ($_ text\composite "Unknown var: " (name\encoded full_name)))))] (case temp (#Right [compiler (#Var type_id)]) - (let [{#info _ #source _ #current_module _ #modules _ + (let [[#info _ #source _ #current_module _ #modules _ #scopes _ #type_context type_context #host _ #seed _ #expected _ #location _ #extensions extensions - #scope_type_vars _ #eval _eval} compiler - {#ex_counter _ #var_counter _ #var_bindings var_bindings} type_context] + #scope_type_vars _ #eval _eval] compiler + [#ex_counter _ #var_counter _ #var_bindings var_bindings] type_context] (case (type_variable type_id var_bindings) #None temp @@ -4309,13 +4307,15 @@ g!output (..identifier "")] (case (interface_methods type) (#Some members) - (let [pattern (record$ (list\each (: (-> [Name [Nat Type]] [Code Code]) - (function (_ [[r_module r_name] [r_idx r_type]]) - [(tag$ [r_module r_name]) + (let [pattern (|> (zipped/2 tags (enumeration members)) + (list\each (: (-> [Name [Nat Type]] (List Code)) + (function (_ [[r_module r_name] [r_idx r_type]]) + (list (tag$ [r_module r_name]) (if ("lux i64 =" idx r_idx) g!output - g!_)])) - (zipped/2 tags (enumeration members))))] + g!_))))) + list\conjoint + tuple$)] (in_meta (list (` ({(~ pattern) (~ g!output)} (~ record)))))) _ @@ -4415,7 +4415,7 @@ (-> Text Text (Meta Bit)) (do meta_monad [module (module module_name) - .let [{#module_hash _ #module_aliases _ #definitions _ #imports imports #module_annotations _ #module_state _} module]] + .let [[#module_hash _ #module_aliases _ #definitions _ #imports imports #module_annotations _ #module_state _] module]] (in (is_member? imports import_name)))) (def: (referrals module_name options) @@ -4428,8 +4428,8 @@ current_module current_module_name] (case options #End - (in {#refer_defs referral - #refer_open openings}) + (in [#refer_defs referral + #refer_open openings]) _ (failure ($_ text\composite "Wrong syntax for refer @ " current_module @@ -4575,18 +4575,22 @@ [g!slot (..identifier "")] (in_meta [r_slot_name r_idx g!slot])))) (zipped/2 tags (enumeration members)))] - (let [pattern (record$ (list\each (: (-> [Name Nat Code] [Code Code]) - (function (_ [r_slot_name r_idx r_var]) - [(tag$ r_slot_name) - r_var])) - pattern')) - output (record$ (list\each (: (-> [Name Nat Code] [Code Code]) - (function (_ [r_slot_name r_idx r_var]) - [(tag$ r_slot_name) + (let [pattern (|> pattern' + (list\each (: (-> [Name Nat Code] (List Code)) + (function (_ [r_slot_name r_idx r_var]) + (list (tag$ r_slot_name) + r_var)))) + list\conjoint + tuple$) + output (|> pattern' + (list\each (: (-> [Name Nat Code] (List Code)) + (function (_ [r_slot_name r_idx r_var]) + (list (tag$ r_slot_name) (if ("lux i64 =" idx r_idx) value - r_var)])) - pattern'))] + r_var))))) + list\conjoint + tuple$)] (in_meta (list (` ({(~ pattern) (~ output)} (~ record))))))) _ @@ -4654,18 +4658,22 @@ [g!slot (..identifier "")] (in_meta [r_slot_name r_idx g!slot])))) (zipped/2 tags (enumeration members)))] - (let [pattern (record$ (list\each (: (-> [Name Nat Code] [Code Code]) - (function (_ [r_slot_name r_idx r_var]) - [(tag$ r_slot_name) - r_var])) - pattern')) - output (record$ (list\each (: (-> [Name Nat Code] [Code Code]) - (function (_ [r_slot_name r_idx r_var]) - [(tag$ r_slot_name) + (let [pattern (|> pattern' + (list\each (: (-> [Name Nat Code] (List Code)) + (function (_ [r_slot_name r_idx r_var]) + (list (tag$ r_slot_name) + r_var)))) + list\conjoint + tuple$) + output (|> pattern' + (list\each (: (-> [Name Nat Code] (List Code)) + (function (_ [r_slot_name r_idx r_var]) + (list (tag$ r_slot_name) (if ("lux i64 =" idx r_idx) (` ((~ fun) (~ r_var))) - r_var)])) - pattern'))] + r_var))))) + list\conjoint + tuple$)] (in_meta (list (` ({(~ pattern) (~ output)} (~ record))))))) _ @@ -4854,13 +4862,15 @@ (function (_ [module name]) [name (local_identifier$ name)])) (list& hslot tslots)) - pattern (record$ (list\each (: (-> Name [Code Code]) - (function (_ [module name]) - (let [tag (tag$ [module name])] - (case (plist\value name slot_pairings) - (#Some binding) [tag binding] - #None [tag g!_])))) - tags))]] + pattern (|> tags + (list\each (: (-> Name (List Code)) + (function (_ [module name]) + (let [tag (tag$ [module name])] + (case (plist\value name slot_pairings) + (#Some binding) (list tag binding) + #None (list tag g!_)))))) + list\conjoint + tuple$)]] (in_meta (list& pattern body branches))) _ @@ -5109,10 +5119,10 @@ (def: (scope_type_vars state) (Meta (List Nat)) (case state - {#info info #source source #current_module _ #modules modules + [#info info #source source #current_module _ #modules modules #scopes scopes #type_context types #host host #seed seed #expected expected #location location #extensions extensions - #scope_type_vars scope_type_vars #eval _eval} + #scope_type_vars scope_type_vars #eval _eval] (#Right [state scope_type_vars]))) (macro: .public (:parameter tokens) diff --git a/stdlib/source/library/lux/abstract/monad/indexed.lux b/stdlib/source/library/lux/abstract/monad/indexed.lux index 58e7e4633..f74790dca 100644 --- a/stdlib/source/library/lux/abstract/monad/indexed.lux +++ b/stdlib/source/library/lux/abstract/monad/indexed.lux @@ -83,11 +83,11 @@ (#.Some name) (let [name (code.local_identifier name)] (` (let [(~ name) (~ monad) - {#..in (~' in) - #..then (~ g!then)} (~ name)] + [#..in (~' in) + #..then (~ g!then)] (~ name)] (~ body)))) #.None - (` (let [{#..in (~' in) - #..then (~ g!then)} (~ monad)] + (` (let [[#..in (~' in) + #..then (~ g!then)] (~ monad)] (~ body))))))))) diff --git a/stdlib/source/library/lux/control/concatenative.lux b/stdlib/source/library/lux/control/concatenative.lux index 6f3f64403..7e8e04ba2 100644 --- a/stdlib/source/library/lux/control/concatenative.lux +++ b/stdlib/source/library/lux/control/concatenative.lux @@ -31,8 +31,8 @@ (type: Stack (Record - {#bottom (Maybe Code) - #top (List Code)})) + [#bottom (Maybe Code) + #top (List Code)])) (def: aliases^ (Parser (List Alias)) diff --git a/stdlib/source/library/lux/control/concurrency/actor.lux b/stdlib/source/library/lux/control/concurrency/actor.lux index 6d47288df..7353bad84 100644 --- a/stdlib/source/library/lux/control/concurrency/actor.lux +++ b/stdlib/source/library/lux/control/concurrency/actor.lux @@ -66,9 +66,9 @@ {} (Record - {#obituary [(Async <Obituary>) + [#obituary [(Async <Obituary>) (Resolver <Obituary>)] - #mailbox (Atom <Mailbox>)}) + #mailbox (Atom <Mailbox>)]) (type: .public (Mail s) <Mail>) @@ -78,8 +78,8 @@ (type: .public (Behavior o s) (Record - {#on_init (-> o s) - #on_mail (-> (Mail s) s (Actor s) (Async (Try s)))})) + [#on_init (-> o s) + #on_mail (-> (Mail s) s (Actor s) (Async (Try s)))])) (def: .public (spawn! behavior init) (All (_ o s) (-> (Behavior o s) o (IO (Actor s)))) @@ -89,8 +89,8 @@ behavior (Actor s) - (:abstraction {#obituary (async.async []) - #mailbox (atom (async.async []))})) + (:abstraction [#obituary (async.async []) + #mailbox (atom (async.async []))])) process (loop [state (on_init init) [|mailbox| _] (io.run! (atom.read! (value@ #mailbox (:representation self))))] (do {! async.monad} @@ -204,8 +204,8 @@ (def: .public default (All (_ s) (Behavior s s)) - {#on_init function.identity - #on_mail ..default_on_mail}) + [#on_init function.identity + #on_mail ..default_on_mail]) (def: .public (poison! actor) (All (_ s) (-> (Actor s) (IO (Try Any)))) @@ -274,8 +274,8 @@ (def: (~ export_policy) (~ g!actor) (All ((~ g!_) (~+ g!vars)) (..Behavior (~ state_type) ((~ g!type) (~+ g!vars)))) - {#..on_init (|>> ((~! abstract.:abstraction) (~ g!type))) - #..on_mail (~ (..on_mail g!_ ?on_mail))}) + [#..on_init (|>> ((~! abstract.:abstraction) (~ g!type))) + #..on_mail (~ (..on_mail g!_ ?on_mail))]) (~+ messages)))))))) @@ -284,18 +284,18 @@ (with_identifiers [g!_] (in (list (` (: ((~! io.IO) (..Actor (~ state_type))) (..spawn! (: (..Behavior (~ state_type) (~ state_type)) - {#..on_init (|>>) - #..on_mail (~ (..on_mail g!_ ?on_mail))}) + [#..on_init (|>>) + #..on_mail (~ (..on_mail g!_ ?on_mail))]) (: (~ state_type) (~ init))))))))) (type: Signature (Record - {#vars (List Text) + [#vars (List Text) #name Text #inputs (List |input|.Input) #state Text - #self Text})) + #self Text])) (def: signature^ (Parser Signature) diff --git a/stdlib/source/library/lux/control/concurrency/atom.lux b/stdlib/source/library/lux/control/concurrency/atom.lux index 963400278..53120a3c4 100644 --- a/stdlib/source/library/lux/control/concurrency/atom.lux +++ b/stdlib/source/library/lux/control/concurrency/atom.lux @@ -1,6 +1,7 @@ (.module: [library [lux #* + ["." macro] ["." ffi] ["@" target] [abstract @@ -15,11 +16,12 @@ [type abstract]]]) -(with_expansions [<jvm> (as_is (ffi.import: (java/util/concurrent/atomic/AtomicReference a) - ["#::." - (new [a]) - (get [] a) - (compareAndSet [a a] boolean)]))] +(with_expansions [<jvm> (as_is (macro.log_single_expansion! + (ffi.import: (java/util/concurrent/atomic/AtomicReference a) + ["#::." + (new [a]) + (get [] a) + (compareAndSet [a a] boolean)])))] (for {@.old <jvm> @.jvm <jvm>} (as_is))) diff --git a/stdlib/source/library/lux/control/concurrency/semaphore.lux b/stdlib/source/library/lux/control/concurrency/semaphore.lux index f0ff9d7ba..64f3c4af4 100644 --- a/stdlib/source/library/lux/control/concurrency/semaphore.lux +++ b/stdlib/source/library/lux/control/concurrency/semaphore.lux @@ -26,9 +26,9 @@ (type: State (Record - {#max_positions Nat + [#max_positions Nat #open_positions Int - #waiting_list (Queue (Resolver Any))})) + #waiting_list (Queue (Resolver Any))])) (abstract: .public Semaphore {} @@ -42,9 +42,9 @@ (-> Nat Semaphore) (let [max_positions (n.min initial_open_positions ..most_positions_possible)] - (:abstraction (atom.atom {#max_positions max_positions + (:abstraction (atom.atom [#max_positions max_positions #open_positions (.int max_positions) - #waiting_list queue.empty})))) + #waiting_list queue.empty])))) (def: .public (wait! semaphore) (Ex (_ k) (-> Semaphore (Async Any))) @@ -132,17 +132,17 @@ {} (Record - {#limit Limit + [#limit Limit #count (Atom Nat) #start_turnstile Semaphore - #end_turnstile Semaphore}) + #end_turnstile Semaphore]) (def: .public (barrier limit) (-> Limit Barrier) - (:abstraction {#limit limit + (:abstraction [#limit limit #count (atom.atom 0) #start_turnstile (..semaphore 0) - #end_turnstile (..semaphore 0)})) + #end_turnstile (..semaphore 0)])) (def: (un_block! times turnstile) (-> Nat Semaphore (Async Any)) diff --git a/stdlib/source/library/lux/control/concurrency/stm.lux b/stdlib/source/library/lux/control/concurrency/stm.lux index d8bb2568b..523227a27 100644 --- a/stdlib/source/library/lux/control/concurrency/stm.lux +++ b/stdlib/source/library/lux/control/concurrency/stm.lux @@ -77,9 +77,9 @@ (type: (Tx_Frame a) (Record - {#var (Var a) + [#var (Var a) #original a - #current a})) + #current a])) (type: Tx (List (Ex (_ a) (Tx_Frame a)))) @@ -118,13 +118,13 @@ (#.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)} + #current (:as Any value)] tx') - (#.Item {#var _var + (#.Item [#var _var #original _original - #current _current} + #current _current] (with_updated_var var value tx'))))) (def: .public (write value var) diff --git a/stdlib/source/library/lux/control/concurrency/thread.lux b/stdlib/source/library/lux/control/concurrency/thread.lux index 603b44da8..e3a5606c3 100644 --- a/stdlib/source/library/lux/control/concurrency/thread.lux +++ b/stdlib/source/library/lux/control/concurrency/thread.lux @@ -60,9 +60,9 @@ ... Default (type: Thread (Record - {#creation Nat + [#creation Nat #delay Nat - #action (IO Any)})) + #action (IO Any)])) )) (def: .public parallelism @@ -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 4998142f7..17de72095 100644 --- a/stdlib/source/library/lux/control/exception.lux +++ b/stdlib/source/library/lux/control/exception.lux @@ -28,8 +28,8 @@ (type: .public (Exception a) (Record - {#label Text - #constructor (-> a Text)})) + [#label Text + #constructor (-> a Text)])) (def: .public (match? exception error) (All (_ e) (-> (Exception e) Text Bit)) @@ -101,10 +101,10 @@ (All ((~ g!_) (~+ (list\each |type_variable|.format t_vars))) (..Exception [(~+ (list\each (value@ #|input|.type) inputs))])) (let [(~ g!descriptor) (~ (code.text descriptor))] - {#..label (~ g!descriptor) + [#..label (~ g!descriptor) #..constructor (function ((~ g!self) [(~+ (list\each (value@ #|input|.binding) inputs))]) ((~! text\composite) (~ g!descriptor) - (~ (maybe.else (' "") body))))})))))))) + (~ (maybe.else (' "") body))))])))))))) (def: (report' entries) (-> (List [Text Text]) Text) diff --git a/stdlib/source/library/lux/control/function/mutual.lux b/stdlib/source/library/lux/control/function/mutual.lux index 5ef853829..f303eff44 100644 --- a/stdlib/source/library/lux/control/function/mutual.lux +++ b/stdlib/source/library/lux/control/function/mutual.lux @@ -26,9 +26,9 @@ (type: Mutual (Record - {#declaration Declaration + [#declaration Declaration #type Code - #body Code})) + #body Code])) (.def: mutual (Parser [Declaration Code Code]) @@ -97,8 +97,8 @@ (type: Definition (Record - {#export_policy Code - #mutual Mutual})) + [#export_policy Code + #mutual Mutual])) (.def: definition (Parser Definition) diff --git a/stdlib/source/library/lux/control/parser/text.lux b/stdlib/source/library/lux/control/parser/text.lux index 5943fba26..e19eb72a4 100644 --- a/stdlib/source/library/lux/control/parser/text.lux +++ b/stdlib/source/library/lux/control/parser/text.lux @@ -32,8 +32,8 @@ (type: .public Slice (Record - {#basis Offset - #distance Offset})) + [#basis Offset + #distance Offset])) (def: (left_over offset tape) (-> Offset Text Text) @@ -77,8 +77,8 @@ (in (list\mix (function (_ [slice::basis slice::distance] [total::basis total::distance]) [total::basis ("lux i64 +" slice::distance total::distance)]) - {#basis offset - #distance 0} + [#basis offset + #distance 0] slices)))) (def: .public any @@ -97,8 +97,8 @@ (case (/.char offset tape) (#.Some _) (#try.Success [[("lux i64 +" 1 offset) tape] - {#basis offset - #distance 1}]) + [#basis offset + #distance 1]]) _ (exception.except ..cannot_slice [])))) @@ -230,8 +230,8 @@ (let [output' (/.of_char output)] (if (<modifier> (/.contains? output' options)) (#try.Success [[("lux i64 +" 1 offset) tape] - {#basis offset - #distance 1}]) + [#basis offset + #distance 1]]) (exception.except <exception> [options output]))) _ diff --git a/stdlib/source/library/lux/control/security/policy.lux b/stdlib/source/library/lux/control/security/policy.lux index c9e840698..44d233cde 100644 --- a/stdlib/source/library/lux/control/security/policy.lux +++ b/stdlib/source/library/lux/control/security/policy.lux @@ -21,8 +21,8 @@ (type: .public (Privilege brand label) (Record - {#can_upgrade (Can_Upgrade brand label) - #can_downgrade (Can_Downgrade brand label)})) + [#can_upgrade (Can_Upgrade brand label) + #can_downgrade (Can_Downgrade brand label)])) (type: .public (Delegation brand from to) (All (_ value) @@ -41,8 +41,8 @@ (def: privilege Privilege - {#can_upgrade (|>> :abstraction) - #can_downgrade (|>> :representation)}) + [#can_upgrade (|>> :abstraction) + #can_downgrade (|>> :representation)]) (def: .public (with_policy context) (All (_ brand scope) diff --git a/stdlib/source/library/lux/control/writer.lux b/stdlib/source/library/lux/control/writer.lux index b933c4388..771bb95a5 100644 --- a/stdlib/source/library/lux/control/writer.lux +++ b/stdlib/source/library/lux/control/writer.lux @@ -10,8 +10,8 @@ (type: .public (Writer log value) (Record - {#log log - #value value})) + [#log log + #value value])) (def: .public (write message) (All (_ log) (-> log (Writer log Any))) diff --git a/stdlib/source/library/lux/data/collection/dictionary.lux b/stdlib/source/library/lux/data/collection/dictionary.lux index ad65dabbd..becef793e 100644 --- a/stdlib/source/library/lux/data/collection/dictionary.lux +++ b/stdlib/source/library/lux/data/collection/dictionary.lux @@ -560,8 +560,8 @@ (type: .public (Dictionary k v) (Record - {#hash (Hash k) - #root (Node k v)})) + [#hash (Hash k) + #root (Node k v)])) (def: .public key_hash (All (_ k v) (-> (Dictionary k v) (Hash k))) @@ -569,8 +569,8 @@ (def: .public (empty key_hash) (All (_ k v) (-> (Hash k) (Dictionary k v))) - {#hash key_hash - #root empty_node}) + [#hash key_hash + #root empty_node]) (def: .public (has key val dict) (All (_ k v) (-> k v (Dictionary k v) (Dictionary k v))) diff --git a/stdlib/source/library/lux/data/collection/dictionary/ordered.lux b/stdlib/source/library/lux/data/collection/dictionary/ordered.lux index acb2599f2..81096ddef 100644 --- a/stdlib/source/library/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/library/lux/data/collection/dictionary/ordered.lux @@ -25,20 +25,20 @@ (type: (Node k v) (Record - {#color Color + [#color Color #key k #value v #left (Maybe (Node k v)) - #right (Maybe (Node k v))})) + #right (Maybe (Node k v))])) (template [<create> <color>] [(def: (<create> key value left right) (All (_ k v) (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) - {#color <color> + [#color <color> #key key #value value #left left - #right right})] + #right right])] [red #Red] [black #Black] @@ -46,13 +46,13 @@ (type: .public (Dictionary k v) (Record - {#&order (Order k) - #root (Maybe (Node k v))})) + [#&order (Order k) + #root (Maybe (Node k v))])) (def: .public (empty order) (All (_ k v) (-> (Order k) (Dictionary k v))) - {#&order order - #root #.None}) + [#&order order + #root #.None]) ... TODO: Doing inneficient access of Order functions due to compiler bug. ... TODO: Must improve it as soon as bug is fixed. diff --git a/stdlib/source/library/lux/data/collection/queue.lux b/stdlib/source/library/lux/data/collection/queue.lux index 524c14067..deb07edb2 100644 --- a/stdlib/source/library/lux/data/collection/queue.lux +++ b/stdlib/source/library/lux/data/collection/queue.lux @@ -13,18 +13,18 @@ (type: .public (Queue a) (Record - {#front (List a) - #rear (List a)})) + [#front (List a) + #rear (List a)])) (def: .public empty Queue - {#front (.list) - #rear (.list)}) + [#front (.list) + #rear (.list)]) (def: .public (of_list entries) (All (_ a) (-> (List a) (Queue a))) - {#front entries - #rear (.list)}) + [#front entries + #rear (.list)]) (def: .public (list queue) (All (_ a) (-> (Queue a) (List a))) @@ -90,5 +90,5 @@ (Functor Queue) (def: (each f fa) - {#front (|> fa (value@ #front) (list\each f)) - #rear (|> fa (value@ #rear) (list\each f))})) + [#front (|> fa (value@ #front) (list\each f)) + #rear (|> fa (value@ #rear) (list\each f))])) diff --git a/stdlib/source/library/lux/data/collection/row.lux b/stdlib/source/library/lux/data/collection/row.lux index 59f48d867..6c04e7dd4 100644 --- a/stdlib/source/library/lux/data/collection/row.lux +++ b/stdlib/source/library/lux/data/collection/row.lux @@ -191,17 +191,17 @@ (type: .public (Row a) (Record - {#level Level + [#level Level #size Nat #root (Hierarchy a) - #tail (Base a)})) + #tail (Base a)])) (def: .public empty Row - {#level (level_up root_level) + [#level (level_up root_level) #size 0 #root (empty_hierarchy []) - #tail (array.empty 0)}) + #tail (array.empty 0)]) (def: .public (size row) (All (_ a) (-> (Row a) Nat)) @@ -439,10 +439,10 @@ (Functor Row) (def: (each f xs) - {#level (value@ #level xs) + [#level (value@ #level xs) #size (value@ #size xs) #root (|> xs (value@ #root) (array\each (\ node_functor each f))) - #tail (|> xs (value@ #tail) (array\each f))})) + #tail (|> xs (value@ #tail) (array\each f))])) (implementation: .public apply (Apply Row) diff --git a/stdlib/source/library/lux/data/collection/tree.lux b/stdlib/source/library/lux/data/collection/tree.lux index d16d02c74..26c385f7e 100644 --- a/stdlib/source/library/lux/data/collection/tree.lux +++ b/stdlib/source/library/lux/data/collection/tree.lux @@ -18,8 +18,8 @@ (type: .public (Tree a) (Record - {#value a - #children (List (Tree a))})) + [#value a + #children (List (Tree a))])) (def: .public (flat tree) (All (_ a) (-> (Tree a) (List a))) @@ -31,13 +31,13 @@ (def: .public (leaf value) (All (_ a) (-> a (Tree a))) - {#value value - #children (list)}) + [#value value + #children (list)]) (def: .public (branch value children) (All (_ a) (-> a (List (Tree a)) (Tree a))) - {#value value - #children children}) + [#value value + #children children]) (type: Tree_Code (Rec Tree_Code @@ -56,8 +56,8 @@ (syntax: .public (tree [root tree^]) (in (list (` (~ (loop [[value children] root] - (` {#value (~ value) - #children (list (~+ (list\each recur children)))}))))))) + (` [#value (~ value) + #children (list (~+ (list\each recur children)))]))))))) (implementation: .public (equivalence super) (All (_ a) (-> (Equivalence a) (Equivalence (Tree a)))) @@ -70,9 +70,9 @@ (Functor Tree) (def: (each f fa) - {#value (f (value@ #value fa)) + [#value (f (value@ #value fa)) #children (list\each (each f) - (value@ #children fa))})) + (value@ #children fa))])) (implementation: .public mix (Mix Tree) diff --git a/stdlib/source/library/lux/data/collection/tree/finger.lux b/stdlib/source/library/lux/data/collection/tree/finger.lux index b8313112c..c675916aa 100644 --- a/stdlib/source/library/lux/data/collection/tree/finger.lux +++ b/stdlib/source/library/lux/data/collection/tree/finger.lux @@ -15,10 +15,10 @@ {} (Record - {#monoid (Monoid t) + [#monoid (Monoid t) #tag t #root (Or v - [(Tree @ t v) (Tree @ t v)])}) + [(Tree @ t v) (Tree @ t v)])]) (type: .public (Builder @ t) (Interface @@ -45,15 +45,15 @@ (def: (leaf tag value) (:abstraction - {#monoid monoid + [#monoid monoid #tag tag - #root (0 #0 value)})) + #root (0 #0 value)])) (def: (branch left right) (:abstraction - {#monoid monoid + [#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)) diff --git a/stdlib/source/library/lux/data/collection/tree/zipper.lux b/stdlib/source/library/lux/data/collection/tree/zipper.lux index 7f168c2d3..15265bf94 100644 --- a/stdlib/source/library/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/library/lux/data/collection/tree/zipper.lux @@ -19,15 +19,15 @@ (type: (Family Zipper a) (Record - {#parent (Zipper a) + [#parent (Zipper a) #lefts (List (Tree a)) - #rights (List (Tree a))})) + #rights (List (Tree a))])) ... https://en.wikipedia.org/wiki/Zipper_(data_structure) (type: .public (Zipper a) (Record - {#family (Maybe (Family Zipper a)) - #node (Tree a)})) + [#family (Maybe (Family Zipper a)) + #node (Tree a)])) (implementation: .public (equivalence super) (All (_ a) @@ -46,8 +46,8 @@ (def: .public (zipper tree) (All (_ a) (-> (Tree a) (Zipper a))) - {#family #.None - #node tree}) + [#family #.None + #node tree]) (def: .public tree (All (_ a) (-> (Zipper a) (Tree a))) @@ -93,10 +93,10 @@ #.None (#.Item head tail) - (#.Some {#family (#.Some {#parent (with@ [#node #//.children] (list) zipper) + (#.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)))) @@ -124,16 +124,16 @@ (case (value@ <side> family) (#.Item next side') (#.Some (for {@.old - {#family (#.Some (|> family + [#family (#.Some (|> family (with@ <side> side') (revised@ <op_side> (|>> (#.Item (value@ #node zipper)))))) - #node next}} + #node next]} (let [move (: (All (_ a) (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ side' zipper) (|>> (with@ <side> side') (revised@ <op_side> (|>> (#.Item (value@ #node zipper)))))))] - {#family (#.Some (move side' zipper family)) - #node next}))) + [#family (#.Some (move side' zipper family)) + #node next]))) #.End #.None) @@ -153,18 +153,18 @@ #.None (#.Item last prevs) - (#.Some (for {@.old {#family (#.Some (|> family + (#.Some (for {@.old [#family (#.Some (|> family (with@ <side> #.End) (revised@ <op_side> (|>> (#.Item (value@ #node zipper)) (list\composite prevs))))) - #node last}} + #node last]} (let [move (: (All (_ a) (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ prevs zipper) (|>> (with@ <side> #.End) (revised@ <op_side> (|>> (#.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] @@ -293,12 +293,12 @@ (Functor Zipper) (def: (each f (^slots [#family #node])) - {#family (maybe\each (function (_ (^slots [#parent #lefts #rights])) - {#parent (each f parent) + [#family (maybe\each (function (_ (^slots [#parent #lefts #rights])) + [#parent (each f parent) #lefts (list\each (//\each f) lefts) - #rights (list\each (//\each f) rights)}) + #rights (list\each (//\each f) rights)]) family) - #node (//\each f node)})) + #node (//\each f node)])) (implementation: .public comonad (CoMonad Zipper) @@ -310,13 +310,13 @@ (def: (disjoint (^slots [#family #node])) (let [tree_splitter (: (All (_ a) (-> (Tree a) (Tree (Zipper a)))) (function (tree_splitter tree) - {#//.value (..zipper tree) + [#//.value (..zipper tree) #//.children (|> tree (value@ #//.children) - (list\each tree_splitter))}))] - {#family (maybe\each (function (_ (^slots [#parent #lefts #rights])) - {#parent (disjoint parent) + (list\each tree_splitter))]))] + [#family (maybe\each (function (_ (^slots [#parent #lefts #rights])) + [#parent (disjoint parent) #lefts (list\each tree_splitter lefts) - #rights (list\each tree_splitter rights)}) + #rights (list\each tree_splitter rights)]) family) - #node (tree_splitter node)}))) + #node (tree_splitter node)]))) diff --git a/stdlib/source/library/lux/data/color.lux b/stdlib/source/library/lux/data/color.lux index f688297f2..11c31b184 100644 --- a/stdlib/source/library/lux/data/color.lux +++ b/stdlib/source/library/lux/data/color.lux @@ -37,19 +37,19 @@ (type: .public RGB (Record - {#red Nat + [#red Nat #green Nat - #blue Nat})) + #blue Nat])) (type: .public HSL [Frac Frac Frac]) (type: .public CMYK (Record - {#cyan Frac + [#cyan Frac #magenta Frac #yellow Frac - #key Frac})) + #key Frac])) (type: .public HSB [Frac Frac Frac]) @@ -61,9 +61,9 @@ (def: .public (of_rgb [red green blue]) (-> RGB Color) - (:abstraction {#red (n.% ..rgb_limit red) + (:abstraction [#red (n.% ..rgb_limit red) #green (n.% ..rgb_limit green) - #blue (n.% ..rgb_limit blue)})) + #blue (n.% ..rgb_limit blue)])) (def: .public rgb (-> Color RGB) @@ -93,15 +93,15 @@ (def: .public black Color - (..of_rgb {#red 0 + (..of_rgb [#red 0 #green 0 - #blue 0})) + #blue 0])) (def: .public white Color - (..of_rgb {#red ..top + (..of_rgb [#red ..top #green ..top - #blue ..top})) + #blue ..top])) (implementation: .public addition (Monoid Color) @@ -111,9 +111,9 @@ (def: (composite left right) (let [[lR lG lB] (:representation left) [rR rG rB] (:representation right)] - (:abstraction {#red (n.max lR rR) + (:abstraction [#red (n.max lR rR) #green (n.max lG rG) - #blue (n.max lB rB)})))) + #blue (n.max lB rB)])))) (def: (opposite_intensity value) (-> Nat Nat) @@ -122,9 +122,9 @@ (def: .public (complement color) (-> Color Color) (let [[red green blue] (:representation color)] - (:abstraction {#red (opposite_intensity red) + (:abstraction [#red (opposite_intensity red) #green (opposite_intensity green) - #blue (opposite_intensity blue)}))) + #blue (opposite_intensity blue)]))) (implementation: .public subtraction (Monoid Color) @@ -134,9 +134,9 @@ (def: (composite left right) (let [[lR lG lB] (:representation (..complement left)) [rR rG rB] (:representation right)] - (:abstraction {#red (n.min lR rR) + (:abstraction [#red (n.min lR rR) #green (n.min lG rG) - #blue (n.min lB rB)})))) + #blue (n.min lB rB)])))) ) (def: .public (hsl color) @@ -198,18 +198,18 @@ (if (f.= +0.0 saturation) ... Achromatic (let [intensity (..up luminance)] - (of_rgb {#red intensity + (of_rgb [#red intensity #green intensity - #blue intensity})) + #blue intensity])) ... Chromatic (let [q (if (f.< +0.5 luminance) (|> saturation (f.+ +1.0) (f.* luminance)) (|> luminance (f.+ saturation) (f.- (f.* saturation luminance)))) p (|> luminance (f.* +2.0) (f.- q)) third (|> +1.0 (f./ +3.0))] - (of_rgb {#red (|> hue (f.+ third) (hue_rgb p q)) + (of_rgb [#red (|> hue (f.+ third) (hue_rgb p q)) #green (|> hue (hue_rgb p q)) - #blue (|> hue (f.- third) (hue_rgb p q))})))) + #blue (|> hue (f.- third) (hue_rgb p q))])))) (def: .public (hsb color) (-> Color HSB) @@ -256,9 +256,9 @@ red (case mod 0 v 1 q 2 p 3 p 4 t 5 v _ (undefined)) green (case mod 0 t 1 v 2 v 3 q 4 p 5 p _ (undefined)) blue (case mod 0 p 1 p 2 t 3 v 4 v 5 q _ (undefined))] - (of_rgb {#red (..up red) + (of_rgb [#red (..up red) #green (..up green) - #blue (..up blue)}))) + #blue (..up blue)]))) (def: .public (cmyk color) (-> Color CMYK) @@ -273,26 +273,26 @@ cyan (|> +1.0 (f.- red) (f.- key) (f.* f)) magenta (|> +1.0 (f.- green) (f.- key) (f.* f)) yellow (|> +1.0 (f.- blue) (f.- key) (f.* f))] - {#cyan cyan + [#cyan cyan #magenta magenta #yellow yellow - #key key})) + #key key])) (def: .public (of_cmyk [cyan magenta yellow key]) (-> CMYK Color) (if (f.= +1.0 key) - (of_rgb {#red 0 + (of_rgb [#red 0 #green 0 - #blue 0}) + #blue 0]) (let [red (|> (|> +1.0 (f.- cyan)) (f.* (|> +1.0 (f.- key)))) green (|> (|> +1.0 (f.- magenta)) (f.* (|> +1.0 (f.- key)))) blue (|> (|> +1.0 (f.- yellow)) (f.* (|> +1.0 (f.- key))))] - (of_rgb {#red (..up red) + (of_rgb [#red (..up red) #green (..up green) - #blue (..up blue)})))) + #blue (..up blue)])))) (def: (normal ratio) (-> Frac Frac) @@ -317,9 +317,9 @@ .nat))) [redS greenS blueS] (rgb start) [redE greenE blueE] (rgb end)] - (of_rgb {#red (interpolated' redE redS) + (of_rgb [#red (interpolated' redE redS) #green (interpolated' greenE greenS) - #blue (interpolated' blueE blueS)}))) + #blue (interpolated' blueE blueS)]))) (template [<name> <target>] [(def: .public (<name> ratio color) @@ -432,5 +432,5 @@ (type: .public Pigment (Record - {#color Color - #alpha Alpha})) + [#color Color + #alpha Alpha])) diff --git a/stdlib/source/library/lux/data/color/named.lux b/stdlib/source/library/lux/data/color/named.lux index 43fd25f16..5d6a92463 100644 --- a/stdlib/source/library/lux/data/color/named.lux +++ b/stdlib/source/library/lux/data/color/named.lux @@ -8,9 +8,9 @@ (template [<red> <green> <blue> <name>] [(`` (def: .public <name> Color - (//.of_rgb {#//.red (hex <red>) + (//.of_rgb [#//.red (hex <red>) #//.green (hex <green>) - #//.blue (hex <blue>)})))] + #//.blue (hex <blue>)])))] ["F0" "F8" "FF" alice_blue] ["FA" "EB" "D7" antique_white] diff --git a/stdlib/source/library/lux/data/format/css.lux b/stdlib/source/library/lux/data/format/css.lux index 57a7d33de..36c94ef17 100644 --- a/stdlib/source/library/lux/data/format/css.lux +++ b/stdlib/source/library/lux/data/format/css.lux @@ -88,8 +88,8 @@ (type: .public Frame (Record - {#when Percentage - #what Style})) + [#when Percentage + #what Style])) (def: .public (key_frames animation frames) (-> (Value Animation) (List Frame) (CSS Special)) diff --git a/stdlib/source/library/lux/data/format/css/font.lux b/stdlib/source/library/lux/data/format/css/font.lux index 2ebe6644d..198621e16 100644 --- a/stdlib/source/library/lux/data/format/css/font.lux +++ b/stdlib/source/library/lux/data/format/css/font.lux @@ -15,14 +15,14 @@ (type: .public Unicode_Range (Record - {#start Nat - #end Nat})) + [#start Nat + #end Nat])) (type: .public Font (Record - {#family Text + [#family Text #source URL #stretch (Maybe (Value Font_Stretch)) #style (Maybe (Value Font_Style)) #weight (Maybe (Value Font_Weight)) - #unicode_range (Maybe Unicode_Range)})) + #unicode_range (Maybe Unicode_Range)])) diff --git a/stdlib/source/library/lux/data/format/css/selector.lux b/stdlib/source/library/lux/data/format/css/selector.lux index a1f801779..f8aab3f86 100644 --- a/stdlib/source/library/lux/data/format/css/selector.lux +++ b/stdlib/source/library/lux/data/format/css/selector.lux @@ -182,8 +182,8 @@ (type: .public Formula (Record - {#constant Int - #variable Int})) + [#constant Int + #variable Int])) (def: .public (formula input) (-> Formula Index) diff --git a/stdlib/source/library/lux/data/format/css/value.lux b/stdlib/source/library/lux/data/format/css/value.lux index 20b15f0eb..e49398298 100644 --- a/stdlib/source/library/lux/data/format/css/value.lux +++ b/stdlib/source/library/lux/data/format/css/value.lux @@ -1124,10 +1124,10 @@ (type: .public Rectangle (Record - {#top (Value Length) + [#top (Value Length) #right (Value Length) #bottom (Value Length) - #left (Value Length)})) + #left (Value Length)])) (def: .public (clip rectangle) (-> Rectangle (Value Clip)) diff --git a/stdlib/source/library/lux/data/format/html.lux b/stdlib/source/library/lux/data/format/html.lux index bc17e00f6..b47416398 100644 --- a/stdlib/source/library/lux/data/format/html.lux +++ b/stdlib/source/library/lux/data/format/html.lux @@ -226,8 +226,8 @@ (type: .public Coord (Record - {#horizontal Nat - #vertical Nat})) + [#horizontal Nat + #vertical Nat])) (def: metric_separator ",") (def: coord_separator ",") @@ -238,20 +238,20 @@ (type: .public Rectangle (Record - {#start Coord - #end Coord})) + [#start Coord + #end Coord])) (type: .public Circle (Record - {#center Coord - #radius Nat})) + [#center Coord + #radius Nat])) (type: .public Polygon (Record - {#first Coord + [#first Coord #second Coord #third Coord - #extra (List Coord)})) + #extra (List Coord)])) (def: (%rectangle [start end]) (Format Rectangle) diff --git a/stdlib/source/library/lux/data/format/tar.lux b/stdlib/source/library/lux/data/format/tar.lux index 6aeaa6539..6450bdf01 100644 --- a/stdlib/source/library/lux/data/format/tar.lux +++ b/stdlib/source/library/lux/data/format/tar.lux @@ -564,13 +564,13 @@ (type: .public Owner (Record - {#name Name - #id ID})) + [#name Name + #id ID])) (type: .public Ownership (Record - {#user Owner - #group Owner})) + [#user Owner + #group Owner])) (type: .public File [Path Instant Mode Ownership Content]) @@ -612,7 +612,7 @@ (type: Header (Record - {#path Path + [#path Path #mode Mode #user_id ID #group_id ID @@ -625,7 +625,7 @@ #user_name Name #group_name Name #major_device Device - #minor_device Device})) + #minor_device Device])) (def: header_writer' (Writer Header) @@ -671,7 +671,7 @@ writer ($_ format.and ..header_writer (format.segment (..rounded_content_size size)))] - (writer [{#path path + (writer [[#path path #mode mode #user_id (value@ [#user #id] ownership) #group_id (value@ [#group #id] ownership) @@ -684,7 +684,7 @@ #user_name (value@ [#user #name] ownership) #group_name (value@ [#group #name] ownership) #major_device ..no_device - #minor_device ..no_device} + #minor_device ..no_device] content])))) (def: normal_file_writer @@ -698,7 +698,7 @@ (def: (symbolic_link_writer path) (Writer Path) (..header_writer - {#path ..no_path + [#path ..no_path #mode ..none #user_id ..no_id #group_id ..no_id @@ -711,12 +711,12 @@ #user_name ..anonymous #group_name ..anonymous #major_device ..no_device - #minor_device ..no_device})) + #minor_device ..no_device])) (def: (directory_writer path) (Writer Path) (..header_writer - {#path path + [#path path #mode ..none #user_id ..no_id #group_id ..no_id @@ -729,7 +729,7 @@ #user_name ..anonymous #group_name ..anonymous #major_device ..no_device - #minor_device ..no_device})) + #minor_device ..no_device])) (def: entry_writer (Writer Entry) @@ -799,7 +799,7 @@ major_device ..small_parser minor_device ..small_parser _ (<binary>.segment ..header_padding_size)] - (in {#path path + (in [#path path #mode mode #user_id user_id #group_id group_id @@ -812,7 +812,7 @@ #user_name user_name #group_name group_name #major_device major_device - #minor_device minor_device}))) + #minor_device minor_device]))) (exception: .public (wrong_link_flag {expected Link_Flag} {actual Link_Flag}) (exception.report @@ -839,10 +839,10 @@ (duration.up (|> duration.second duration.millis .nat)) instant.absolute) (value@ #mode header) - {#user {#name (value@ #user_name header) - #id (value@ #user_id header)} - #group {#name (value@ #group_name header) - #id (value@ #group_id header)}} + [#user [#name (value@ #user_name header) + #id (value@ #user_id header)] + #group [#name (value@ #group_name header) + #id (value@ #group_id header)]] content]))) (def: (file_name_parser expected extractor) diff --git a/stdlib/source/library/lux/data/store.lux b/stdlib/source/library/lux/data/store.lux index 24f7005fd..de09fe022 100644 --- a/stdlib/source/library/lux/data/store.lux +++ b/stdlib/source/library/lux/data/store.lux @@ -9,13 +9,13 @@ (type: .public (Store s a) (Record - {#cursor s - #peek (-> s a)})) + [#cursor s + #peek (-> s a)])) (def: (extend f wa) (All (_ s a b) (-> (-> (Store s a) b) (Store s a) (Store s b))) - {#cursor (value@ #cursor wa) - #peek (function (_ s) (f (with@ #cursor s wa)))}) + [#cursor (value@ #cursor wa) + #peek (function (_ s) (f (with@ #cursor s wa)))]) (implementation: .public functor (All (_ s) (Functor (Store s))) diff --git a/stdlib/source/library/lux/data/trace.lux b/stdlib/source/library/lux/data/trace.lux index 35d97e9f9..b0819574c 100644 --- a/stdlib/source/library/lux/data/trace.lux +++ b/stdlib/source/library/lux/data/trace.lux @@ -9,8 +9,8 @@ (type: .public (Trace t a) (Record - {#monoid (Monoid t) - #trace (-> t a)})) + [#monoid (Monoid t) + #trace (-> t a)])) (implementation: .public functor (All (_ t) (Functor (Trace t))) @@ -29,12 +29,12 @@ (def: (disjoint wa) (let [monoid (value@ #monoid wa)] - {#monoid monoid + [#monoid monoid #trace (function (_ t1) - {#monoid monoid + [#monoid monoid #trace (function (_ t2) ((value@ #trace wa) - (\ monoid composite t1 t2)))})}))) + (\ monoid composite t1 t2)))])]))) (def: .public (result context tracer) (All (_ t a) (-> t (Trace t a) a)) diff --git a/stdlib/source/library/lux/documentation.lux b/stdlib/source/library/lux/documentation.lux index 1c5150f41..d11d897d0 100644 --- a/stdlib/source/library/lux/documentation.lux +++ b/stdlib/source/library/lux/documentation.lux @@ -312,7 +312,7 @@ (-> Nat [Text (List Text)] (List Text) Text Type Text) (case tags (^ (list single_tag)) - (format "{#" single_tag " " (type_definition' level type_function_info #.None module type) "}") + (format "(Record [#" single_tag " " (type_definition' level type_function_info #.None module type) "])") _ (case type @@ -563,34 +563,34 @@ (type: .public Definition (Record - {#definition Text - #documentation (Markdown Block)})) + [#definition Text + #documentation (Markdown Block)])) (type: .public Module (Record - {#module Text + [#module Text #description Text #expected (Set Text) - #definitions (List Definition)})) + #definitions (List Definition)])) (syntax: .public (default [[name parameters] ..declaration]) (let [[_ short] name] (in (list (` (: (.List ..Definition) - (list {#..definition (~ (code.text short)) + (list [#..definition (~ (code.text short)) #..documentation ((~! ..minimal_definition_documentation) ((~ (code.identifier name)) - (~+ (list\each code.local_identifier parameters))))}))))))) + (~+ (list\each code.local_identifier parameters))))]))))))) (syntax: .public (documentation: [[name parameters] ..declaration extra (<>.some <code>.any)]) (let [[_ short] name] (in (list (` (.def: .public (~ (code.local_identifier short)) (.List ..Definition) - (.list {#..definition (~ (code.text short)) + (.list [#..definition (~ (code.text short)) #..documentation ((~! ..definition_documentation) ((~ (code.identifier name)) (~+ (list\each code.local_identifier parameters))) - (~+ extra))}))))))) + (~+ extra))]))))))) (def: definitions_documentation (-> (List Definition) (Markdown Block)) @@ -624,13 +624,13 @@ (do meta.monad [expected (meta.exports name)] (in (list (` (: (List Module) - (list& {#..module (~ (code.text name)) + (list& [#..module (~ (code.text name)) #..description (~ description) #..expected ((~! ..expected) (~ (code.text (|> expected (list\each product.left) ..expected_format)))) - #..definitions ((~! list.together) (list (~+ definitions)))} + #..definitions ((~! list.together) (list (~+ definitions)))] ($_ (\ (~! list.monoid) (~' composite)) (: (List Module) (\ (~! list.monoid) (~' identity))) diff --git a/stdlib/source/library/lux/extension.lux b/stdlib/source/library/lux/extension.lux index b63c91b0c..a2334c5f7 100644 --- a/stdlib/source/library/lux/extension.lux +++ b/stdlib/source/library/lux/extension.lux @@ -21,11 +21,11 @@ (type: Declaration (Record - {#name Code + [#name Code #label Text #phase Text #archive Text - #inputs (List Code)})) + #inputs (List Code)])) (def: (declaration default) (-> Code (Parser Declaration)) diff --git a/stdlib/source/library/lux/ffi.js.lux b/stdlib/source/library/lux/ffi.js.lux index 466807a53..1d25fab7d 100644 --- a/stdlib/source/library/lux/ffi.js.lux +++ b/stdlib/source/library/lux/ffi.js.lux @@ -86,12 +86,12 @@ (type: Common_Method (Record - {#name Text + [#name Text #alias (Maybe Text) #inputs (List Nullable) #io? Bit #try? Bit - #output Nullable})) + #output Nullable])) (type: Static_Method Common_Method) (type: Virtual_Method Common_Method) diff --git a/stdlib/source/library/lux/ffi.jvm.lux b/stdlib/source/library/lux/ffi.jvm.lux index da46af60c..eac74c9f7 100644 --- a/stdlib/source/library/lux/ffi.jvm.lux +++ b/stdlib/source/library/lux/ffi.jvm.lux @@ -217,14 +217,14 @@ (type: Annotation (Record - {#ann_name Text - #ann_params (List Annotation_Parameter)})) + [#ann_name Text + #ann_params (List Annotation_Parameter)])) (type: Member_Declaration (Record - {#member_name Text + [#member_name Text #member_privacy Privacy - #member_anns (List Annotation)})) + #member_anns (List Annotation)])) (type: FieldDecl (Variant @@ -233,10 +233,10 @@ (type: MethodDecl (Record - {#method_tvars (List (Type Var)) + [#method_tvars (List (Type Var)) #method_inputs (List (Type Value)) #method_output (Type Return) - #method_exs (List (Type Class))})) + #method_exs (List (Type Class))])) (type: Method_Definition (Variant @@ -280,8 +280,8 @@ (type: Partial_Call (Record - {#pc_method Name - #pc_args (List Code)})) + [#pc_method Name + #pc_args (List Code)])) (type: ImportMethodKind (Variant @@ -290,31 +290,32 @@ (type: ImportMethodCommons (Record - {#import_member_mode Primitive_Mode + [#import_member_mode Primitive_Mode #import_member_alias Text #import_member_kind ImportMethodKind #import_member_tvars (List (Type Var)) #import_member_args (List [Bit (Type Value)]) #import_member_maybe? Bit #import_member_try? Bit - #import_member_io? Bit})) + #import_member_io? Bit])) (type: ImportConstructorDecl - (Record{})) + (Record + [])) (type: ImportMethodDecl (Record - {#import_method_name Text - #import_method_return (Type Return)})) + [#import_method_name Text + #import_method_return (Type Return)])) (type: ImportFieldDecl (Record - {#import_field_mode Primitive_Mode + [#import_field_mode Primitive_Mode #import_field_name Text #import_field_static? Bit #import_field_maybe? Bit #import_field_setter? Bit - #import_field_type (Type Value)})) + #import_field_type (Type Value)])) (type: Import_Member_Declaration (Variant @@ -739,10 +740,10 @@ inputs (<code>.tuple (<>.some (..type^ total_vars))) output (..return^ total_vars) exs (..throws_decl^ total_vars)] - (in [[name #PublicP anns] {#method_tvars tvars + (in [[name #PublicP anns] [#method_tvars tvars #method_inputs inputs #method_output output - #method_exs exs}])))) + #method_exs exs]])))) (def: state_modifier^ (Parser State) @@ -800,9 +801,9 @@ exs (throws_decl^ total_vars) annotations ..annotations^ body <code>.any] - (in [{#member_name constructor_method_name + (in [[#member_name constructor_method_name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#ConstructorMethod strict_fp? method_vars self_name arguments constructor_args body exs)])))) (def: (virtual_method_def^ class_vars) @@ -821,9 +822,9 @@ exs (throws_decl^ total_vars) annotations ..annotations^ body <code>.any] - (in [{#member_name name + (in [[#member_name name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#VirtualMethod final? strict_fp? method_vars self_name arguments return_type body exs)])))) (def: overriden_method_def^ @@ -842,9 +843,9 @@ exs (throws_decl^ total_vars) annotations ..annotations^ body <code>.any] - (in [{#member_name name + (in [[#member_name name #member_privacy #PublicP - #member_anns annotations} + #member_anns annotations] (#OverridenMethod strict_fp? owner_class method_vars self_name arguments return_type body exs)])))) (def: static_method_def^ @@ -861,9 +862,9 @@ exs (throws_decl^ total_vars) annotations ..annotations^ body <code>.any] - (in [{#member_name name + (in [[#member_name name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#StaticMethod strict_fp? method_vars arguments return_type body exs)])))) (def: abstract_method_def^ @@ -878,9 +879,9 @@ return_type (..return^ total_vars) exs (throws_decl^ total_vars) annotations ..annotations^] - (in [{#member_name name + (in [[#member_name name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#AbstractMethod method_vars arguments return_type exs)])))) (def: native_method_def^ @@ -895,9 +896,9 @@ return_type (..return^ total_vars) exs (throws_decl^ total_vars) annotations ..annotations^] - (in [{#member_name name + (in [[#member_name name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#NativeMethod method_vars arguments return_type exs)])))) (def: (method_def^ class_vars) @@ -952,15 +953,15 @@ ?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 #import_member_args args #import_member_maybe? maybe? #import_member_try? try? - #import_member_io? io?} - {}])) + #import_member_io? io?] + []])) )) (<code>.form (do <>.monad [kind (: (Parser ImportMethodKind) @@ -974,16 +975,16 @@ 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 #import_member_args args #import_member_maybe? maybe? #import_member_try? try? - #import_member_io? io?} - {#import_method_name name - #import_method_return return}])))) + #import_member_io? io?] + [#import_method_name name + #import_method_return return]])))) (<code>.form (do <>.monad [static? (<>.parses? (<code>.this! (' "static"))) name <code>.local_identifier @@ -991,12 +992,12 @@ gtype (..type^ owner_vars) maybe? (<>.parses? (<code>.this! (' "?"))) setter? (<>.parses? (<code>.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 diff --git a/stdlib/source/library/lux/ffi.lua.lux b/stdlib/source/library/lux/ffi.lua.lux index b14c2ebe3..60e8a8d48 100644 --- a/stdlib/source/library/lux/ffi.lua.lux +++ b/stdlib/source/library/lux/ffi.lua.lux @@ -81,12 +81,12 @@ (type: Common_Method (Record - {#name Text + [#name Text #alias (Maybe Text) #inputs (List Nilable) #io? Bit #try? Bit - #output Nilable})) + #output Nilable])) (type: Static_Method Common_Method) (type: Virtual_Method Common_Method) diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux index 9140ddab8..2512530d4 100644 --- a/stdlib/source/library/lux/ffi.old.lux +++ b/stdlib/source/library/lux/ffi.old.lux @@ -118,8 +118,8 @@ (type: Class_Declaration (Record - {#class_name Text - #class_params (List Type_Parameter)})) + [#class_name Text + #class_params (List Type_Parameter)])) (type: StackFrame (primitive "java/lang/StackTraceElement")) @@ -129,22 +129,22 @@ (type: Super_Class_Decl (Record - {#super_class_name Text - #super_class_params (List GenericType)})) + [#super_class_name Text + #super_class_params (List GenericType)])) (type: AnnotationParam [Text Code]) (type: Annotation (Record - {#ann_name Text - #ann_params (List AnnotationParam)})) + [#ann_name Text + #ann_params (List AnnotationParam)])) (type: Member_Declaration (Record - {#member_name Text + [#member_name Text #member_privacy Privacy - #member_anns (List Annotation)})) + #member_anns (List Annotation)])) (type: FieldDecl (Variant @@ -153,15 +153,15 @@ (type: MethodDecl (Record - {#method_tvars (List Type_Parameter) + [#method_tvars (List Type_Parameter) #method_inputs (List GenericType) #method_output GenericType - #method_exs (List GenericType)})) + #method_exs (List GenericType)])) (type: ArgDecl (Record - {#arg_name Text - #arg_type GenericType})) + [#arg_name Text + #arg_type GenericType])) (type: ConstructorArg [GenericType Code]) @@ -207,8 +207,8 @@ (type: Partial_Call (Record - {#pc_method Name - #pc_args (List Code)})) + [#pc_method Name + #pc_args (List Code)])) (type: ImportMethodKind (Variant @@ -217,32 +217,32 @@ (type: ImportMethodCommons (Record - {#import_member_mode Primitive_Mode + [#import_member_mode Primitive_Mode #import_member_alias Text #import_member_kind ImportMethodKind #import_member_tvars (List Type_Parameter) #import_member_args (List [Bit GenericType]) #import_member_maybe? Bit #import_member_try? Bit - #import_member_io? Bit})) + #import_member_io? Bit])) (type: ImportConstructorDecl (Record - {})) + [])) (type: ImportMethodDecl (Record - {#import_method_name Text - #import_method_return GenericType})) + [#import_method_name Text + #import_method_return GenericType])) (type: ImportFieldDecl (Record - {#import_field_mode Primitive_Mode + [#import_field_mode Primitive_Mode #import_field_name Text #import_field_static? Bit #import_field_maybe? Bit #import_field_setter? Bit - #import_field_type GenericType})) + #import_field_type GenericType])) (type: Import_Member_Declaration (Variant @@ -686,10 +686,10 @@ inputs (<code>.tuple (<>.some (..generic_type^ type_vars))) output (..generic_type^ type_vars) exs (..throws_decl^ type_vars)] - (in [[name #PublicP anns] {#method_tvars tvars + (in [[name #PublicP anns] [#method_tvars tvars #method_inputs inputs #method_output output - #method_exs exs}])))) + #method_exs exs]])))) (def: state_modifier^ (Parser State) @@ -745,9 +745,9 @@ exs (..throws_decl^ total_vars) annotations ..annotations^ body <code>.any] - (in [{#member_name constructor_method_name + (in [[#member_name constructor_method_name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#ConstructorMethod strict_fp? method_vars arg_decls constructor_args body exs)])))) (def: (virtual_method_def^ class_vars) @@ -766,9 +766,9 @@ exs (..throws_decl^ total_vars) annotations ..annotations^ body <code>.any] - (in [{#member_name name + (in [[#member_name name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#VirtualMethod final? strict_fp? method_vars this_name arg_decls return_type @@ -789,9 +789,9 @@ exs (..throws_decl^ total_vars) annotations ..annotations^ body <code>.any] - (in [{#member_name name + (in [[#member_name name #member_privacy #PublicP - #member_anns annotations} + #member_anns annotations] (#OverridenMethod strict_fp? owner_class method_vars this_name arg_decls return_type @@ -811,9 +811,9 @@ exs (..throws_decl^ total_vars) annotations ..annotations^ body <code>.any] - (in [{#member_name name + (in [[#member_name name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#StaticMethod strict_fp? method_vars arg_decls return_type body exs)])))) (def: abstract_method_def^ @@ -828,9 +828,9 @@ return_type (..generic_type^ total_vars) exs (..throws_decl^ total_vars) annotations ..annotations^] - (in [{#member_name name + (in [[#member_name name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#AbstractMethod method_vars arg_decls return_type exs)])))) (def: native_method_def^ @@ -845,9 +845,9 @@ return_type (..generic_type^ total_vars) exs (..throws_decl^ total_vars) annotations ..annotations^] - (in [{#member_name name + (in [[#member_name name #member_privacy pm - #member_anns annotations} + #member_anns annotations] (#NativeMethod method_vars arg_decls return_type exs)])))) (def: (method_def^ class_vars) @@ -898,16 +898,15 @@ ?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 #import_member_args args #import_member_maybe? maybe? #import_member_try? try? - #import_member_io? io?} - {}])) - )) + #import_member_io? io?] + []])))) (<code>.form (do <>.monad [kind (: (Parser ImportMethodKind) (<>.or (<code>.this! (' "static")) @@ -920,17 +919,16 @@ 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 #import_member_args args #import_member_maybe? maybe? #import_member_try? try? - #import_member_io? io?} - {#import_method_name name - #import_method_return return - }])))) + #import_member_io? io?] + [#import_method_name name + #import_method_return return]])))) (<code>.form (do <>.monad [static? (<>.parses? (<code>.this! (' "static"))) name <code>.local_identifier @@ -938,12 +936,12 @@ gtype (..generic_type^ owner_vars) maybe? (<>.parses? (<code>.this! (' "?"))) setter? (<>.parses? (<code>.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 @@ -1177,8 +1175,8 @@ ... [Syntax] (def: object_super_class Super_Class_Decl - {#super_class_name "java/lang/Object" - #super_class_params (list)}) + [#super_class_name "java/lang/Object" + #super_class_params (list)]) (syntax: .public (class: [im inheritance_modifier^ class_decl ..class_decl^ diff --git a/stdlib/source/library/lux/ffi.php.lux b/stdlib/source/library/lux/ffi.php.lux index 7320bb059..2cc3fb56f 100644 --- a/stdlib/source/library/lux/ffi.php.lux +++ b/stdlib/source/library/lux/ffi.php.lux @@ -87,12 +87,12 @@ (type: Common_Method (Record - {#name Text + [#name Text #alias (Maybe Alias) #inputs (List Nullable) #io? Bit #try? Bit - #output Nullable})) + #output Nullable])) (type: Static_Method Common_Method) (type: Virtual_Method Common_Method) diff --git a/stdlib/source/library/lux/ffi.py.lux b/stdlib/source/library/lux/ffi.py.lux index b49d7ddf4..3c47972ed 100644 --- a/stdlib/source/library/lux/ffi.py.lux +++ b/stdlib/source/library/lux/ffi.py.lux @@ -82,12 +82,12 @@ (type: Common_Method (Record - {#name Text + [#name Text #alias (Maybe Text) #inputs (List Noneable) #io? Bit #try? Bit - #output Noneable})) + #output Noneable])) (type: Static_Method Common_Method) (type: Virtual_Method Common_Method) diff --git a/stdlib/source/library/lux/ffi.rb.lux b/stdlib/source/library/lux/ffi.rb.lux index e9a5869af..485fd904c 100644 --- a/stdlib/source/library/lux/ffi.rb.lux +++ b/stdlib/source/library/lux/ffi.rb.lux @@ -89,12 +89,12 @@ (type: Common_Method (Record - {#name Text + [#name Text #alias (Maybe Alias) #inputs (List Nilable) #io? Bit #try? Bit - #output Nilable})) + #output Nilable])) (type: Static_Method Common_Method) (type: Virtual_Method Common_Method) diff --git a/stdlib/source/library/lux/ffi.scm.lux b/stdlib/source/library/lux/ffi.scm.lux index fb270b39c..01717e47b 100644 --- a/stdlib/source/library/lux/ffi.scm.lux +++ b/stdlib/source/library/lux/ffi.scm.lux @@ -87,12 +87,12 @@ (type: Common_Method (Record - {#name Text + [#name Text #alias (Maybe Alias) #inputs (List Nilable) #io? Bit #try? Bit - #output Nilable})) + #output Nilable])) (def: common_method (Parser Common_Method) diff --git a/stdlib/source/library/lux/locale/language.lux b/stdlib/source/library/lux/locale/language.lux index cb4314c59..117fc5a73 100644 --- a/stdlib/source/library/lux/locale/language.lux +++ b/stdlib/source/library/lux/locale/language.lux @@ -16,8 +16,8 @@ {} (Record - {#name Text - #code Text}) + [#name Text + #code Text]) (template [<name> <tag>] [(def: .public <name> @@ -33,8 +33,8 @@ (template [<code> <name> <definition> <alias>+] [(def: .public <definition> Language - (:abstraction {#name <name> - #code <code>})) + (:abstraction [#name <name> + #code <code>])) (`` (template [<alias>] [(def: .public <alias> Language diff --git a/stdlib/source/library/lux/locale/territory.lux b/stdlib/source/library/lux/locale/territory.lux index 4b2dfd4b5..ae762a0fa 100644 --- a/stdlib/source/library/lux/locale/territory.lux +++ b/stdlib/source/library/lux/locale/territory.lux @@ -16,10 +16,10 @@ {} (Record - {#name Text + [#name Text #short Text #long Text - #code Nat}) + #code Nat]) (template [<name> <field> <type>] [(def: .public <name> @@ -36,10 +36,10 @@ (template [<short> <long> <number> <name> <main> <neighbor>+] [(def: .public <main> Territory - (:abstraction {#name <name> + (:abstraction [#name <name> #short <short> #long <long> - #code <number>})) + #code <number>])) (`` (template [<neighbor>] [(def: .public <neighbor> Territory <main>)] diff --git a/stdlib/source/library/lux/macro/syntax/check.lux b/stdlib/source/library/lux/macro/syntax/check.lux index 18b0049ee..d6eb8215e 100644 --- a/stdlib/source/library/lux/macro/syntax/check.lux +++ b/stdlib/source/library/lux/macro/syntax/check.lux @@ -19,8 +19,8 @@ (type: .public Check (Record - {#type Code - #value Code})) + [#type Code + #value Code])) (def: .public equivalence (Equivalence Check) diff --git a/stdlib/source/library/lux/macro/syntax/declaration.lux b/stdlib/source/library/lux/macro/syntax/declaration.lux index ae6ae3ee7..8713b35fc 100644 --- a/stdlib/source/library/lux/macro/syntax/declaration.lux +++ b/stdlib/source/library/lux/macro/syntax/declaration.lux @@ -16,8 +16,8 @@ (type: .public Declaration (Record - {#name Text - #arguments (List Text)})) + [#name Text + #arguments (List Text)])) (def: .public equivalence (Equivalence Declaration) diff --git a/stdlib/source/library/lux/macro/syntax/definition.lux b/stdlib/source/library/lux/macro/syntax/definition.lux index ee7238603..7b87eeba7 100644 --- a/stdlib/source/library/lux/macro/syntax/definition.lux +++ b/stdlib/source/library/lux/macro/syntax/definition.lux @@ -27,11 +27,11 @@ (type: .public Definition (Record - {#name Text + [#name Text #value (Either Check Code) #anns Annotations - #export? Bit})) + #export? Bit])) (def: .public equivalence (Equivalence Definition) @@ -66,9 +66,9 @@ (def: dummy Code - (` {#.module (~ (code.text (value@ #.module location.dummy))) + (` [#.module (~ (code.text (value@ #.module location.dummy))) #.line (~ (code.nat (value@ #.line location.dummy))) - #.column (~ (code.nat (value@ #.column location.dummy)))})) + #.column (~ (code.nat (value@ #.column location.dummy)))])) (def: .public (format (^slots [#name #value #anns #export?])) (-> Definition Code) diff --git a/stdlib/source/library/lux/macro/syntax/input.lux b/stdlib/source/library/lux/macro/syntax/input.lux index 47bf4d6ac..c0f7066c6 100644 --- a/stdlib/source/library/lux/macro/syntax/input.lux +++ b/stdlib/source/library/lux/macro/syntax/input.lux @@ -13,8 +13,8 @@ (type: .public Input (Record - {#binding Code - #type Code})) + [#binding Code + #type Code])) (def: .public equivalence (Equivalence Input) diff --git a/stdlib/source/library/lux/macro/template.lux b/stdlib/source/library/lux/macro/template.lux index 3c18f9f9e..256302d3c 100644 --- a/stdlib/source/library/lux/macro/template.lux +++ b/stdlib/source/library/lux/macro/template.lux @@ -129,9 +129,9 @@ (type: Local (Record - {#name Text + [#name Text #parameters (List Text) - #template (List Code)})) + #template (List Code)])) (exception: .public (irregular_arguments {expected Nat} {actual Nat}) (exception.report @@ -157,9 +157,9 @@ [[name parameters] (<code>.form (<>.and <code>.local_identifier (<>.many <code>.local_identifier))) template (<code>.tuple (<>.some <code>.any))] - (in {#name name + (in [#name name #parameters parameters - #template template}))) + #template template]))) (syntax: .public (let [locals (<code>.tuple (<>.some ..local)) body <code>.any]) diff --git a/stdlib/source/library/lux/math/modular.lux b/stdlib/source/library/lux/math/modular.lux index 5b462ccfd..35f92dc13 100644 --- a/stdlib/source/library/lux/math/modular.lux +++ b/stdlib/source/library/lux/math/modular.lux @@ -31,13 +31,13 @@ {} (Record - {#modulus (Modulus m) - #value Int}) + [#modulus (Modulus m) + #value Int]) (def: .public (modular modulus value) (All (_ %) (-> (Modulus %) Int (Mod %))) - (:abstraction {#modulus modulus - #value (i.mod (//.divisor modulus) value)})) + (:abstraction [#modulus modulus + #value (i.mod (//.divisor modulus) value)])) (template [<name> <type> <side>] [(def: .public <name> @@ -110,10 +110,10 @@ (All (_ %) (-> (Mod %) (Mod %) (Mod %))) (let [[modulus param] (:representation param) [_ subject] (:representation subject)] - (:abstraction {#modulus modulus + (:abstraction [#modulus modulus #value (|> subject (<op> param) - (i.mod (//.divisor modulus)))})))] + (i.mod (//.divisor modulus)))])))] [+ i.+] [- i.-] diff --git a/stdlib/source/library/lux/math/number/complex.lux b/stdlib/source/library/lux/math/number/complex.lux index 6687bd043..8d040123a 100644 --- a/stdlib/source/library/lux/math/number/complex.lux +++ b/stdlib/source/library/lux/math/number/complex.lux @@ -24,13 +24,13 @@ (type: .public Complex (Record - {#real Frac - #imaginary Frac})) + [#real Frac + #imaginary Frac])) (syntax: .public (complex [real <code>.any ?imaginary (<>.maybe <code>.any)]) - (in (list (` {#..real (~ real) - #..imaginary (~ (maybe.else (' +0.0) ?imaginary))})))) + (in (list (` [#..real (~ real) + #..imaginary (~ (maybe.else (' +0.0) ?imaginary))])))) (def: .public i (..complex +0.0 +1.0)) @@ -59,10 +59,10 @@ (template [<name> <op>] [(def: .public (<name> param input) (-> Complex Complex Complex) - {#real (<op> (value@ #real param) + [#real (<op> (value@ #real param) (value@ #real input)) #imaginary (<op> (value@ #imaginary param) - (value@ #imaginary input))})] + (value@ #imaginary input))])] [+ f.+] [- f.-] @@ -89,21 +89,21 @@ (def: .public (*' param input) (-> Frac Complex Complex) - {#real (f.* param + [#real (f.* param (value@ #real input)) #imaginary (f.* param - (value@ #imaginary input))}) + (value@ #imaginary input))]) (def: .public (* param input) (-> Complex Complex Complex) - {#real (f.- (f.* (value@ #imaginary param) + [#real (f.- (f.* (value@ #imaginary param) (value@ #imaginary input)) (f.* (value@ #real param) (value@ #real input))) #imaginary (f.+ (f.* (value@ #real param) (value@ #imaginary input)) (f.* (value@ #imaginary param) - (value@ #real input)))}) + (value@ #real input)))]) (def: .public (/ param input) (-> Complex Complex Complex) @@ -112,18 +112,18 @@ (f.abs real)) (let [quot (f./ imaginary real) denom (|> real (f.* quot) (f.+ imaginary))] - {#real (|> (value@ #real input) (f.* quot) (f.+ (value@ #imaginary input)) (f./ denom)) - #imaginary (|> (value@ #imaginary input) (f.* quot) (f.- (value@ #real input)) (f./ denom))}) + [#real (|> (value@ #real input) (f.* quot) (f.+ (value@ #imaginary input)) (f./ denom)) + #imaginary (|> (value@ #imaginary input) (f.* quot) (f.- (value@ #real input)) (f./ denom))]) (let [quot (f./ real imaginary) denom (|> imaginary (f.* quot) (f.+ real))] - {#real (|> (value@ #imaginary input) (f.* quot) (f.+ (value@ #real input)) (f./ denom)) - #imaginary (|> (value@ #imaginary input) (f.- (f.* quot (value@ #real input))) (f./ denom))})))) + [#real (|> (value@ #imaginary input) (f.* quot) (f.+ (value@ #real input)) (f./ denom)) + #imaginary (|> (value@ #imaginary input) (f.- (f.* quot (value@ #real input))) (f./ denom))])))) (def: .public (/' param subject) (-> Frac Complex Complex) (let [(^slots [#real #imaginary]) subject] - {#real (f./ param real) - #imaginary (f./ param imaginary)})) + [#real (f./ param real) + #imaginary (f./ param imaginary)])) (def: .public (% param input) (-> Complex Complex Complex) @@ -137,34 +137,34 @@ (def: .public (cos subject) (-> Complex Complex) (let [(^slots [#real #imaginary]) subject] - {#real (f.* (math.cosh imaginary) + [#real (f.* (math.cosh imaginary) (math.cos real)) #imaginary (f.opposite (f.* (math.sinh imaginary) - (math.sin real)))})) + (math.sin real)))])) (def: .public (cosh subject) (-> Complex Complex) (let [(^slots [#real #imaginary]) subject] - {#real (f.* (math.cos imaginary) + [#real (f.* (math.cos imaginary) (math.cosh real)) #imaginary (f.* (math.sin imaginary) - (math.sinh real))})) + (math.sinh real))])) (def: .public (sin subject) (-> Complex Complex) (let [(^slots [#real #imaginary]) subject] - {#real (f.* (math.cosh imaginary) + [#real (f.* (math.cosh imaginary) (math.sin real)) #imaginary (f.* (math.sinh imaginary) - (math.cos real))})) + (math.cos real))])) (def: .public (sinh subject) (-> Complex Complex) (let [(^slots [#real #imaginary]) subject] - {#real (f.* (math.cos imaginary) + [#real (f.* (math.cos imaginary) (math.sinh real)) #imaginary (f.* (math.sin imaginary) - (math.cosh real))})) + (math.cosh real))])) (def: .public (tan subject) (-> Complex Complex) @@ -172,8 +172,8 @@ r2 (f.* +2.0 real) i2 (f.* +2.0 imaginary) d (f.+ (math.cos r2) (math.cosh i2))] - {#real (f./ d (math.sin r2)) - #imaginary (f./ d (math.sinh i2))})) + [#real (f./ d (math.sin r2)) + #imaginary (f./ d (math.sinh i2))])) (def: .public (tanh subject) (-> Complex Complex) @@ -181,8 +181,8 @@ r2 (f.* +2.0 real) i2 (f.* +2.0 imaginary) d (f.+ (math.cosh r2) (math.cos i2))] - {#real (f./ d (math.sinh r2)) - #imaginary (f./ d (math.sin i2))})) + [#real (f./ d (math.sinh r2)) + #imaginary (f./ d (math.sin i2))])) (def: .public (abs subject) (-> Complex Frac) @@ -204,14 +204,14 @@ (-> Complex Complex) (let [(^slots [#real #imaginary]) subject r_exp (math.exp real)] - {#real (f.* r_exp (math.cos imaginary)) - #imaginary (f.* r_exp (math.sin imaginary))})) + [#real (f.* r_exp (math.cos imaginary)) + #imaginary (f.* r_exp (math.sin imaginary))])) (def: .public (log subject) (-> Complex Complex) (let [(^slots [#real #imaginary]) subject] - {#real (|> subject ..abs math.log) - #imaginary (math.atan/2 real imaginary)})) + [#real (|> subject ..abs math.log) + #imaginary (math.atan/2 real imaginary)])) (template [<name> <type> <op>] [(def: .public (<name> param input) @@ -231,12 +231,12 @@ (let [(^slots [#real #imaginary]) input t (|> input ..abs (f.+ (f.abs real)) (f./ +2.0) (math.pow +0.5))] (if (f.< +0.0 real) - {#real (f./ (f.* +2.0 t) + [#real (f./ (f.* +2.0 t) (f.abs imaginary)) - #imaginary (f.* t (..with_sign imaginary +1.0))} - {#real t + #imaginary (f.* t (..with_sign imaginary +1.0))] + [#real t #imaginary (f./ (f.* +2.0 t) - imaginary)}))) + imaginary)]))) (def: (root/2-1z input) (-> Complex Complex) @@ -249,13 +249,13 @@ (let [q (f./ imaginary real) scale (f./ (|> real (f.* q) (f.+ imaginary)) +1.0)] - {#real (f.* q scale) - #imaginary (f.opposite scale)}) + [#real (f.* q scale) + #imaginary (f.opposite scale)]) (let [q (f./ real imaginary) scale (f./ (|> imaginary (f.* q) (f.+ real)) +1.0)] - {#real scale - #imaginary (|> scale f.opposite (f.* q))}))) + [#real scale + #imaginary (|> scale f.opposite (f.* q))]))) (def: .public (acos input) (-> Complex Complex) @@ -301,8 +301,8 @@ (math.cos inner)) imaginary (f.* nth_root_of_abs (math.sin inner))] - {#real real - #imaginary imaginary}))))))) + [#real real + #imaginary imaginary]))))))) (def: .public (approximately? margin_of_error standard value) (-> Frac Complex Complex Bit) diff --git a/stdlib/source/library/lux/math/number/frac.lux b/stdlib/source/library/lux/math/number/frac.lux index 4f510366c..5880650e3 100644 --- a/stdlib/source/library/lux/math/number/frac.lux +++ b/stdlib/source/library/lux/math/number/frac.lux @@ -200,7 +200,7 @@ ("lux text concat" "+" ("lux f64 encode" x))))) (def: (decoded input) - (case ("lux f64 decode" [input]) + (case ("lux f64 decode" input) (#.Some value) (#try.Success value) diff --git a/stdlib/source/library/lux/math/number/ratio.lux b/stdlib/source/library/lux/math/number/ratio.lux index 6be8bce44..52f826ae8 100644 --- a/stdlib/source/library/lux/math/number/ratio.lux +++ b/stdlib/source/library/lux/math/number/ratio.lux @@ -24,8 +24,8 @@ (type: .public Ratio (Record - {#numerator Nat - #denominator Nat})) + [#numerator Nat + #denominator Nat])) (def: .public (nat value) (-> Ratio (Maybe Nat)) @@ -36,13 +36,13 @@ (def: (normal (^slots [#numerator #denominator])) (-> Ratio Ratio) (let [common (n.gcd numerator denominator)] - {#numerator (n./ common numerator) - #denominator (n./ common denominator)})) + [#numerator (n./ common numerator) + #denominator (n./ common denominator)])) (syntax: .public (ratio [numerator <code>.any ?denominator (<>.maybe <code>.any)]) - (in (list (` ((~! ..normal) {#..numerator (~ numerator) - #..denominator (~ (maybe.else (' 1) ?denominator))}))))) + (in (list (` ((~! ..normal) [#..numerator (~ numerator) + #..denominator (~ (maybe.else (' 1) ?denominator))]))))) (def: .public (= parameter subject) (-> Ratio Ratio Bit) @@ -123,8 +123,8 @@ (def: .public (reciprocal (^slots [#numerator #denominator])) (-> Ratio Ratio) - {#numerator denominator - #denominator numerator}) + [#numerator denominator + #denominator numerator]) (def: separator ":") @@ -140,8 +140,8 @@ (do try.monad [numerator (n\decoded num) denominator (n\decoded denom)] - (in (normal {#numerator numerator - #denominator denominator}))) + (in (normal [#numerator numerator + #denominator denominator]))) #.None (#.Left (text\composite "Invalid syntax for ratio: " input))))) diff --git a/stdlib/source/library/lux/meta.lux b/stdlib/source/library/lux/meta.lux index 3cc8deedf..87ffc64be 100644 --- a/stdlib/source/library/lux/meta.lux +++ b/stdlib/source/library/lux/meta.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- type macro) + [lux (#- type macro try) [abstract [functor (#+ Functor)] [apply (#+ Apply)] @@ -548,24 +548,27 @@ (|>> (value@ #.imports) (list.any? (text\= import))) ..current_module)) -(def: .public (tag tag_name) - (-> Name (Meta [Nat (List Name) Type])) - (do ..monad - [.let [[module name] tag_name] - =module (..module module) - this_module_name ..current_module_name - imported! (..imported? module)] - (case (plist.value (text\composite "#" name) (value@ #.definitions =module)) - (^or (#.Some (#.Label [exported? type group idx])) - (#.Some (#.Slot [exported? type group idx]))) - (if (or (text\= this_module_name module) - (and imported! exported?)) - (in [idx (list\each (|>> [module]) group) type]) - (..failure ($_ text\composite "Cannot access tag: " (name\encoded tag_name) " from module " this_module_name))) - - _ - (..failure ($_ text\composite - "Unknown tag: " (name\encoded tag_name)))))) +(template [<name> <tag> <description>] + [(def: .public (<name> tag_name) + (-> Name (Meta [Nat (List Name) Type])) + (do ..monad + [.let [[module name] tag_name] + =module (..module module) + this_module_name ..current_module_name] + (case (plist.value (text\composite "#" name) (value@ #.definitions =module)) + (#.Some (<tag> [exported? type group idx])) + (if (or (text\= this_module_name module) + exported?) + (in [idx (list\each (|>> [module]) group) type]) + (..failure ($_ text\composite "Cannot access " <description> ": " (name\encoded tag_name) " from module " this_module_name))) + + _ + (..failure ($_ text\composite + "Unknown " <description> ": " (name\encoded tag_name))))))] + + [tag #.Label "tag"] + [slot #.Slot "slot"] + ) (def: .public (tag_lists module) (-> Text (Meta (List [(List Name) Type]))) @@ -650,3 +653,13 @@ [eval (\ ! each (value@ #.eval) ..compiler_state)] (eval type code))) + +(def: .public (try computation) + (All (_ it) (-> (Meta it) (Meta (Try it)))) + (function (_ lux) + (case (computation lux) + (#try.Success [lux' output]) + (#try.Success [lux' (#try.Success output)]) + + (#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 f8d3a9023..7282e9c1b 100644 --- a/stdlib/source/library/lux/meta/location.lux +++ b/stdlib/source/library/lux/meta/location.lux @@ -14,9 +14,9 @@ (def: .public dummy Location - {#.module "" + [#.module "" #.line 0 - #.column 0}) + #.column 0]) (macro: .public (here tokens compiler) (case tokens diff --git a/stdlib/source/library/lux/target/common_lisp.lux b/stdlib/source/library/lux/target/common_lisp.lux index 5a5b10a06..9714e7743 100644 --- a/stdlib/source/library/lux/target/common_lisp.lux +++ b/stdlib/source/library/lux/target/common_lisp.lux @@ -61,8 +61,8 @@ (type: .public Lambda (Record - {#input Var/* - #output (Expression Any)})) + [#input Var/* + #output (Expression Any)])) (def: .public nil Literal @@ -387,9 +387,9 @@ (type: .public Handler (Record - {#condition_type (Expression Any) + [#condition_type (Expression Any) #condition Var/1 - #body (Expression Any)})) + #body (Expression Any)])) (def: .public (handler_case handlers body) (-> (List Handler) (Expression Any) (Computation Any)) diff --git a/stdlib/source/library/lux/target/jvm/attribute.lux b/stdlib/source/library/lux/target/jvm/attribute.lux index 4d79cfb86..45758f54f 100644 --- a/stdlib/source/library/lux/target/jvm/attribute.lux +++ b/stdlib/source/library/lux/target/jvm/attribute.lux @@ -27,9 +27,9 @@ (type: .public (Info about) (Record - {#name (Index UTF8) + [#name (Index UTF8) #length U4 - #info about})) + #info about])) (def: .public (info_equivalence Equivalence<about>) (All (_ about) @@ -89,9 +89,9 @@ ... 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)) diff --git a/stdlib/source/library/lux/target/jvm/attribute/code.lux b/stdlib/source/library/lux/target/jvm/attribute/code.lux index a36208054..207ddf022 100644 --- a/stdlib/source/library/lux/target/jvm/attribute/code.lux +++ b/stdlib/source/library/lux/target/jvm/attribute/code.lux @@ -24,10 +24,10 @@ (type: .public (Code Attribute) (Record - {#limit Limit + [#limit Limit #code Binary #exception_table (Row Exception) - #attributes (Row Attribute)})) + #attributes (Row Attribute)])) (def: .public (length length code) (All (_ Attribute) (-> (-> Attribute Nat) (Code Attribute) Nat)) diff --git a/stdlib/source/library/lux/target/jvm/attribute/code/exception.lux b/stdlib/source/library/lux/target/jvm/attribute/code/exception.lux index a2a4f45c1..6bdf8dfff 100644 --- a/stdlib/source/library/lux/target/jvm/attribute/code/exception.lux +++ b/stdlib/source/library/lux/target/jvm/attribute/code/exception.lux @@ -21,10 +21,10 @@ (type: .public Exception (Record - {#start Address + [#start Address #end Address #handler Address - #catch (Index Class)})) + #catch (Index Class)])) (def: .public equivalence (Equivalence Exception) diff --git a/stdlib/source/library/lux/target/jvm/bytecode.lux b/stdlib/source/library/lux/target/jvm/bytecode.lux index e3c1fc9db..0cb111e13 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode.lux @@ -59,15 +59,15 @@ (type: .public Tracker (Record - {#program_counter Address + [#program_counter Address #next Label - #known Resolver})) + #known Resolver])) (def: fresh Tracker - {#program_counter /address.start + [#program_counter /address.start #next 0 - #known (dictionary.empty n.hash)}) + #known (dictionary.empty n.hash)]) (type: .public Relative (-> Resolver (Try [(Row Exception) Instruction]))) @@ -976,8 +976,8 @@ (do ..monad [index (<| ..lifted (<method> (..reflection class)) - {#//constant/pool.name method - #//constant/pool.descriptor (type.descriptor type)}) + [#//constant/pool.name method + #//constant/pool.descriptor (type.descriptor type)]) .let [consumption (|> inputs (list\each ..type_size) (list\mix n.+ (if <static?> 0 1)) @@ -1001,8 +1001,8 @@ (do ..monad [index (<| ..lifted (//constant/pool.field (..reflection class)) - {#//constant/pool.name field - #//constant/pool.descriptor (type.descriptor type)})] + [#//constant/pool.name field + #//constant/pool.descriptor (type.descriptor type)])] (if (or (same? type.long type) (same? type.double type)) (..bytecode <consumption> $2 @_ <2> [index]) @@ -1036,10 +1036,10 @@ (in []) (exception.except ..invalid_range_for_try [@start @end])) [_ @handler] (..resolve_label @handler resolver)] - (in [(row.row {#//exception.start @start + (in [(row.row [#//exception.start @start #//exception.end @end #//exception.handler @handler - #//exception.catch @catch}) + #//exception.catch @catch]) _.empty]))) []]])))) diff --git a/stdlib/source/library/lux/target/jvm/bytecode/environment.lux b/stdlib/source/library/lux/target/jvm/bytecode/environment.lux index ff778621c..2bf2c5c31 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/environment.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/environment.lux @@ -19,16 +19,16 @@ (type: .public Environment (Record - {#limit Limit - #stack (Maybe Stack)})) + [#limit Limit + #stack (Maybe Stack)])) (template [<name> <limit>] [(def: .public (<name> type) (-> (Type Method) (Try Environment)) (do try.monad [limit (<limit> type)] - (in {#limit limit - #stack (#.Some /stack.empty)})))] + (in [#limit limit + #stack (#.Some /stack.empty)])))] [static /limit.static] [virtual /limit.virtual] diff --git a/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux b/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux index 515728d71..4ab466ae4 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux @@ -22,16 +22,16 @@ (type: .public Limit (Record - {#stack Stack - #registry Registry})) + [#stack Stack + #registry Registry])) (template [<name> <registry>] [(def: .public (<name> type) (-> (Type Method) (Try Limit)) (do try.monad [registry (<registry> type)] - (in {#stack /stack.empty - #registry registry})))] + (in [#stack /stack.empty + #registry registry])))] [static /registry.static] [virtual /registry.virtual] diff --git a/stdlib/source/library/lux/target/jvm/class.lux b/stdlib/source/library/lux/target/jvm/class.lux index 03853a4ee..1dae89e90 100644 --- a/stdlib/source/library/lux/target/jvm/class.lux +++ b/stdlib/source/library/lux/target/jvm/class.lux @@ -30,7 +30,7 @@ (type: .public Class (Rec Class (Record - {#magic Magic + [#magic Magic #minor_version Minor #major_version Major #constant_pool Pool @@ -40,7 +40,7 @@ #interfaces (Row (Index //constant.Class)) #fields (Row Field) #methods (Row Method) - #attributes (Row Attribute)}))) + #attributes (Row Attribute)]))) (modifiers: Class ["0001" public] @@ -100,7 +100,7 @@ =fields (monad.all //constant/pool.monad fields) =methods (monad.all //constant/pool.monad methods)] (in [classes =fields =methods])))] - (in {#magic //magic.code + (in [#magic //magic.code #minor_version //version.default_minor #major_version version #constant_pool pool @@ -110,7 +110,7 @@ #interfaces @interfaces #fields (row.of_list =fields) #methods (row.of_list =methods) - #attributes attributes}))) + #attributes attributes]))) (def: .public (writer class) (Writer Class) diff --git a/stdlib/source/library/lux/target/jvm/constant.lux b/stdlib/source/library/lux/target/jvm/constant.lux index 63eff794c..780816d70 100644 --- a/stdlib/source/library/lux/target/jvm/constant.lux +++ b/stdlib/source/library/lux/target/jvm/constant.lux @@ -134,13 +134,13 @@ (type: .public (Name_And_Type of) (Record - {#name (Index UTF8) - #descriptor (Index (Descriptor of))})) + [#name (Index UTF8) + #descriptor (Index (Descriptor of))])) (type: .public (Reference of) (Record - {#class (Index Class) - #name_and_type (Index (Name_And_Type of))})) + [#class (Index Class) + #name_and_type (Index (Name_And_Type of))])) (template [<type> <equivalence> <writer>] [(def: .public <equivalence> diff --git a/stdlib/source/library/lux/target/jvm/constant/pool.lux b/stdlib/source/library/lux/target/jvm/constant/pool.lux index d71b3727e..a680980ef 100644 --- a/stdlib/source/library/lux/target/jvm/constant/pool.lux +++ b/stdlib/source/library/lux/target/jvm/constant/pool.lux @@ -122,8 +122,8 @@ (type: .public (Member of) (Record - {#name UTF8 - #descriptor (Descriptor of)})) + [#name UTF8 + #descriptor (Descriptor of)])) (def: .public (name_and_type [name descriptor]) (All (_ of) @@ -131,7 +131,7 @@ (do ..monad [@name (utf8 name) @descriptor (..descriptor descriptor)] - (!add #//.Name_And_Type //.name_and_type_equivalence {#//.name @name #//.descriptor @descriptor}))) + (!add #//.Name_And_Type //.name_and_type_equivalence [#//.name @name #//.descriptor @descriptor]))) (template [<name> <tag> <of>] [(def: .public (<name> class member) @@ -139,7 +139,7 @@ (do ..monad [@class (..class (//name.internal class)) @name_and_type (name_and_type member)] - (!add <tag> //.reference_equivalence {#//.class @class #//.name_and_type @name_and_type})))] + (!add <tag> //.reference_equivalence [#//.class @class #//.name_and_type @name_and_type])))] [field #//.Field Value] [method #//.Method Method] diff --git a/stdlib/source/library/lux/target/jvm/field.lux b/stdlib/source/library/lux/target/jvm/field.lux index 5514a2674..a709da105 100644 --- a/stdlib/source/library/lux/target/jvm/field.lux +++ b/stdlib/source/library/lux/target/jvm/field.lux @@ -23,10 +23,10 @@ (type: .public Field (Rec Field (Record - {#modifier (Modifier Field) + [#modifier (Modifier Field) #name (Index UTF8) #descriptor (Index (Descriptor Value)) - #attributes (Row Attribute)}))) + #attributes (Row Attribute)]))) (modifiers: Field ["0001" public] @@ -66,7 +66,7 @@ (do //constant/pool.monad [@name (//constant/pool.utf8 name) @descriptor (//constant/pool.descriptor (//type.descriptor type))] - (in {#modifier modifier + (in [#modifier modifier #name @name #descriptor @descriptor - #attributes attributes}))) + #attributes attributes]))) diff --git a/stdlib/source/library/lux/target/jvm/method.lux b/stdlib/source/library/lux/target/jvm/method.lux index 09a7d56f1..638d4091f 100644 --- a/stdlib/source/library/lux/target/jvm/method.lux +++ b/stdlib/source/library/lux/target/jvm/method.lux @@ -29,10 +29,10 @@ (type: .public Method (Rec Method (Record - {#modifier (Modifier Method) + [#modifier (Modifier Method) #name (Index UTF8) #descriptor (Index (Descriptor //type/category.Method)) - #attributes (Row Attribute)}))) + #attributes (Row Attribute)]))) (modifiers: Method ["0001" public] @@ -71,18 +71,18 @@ (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) + @code (//attribute.code [#//attribute/code.limit (value@ #//bytecode/environment.limit environment) #//attribute/code.code bytecode #//attribute/code.exception_table exceptions - #//attribute/code.attributes (row.row)})] + #//attribute/code.attributes (row.row)])] (in (row.suffix @code attributes))) #.None (in attributes))] - (in {#modifier modifier + (in [#modifier modifier #name @name #descriptor @descriptor - #attributes attributes}))) + #attributes attributes]))) (def: .public equivalence (Equivalence Method) diff --git a/stdlib/source/library/lux/target/jvm/type.lux b/stdlib/source/library/lux/target/jvm/type.lux index 0b89649c3..55c6bd921 100644 --- a/stdlib/source/library/lux/target/jvm/type.lux +++ b/stdlib/source/library/lux/target/jvm/type.lux @@ -38,9 +38,9 @@ (type: .public Constraint (Record - {#name Text + [#name Text #super_class (Type Class) - #super_interfaces (List (Type Class))})) + #super_interfaces (List (Type Class))])) (template [<name> <style>] [(def: .public (<name> type) diff --git a/stdlib/source/library/lux/target/php.lux b/stdlib/source/library/lux/target/php.lux index a14b3e0ce..57fca8e65 100644 --- a/stdlib/source/library/lux/target/php.lux +++ b/stdlib/source/library/lux/target/php.lux @@ -94,8 +94,8 @@ (type: .public Argument (Record - {#reference? Bit - #var Var})) + [#reference? Bit + #var Var])) (def: .public ; (-> Expression Statement) @@ -477,9 +477,9 @@ (type: .public Except (Record - {#class Constant + [#class Constant #exception Var - #handler Statement})) + #handler Statement])) (def: (catch except) (-> Except Text) diff --git a/stdlib/source/library/lux/target/python.lux b/stdlib/source/library/lux/target/python.lux index 6b24b6ae2..f0d4e23f2 100644 --- a/stdlib/source/library/lux/target/python.lux +++ b/stdlib/source/library/lux/target/python.lux @@ -396,9 +396,9 @@ (type: .public Except (Record - {#classes (List SVar) + [#classes (List SVar) #exception SVar - #handler (Statement Any)})) + #handler (Statement Any)])) (def: .public (try body! excepts) (-> (Statement Any) (List Except) (Statement Any)) diff --git a/stdlib/source/library/lux/target/ruby.lux b/stdlib/source/library/lux/target/ruby.lux index fb1eaed26..501c4d1e7 100644 --- a/stdlib/source/library/lux/target/ruby.lux +++ b/stdlib/source/library/lux/target/ruby.lux @@ -308,9 +308,9 @@ (type: .public Rescue (Record - {#classes (List Text) + [#classes (List Text) #exception LVar - #rescue Statement})) + #rescue Statement])) (def: .public (begin body! rescues) (-> Statement (List Rescue) Statement) diff --git a/stdlib/source/library/lux/target/scheme.lux b/stdlib/source/library/lux/target/scheme.lux index 97aabfb76..5bce310fc 100644 --- a/stdlib/source/library/lux/target/scheme.lux +++ b/stdlib/source/library/lux/target/scheme.lux @@ -60,8 +60,8 @@ (type: .public Arguments (Record - {#mandatory (List Var) - #rest (Maybe Var)})) + [#mandatory (List Var) + #rest (Maybe Var)])) (def: .public manual (-> Text Code) diff --git a/stdlib/source/library/lux/test.lux b/stdlib/source/library/lux/test.lux index b5275fa01..feab6c2f6 100644 --- a/stdlib/source/library/lux/test.lux +++ b/stdlib/source/library/lux/test.lux @@ -42,26 +42,26 @@ (type: .public Tally (Record - {#successes Nat + [#successes Nat #failures Nat #expected_coverage (Set Name) - #actual_coverage (Set Name)})) + #actual_coverage (Set Name)])) (def: (total parameter subject) (-> Tally Tally Tally) - {#successes (n.+ (value@ #successes parameter) (value@ #successes subject)) + [#successes (n.+ (value@ #successes parameter) (value@ #successes subject)) #failures (n.+ (value@ #failures parameter) (value@ #failures subject)) #expected_coverage (set.union (value@ #expected_coverage parameter) (value@ #expected_coverage subject)) #actual_coverage (set.union (value@ #actual_coverage parameter) - (value@ #actual_coverage subject))}) + (value@ #actual_coverage subject))]) (def: start Tally - {#successes 0 + [#successes 0 #failures 0 #expected_coverage (set.empty name.hash) - #actual_coverage (set.empty name.hash)}) + #actual_coverage (set.empty name.hash)]) (template [<name> <category>] [(def: <name> diff --git a/stdlib/source/library/lux/time.lux b/stdlib/source/library/lux/time.lux index 9b7ce7118..87556b1a8 100644 --- a/stdlib/source/library/lux/time.lux +++ b/stdlib/source/library/lux/time.lux @@ -169,10 +169,10 @@ (type: .public Clock (Record - {#hour Nat + [#hour Nat #minute Nat #second Nat - #milli_second Nat})) + #milli_second Nat])) (def: .public (clock time) (-> Time Clock) @@ -180,13 +180,13 @@ [hours time] [(duration.ticks duration.hour time) (duration.framed duration.hour time)] [minutes time] [(duration.ticks duration.minute time) (duration.framed duration.minute time)] [seconds millis] [(duration.ticks duration.second time) (duration.framed duration.second time)]] - {#hour (.nat hours) + [#hour (.nat hours) #minute (.nat minutes) #second (.nat seconds) #milli_second (|> millis (..positive duration.second) duration.millis - .nat)})) + .nat)])) (def: .public (time clock) (-> Clock (Try Time)) diff --git a/stdlib/source/library/lux/time/date.lux b/stdlib/source/library/lux/time/date.lux index 559638614..d606449c5 100644 --- a/stdlib/source/library/lux/time/date.lux +++ b/stdlib/source/library/lux/time/date.lux @@ -71,9 +71,9 @@ {} (Record - {#year Year + [#year Year #month Month - #day Nat}) + #day Nat]) (def: .public (date year month day_of_month) (-> Year Month Nat (Try Date)) @@ -81,9 +81,9 @@ (exception.except ..invalid_day [year month day_of_month]) (#try.Success (:abstraction - {#year year + [#year year #month month - #day day_of_month})))) + #day day_of_month])))) (def: .public epoch Date diff --git a/stdlib/source/library/lux/tool/compiler.lux b/stdlib/source/library/lux/tool/compiler.lux index b1408854c..5bb3c0fd2 100644 --- a/stdlib/source/library/lux/tool/compiler.lux +++ b/stdlib/source/library/lux/tool/compiler.lux @@ -26,17 +26,17 @@ (type: .public Input (Record - {#module Module + [#module Module #file Path #hash Nat - #code Code})) + #code Code])) (type: .public (Compilation s d o) (Record - {#dependencies (List Module) + [#dependencies (List Module) #process (-> s Archive (Try [s (Either (Compilation s d o) - [Descriptor (Document d) Output])]))})) + [Descriptor (Document d) Output])]))])) (type: .public (Compiler s d o) (-> Input (Compilation s d o))) diff --git a/stdlib/source/library/lux/tool/compiler/default/init.lux b/stdlib/source/library/lux/tool/compiler/default/init.lux index 2bbbb5ede..7748186b2 100644 --- a/stdlib/source/library/lux/tool/compiler/default/init.lux +++ b/stdlib/source/library/lux/tool/compiler/default/init.lux @@ -67,12 +67,12 @@ analysis_state [(analysisE.bundle eval host_analysis) (///analysis.state (///analysis.info ///version.version target))]] [extension.empty - {#///directive.analysis {#///directive.state analysis_state - #///directive.phase (analysisP.phase expander)} - #///directive.synthesis {#///directive.state synthesis_state - #///directive.phase synthesisP.phase} - #///directive.generation {#///directive.state generation_state - #///directive.phase generate}}])) + [#///directive.analysis [#///directive.state analysis_state + #///directive.phase (analysisP.phase expander)] + #///directive.synthesis [#///directive.state synthesis_state + #///directive.phase synthesisP.phase] + #///directive.generation [#///directive.state generation_state + #///directive.phase generate]]])) (def: .public (with_default_directives expander host_analysis program anchorT,expressionT,directiveT extender) (All (_ anchor expression directive) @@ -235,7 +235,7 @@ (let [execute! (directiveP.phase wrapper expander)] (function (_ key parameters input) (let [dependencies (default_dependencies prelude input)] - {#///.dependencies dependencies + [#///.dependencies dependencies #///.process (function (_ state archive) (do {! try.monad} [.let [hash (text\hash (value@ #///.code input))] @@ -250,12 +250,12 @@ #.None (do ! [[state [analysis_module [final_buffer final_registry]]] (///phase.result' state (..end module)) - .let [descriptor {#descriptor.hash hash + .let [descriptor [#descriptor.hash hash #descriptor.name module #descriptor.file (value@ #///.file input) #descriptor.references (set.of_list text.hash dependencies) #descriptor.state #.Compiled - #descriptor.registry final_registry}]] + #descriptor.registry final_registry]]] (in [state (#.Right [descriptor (document.write key analysis_module) @@ -266,7 +266,7 @@ (#.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 33c22c1f7..0452ef5b6 100644 --- a/stdlib/source/library/lux/tool/compiler/default/platform.lux +++ b/stdlib/source/library/lux/tool/compiler/default/platform.lux @@ -66,12 +66,12 @@ <Operation> (as_is ///generation.Operation <type_vars>)] (type: .public (Platform <type_vars>) (Record - {#&file_system (file.System Async) + [#&file_system (file.System Async) #host (///generation.Host expression directive) #phase (///generation.Phase <type_vars>) #runtime (<Operation> [Registry Output]) #phase_wrapper (-> Archive (<Operation> ///phase.Wrapper)) - #write (-> directive Binary)})) + #write (-> directive Binary)])) ... TODO: Get rid of this (type: (Action a) @@ -131,12 +131,12 @@ (def: (runtime_descriptor registry) (-> Registry Descriptor) - {#descriptor.hash 0 + [#descriptor.hash 0 #descriptor.name archive.runtime_module #descriptor.file "" #descriptor.references (set.empty text.hash) #descriptor.state #.Compiled - #descriptor.registry registry}) + #descriptor.registry registry]) (def: runtime_document (Document .Module) @@ -304,14 +304,14 @@ (type: Dependence (Record - {#depends_on Mapping - #depended_by Mapping})) + [#depends_on Mapping + #depended_by Mapping])) (def: independence Dependence (let [empty (dictionary.empty text.hash)] - {#depends_on empty - #depended_by empty})) + [#depends_on empty + #depended_by empty])) (def: (depend module import dependence) (-> Module Module Dependence Dependence) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux.lux b/stdlib/source/library/lux/tool/compiler/language/lux.lux index 5bb42e533..5ad1e959e 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux.lux @@ -92,6 +92,6 @@ (def: .public key (Key .Module) - (key.key {#signature.name (name_of ..compiler) - #signature.version /version.version} + (key.key [#signature.name (name_of ..compiler) + #signature.version /version.version] (module.empty 0))) 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 326c95b78..bdc195879 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux @@ -50,9 +50,9 @@ (type: .public (Variant a) (Record - {#lefts Nat + [#lefts Nat #right? Bit - #value a})) + #value a])) (def: .public (tag lefts right?) (-> Nat Bit Nat) @@ -89,8 +89,8 @@ (type: .public (Branch' e) (Record - {#when Pattern - #then e})) + [#when Pattern + #then e])) (type: .public (Match' e) [(Branch' e) (List (Branch' e))]) @@ -421,15 +421,15 @@ (def: fresh_bindings (All (_ k v) (Bindings k v)) - {#.counter 0 - #.mappings (list)}) + [#.counter 0 + #.mappings (list)]) (def: fresh_scope Scope - {#.name (list) + [#.name (list) #.inner 0 #.locals fresh_bindings - #.captured fresh_bindings}) + #.captured fresh_bindings]) (def: .public (with_scope action) (All (_ a) (-> (Operation a) (Operation [Scope a]))) @@ -538,19 +538,19 @@ (def: type_context Type_Context - {#.ex_counter 0 + [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)}) + #.var_bindings (list)]) (def: .public (info version host) (-> Version Text Info) - {#.target host + [#.target host #.version (%.nat version) - #.mode #.Build}) + #.mode #.Build]) (def: .public (state info) (-> Info Lux) - {#.info info + [#.info info #.source ..dummy_source #.location location.dummy #.current_module #.None @@ -562,4 +562,4 @@ #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}) + #.host []]) 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 e5fb06e7d..ea9d244af 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux @@ -22,37 +22,37 @@ (type: .public (Component state phase) (Record - {#state state - #phase phase})) + [#state state + #phase phase])) (type: .public (State anchor expression directive) (Record - {#analysis (Component analysis.State+ + [#analysis (Component analysis.State+ analysis.Phase) #synthesis (Component synthesis.State+ synthesis.Phase) #generation (Component (generation.State+ anchor expression directive) - (generation.Phase anchor expression directive))})) + (generation.Phase anchor expression directive))])) (type: .public Import (Record - {#module Module - #alias Text})) + [#module Module + #alias Text])) (type: .public Requirements (Record - {#imports (List Import) - #referrals (List Code)})) + [#imports (List Import) + #referrals (List Code)])) (def: .public no_requirements Requirements - {#imports (list) - #referrals (list)}) + [#imports (list) + #referrals (list)]) (def: .public (merge_requirements left right) (-> Requirements Requirements Requirements) - {#imports (list\composite (value@ #imports left) (value@ #imports right)) - #referrals (list\composite (value@ #referrals left) (value@ #referrals right))}) + [#imports (list\composite (value@ #imports left) (value@ #imports right)) + #referrals (list\composite (value@ #referrals left) (value@ #referrals right))]) (template [<special> <general>] [(type: .public (<special> anchor expression directive) 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 6f9a03763..91b758c78 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux @@ -67,14 +67,14 @@ (type: .public (State anchor expression directive) (Record - {#module Module + [#module Module #anchor (Maybe anchor) #host (Host expression directive) #buffer (Maybe (Buffer directive)) #registry artifact.Registry #counter Nat #context (Maybe artifact.ID) - #log (Row Text)})) + #log (Row Text)])) (template [<special> <general>] [(type: .public (<special> anchor expression directive) @@ -93,14 +93,14 @@ (-> (Host expression directive) Module (..State anchor expression directive))) - {#module module + [#module module #anchor #.None #host host #buffer #.None #registry artifact.empty #counter 0 #context #.None - #log row.empty}) + #log row.empty]) (def: .public empty_buffer Buffer row.empty) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux index c8cfe9c0e..9f5e6d12a 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 @@ -37,8 +37,8 @@ (type: (Fix a) (-> a a)) -(def: (compile|primitive else code') - (Fix (-> (Code' (Ann Location)) (Operation Analysis))) +(def: (compile|literal archive compile else code') + (-> Archive Phase (Fix (-> (Code' (Ann Location)) (Operation Analysis)))) (case code' (^template [<tag> <analyser>] [(<tag> value) @@ -50,12 +50,6 @@ [#.Frac /primitive.frac] [#.Text /primitive.text]) - _ - (else code'))) - -(def: (compile|structure archive compile else code') - (-> Archive Phase (Fix (-> (Code' (Ann Location)) (Operation Analysis)))) - (case code' (^ (#.Form (list& [_ (#.Tag tag)] values))) (case values @@ -77,17 +71,8 @@ (#.Tag tag) (/structure.tagged_sum compile tag archive (' [])) - (^ (#.Tuple (list))) - /primitive.unit - - (^ (#.Tuple (list singleton))) - (compile archive singleton) - (^ (#.Tuple elems)) - (/structure.product archive compile elems) - - (^ (#.Record pairs)) - (/structure.record archive compile pairs) + (/structure.record archive compile elems) _ (else code'))) @@ -139,6 +124,6 @@ ... The location must be set in the state for the sake ... of having useful error messages. (/.with_location location - (compile|primitive (compile|structure archive compile - (compile|others expander archive compile)) - code'))))) + (compile|literal archive compile + (compile|others expander archive compile) + code'))))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux index d008fde0e..9777b1a31 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 @@ -188,66 +188,74 @@ (analyse_pattern #.None inputT singleton next) [location (#.Tuple sub_patterns)] - (/.with_location location - (do {! ///.monad} - [inputT' (simplify_case inputT)] - (.case inputT' - (#.Product _) - (let [matches (loop [types (type.flat_tuple inputT') - patterns sub_patterns - output (: (List [Type Code]) - #.End)] - (.case [types patterns] - [#.End #.End] - output - - [(#.Item headT #.End) (#.Item headP #.End)] - (#.Item [headT headP] output) - - [remainingT (#.Item headP #.End)] - (#.Item [(type.tuple remainingT) headP] output) - - [(#.Item headT #.End) remainingP] - (#.Item [headT (code.tuple remainingP)] output) - - [(#.Item headT tailT) (#.Item headP tailP)] - (recur tailT tailP (#.Item [headT headP] output)) - - _ - (undefined)))] - (do ! - [[memberP+ thenA] (list\mix (: (All (_ a) - (-> [Type Code] (Operation [(List Pattern) a]) - (Operation [(List Pattern) a]))) - (function (_ [memberT memberC] then) - (do ! - [[memberP [memberP+ thenA]] ((:as (All (_ a) (-> (Maybe Nat) Type Code (Operation a) (Operation [Pattern a]))) - analyse_pattern) - #.None memberT memberC then)] - (in [(list& memberP memberP+) thenA])))) - (do ! - [nextA next] - (in [(list) nextA])) - matches)] - (in [(/.pattern/tuple memberP+) - thenA]))) - - _ - (/.except ..cannot_match_with_pattern [inputT' pattern]) - ))) + (do {! ///.monad} + [record (//structure.normal sub_patterns) + record_size,members,recordT (: (Operation (Maybe [Nat (List Code) Type])) + (.case record + (#.Some record) + (//structure.order record) + + #.None + (in #.None)))] + (.case record_size,members,recordT + (#.Some [record_size members recordT]) + (do ! + [_ (.case inputT + (#.Var _id) + (//type.with_env + (check.check inputT recordT)) + + _ + (in []))] + (analyse_pattern (#.Some record_size) inputT [location (#.Tuple members)] next)) + + #.None + (/.with_location location + (do {! ///.monad} + [inputT' (simplify_case inputT)] + (.case inputT' + (#.Product _) + (let [matches (loop [types (type.flat_tuple inputT') + patterns sub_patterns + output (: (List [Type Code]) + #.End)] + (.case [types patterns] + [#.End #.End] + output + + [(#.Item headT #.End) (#.Item headP #.End)] + (#.Item [headT headP] output) + + [remainingT (#.Item headP #.End)] + (#.Item [(type.tuple remainingT) headP] output) + + [(#.Item headT #.End) remainingP] + (#.Item [headT (code.tuple remainingP)] output) + + [(#.Item headT tailT) (#.Item headP tailP)] + (recur tailT tailP (#.Item [headT headP] output)) + + _ + (undefined)))] + (do ! + [[memberP+ thenA] (list\mix (: (All (_ a) + (-> [Type Code] (Operation [(List Pattern) a]) + (Operation [(List Pattern) a]))) + (function (_ [memberT memberC] then) + (do ! + [[memberP [memberP+ thenA]] ((:as (All (_ a) (-> (Maybe Nat) Type Code (Operation a) (Operation [Pattern a]))) + analyse_pattern) + #.None memberT memberC then)] + (in [(list& memberP memberP+) thenA])))) + (do ! + [nextA next] + (in [(list) nextA])) + matches)] + (in [(/.pattern/tuple memberP+) + thenA]))) - [location (#.Record record)] - (do ///.monad - [record (//structure.normal record) - [record_size members recordT] (//structure.order record) - _ (.case inputT - (#.Var _id) - (//type.with_env - (check.check inputT recordT)) - - _ - (in []))] - (analyse_pattern (#.Some record_size) inputT [location (#.Tuple members)] next)) + _ + (/.except ..cannot_match_with_pattern [inputT' pattern])))))) [location (#.Tag tag)] (/.with_location location 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 b6817b6c8..0499c2d8a 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 @@ -73,12 +73,12 @@ (def: .public (empty hash) (-> Nat Module) - {#.module_hash hash + [#.module_hash hash #.module_aliases (list) #.definitions (list) #.imports (list) #.module_annotations #.None - #.module_state #.Active}) + #.module_state #.Active]) (def: .public (set_annotations annotations) (-> Code (Operation Any)) 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 0d01a4936..17423da65 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 @@ -144,8 +144,8 @@ (template [<name> <val_type>] [(def: <name> (Bindings Text [Type <val_type>]) - {#.counter 0 - #.mappings (list)})] + [#.counter 0 + #.mappings (list)])] [init_locals Nat] [init_captured Variable] @@ -153,10 +153,10 @@ (def: (scope parent_name child_name) (-> (List Text) Text Scope) - {#.name (list& child_name parent_name) + [#.name (list& child_name parent_name) #.inner 0 #.locals init_locals - #.captured init_captured}) + #.captured init_captured]) (def: .public (with_scope name action) (All (_ a) (-> Text (Operation a) (Operation a))) 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 f44670a38..2d6d3140c 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 @@ -6,7 +6,8 @@ ["." monad (#+ do)]] [control ["." maybe] - ["ex" exception (#+ exception:)] + ["." try] + ["." exception (#+ exception:)] ["." state]] [data ["." name] @@ -37,14 +38,16 @@ [archive (#+ Archive)]]]]]]) (exception: .public (invalid_variant_type {type Type} {tag Tag} {code Code}) - (ex.report ["Type" (%.type type)] - ["Tag" (%.nat tag)] - ["Expression" (%.code code)])) + (exception.report + ["Type" (%.type type)] + ["Tag" (%.nat tag)] + ["Expression" (%.code code)])) (template [<name>] [(exception: .public (<name> {type Type} {members (List Code)}) - (ex.report ["Type" (%.type type)] - ["Expression" (%.code (` [(~+ members)]))]))] + (exception.report + ["Type" (%.type type)] + ["Expression" (%.code (` [(~+ members)]))]))] [invalid_tuple_type] [cannot_analyse_tuple] @@ -55,40 +58,40 @@ (template [<name>] [(exception: .public (<name> {type Type} {tag Tag} {code Code}) - (ex.report ["Type" (%.type type)] - ["Tag" (%.nat tag)] - ["Expression" (%.code code)]))] + (exception.report + ["Type" (%.type type)] + ["Tag" (%.nat tag)] + ["Expression" (%.code code)]))] [cannot_analyse_variant] [cannot_infer_numeric_tag] ) -(exception: .public (record_keys_must_be_tags {key Code} {record (List [Code Code])}) - (ex.report ["Key" (%.code key)] - ["Record" (%.code (code.record record))])) - (template [<name>] [(exception: .public (<name> {key Name} {record (List [Name Code])}) - (ex.report ["Tag" (%.code (code.tag key))] - ["Record" (%.code (code.record (list\each (function (_ [keyI valC]) - [(code.tag keyI) valC]) - record)))]))] + (exception.report + ["Tag" (%.code (code.tag key))] + ["Record" (%.code (code.record (list\each (function (_ [keyI valC]) + [(code.tag keyI) valC]) + record)))]))] [cannot_repeat_tag] ) -(exception: .public (tag_does_not_belong_to_record {key Name} {type Type}) - (ex.report ["Tag" (%.code (code.tag key))] - ["Type" (%.type type)])) +(exception: .public (slot_does_not_belong_to_record {key Name} {type Type}) + (exception.report + ["Tag" (%.code (code.tag key))] + ["Type" (%.type type)])) (exception: .public (record_size_mismatch {expected Nat} {actual Nat} {type Type} {record (List [Name Code])}) - (ex.report ["Expected" (%.nat expected)] - ["Actual" (%.nat actual)] - ["Type" (%.type type)] - ["Expression" (%.code (|> record - (list\each (function (_ [keyI valueC]) - [(code.tag keyI) valueC])) - code.record))])) + (exception.report + ["Expected" (%.nat expected)] + ["Actual" (%.nat actual)] + ["Type" (%.type type)] + ["Expression" (%.code (|> record + (list\each (function (_ [keyI valueC]) + [(code.tag keyI) valueC])) + code.record))])) (def: .public (sum analyse lefts right? archive) (-> Phase Nat Bit Phase) @@ -174,6 +177,12 @@ (loop [membersT+ (type.flat_tuple expectedT) membersC+ members] (case [membersT+ membersC+] + [(#.Item memberT #.End) (#.Item memberC #.End)] + (do ! + [memberA (//type.with_type memberT + (analyse archive memberC))] + (in (list memberA))) + [(#.Item memberT #.End) _] (//type.with_type memberT (\ ! each (|>> list) (analyse archive (code.tuple membersC+)))) @@ -188,7 +197,7 @@ (analyse archive memberC)) memberA+ (recur membersT+' membersC+')] (in (#.Item memberA memberA+))) - + _ (/.except ..cannot_analyse_tuple [expectedT members]))))] (in (/.tuple membersA+)))) @@ -284,81 +293,117 @@ ... Normalization just means that all the tags get resolved to their ... canonical form (with their corresponding module identified). (def: .public (normal record) - (-> (List [Code Code]) (Operation (List [Name Code]))) - (monad.each ///.monad - (function (_ [key val]) - (case key - [_ (#.Tag key)] - (do ///.monad - [key (///extension.lifted (meta.normal key))] - (in [key val])) + (-> (List Code) (Operation (Maybe (List [Name Code])))) + (loop [input record + output (: (List [Name Code]) + #.End)] + (case input + (^ (list& [_ (#.Tag slotH)] valueH tail)) + (do ///.monad + [slotH (///extension.lifted (meta.normal slotH))] + (recur tail (#.Item [slotH valueH] output))) + + #.End + (\ ///.monad in (#.Some output)) - _ - (/.except ..record_keys_must_be_tags [key record]))) - record)) + _ + (\ ///.monad in #.None)))) ... Lux already possesses the means to analyse tuples, so ... re-implementing the same functionality for records makes no sense. ... Records, thus, get transformed into tuples by ordering the elements. (def: .public (order record) - (-> (List [Name Code]) (Operation [Nat (List Code) Type])) + (-> (List [Name Code]) (Operation (Maybe [Nat (List Code) Type]))) (case record ... empty_record = empty_tuple = unit/any = [] #.End - (\ ///.monad in [0 (list) Any]) + (\ ///.monad in (#.Some [0 (list) Any])) (#.Item [head_k head_v] _) (do {! ///.monad} - [head_k (///extension.lifted (meta.normal head_k)) - [_ tag_set recordT] (///extension.lifted (meta.tag head_k)) - .let [size_record (list.size record) - size_ts (list.size tag_set)] - _ (if (n.= size_ts size_record) - (in []) - (/.except ..record_size_mismatch [size_ts size_record recordT record])) - .let [tuple_range (list.indices size_ts) - tag->idx (dictionary.of_list name.hash (list.zipped/2 tag_set tuple_range))] - idx->val (monad.mix ! - (function (_ [key val] idx->val) - (do ! - [key (///extension.lifted (meta.normal key))] - (case (dictionary.value key tag->idx) - (#.Some idx) - (if (dictionary.key? idx->val idx) - (/.except ..cannot_repeat_tag [key record]) - (in (dictionary.has idx val idx->val))) - - #.None - (/.except ..tag_does_not_belong_to_record [key recordT])))) - (: (Dictionary Nat Code) - (dictionary.empty n.hash)) - record) - .let [ordered_tuple (list\each (function (_ idx) - (maybe.trusted (dictionary.value idx idx->val))) - tuple_range)]] - (in [size_ts ordered_tuple recordT])) + [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]) + (do ! + [.let [size_record (list.size record) + size_ts (list.size slot_set)] + _ (if (n.= size_ts size_record) + (in []) + (/.except ..record_size_mismatch [size_ts size_record recordT record])) + .let [tuple_range (list.indices size_ts) + tag->idx (dictionary.of_list name.hash (list.zipped/2 slot_set tuple_range))] + idx->val (monad.mix ! + (function (_ [key val] idx->val) + (do ! + [key (///extension.lifted (meta.normal key))] + (case (dictionary.value key tag->idx) + (#.Some idx) + (if (dictionary.key? idx->val idx) + (/.except ..cannot_repeat_tag [key record]) + (in (dictionary.has idx val idx->val))) + + #.None + (/.except ..slot_does_not_belong_to_record [key recordT])))) + (: (Dictionary Nat Code) + (dictionary.empty n.hash)) + record) + .let [ordered_tuple (list\each (function (_ idx) + (maybe.trusted (dictionary.value idx idx->val))) + tuple_range)]] + (in (#.Some [size_ts ordered_tuple recordT]))) + + (#try.Failure error) + (in #.None))) )) (def: .public (record archive analyse members) - (-> Archive Phase (List [Code Code]) (Operation Analysis)) + (-> Archive Phase (List Code) (Operation Analysis)) (case members (^ (list)) //primitive.unit - (^ (list [_ singletonC])) + (^ (list singletonC)) (analyse archive 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]) + (case (list.size slot_set) + 1 (analyse archive singletonC) + _ (..product archive analyse members)) + + _ + (..product archive analyse members))) + _ (do {! ///.monad} - [members (normal members) - [record_size membersC recordT] (..order members) - expectedT (///extension.lifted meta.expected_type)] - (case expectedT - (#.Var _) + [?members (normal members)] + (case ?members + #.None + (..product archive analyse members) + + (#.Some slots) (do ! - [inferenceT (//inference.record record_size recordT) - [inferredT membersA] (//inference.general archive analyse inferenceT membersC)] - (in (/.tuple membersA))) + [record_size,membersC,recordT (..order slots)] + (case record_size,membersC,recordT + #.None + (..product archive analyse members) - _ - (..product archive analyse membersC))))) + (#.Some [record_size membersC recordT]) + (do ! + [expectedT (///extension.lifted meta.expected_type)] + (case expectedT + (#.Var _) + (do ! + [inferenceT (//inference.record record_size recordT) + [inferredT membersA] (//inference.general archive analyse inferenceT membersC)] + (in (/.tuple membersA))) + + _ + (..product archive analyse membersC))))))))) 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 f47780c61..e89d68ac8 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 @@ -52,8 +52,8 @@ (type: .public (State s i o) (Record - {#bundle (Bundle s i o) - #state s})) + [#bundle (Bundle s i o) + #state s])) (type: .public (Operation s i o v) (//.Operation (State s i o) v)) 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 05a6aa294..7efd44bcd 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 @@ -190,8 +190,8 @@ (type: Member (Record - {#class External - #member Text})) + [#class External + #member Text])) (def: member (Parser Member) @@ -199,9 +199,9 @@ (type: Method_Signature (Record - {#method .Type + [#method .Type #deprecated? Bit - #exceptions (List .Type)})) + #exceptions (List .Type)])) (template [<name>] [(exception: .public (<name> {type .Type}) @@ -1959,23 +1959,23 @@ 2 (#/////analysis.Case (/////analysis.unit) - [{#/////analysis.when + [[#/////analysis.when (#/////analysis.Bind 2) #/////analysis.then - bodyA} + bodyA] (list)]) _ (#/////analysis.Case (/////analysis.unit) - [{#/////analysis.when + [[#/////analysis.when (#/////analysis.Complex (#/////analysis.Tuple (|> arity list.indices (list\each (|>> (n.+ 2) #/////analysis.Bind))))) #/////analysis.then - bodyA} + bodyA] (list)])))) (def: .public (analyse_overriden_method analyse archive selfT mapping supers method) 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 02037b6b0..c7e17a992 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 @@ -171,9 +171,9 @@ (def: (constraint name) (-> Text Constraint) - {#type.name name + [#type.name name #type.super_class (type.class "java.lang.Object" (list)) - #type.super_interfaces (list)}) + #type.super_interfaces (list)]) (def: constant::modifier (Modifier field.Field) 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 f2ffaccae..46dd5d709 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 @@ -240,8 +240,9 @@ (All (_ anchor expression directive) (-> (List Text) Type (Operation anchor expression directive (List Any)))) (/////directive.lifted_generation - (monad.each phase.monad (function (_ tag) - (/////generation.log! (format "#" tag " : Tag of " (%.type owner)))) + (monad.each phase.monad + (function (_ tag) + (/////generation.log! (format "#" tag " : Tag of " (%.type owner)))) tags))) (def: (def::type_tagged expander host_analysis) @@ -308,8 +309,8 @@ _ (module.alias alias module)))) imports)] (module.set_annotations annotationsV)))] - (in {#/////directive.imports imports - #/////directive.referrals (list)})))])) + (in [#/////directive.imports imports + #/////directive.referrals (list)])))])) (exception: .public (cannot_alias_an_alias {local Alias} {foreign Alias} {target Name}) (exception.report 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 f5bde1d64..41d204e66 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 @@ -317,9 +317,9 @@ (_.set! value (_.apply/1 op [..unit])) (_.return (..right value))) (list (with_vars [error] - {#_.class (_.constant "Exception") + [#_.class (_.constant "Exception") #_.exception error - #_.handler (_.return (..left (_.do "getMessage" (list) error)))}))))) + #_.handler (_.return (..left (_.do "getMessage" (list) error)))]))))) (runtime: (lux//program_args inputs) (with_vars [head tail] 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 4cfc0dc5d..4347ace80 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 @@ -318,13 +318,13 @@ (type: .public Storage (Record - {#bindings (Set Register) - #dependencies (Set Variable)})) + [#bindings (Set Register) + #dependencies (Set Variable)])) (def: empty Storage - {#bindings (set.empty n.hash) - #dependencies (set.empty ///reference/variable.hash)}) + [#bindings (set.empty n.hash) + #dependencies (set.empty ///reference/variable.hash)]) ... TODO: Use this to declare all local variables at the beginning of ... script functions. 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 84d91d48d..40689678f 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 @@ -257,21 +257,21 @@ (|> bodyS' (grow env') (\ ! each (function (_ body) - {#/.environment environment + [#/.environment environment #/.arity (++ down_arity') - #/.body body}))) + #/.body body]))) _ - (in {#/.environment environment + (in [#/.environment environment #/.arity 1 - #/.body bodyS})))] + #/.body bodyS])))] (in (if currying? (/.function/abstraction abstraction) (case (//loop.optimization false 1 (list) abstraction) (#.Some [startL initsL bodyL]) - (/.function/abstraction {#/.environment environment + (/.function/abstraction [#/.environment environment #/.arity (value@ #/.arity abstraction) - #/.body (/.loop/scope [startL initsL bodyL])}) + #/.body (/.loop/scope [startL initsL bodyL])]) #.None (/.function/abstraction abstraction)))))) 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 882a8c5d6..b4e79bd6d 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 @@ -144,9 +144,9 @@ (value@ #/.inits) (monad.each ! (recur false))) iteration' (recur return? (value@ #/.iteration scope))] - (in (/.loop/scope {#/.start (|> scope (value@ #/.start) (register_optimization offset)) + (in (/.loop/scope [#/.start (|> scope (value@ #/.start) (register_optimization offset)) #/.inits inits' - #/.iteration iteration'}))) + #/.iteration iteration']))) (^ (/.loop/recur args)) (|> args 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 ec9c6d81e..9b4e1ad57 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux @@ -39,9 +39,9 @@ (type: .public State (Record - {#locals Nat + [#locals Nat ... https://en.wikipedia.org/wiki/Currying - #currying? Bit})) + #currying? Bit])) (def: .public fresh_resolver Resolver @@ -49,8 +49,8 @@ (def: .public init State - {#locals 0 - #currying? false}) + [#locals 0 + #currying? false]) (type: .public Primitive (Variant @@ -88,14 +88,14 @@ (type: .public (Abstraction' s) (Record - {#environment (Environment s) + [#environment (Environment s) #arity Arity - #body s})) + #body s])) (type: .public (Apply' s) (Record - {#function s - #arguments (List s)})) + [#function s + #arguments (List s)])) (type: .public (Branch s) (Variant @@ -106,9 +106,9 @@ (type: .public (Scope s) (Record - {#start Register + [#start Register #inits (List s) - #iteration s})) + #iteration s])) (type: .public (Loop s) (Variant diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive.lux b/stdlib/source/library/lux/tool/compiler/meta/archive.lux index d326a2bbb..d54234a8e 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive.lux @@ -78,8 +78,8 @@ {} (Record - {#next ID - #resolver (Dictionary Module [ID (Maybe [Descriptor (Document Any) Output])])}) + [#next ID + #resolver (Dictionary Module [ID (Maybe [Descriptor (Document Any) Output])])]) (def: next (-> Archive ID) @@ -87,8 +87,8 @@ (def: .public empty Archive - (:abstraction {#next 0 - #resolver (dictionary.empty text.hash)})) + (:abstraction [#next 0 + #resolver (dictionary.empty text.hash)])) (def: .public (id module archive) (-> Module Archive (Try ID)) @@ -279,9 +279,9 @@ _ (exception.assertion ..corrupt_data [] (correct_reservations? reservations))] (in (:abstraction - {#next next + [#next next #resolver (list\mix (function (_ [module id] archive) (dictionary.has module [id #.None] archive)) (value@ #resolver (:representation ..empty)) - reservations)})))) + reservations)])))) ) diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux index 7a2d25b1a..23a9eae99 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux @@ -36,20 +36,20 @@ (type: .public Artifact (Record - {#id ID - #category Category})) + [#id ID + #category Category])) (abstract: .public Registry {} (Record - {#artifacts (Row Artifact) - #resolver (Dictionary Text ID)}) + [#artifacts (Row Artifact) + #resolver (Dictionary Text ID)]) (def: .public empty Registry - (:abstraction {#artifacts row.empty - #resolver (dictionary.empty text.hash)})) + (:abstraction [#artifacts row.empty + #resolver (dictionary.empty text.hash)])) (def: .public artifacts (-> Registry (Row Artifact)) @@ -65,8 +65,8 @@ [id (|> registry :representation - (revised@ #artifacts (row.suffix {#id id - #category #Anonymous})) + (revised@ #artifacts (row.suffix [#id id + #category #Anonymous])) :abstraction)])) (template [<tag> <create> <fetch>] @@ -76,8 +76,8 @@ [id (|> registry :representation - (revised@ #artifacts (row.suffix {#id id - #category (<tag> name)})) + (revised@ #artifacts (row.suffix [#id id + #category (<tag> name)])) (revised@ #resolver (dictionary.has name id)) :abstraction)])) diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/descriptor.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/descriptor.lux index 5a30c2c50..fec78853e 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive/descriptor.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive/descriptor.lux @@ -20,12 +20,12 @@ (type: .public Descriptor (Record - {#name Module + [#name Module #file Path #hash Nat #state Module_State #references (Set Module) - #registry Registry})) + #registry Registry])) (def: .public writer (Writer Descriptor) 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 07c8b0841..6bc6d4e80 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux @@ -29,8 +29,8 @@ {} (Record - {#signature Signature - #content d}) + [#signature Signature + #content d]) (def: .public (read key document) (All (_ d) (-> (Key d) (Document Any) (Try d))) @@ -49,8 +49,8 @@ (def: .public (write key content) (All (_ d) (-> (Key d) d (Document d))) - (:abstraction {#signature (key.signature key) - #content content})) + (:abstraction [#signature (key.signature key) + #content content])) (def: .public (check key document) (All (_ d) (-> (Key d) (Document Any) (Try (Document d)))) diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux index ebe18755a..8dae11fe4 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux @@ -21,8 +21,8 @@ (type: .public Signature (Record - {#name Name - #version Version})) + [#name Name + #version Version])) (def: .public equivalence (Equivalence 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 9796bdcfb..8944ceeb8 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux @@ -42,8 +42,8 @@ (type: Dependency (Record - {#module Module - #imports Ancestry})) + [#module Module + #imports Ancestry])) (def: .public graph (-> (List Dependency) Graph) 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 797d1e2e4..250849940 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/io/context.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/io/context.lux @@ -129,10 +129,10 @@ [[path binary] (..find_any_source_file fs importer import contexts partial_host_extension module)] (case (\ utf8.codec decoded binary) (#try.Success code) - (in {#////.module module + (in [#////.module module #////.file path #////.hash (text\hash code) - #////.code code}) + #////.code code]) (#try.Failure _) (async\in (exception.except ..cannot_read_module [module]))))) 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 c1fdd9d5d..2531459ce 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux @@ -88,12 +88,12 @@ (def: owner tar.Owner - {#tar.name tar.anonymous - #tar.id tar.no_id}) + [#tar.name tar.anonymous + #tar.id tar.no_id]) (def: ownership - {#tar.user ..owner - #tar.group ..owner}) + [#tar.user ..owner + #tar.group ..owner]) (def: (write_module now mapping [module [module_id [descriptor document output]]]) (-> Instant (Dictionary Module archive.ID) diff --git a/stdlib/source/library/lux/tool/interpreter.lux b/stdlib/source/library/lux/tool/interpreter.lux index dd6713ff4..eb4ac9de7 100644 --- a/stdlib/source/library/lux/tool/interpreter.lux +++ b/stdlib/source/library/lux/tool/interpreter.lux @@ -163,9 +163,9 @@ (type: (Context anchor expression directive) (Record - {#configuration Configuration + [#configuration Configuration #state (State+ anchor expression directive) - #source Source})) + #source Source])) (with_expansions [<Context> (as_is (Context anchor expression directive))] (def: (read_eval_print context) @@ -201,9 +201,9 @@ (! Any))) (do {! Monad<!>} [state (initialize Monad<!> Console<!> platform configuration)] - (loop [context {#configuration configuration + (loop [context [#configuration configuration #state state - #source ..fresh_source} + #source ..fresh_source] multi_line? #0] (do ! [_ (if multi_line? diff --git a/stdlib/source/library/lux/type.lux b/stdlib/source/library/lux/type.lux index a9eeac328..0ef1ba1af 100644 --- a/stdlib/source/library/lux/type.lux +++ b/stdlib/source/library/lux/type.lux @@ -433,8 +433,8 @@ (type: Typed (Record - {#type Code - #expression Code})) + [#type Code + #expression Code])) (def: typed (Parser Typed) diff --git a/stdlib/source/library/lux/type/abstract.lux b/stdlib/source/library/lux/type/abstract.lux index 23e7b4378..bd2fe150f 100644 --- a/stdlib/source/library/lux/type/abstract.lux +++ b/stdlib/source/library/lux/type/abstract.lux @@ -36,10 +36,10 @@ (type: .public Frame (Record - {#name Text + [#name Text #type_vars (List Code) #abstraction Code - #representation Code})) + #representation Code])) (def: frames (Stack Frame) diff --git a/stdlib/source/library/lux/type/check.lux b/stdlib/source/library/lux/type/check.lux index a42a519df..ed8afab5b 100644 --- a/stdlib/source/library/lux/type/check.lux +++ b/stdlib/source/library/lux/type/check.lux @@ -323,9 +323,9 @@ (def: .public fresh_context Type_Context - {#.var_counter 0 + [#.var_counter 0 #.ex_counter 0 - #.var_bindings (list)}) + #.var_bindings (list)]) (def: (attempt op) (All (_ a) (-> (Check a) (Check (Maybe a)))) diff --git a/stdlib/source/library/lux/type/implicit.lux b/stdlib/source/library/lux/type/implicit.lux index c092139d2..fe815482d 100644 --- a/stdlib/source/library/lux/type/implicit.lux +++ b/stdlib/source/library/lux/type/implicit.lux @@ -88,7 +88,7 @@ ["" simple_name] (meta.either (do meta.monad [member (meta.normal member) - _ (meta.tag member)] + _ (meta.slot member)] (in member)) (do {! meta.monad} [this_module_name meta.current_module_name @@ -114,7 +114,7 @@ (-> Name (Meta [Nat Type])) (do meta.monad [member (member_name member) - [idx tag_list sig_type] (meta.tag member)] + [idx tag_list sig_type] (meta.slot member)] (in [idx sig_type]))) (def: (available_definitions source_module target_module constants aggregate) @@ -203,8 +203,8 @@ (type: Instance (Rec Instance (Record - {#constructor Name - #dependencies (List Instance)}))) + [#constructor Name + #dependencies (List Instance)]))) (def: (candidate_provision provision context dep alts) (-> (-> Lux Type_Context Type (Check Instance)) diff --git a/stdlib/source/library/lux/type/quotient.lux b/stdlib/source/library/lux/type/quotient.lux index 1436e4597..163af82d6 100644 --- a/stdlib/source/library/lux/type/quotient.lux +++ b/stdlib/source/library/lux/type/quotient.lux @@ -26,15 +26,15 @@ {} (Record - {#value t - #label c}) + [#value t + #label c]) (def: .public (quotient class value) (All (_ t c %) (-> (Class t c %) t (Quotient t c %))) - (:abstraction {#value value - #label ((:representation Class class) value)})) + (:abstraction [#value value + #label ((:representation Class class) value)])) (template [<name> <output> <slot>] [(def: .public <name> diff --git a/stdlib/source/library/lux/type/refinement.lux b/stdlib/source/library/lux/type/refinement.lux index 7cecd9111..93d962ae3 100644 --- a/stdlib/source/library/lux/type/refinement.lux +++ b/stdlib/source/library/lux/type/refinement.lux @@ -15,8 +15,8 @@ {} (Record - {#value t - #predicate (Predicate t)}) + [#value t + #predicate (Predicate t)]) (type: .public (Refiner t %) (-> t (Maybe (Refined t %)))) @@ -27,8 +27,8 @@ (-> (Predicate t) (Refiner t %)))) (function (_ value) (if (predicate value) - (#.Some (:abstraction {#value value - #predicate predicate})) + (#.Some (:abstraction [#value value + #predicate predicate])) #.None))) (template [<name> <output> <slot>] @@ -48,8 +48,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)))) ) diff --git a/stdlib/source/library/lux/world/db/jdbc.lux b/stdlib/source/library/lux/world/db/jdbc.lux index 67b8d5354..8fb53e9b0 100644 --- a/stdlib/source/library/lux/world/db/jdbc.lux +++ b/stdlib/source/library/lux/world/db/jdbc.lux @@ -52,18 +52,18 @@ (type: .public Credentials (Record - {#url URL + [#url URL #user Text - #password Text})) + #password Text])) (type: .public ID Int) (type: .public (Statement input) (Record - {#sql sql.Statement + [#sql sql.Statement #input (Input input) - #value input})) + #value input])) (template [<name> <forge> <output>] [(capability: .public (<name> ! i) diff --git a/stdlib/source/library/lux/world/file.lux b/stdlib/source/library/lux/world/file.lux index c66e0d4f9..377f07b4f 100644 --- a/stdlib/source/library/lux/world/file.lux +++ b/stdlib/source/library/lux/world/file.lux @@ -995,9 +995,9 @@ (type: Mock_File (Record - {#mock_last_modified Instant + [#mock_last_modified Instant #mock_can_execute Bit - #mock_content Binary})) + #mock_content Binary])) (type: Mock (Rec Mock @@ -1042,9 +1042,9 @@ (case tail #.End (#try.Success (dictionary.has head - (#.Left {#mock_last_modified now + (#.Left [#mock_last_modified now #mock_can_execute false - #mock_content content}) + #mock_content content]) directory)) (#.Item _) diff --git a/stdlib/source/library/lux/world/file/watch.lux b/stdlib/source/library/lux/world/file/watch.lux index cb316fbd4..b094a1e0d 100644 --- a/stdlib/source/library/lux/world/file/watch.lux +++ b/stdlib/source/library/lux/world/file/watch.lux @@ -36,24 +36,24 @@ {} (Record - {#creation Bit + [#creation Bit #modification Bit - #deletion Bit}) + #deletion Bit]) (def: none Concern (:abstraction - {#creation false + [#creation false #modification false - #deletion false})) + #deletion false])) (template [<concern> <predicate> <event> <create> <modify> <delete>] [(def: .public <concern> Concern (:abstraction - {#creation <create> + [#creation <create> #modification <modify> - #deletion <delete>})) + #deletion <delete>])) (def: .public <predicate> (Predicate Concern) @@ -70,9 +70,9 @@ (def: .public (also left right) (-> Concern Concern Concern) (:abstraction - {#creation (or (..creation? left) (..creation? right)) + [#creation (or (..creation? left) (..creation? right)) #modification (or (..modification? left) (..modification? right)) - #deletion (or (..deletion? left) (..deletion? right))})) + #deletion (or (..deletion? left) (..deletion? right))])) (def: .public all Concern diff --git a/stdlib/source/library/lux/world/input/keyboard.lux b/stdlib/source/library/lux/world/input/keyboard.lux index b22f9b792..b3b64f1d1 100644 --- a/stdlib/source/library/lux/world/input/keyboard.lux +++ b/stdlib/source/library/lux/world/input/keyboard.lux @@ -99,14 +99,14 @@ (type: .public Press (Record - {#pressed? Bit - #input Key})) + [#pressed? Bit + #input Key])) (template [<bit> <name>] [(def: .public (<name> key) (-> Key Press) - {#pressed? <bit> - #input key})] + [#pressed? <bit> + #input key])] [#0 release] [#1 press] diff --git a/stdlib/source/library/lux/world/net.lux b/stdlib/source/library/lux/world/net.lux index 606202f9b..4f5626900 100644 --- a/stdlib/source/library/lux/world/net.lux +++ b/stdlib/source/library/lux/world/net.lux @@ -13,5 +13,5 @@ (type: .public Location (Record - {#address Address - #port Port})) + [#address Address + #port Port])) diff --git a/stdlib/source/library/lux/world/net/http.lux b/stdlib/source/library/lux/world/net/http.lux index 75b3c7b86..b34b904c9 100644 --- a/stdlib/source/library/lux/world/net/http.lux +++ b/stdlib/source/library/lux/world/net/http.lux @@ -53,28 +53,28 @@ (type: .public Address (Record - {#port Port - #host Text})) + [#port Port + #host Text])) (type: .public Identification (Record - {#local Address - #remote Address})) + [#local Address + #remote Address])) (type: .public Protocol (Record - {#version Version - #scheme Scheme})) + [#version Version + #scheme Scheme])) (type: .public Resource (Record - {#method Method - #uri URI})) + [#method Method + #uri URI])) (type: .public (Message !) (Record - {#headers Headers - #body (Body !)})) + [#headers Headers + #body (Body !)])) (type: .public (Request !) [Identification Protocol Resource (Message !)]) diff --git a/stdlib/source/library/lux/world/net/http/client.lux b/stdlib/source/library/lux/world/net/http/client.lux index 0292ab79b..c3d70e625 100644 --- a/stdlib/source/library/lux/world/net/http/client.lux +++ b/stdlib/source/library/lux/world/net/http/client.lux @@ -211,8 +211,8 @@ java/net/URLConnection::getInputStream (\ ! each (|>> java/io/BufferedInputStream::new)))] (in [(.nat status) - {#//.headers headers - #//.body (..default_body input)}]))))))] + [#//.headers headers + #//.body (..default_body input)]]))))))] (for {@.old (as_is <jvm>) @.jvm (as_is <jvm>)} (as_is))) diff --git a/stdlib/source/library/lux/world/net/http/mime.lux b/stdlib/source/library/lux/world/net/http/mime.lux index f52b63136..5df977504 100644 --- a/stdlib/source/library/lux/world/net/http/mime.lux +++ b/stdlib/source/library/lux/world/net/http/mime.lux @@ -9,10 +9,10 @@ abstract]]]) (abstract: .public MIME - Text - {#doc "Multipurpose Internet Mail Extensions"} + Text + (def: .public mime (-> Text MIME) (|>> :abstraction)) diff --git a/stdlib/source/library/lux/world/net/http/response.lux b/stdlib/source/library/lux/world/net/http/response.lux index b129584d5..26a1e10fd 100644 --- a/stdlib/source/library/lux/world/net/http/response.lux +++ b/stdlib/source/library/lux/world/net/http/response.lux @@ -32,10 +32,10 @@ (let [body (frp\in (\ encoding.utf8 encoded ""))] (function (_ status) [status - {#//.headers (|> context.empty + [#//.headers (|> context.empty (header.content_length 0) (header.content_type mime.utf_8)) - #//.body body}]))) + #//.body body]]))) (def: .public (temporary_redirect to) (-> URL Response) @@ -49,10 +49,10 @@ (def: .public (content status type data) (-> Status MIME Binary Response) [status - {#//.headers (|> context.empty + [#//.headers (|> context.empty (header.content_length (binary.size data)) (header.content_type type)) - #//.body (frp\in data)}]) + #//.body (frp\in data)]]) (def: .public bad_request (-> Text Response) diff --git a/stdlib/source/library/lux/world/output/video/resolution.lux b/stdlib/source/library/lux/world/output/video/resolution.lux index 8bf8a1bd7..3f79a0040 100644 --- a/stdlib/source/library/lux/world/output/video/resolution.lux +++ b/stdlib/source/library/lux/world/output/video/resolution.lux @@ -12,8 +12,8 @@ (type: .public Resolution (Record - {#width Nat - #height Nat})) + [#width Nat + #height Nat])) (def: .public hash (Hash Resolution) @@ -27,8 +27,8 @@ (template [<name> <width> <height>] [(def: .public <name> Resolution - {#width <width> - #height <height>})] + [#width <width> + #height <height>])] [svga 800 600] [wsvga 1024 600] diff --git a/stdlib/source/library/lux/world/service/authentication.lux b/stdlib/source/library/lux/world/service/authentication.lux index 092d26454..1916f1238 100644 --- a/stdlib/source/library/lux/world/service/authentication.lux +++ b/stdlib/source/library/lux/world/service/authentication.lux @@ -19,7 +19,8 @@ (Capability [account] (! (Try Any)))) (type: .public (Service ! account secret value) - {#can_register (Can_Register ! account secret value) - #can_authenticate (Can_Authenticate ! account secret value) - #can_reset (Can_Reset ! account secret) - #can_forget (Can_Forget ! account)}) + (Record + [#can_register (Can_Register ! account secret value) + #can_authenticate (Can_Authenticate ! account secret value) + #can_reset (Can_Reset ! account secret) + #can_forget (Can_Forget ! account)])) diff --git a/stdlib/source/library/lux/world/service/crud.lux b/stdlib/source/library/lux/world/service/crud.lux index 056628491..5635bc1c3 100644 --- a/stdlib/source/library/lux/world/service/crud.lux +++ b/stdlib/source/library/lux/world/service/crud.lux @@ -11,8 +11,9 @@ (type: .public ID Nat) (type: .public Time - {#created Instant - #updated Instant}) + (Record + [#created Instant + #updated Instant])) (capability: .public (Can_Create ! entity) (can_create [Instant entity] (! (Try ID)))) @@ -27,7 +28,8 @@ (can_delete ID (! (Try Any)))) (type: .public (CRUD ! entity) - {#can_create (Can_Create ! entity) - #can_retrieve (Can_Retrieve ! entity) - #can_update (Can_Update ! entity) - #can_delete (Can_Delete ! entity)}) + (Record + [#can_create (Can_Create ! entity) + #can_retrieve (Can_Retrieve ! entity) + #can_update (Can_Update ! entity) + #can_delete (Can_Delete ! entity)])) diff --git a/stdlib/source/library/lux/world/service/inventory.lux b/stdlib/source/library/lux/world/service/inventory.lux index 6a5fac798..6f1ca494a 100644 --- a/stdlib/source/library/lux/world/service/inventory.lux +++ b/stdlib/source/library/lux/world/service/inventory.lux @@ -10,8 +10,9 @@ Nat) (type: .public Ownership - {#owner ID - #property ID}) + (Record + [#owner ID + #property ID])) (capability: .public (Can_Own !) (can_own Ownership (! (Try Any)))) @@ -26,7 +27,8 @@ (can_list_property ID (! (Try (List ID))))) (type: .public (Inventory !) - {#can_own (Can_Own !) - #can_disown (Can_Disown !) - #can_check (Can_Check !) - #can_list_property (Can_List_Property !)}) + (Record + [#can_own (Can_Own !) + #can_disown (Can_Disown !) + #can_check (Can_Check !) + #can_list_property (Can_List_Property !)])) diff --git a/stdlib/source/library/lux/world/service/journal.lux b/stdlib/source/library/lux/world/service/journal.lux index 648e084d6..311be09bf 100644 --- a/stdlib/source/library/lux/world/service/journal.lux +++ b/stdlib/source/library/lux/world/service/journal.lux @@ -13,12 +13,13 @@ ["." instant (#+ Instant) ("#\." equivalence)]]]]) (type: .public (Entry a) - {#what a - #why Text - #how Text - #who Text - #where Text - #when Instant}) + (Record + [#what a + #why Text + #how Text + #who Text + #where Text + #when Instant])) (type: .public Range (Interval Instant)) @@ -47,5 +48,6 @@ (can_read Range (! (Try (List (Entry a)))))) (type: .public (Journal ! a) - {#can_write (Can_Write ! a) - #can_read (Can_Read ! a)}) + (Record + [#can_write (Can_Write ! a) + #can_read (Can_Read ! a)])) diff --git a/stdlib/source/library/lux/world/service/mail.lux b/stdlib/source/library/lux/world/service/mail.lux index 063972b22..9a7384a71 100644 --- a/stdlib/source/library/lux/world/service/mail.lux +++ b/stdlib/source/library/lux/world/service/mail.lux @@ -15,5 +15,6 @@ (can_subscribe [address] (! (Try (Channel message))))) (type: .public (Service ! address message) - {#can_send (Can_Send ! address message) - #can_subscribe (Can_Subscribe ! address message)}) + (Record + [#can_send (Can_Send ! address message) + #can_subscribe (Can_Subscribe ! address message)])) diff --git a/stdlib/source/program/aedifex/artifact.lux b/stdlib/source/program/aedifex/artifact.lux index 9645ba1f8..a6f506032 100644 --- a/stdlib/source/program/aedifex/artifact.lux +++ b/stdlib/source/program/aedifex/artifact.lux @@ -27,9 +27,9 @@ (type: .public Artifact (Record - {#group Group + [#group Group #name Name - #version Version})) + #version Version])) (def: .public hash (Hash Artifact) diff --git a/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux b/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux index d8d1e6bbc..91fcc3de5 100644 --- a/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux +++ b/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux @@ -18,8 +18,8 @@ (type: .public Stamp (Record - {#time Time - #build Build})) + [#time Time + #build Build])) (def: .public equivalence (Equivalence Stamp) diff --git a/stdlib/source/program/aedifex/artifact/snapshot/version.lux b/stdlib/source/program/aedifex/artifact/snapshot/version.lux index aa2994958..821d3d2c5 100644 --- a/stdlib/source/program/aedifex/artifact/snapshot/version.lux +++ b/stdlib/source/program/aedifex/artifact/snapshot/version.lux @@ -19,9 +19,9 @@ (type: .public Version (Record - {#extension Type + [#extension Type #value Text - #updated Time})) + #updated Time])) (def: .public equivalence (Equivalence Version) diff --git a/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux b/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux index cfcf3be09..9aacdf6de 100644 --- a/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux +++ b/stdlib/source/program/aedifex/artifact/snapshot/version/value.lux @@ -13,8 +13,8 @@ (type: .public Value (Record - {#version Text - #snapshot Snapshot})) + [#version Text + #snapshot Snapshot])) (def: .public equivalence (Equivalence Value) diff --git a/stdlib/source/program/aedifex/artifact/time/time.lux b/stdlib/source/program/aedifex/artifact/time/time.lux index 0db035d56..6fb329962 100644 --- a/stdlib/source/program/aedifex/artifact/time/time.lux +++ b/stdlib/source/program/aedifex/artifact/time/time.lux @@ -33,7 +33,7 @@ minute (<>.codec n.decimal (<text>.exactly 2 <text>.decimal)) second (<>.codec n.decimal (<text>.exactly 2 <text>.decimal))] (<>.lifted (time.time - {#time.hour hour + [#time.hour hour #time.minute minute #time.second second - #time.milli_second 0})))) + #time.milli_second 0])))) diff --git a/stdlib/source/program/aedifex/artifact/versioning.lux b/stdlib/source/program/aedifex/artifact/versioning.lux index 38001bfe2..550ae86a3 100644 --- a/stdlib/source/program/aedifex/artifact/versioning.lux +++ b/stdlib/source/program/aedifex/artifact/versioning.lux @@ -31,14 +31,14 @@ (type: .public Versioning (Record - {#snapshot Snapshot + [#snapshot Snapshot #last_updated //time.Time - #versions (List Version)})) + #versions (List Version)])) (def: .public init - {#snapshot #//snapshot.Local + [#snapshot #//snapshot.Local #last_updated //time.epoch - #versions (list)}) + #versions (list)]) (def: .public equivalence (Equivalence Versioning) diff --git a/stdlib/source/program/aedifex/command/deploy.lux b/stdlib/source/program/aedifex/command/deploy.lux index fc0562699..01e083faf 100644 --- a/stdlib/source/program/aedifex/command/deploy.lux +++ b/stdlib/source/program/aedifex/command/deploy.lux @@ -71,10 +71,10 @@ (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 pom_data - (///dependency/status.verified pom_data)]}))] + (///dependency/status.verified pom_data)]]))] (console.write_line ..success console))) diff --git a/stdlib/source/program/aedifex/command/install.lux b/stdlib/source/program/aedifex/command/install.lux index 37a5c77b1..a496b35bc 100644 --- a/stdlib/source/program/aedifex/command/install.lux +++ b/stdlib/source/program/aedifex/command/install.lux @@ -66,12 +66,12 @@ (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 pom_data - (///dependency/status.verified pom_data)]}))] + (///dependency/status.verified pom_data)]]))] (console.write_line ..success console)) _ diff --git a/stdlib/source/program/aedifex/dependency.lux b/stdlib/source/program/aedifex/dependency.lux index e1602990d..b1e1ed875 100644 --- a/stdlib/source/program/aedifex/dependency.lux +++ b/stdlib/source/program/aedifex/dependency.lux @@ -15,8 +15,8 @@ (type: .public Dependency (Record - {#artifact Artifact - #type Type})) + [#artifact Artifact + #type Type])) (def: .public hash (Hash Dependency) diff --git a/stdlib/source/program/aedifex/dependency/deployment.lux b/stdlib/source/program/aedifex/dependency/deployment.lux index 92f0b55bf..d63c5a0a2 100644 --- a/stdlib/source/program/aedifex/dependency/deployment.lux +++ b/stdlib/source/program/aedifex/dependency/deployment.lux @@ -105,11 +105,11 @@ versioning_snapshot (value@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot] snapshot)]] (in (|> snapshot (with@ [#///metadata/snapshot.versioning #///artifact/versioning.versions] - (list {#///artifact/snapshot/version.extension type + (list [#///artifact/snapshot/version.extension type #///artifact/snapshot/version.value (///artifact/snapshot/version/value.format - {#///artifact/snapshot/version/value.version version_template - #///artifact/snapshot/version/value.snapshot versioning_snapshot}) - #///artifact/snapshot/version.updated now})) + [#///artifact/snapshot/version/value.version version_template + #///artifact/snapshot/version/value.snapshot versioning_snapshot]) + #///artifact/snapshot/version.updated now])) ... (with@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot] ... (list\composite (..artifacts type (product.right (value@ #///package.library package))) ... (..artifacts ///artifact/type.pom (product.right (value@ #///package.pom package))))) diff --git a/stdlib/source/program/aedifex/dependency/resolution.lux b/stdlib/source/program/aedifex/dependency/resolution.lux index 23a572506..20f4cff71 100644 --- a/stdlib/source/program/aedifex/dependency/resolution.lux +++ b/stdlib/source/program/aedifex/dependency/resolution.lux @@ -132,8 +132,8 @@ (do (try.with async.monad) [snapshot (///metadata/snapshot.read repository artifact) .let [version_template (value@ [#///metadata/snapshot.artifact #///artifact.version] snapshot) - artifact_version (value.format {#value.version version_template - #value.snapshot (value@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot] snapshot)}) + artifact_version (value.format [#value.version version_template + #value.snapshot (value@ [#///metadata/snapshot.versioning #///artifact/versioning.snapshot] snapshot)]) artifact (with@ #///artifact.version artifact_version artifact)] [pom_data pom_status] (..hashed repository version_template artifact ///artifact/extension.pom) library_&_status (..hashed repository version_template artifact extension)] @@ -142,9 +142,9 @@ [pom (\ utf8.codec decoded pom_data) pom (\ xml.codec decoded pom) profile (<xml>.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]})))))) + #///package.pom [pom pom_data pom_status]])))))) (type: .public Resolution (Dictionary Dependency Package)) diff --git a/stdlib/source/program/aedifex/format.lux b/stdlib/source/program/aedifex/format.lux index 1933d2be0..93eca461f 100644 --- a/stdlib/source/program/aedifex/format.lux +++ b/stdlib/source/program/aedifex/format.lux @@ -5,7 +5,7 @@ ["." text ("#\." equivalence)] [collection ["." dictionary (#+ Dictionary)] - ["." list ("#\." functor)] + ["." list ("#\." monad)] ["." set (#+ Set)]]] [macro ["." code] @@ -23,31 +23,31 @@ (def: (license [name url type]) (Format /.License) - (`' {#name (~ (code.text name)) + (`' [#name (~ (code.text name)) #url (~ (code.text url)) #type (~ (case type #/.Repo (' #repo) #/.Manual - (' #manual)))})) + (' #manual)))])) (def: (organization [name url]) (Format /.Organization) - (`' {#name (~ (code.text name)) - #url (~ (code.text url))})) + (`' [#name (~ (code.text name)) + #url (~ (code.text url))])) (def: (developer [name url organization]) (Format /.Developer) (case organization #.None - (`' {#name (~ (code.text name)) - #url (~ (code.text url))}) + (`' [#name (~ (code.text name)) + #url (~ (code.text url))]) (#.Some value) - (`' {#name (~ (code.text name)) + (`' [#name (~ (code.text name)) #url (~ (code.text url)) - #organization (~ (..organization value))}))) + #organization (~ (..organization value))]))) (def: contributor (Format /.Contributor) @@ -60,8 +60,9 @@ (Format Aggregate) (|>> dictionary.entries (list\each (function (_ [key value]) - [(code.local_tag key) value])) - code.record)) + (list (code.local_tag key) value))) + list\conjoint + code.tuple)) (def: empty Aggregate @@ -101,8 +102,9 @@ (|> value dictionary.entries (list\each (function (_ [key value]) - [(key_format key) (value_format value)])) - code.record) + (list (key_format key) (value_format value)))) + list\conjoint + code.tuple) aggregate))) (def: (info value) @@ -167,5 +169,6 @@ (Format Project) (|>> dictionary.entries (list\each (function (_ [key value]) - [(code.text key) (..profile value)])) - code.record)) + (list (code.text key) (..profile value)))) + list\conjoint + code.tuple)) diff --git a/stdlib/source/program/aedifex/metadata/artifact.lux b/stdlib/source/program/aedifex/metadata/artifact.lux index 3a6ffb74f..0d6b924b9 100644 --- a/stdlib/source/program/aedifex/metadata/artifact.lux +++ b/stdlib/source/program/aedifex/metadata/artifact.lux @@ -40,10 +40,10 @@ (type: .public Metadata (Record - {#group Group + [#group Group #name Name #versions (List Version) - #last_updated Instant})) + #last_updated Instant])) (def: (pad value) (-> Nat Text) @@ -129,10 +129,10 @@ minute (<>.codec n.decimal (<text>.exactly 2 <text>.decimal)) second (<>.codec n.decimal (<text>.exactly 2 <text>.decimal))] (<>.lifted (time.time - {#time.hour hour + [#time.hour hour #time.minute minute #time.second second - #time.milli_second 0})))) + #time.milli_second 0])))) (def: last_updated_parser (Parser Instant) @@ -188,10 +188,10 @@ (#try.Failure error) (in (#try.Success (let [(^slots [#///artifact.group #///artifact.name]) artifact] - {#group group + [#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 d5e9483bf..61183a932 100644 --- a/stdlib/source/program/aedifex/metadata/snapshot.lux +++ b/stdlib/source/program/aedifex/metadata/snapshot.lux @@ -47,8 +47,8 @@ (type: .public Metadata (Record - {#artifact Artifact - #versioning Versioning})) + [#artifact Artifact + #versioning Versioning])) (template [<definition> <tag>] [(def: <definition> xml.Tag ["" <tag>])] @@ -91,9 +91,9 @@ [group (<xml>.somewhere (..text ..<group>)) name (<xml>.somewhere (..text ..<name>)) version (<xml>.somewhere (..text ..<version>)) - versioning (with_expansions [<default_version> {#///artifact/snapshot/version.extension ///artifact/type.jvm_library + versioning (with_expansions [<default_version> [#///artifact/snapshot/version.extension ///artifact/type.jvm_library #///artifact/snapshot/version.value version - #///artifact/snapshot/version.updated ///artifact/time.epoch}] + #///artifact/snapshot/version.updated ///artifact/time.epoch]] (|> (<xml>.somewhere ///artifact/versioning.parser) (\ ! each (revised@ #///artifact/versioning.versions @@ -104,13 +104,13 @@ versions versions))))) - (<>.else {#///artifact/versioning.snapshot #///artifact/snapshot.Local + (<>.else [#///artifact/versioning.snapshot #///artifact/snapshot.Local #///artifact/versioning.last_updated ///artifact/time.epoch - #///artifact/versioning.versions (list <default_version>)})))] - (in {#artifact {#///artifact.group group + #///artifact/versioning.versions (list <default_version>)])))] + (in [#artifact [#///artifact.group group #///artifact.name name - #///artifact.version version} - #versioning versioning})))) + #///artifact.version version] + #versioning versioning])))) (def: .public equivalence (Equivalence Metadata) @@ -137,8 +137,8 @@ (#try.Failure error) (in (#try.Success - {#artifact artifact - #versioning ///artifact/versioning.init}))))) + [#artifact artifact + #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 49aa2867e..54994e50b 100644 --- a/stdlib/source/program/aedifex/package.lux +++ b/stdlib/source/program/aedifex/package.lux @@ -30,9 +30,9 @@ (type: .public Package (Record - {#origin Origin + [#origin Origin #library [Binary Status] - #pom [XML Binary Status]})) + #pom [XML Binary Status]])) (template [<name> <tag>] [(def: .public (<name> package) @@ -50,7 +50,7 @@ (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))] @@ -58,7 +58,7 @@ [pom binary_pom (#//status.Verified (//hash.sha-1 binary_pom) - (//hash.md5 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 21c8ac270..41ada3cc7 100644 --- a/stdlib/source/program/aedifex/parser.lux +++ b/stdlib/source/program/aedifex/parser.lux @@ -84,8 +84,8 @@ (do {! <>.monad} [input (\ ! each (dictionary.of_list text.hash) - (<code>.record (<>.some (<>.and <code>.local_tag - <code>.any))))] + (<code>.tuple (<>.some (<>.and <code>.local_tag + <code>.any))))] ($_ <>.and (..singular input "name" ..name) (..singular input "url" ..url) @@ -99,8 +99,8 @@ (do {! <>.monad} [input (\ ! each (dictionary.of_list text.hash) - (<code>.record (<>.some (<>.and <code>.local_tag - <code>.any))))] + (<code>.tuple (<>.some (<>.and <code>.local_tag + <code>.any))))] ($_ <>.and (..singular input "name" ..name) (..singular input "url" ..url)))) @@ -110,8 +110,8 @@ (do {! <>.monad} [input (\ ! each (dictionary.of_list text.hash) - (<code>.record (<>.some (<>.and <code>.local_tag - <code>.any))))] + (<code>.tuple (<>.some (<>.and <code>.local_tag + <code>.any))))] ($_ <>.and (..singular input "name" ..name) (..singular input "url" ..url) @@ -127,8 +127,8 @@ (do {! <>.monad} [input (\ ! each (dictionary.of_list text.hash) - (<code>.record (<>.some (<>.and <code>.local_tag - <code>.any))))] + (<code>.tuple (<>.some (<>.and <code>.local_tag + <code>.any))))] ($_ <>.and (<>.maybe (..singular input "url" ..url)) (<>.maybe (..singular input "scm" ..scm)) @@ -169,9 +169,9 @@ (def: deploy_repository (Parser (List [Text //repository.Address])) - (<code>.record (<>.some - (<>.and <code>.text - ..repository)))) + (<code>.tuple (<>.some + (<>.and <code>.text + ..repository)))) (def: runtime (Parser Runtime) @@ -183,8 +183,8 @@ (do {! <>.monad} [input (\ ! each (dictionary.of_list text.hash) - (<code>.record (<>.some (<>.and <code>.local_tag - <code>.any)))) + (<code>.tuple (<>.some (<>.and <code>.local_tag + <code>.any)))) .let [^parents (: (Parser (List /.Name)) (<>.else (list) (..plural input "parents" <code>.text))) @@ -267,7 +267,7 @@ multi_profile (: (Parser Project) (\ <>.monad each (dictionary.of_list text.hash) - (<code>.record (<>.many (<>.and <code>.text - ..profile)))))] + (<code>.tuple (<>.many (<>.and <code>.text + ..profile)))))] (<>.either multi_profile default_profile))) diff --git a/stdlib/source/program/aedifex/pom.lux b/stdlib/source/program/aedifex/pom.lux index a093a4091..99ac54571 100644 --- a/stdlib/source/program/aedifex/pom.lux +++ b/stdlib/source/program/aedifex/pom.lux @@ -173,16 +173,16 @@ (do maybe.monad [group (dictionary.value ["" ..group_tag] properties) artifact (dictionary.value ["" ..artifact_tag] properties)] - (in {#//dependency.artifact {#//artifact.group group + (in [#//dependency.artifact [#//artifact.group group #//artifact.name artifact #//artifact.version (|> properties (dictionary.value ["" ..version_tag]) (maybe.else "") (text.replaced "${project.version}" own_version) - (text.replaced "${project.parent.version}" parent_version))} + (text.replaced "${project.parent.version}" parent_version))] #//dependency.type (|> properties (dictionary.value ["" "type"]) - (maybe.else //artifact/type.jvm_library))}))))) + (maybe.else //artifact/type.jvm_library))]))))) (def: (dependencies_parser own_version parent_version) (-> Text Text (Parser (List Dependency))) diff --git a/stdlib/source/program/aedifex/profile.lux b/stdlib/source/program/aedifex/profile.lux index b861e1601..7621f0848 100644 --- a/stdlib/source/program/aedifex/profile.lux +++ b/stdlib/source/program/aedifex/profile.lux @@ -34,8 +34,8 @@ (def: .public default_compiler Dependency - {#dependency.artifact ["com.github.luxlang" "lux-jvm" "0.6.0-SNAPSHOT"] - #dependency.type type.jvm_library}) + [#dependency.artifact ["com.github.luxlang" "lux-jvm" "0.6.0-SNAPSHOT"] + #dependency.type type.jvm_library]) (type: .public Distribution (Variant @@ -101,13 +101,13 @@ (type: .public Info (Record - {#url (Maybe URL) + [#url (Maybe URL) #scm (Maybe SCM) #description (Maybe Text) #licenses (List License) #organization (Maybe Organization) #developers (List Developer) - #contributors (List Contributor)})) + #contributors (List Contributor)])) (def: info_equivalence (Equivalence Info) @@ -122,13 +122,13 @@ (def: .public default_info Info - {#url #.None + [#url #.None #scm #.None #description #.None #licenses (list) #organization #.None #developers (list) - #contributors (list)}) + #contributors (list)]) (type: .public Source Path) @@ -157,7 +157,7 @@ (type: .public Profile (Record - {#parents (List Name) + [#parents (List Name) #identity (Maybe Artifact) #info (Maybe Info) #repositories (Set Address) @@ -172,7 +172,7 @@ #js Runtime #python Runtime #lua Runtime - #ruby Runtime})) + #ruby Runtime])) (def: .public equivalence (Equivalence Profile) @@ -214,7 +214,7 @@ (Monoid Profile) (def: identity - {#parents (list) + [#parents (list) #identity #.None #info #.None #repositories (set.empty text.hash) @@ -229,14 +229,14 @@ #js runtime.default_js #python runtime.default_python #lua runtime.default_lua - #ruby runtime.default_ruby}) + #ruby runtime.default_ruby]) (def: (composite override baseline) (template.let [(!runtime <tag> <runtime>) [(if (runtime\= <runtime> (value@ <tag> override)) (value@ <tag> baseline) (value@ <tag> override))]] - {#parents (list\composite (value@ #parents baseline) (value@ #parents override)) + [#parents (list\composite (value@ #parents baseline) (value@ #parents override)) #identity (maybe\composite (value@ #identity override) (value@ #identity baseline)) #info (maybe\composite (value@ #info override) (value@ #info baseline)) #repositories (set.union (value@ #repositories baseline) (value@ #repositories override)) @@ -255,6 +255,6 @@ #js (!runtime #js runtime.default_js) #python (!runtime #python runtime.default_python) #lua (!runtime #lua runtime.default_lua) - #ruby (!runtime #ruby runtime.default_ruby)}))) + #ruby (!runtime #ruby runtime.default_ruby)]))) (exception: .public no_identity) diff --git a/stdlib/source/program/aedifex/repository/identity.lux b/stdlib/source/program/aedifex/repository/identity.lux index 59d0fdcba..c4b974664 100644 --- a/stdlib/source/program/aedifex/repository/identity.lux +++ b/stdlib/source/program/aedifex/repository/identity.lux @@ -19,8 +19,8 @@ (type: .public Identity (Record - {#user User - #password Password})) + [#user User + #password Password])) (def: .public equivalence (Equivalence Identity) diff --git a/stdlib/source/program/aedifex/runtime.lux b/stdlib/source/program/aedifex/runtime.lux index bdf81da78..b5a9a78e0 100644 --- a/stdlib/source/program/aedifex/runtime.lux +++ b/stdlib/source/program/aedifex/runtime.lux @@ -16,8 +16,8 @@ (type: .public Runtime (Record - {#program Text - #parameters (List Text)})) + [#program Text + #parameters (List Text)])) (def: .public equivalence (Equivalence Runtime) @@ -28,8 +28,8 @@ (template [<name> <command> <parameters>] [(def: .public <name> Runtime - {#program <command> - #parameters (`` (list (~~ (template.spliced <parameters>))))})] + [#program <command> + #parameters (`` (list (~~ (template.spliced <parameters>))))])] [default_java "java" ["-jar"]] [default_js "node" ["--stack_size=8192"]] diff --git a/stdlib/source/program/compositor/export.lux b/stdlib/source/program/compositor/export.lux index a9c76f039..1da80fc55 100644 --- a/stdlib/source/program/compositor/export.lux +++ b/stdlib/source/program/compositor/export.lux @@ -34,10 +34,10 @@ (def: no_ownership tar.Ownership (let [commons (: tar.Owner - {#tar.name tar.anonymous - #tar.id tar.no_id})] - {#tar.user commons - #tar.group commons})) + [#tar.name tar.anonymous + #tar.id tar.no_id])] + [#tar.user commons + #tar.group commons])) (def: .public (library fs sources) (-> (file.System Async) (List Source) (Async (Try tar.Tar))) diff --git a/stdlib/source/program/compositor/static.lux b/stdlib/source/program/compositor/static.lux index 498842248..88f3ce65f 100644 --- a/stdlib/source/program/compositor/static.lux +++ b/stdlib/source/program/compositor/static.lux @@ -7,7 +7,7 @@ (type: .public Static (Record - {#host Target + [#host Target #host_module_extension Text #target Path - #artifact_extension Text})) + #artifact_extension Text])) diff --git a/stdlib/source/program/scriptum.lux b/stdlib/source/program/scriptum.lux index 2b2d6e01b..4512ab982 100644 --- a/stdlib/source/program/scriptum.lux +++ b/stdlib/source/program/scriptum.lux @@ -103,7 +103,7 @@ ... (^ (list [_ single_tag])) ... (if interface? ... (format "(: " (pprint_type_definition level type_function_info #.None module interface? recursive_type? type) text.new_line " " single_tag ")") -... (format "{#" single_tag " " (pprint_type_definition level type_function_info #.None module interface? recursive_type? type) "}")) +... (format "(Record [#" single_tag " " (pprint_type_definition level type_function_info #.None module interface? recursive_type? type) "])")) ... _ ... (case [recursive_type? type] @@ -158,7 +158,7 @@ ... (text.interposed (format text.new_line " ")))] ... (if interface? ... member_docs -... (format "{" member_docs "}"))))) +... (format "(Record [" member_docs "])"))))) ... [_ (#.Function input output)] ... (let [[ins out] (type.flat_function type)] @@ -269,10 +269,11 @@ ... [Text Code Type]) ... (type: Organization -... {#types (List Value) -... #macros (List [Text Code]) -... #implementations (List Value) -... #values (List Value)}) +... (Record +... [#types (List Value) +... #macros (List [Text Code]) +... #implementations (List Value) +... #values (List Value)])) ... (def: (lux_module? module_name) ... (-> Text Bit) @@ -314,10 +315,10 @@ ... (def: (organize_definitions defs) ... (-> (List [Text Definition]) Organization) -... (let [init {#types (list) +... (let [init [#types (list) ... #macros (list) ... #implementations (list) -... #values (list)}] +... #values (list)]] ... (|> (list\mix add_definition init defs) ... (revised@ #types (list.sorted name_sort)) ... (revised@ #macros (list.sorted name_sort)) diff --git a/stdlib/source/specification/compositor/generation/case.lux b/stdlib/source/specification/compositor/generation/case.lux index 3bfcec4e8..d1d0074fd 100644 --- a/stdlib/source/specification/compositor/generation/case.lux +++ b/stdlib/source/specification/compositor/generation/case.lux @@ -85,9 +85,9 @@ [subS subP] case .let [right? (tail? size idx) caseS (synthesis.variant - {#analysis.lefts idx + [#analysis.lefts idx #analysis.right? right? - #analysis.value subS}) + #analysis.value subS]) caseP ($_ synthesis.path/seq (if right? (synthesis.side/right idx) diff --git a/stdlib/source/specification/compositor/generation/common.lux b/stdlib/source/specification/compositor/generation/common.lux index 729ce81f4..e9d8eae55 100644 --- a/stdlib/source/specification/compositor/generation/common.lux +++ b/stdlib/source/specification/compositor/generation/common.lux @@ -297,10 +297,10 @@ (_.test "Can throw runtime errors." (and (|> (#synthesis.Extension "lux try" (list (synthesis.function/abstraction - {#synthesis.environment (list) + [#synthesis.environment (list) #synthesis.arity 1 #synthesis.body (#synthesis.Extension "lux io error" - (list (synthesis.text message)))}))) + (list (synthesis.text message)))]))) (run (..safe "lux try")) (case> (^multi (#try.Success valueV) {(:as (Try Text) valueV) (#try.Failure error)}) @@ -310,9 +310,9 @@ false)) (|> (#synthesis.Extension "lux try" (list (synthesis.function/abstraction - {#synthesis.environment (list) + [#synthesis.environment (list) #synthesis.arity 1 - #synthesis.body (synthesis.text message)}))) + #synthesis.body (synthesis.text message)]))) (run (..safe "lux try")) (case> (^multi (#try.Success valueV) {(:as (Try Text) valueV) (#try.Success valueV)}) diff --git a/stdlib/source/specification/compositor/generation/function.lux b/stdlib/source/specification/compositor/generation/function.lux index 36b45c283..d97b2c02c 100644 --- a/stdlib/source/specification/compositor/generation/function.lux +++ b/stdlib/source/specification/compositor/generation/function.lux @@ -43,9 +43,9 @@ local (..local arity)] (in [arity local (synthesis.function/abstraction - {#synthesis.environment (list) + [#synthesis.environment (list) #synthesis.arity arity - #synthesis.body (synthesis.variable/local local)})]))) + #synthesis.body (synthesis.variable/local local)])]))) (def: .public (spec run) (-> Runner Test) @@ -57,18 +57,18 @@ inputsS (list\each (|>> synthesis.f64) inputs)]] ($_ _.and (_.test "Can read arguments." - (|> (synthesis.function/apply {#synthesis.function functionS - #synthesis.arguments inputsS}) + (|> (synthesis.function/apply [#synthesis.function functionS + #synthesis.arguments inputsS]) (run "with_local") (//case.verify expectation))) (_.test "Can partially apply functions." (or (n.= 1 arity) (let [preS (list.first partial_arity inputsS) postS (list.after partial_arity inputsS) - partialS (synthesis.function/apply {#synthesis.function functionS - #synthesis.arguments preS})] - (|> (synthesis.function/apply {#synthesis.function partialS - #synthesis.arguments postS}) + partialS (synthesis.function/apply [#synthesis.function functionS + #synthesis.arguments preS])] + (|> (synthesis.function/apply [#synthesis.function partialS + #synthesis.arguments postS]) (run "partial_application") (//case.verify expectation))))) (_.test "Can read environment." @@ -81,15 +81,15 @@ (synthesis.variable/local (|> local (n.- partial_arity)))) inner_arity (n.- partial_arity arity) innerS (synthesis.function/abstraction - {#synthesis.environment environment + [#synthesis.environment environment #synthesis.arity inner_arity - #synthesis.body variableS}) + #synthesis.body variableS]) outerS (synthesis.function/abstraction - {#synthesis.environment (list) + [#synthesis.environment (list) #synthesis.arity partial_arity - #synthesis.body innerS})] - (|> (synthesis.function/apply {#synthesis.function outerS - #synthesis.arguments inputsS}) + #synthesis.body innerS])] + (|> (synthesis.function/apply [#synthesis.function outerS + #synthesis.arguments inputsS]) (run "with_foreign") (//case.verify expectation))))) ))) diff --git a/stdlib/source/specification/compositor/generation/structure.lux b/stdlib/source/specification/compositor/generation/structure.lux index ec9893e7c..33e38520f 100644 --- a/stdlib/source/specification/compositor/generation/structure.lux +++ b/stdlib/source/specification/compositor/generation/structure.lux @@ -36,11 +36,11 @@ .let [last?_in (|> num_tags -- (n.= tag_in))] value_in r.i64] (_.test (%.name (name_of synthesis.variant)) - (|> (synthesis.variant {#analysis.lefts (if last?_in + (|> (synthesis.variant [#analysis.lefts (if last?_in (-- tag_in) tag_in) #analysis.right? last?_in - #analysis.value (synthesis.i64 value_in)}) + #analysis.value (synthesis.i64 value_in)]) (run "variant") (case> (#try.Success valueT) (let [valueT (:as (Array Any) valueT)] diff --git a/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux b/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux index 915d283da..370ea21ab 100644 --- a/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux +++ b/stdlib/source/test/aedifex/artifact/snapshot/version/value.lux @@ -53,8 +53,8 @@ (text\= version (/.format (with@ #/.snapshot #///.Local sample))) - remote_format (/.format {#/.version (format version /.snapshot) - #/.snapshot (#///.Remote stamp)}) + remote_format (/.format [#/.version (format version /.snapshot) + #/.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/cache.lux b/stdlib/source/test/aedifex/cache.lux index 143766eb6..0390e441d 100644 --- a/stdlib/source/test/aedifex/cache.lux +++ b/stdlib/source/test/aedifex/cache.lux @@ -73,8 +73,8 @@ [[identity profile pom] ..profile type ..type content ..content] - (in [{#//dependency.artifact identity - #//dependency.type type} + (in [[#//dependency.artifact identity + #//dependency.type type] (with@ #//package.origin (#//repository/origin.Remote "") (//package.local pom content))]))) (def: resolution diff --git a/stdlib/source/test/aedifex/command/build.lux b/stdlib/source/test/aedifex/command/build.lux index ff5f7450b..95363b079 100644 --- a/stdlib/source/test/aedifex/command/build.lux +++ b/stdlib/source/test/aedifex/command/build.lux @@ -109,17 +109,17 @@ (Random Dependency) (do random.monad [lux_version (random.ascii/alpha 5) - .let [js_compiler {#///dependency.artifact {#///artifact.group /.lux_group + .let [js_compiler [#///dependency.artifact [#///artifact.group /.lux_group #///artifact.name /.js_compiler_name - #///artifact.version lux_version} - #///dependency.type ///artifact/type.js_library}]] + #///artifact.version lux_version] + #///dependency.type ///artifact/type.js_library]]] (`` ($_ random.either (in js_compiler) (~~ (template [<compiler>] - [(in {#///dependency.artifact {#///artifact.group /.lux_group + [(in [#///dependency.artifact [#///artifact.group /.lux_group #///artifact.name <compiler> - #///artifact.version lux_version} - #///dependency.type ///artifact/type.lux_library})] + #///artifact.version lux_version] + #///dependency.type ///artifact/type.lux_library])] [/.jvm_compiler_name] [/.python_compiler_name] diff --git a/stdlib/source/test/aedifex/command/deps.lux b/stdlib/source/test/aedifex/command/deps.lux index 87a3e1731..95f757f7d 100644 --- a/stdlib/source/test/aedifex/command/deps.lux +++ b/stdlib/source/test/aedifex/command/deps.lux @@ -67,10 +67,10 @@ [_ dependee_package] $///package.random [_ depender_package] $///package.random - .let [dependee {#///dependency.artifact dependee_artifact - #///dependency.type ///artifact/type.lux_library} - depender {#///dependency.artifact depender_artifact - #///dependency.type ///artifact/type.lux_library} + .let [dependee [#///dependency.artifact dependee_artifact + #///dependency.type ///artifact/type.lux_library] + depender [#///dependency.artifact depender_artifact + #///dependency.type ///artifact/type.lux_library] dependee_pom (|> (\ ///.monoid identity) (with@ #///.identity (#.Some dependee_artifact)) diff --git a/stdlib/source/test/aedifex/dependency/deployment.lux b/stdlib/source/test/aedifex/dependency/deployment.lux index cd92cec74..f87aca761 100644 --- a/stdlib/source/test/aedifex/dependency/deployment.lux +++ b/stdlib/source/test/aedifex/dependency/deployment.lux @@ -52,11 +52,11 @@ (def: good_upload (@http.Response IO) [http/status.created - {#@http.headers (http.headers (list)) + [#@http.headers (http.headers (list)) #@http.body (function (_ _) (|> [0 (binary.empty 0)] #try.Success - io.io))}]) + io.io))]]) (type: Cache (Atom (Dictionary URL Binary))) diff --git a/stdlib/source/test/aedifex/dependency/resolution.lux b/stdlib/source/test/aedifex/dependency/resolution.lux index 355cf9c98..9f1826f9c 100644 --- a/stdlib/source/test/aedifex/dependency/resolution.lux +++ b/stdlib/source/test/aedifex/dependency/resolution.lux @@ -53,8 +53,8 @@ (do {! random.monad} [artifact $///artifact.random [_ package] $///package.random] - (in (dictionary.has {#///dependency.artifact artifact - #///dependency.type ///artifact/type.lux_library} + (in (dictionary.has [#///dependency.artifact artifact + #///dependency.type ///artifact/type.lux_library] package /.empty)))) @@ -260,8 +260,8 @@ (`` ($_ _.and (in (do async.monad [actual_package (/.one (///repository.mock good []) - {#///dependency.artifact expected_artifact - #///dependency.type ///artifact/type.lux_library})] + [#///dependency.artifact expected_artifact + #///dependency.type ///artifact/type.lux_library])] (_.cover' [/.one] (case actual_package (#try.Success actual_package) @@ -274,8 +274,8 @@ (~~ (template [<exception> <bad>] [(in (do async.monad [actual_package (/.one (///repository.mock <bad> []) - {#///dependency.artifact expected_artifact - #///dependency.type ///artifact/type.lux_library})] + [#///dependency.artifact expected_artifact + #///dependency.type ///artifact/type.lux_library])] (_.cover' [<exception>] (case actual_package (#try.Failure error) @@ -309,8 +309,8 @@ (list (///repository.mock bad_sha-1 []) (///repository.mock bad_md5 []) (///repository.mock good [])) - {#///dependency.artifact expected_artifact - #///dependency.type ///artifact/type.lux_library})] + [#///dependency.artifact expected_artifact + #///dependency.type ///artifact/type.lux_library])] (_.cover' [/.any] (case actual_package (#try.Success actual_package) @@ -325,8 +325,8 @@ actual_package (/.any console (list (///repository.mock bad_sha-1 []) (///repository.mock bad_md5 [])) - {#///dependency.artifact expected_artifact - #///dependency.type ///artifact/type.lux_library})] + [#///dependency.artifact expected_artifact + #///dependency.type ///artifact/type.lux_library])] (_.cover' [/.cannot_resolve] (case actual_package (#try.Failure error) @@ -358,12 +358,12 @@ [_ depender_package] $///package.random [_ ignored_package] $///package.random - .let [dependee {#///dependency.artifact dependee_artifact - #///dependency.type ///artifact/type.lux_library} - depender {#///dependency.artifact depender_artifact - #///dependency.type ///artifact/type.lux_library} - ignored {#///dependency.artifact ignored_artifact - #///dependency.type ///artifact/type.lux_library} + .let [dependee [#///dependency.artifact dependee_artifact + #///dependency.type ///artifact/type.lux_library] + depender [#///dependency.artifact depender_artifact + #///dependency.type ///artifact/type.lux_library] + ignored [#///dependency.artifact ignored_artifact + #///dependency.type ///artifact/type.lux_library] dependee_pom (|> (\ ///.monoid identity) (with@ #///.identity (#.Some dependee_artifact)) diff --git a/stdlib/source/test/aedifex/metadata/artifact.lux b/stdlib/source/test/aedifex/metadata/artifact.lux index eb8b4aec1..e5e903e65 100644 --- a/stdlib/source/test/aedifex/metadata/artifact.lux +++ b/stdlib/source/test/aedifex/metadata/artifact.lux @@ -60,10 +60,10 @@ month (month.by_number month) date (date.date year month day_of_month) time (time.time - {#time.hour hour + [#time.hour hour #time.minute minute #time.second second - #time.milli_second 0})] + #time.milli_second 0])] (in (instant.of_date_time date time)))))))) (def: .public test @@ -72,12 +72,12 @@ (_.for [/.Metadata]) (do random.monad [expected ..random - .let [artifact {#///artifact.group (value@ #/.group expected) + .let [artifact [#///artifact.group (value@ #/.group expected) #///artifact.name (value@ #/.name expected) #///artifact.version (|> expected (value@ #/.versions) list.head - (maybe.else ""))}]] + (maybe.else ""))]]] ($_ _.and (_.for [/.equivalence] ($equivalence.spec /.equivalence ..random)) diff --git a/stdlib/source/test/aedifex/metadata/snapshot.lux b/stdlib/source/test/aedifex/metadata/snapshot.lux index 5010053a5..5308c10ca 100644 --- a/stdlib/source/test/aedifex/metadata/snapshot.lux +++ b/stdlib/source/test/aedifex/metadata/snapshot.lux @@ -64,10 +64,10 @@ month (month.by_number month) date (date.date year month day_of_month) time (time.time - {#time.hour hour + [#time.hour hour #time.minute minute #time.second second - #time.milli_second 0})] + #time.milli_second 0])] (in (instant.of_date_time date time))))))) (def: random_versioning diff --git a/stdlib/source/test/aedifex/repository/remote.lux b/stdlib/source/test/aedifex/repository/remote.lux index 3013d8889..3218f15cd 100644 --- a/stdlib/source/test/aedifex/repository/remote.lux +++ b/stdlib/source/test/aedifex/repository/remote.lux @@ -42,8 +42,8 @@ (implementation (def: (request method url headers input) (with_expansions [<failure> [http/status.bad_request - {#@http.headers (http.headers (list)) - #@http.body (..url_body "")}]] + [#@http.headers (http.headers (list)) + #@http.body (..url_body "")]]] (<| io.io #try.Success (if (|> headers @@ -53,8 +53,8 @@ (case [method input] [#@http.Get #.None] [http/status.ok - {#@http.headers (http.headers (list)) - #@http.body (..url_body url)}] + [#@http.headers (http.headers (list)) + #@http.body (..url_body url)]] [#@http.Put (#.Some input)] (if (|> headers @@ -62,8 +62,8 @@ (maybe\each (text\= (//identity.basic_auth user password))) (maybe.else false)) [http/status.created - {#@http.headers (http.headers (list)) - #@http.body (..url_body url)}] + [#@http.headers (http.headers (list)) + #@http.body (..url_body url)]] <failure>) _ @@ -77,8 +77,8 @@ (<| io.io #try.Success [http/status.bad_request - {#@http.headers (http.headers (list)) - #@http.body (..url_body "")}])))) + [#@http.headers (http.headers (list)) + #@http.body (..url_body "")]])))) (def: .public test Test @@ -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! diff --git a/stdlib/source/test/lux.lux b/stdlib/source/test/lux.lux index b7fb2feb5..bdc83f437 100644 --- a/stdlib/source/test/lux.lux +++ b/stdlib/source/test/lux.lux @@ -470,8 +470,8 @@ (/.type: for_type/record (Record - {#slot/0 Bit - #slot/1 Rev})) + [#slot/0 Bit + #slot/1 Rev])) (/.type: (for_type/all parameter) [parameter parameter]) @@ -564,8 +564,8 @@ (_.cover [/.Record] (exec (: for_type/record - {#slot/0 (n.= expected_left expected_right) - #slot/1 (.rev expected_right)}) + [#slot/0 (n.= expected_left expected_right) + #slot/1 (.rev expected_right)]) true)) )))) @@ -666,13 +666,13 @@ (type: Small (Record - {#small_left Nat - #small_right Text})) + [#small_left Nat + #small_right Text])) (type: Big (Record - {#big_left Nat - #big_right Small})) + [#big_left Nat + #big_right Small])) (def: for_slot Test @@ -685,9 +685,9 @@ .let [expected/s (n.+ shift/s start/s) expected/b (n.+ shift/b start/b) - sample {#big_left start/b - #big_right {#small_left start/s - #small_right text}}]] + sample [#big_left start/b + #big_right [#small_left start/s + #small_right text]]]] ($_ _.and (_.cover [/.value@] (and (and (|> sample @@ -903,12 +903,12 @@ (type: (Pair l r) (Record - {#left l - #right r})) + [#left l + #right r])) (template: (!pair <left> <right>) - [{#left <left> - #right <right>}]) + [[#left <left> + #right <right>]]) (def: for_case Test @@ -944,8 +944,8 @@ (/.case [expected_nat expected_int] [0 +0] true _ false) - (/.case {#left expected_nat #right expected_int} - {#left 0 #right +0} true + (/.case [#left expected_nat #right expected_int] + [#left 0 #right +0] true _ false) (/.case (: (Either Nat Int) (#.Left expected_nat)) (#.Left 0) true @@ -965,17 +965,17 @@ (/.^or "+0.5" "+1.25") true _ false))) (_.cover [/.^slots] - (/.case {#left expected_nat #right expected_int} + (/.case [#left expected_nat #right expected_int] (/.^slots [#left #right]) (and (/.same? expected_nat left) (/.same? expected_int right)))) (_.cover [/.^] - (/.case {#left expected_nat #right expected_int} + (/.case [#left expected_nat #right expected_int] (/.^ (!pair 0 +0)) true _ false)) (_.cover [/.^@] (let [expected_pair (: (Pair Nat Int) - {#left expected_nat #right expected_int})] + [#left expected_nat #right expected_int])] (/.case expected_pair (/.^@ actual_pair (/.^ (!pair actual_left actual_right))) (and (/.same? expected_pair actual_pair) @@ -983,7 +983,7 @@ (/.same? expected_int actual_right))))) (_.cover [/.^multi] (let [expected_pair (: (Pair Nat Int) - {#left expected_nat #right expected_int})] + [#left expected_nat #right expected_int])] (and (/.case expected_pair (/.^multi (/.^ (!pair 0 actual_right)) {actual_right +0}) @@ -1011,7 +1011,7 @@ (_.cover [/.let] (and (/.let [actual_nat expected_nat] (/.same? expected_nat actual_nat)) - (/.let [[actual_left actual_right] {#left expected_nat #right expected_int}] + (/.let [[actual_left actual_right] [#left expected_nat #right expected_int]] (and (/.same? expected_nat actual_left) (/.same? expected_int actual_right))))) ))) diff --git a/stdlib/source/test/lux/control/concurrency/actor.lux b/stdlib/source/test/lux/control/concurrency/actor.lux index a5c090476..ecdeb98dc 100644 --- a/stdlib/source/test/lux/control/concurrency/actor.lux +++ b/stdlib/source/test/lux/control/concurrency/actor.lux @@ -89,7 +89,7 @@ (in (do async.monad [_ (async.future (do io.monad [actor (/.spawn! (: (/.Behavior Any Any) - {#/.on_init (|>>) + [#/.on_init (|>>) #/.on_mail (function (_ message state self) (do {! async.monad} [outcome (message state self)] @@ -100,7 +100,7 @@ (in outcome)) (#try.Success _) - (in outcome))))}) + (in outcome))))]) [])] (/.poison! actor))) _ (async.delay 100) diff --git a/stdlib/source/test/lux/data/collection/tree.lux b/stdlib/source/test/lux/data/collection/tree.lux index 35b43bb9b..826e2500d 100644 --- a/stdlib/source/test/lux/data/collection/tree.lux +++ b/stdlib/source/test/lux/data/collection/tree.lux @@ -28,8 +28,8 @@ (in [(|> children (list\each product.left) (list\mix n.+ 1)) - {#/.value value - #/.children (list\each product.right children)}]))) + [#/.value value + #/.children (list\each product.right children)]]))) (def: .public test Test diff --git a/stdlib/source/test/lux/data/format/tar.lux b/stdlib/source/test/lux/data/format/tar.lux index 2567d277f..a3fa4fa3f 100644 --- a/stdlib/source/test/lux/data/format/tar.lux +++ b/stdlib/source/test/lux/data/format/tar.lux @@ -196,10 +196,10 @@ tar (|> (row.row (<tag> [expected_path expected_moment /.none - {#/.user {#/.name /.anonymous - #/.id /.no_id} - #/.group {#/.name /.anonymous - #/.id /.no_id}} + [#/.user [#/.name /.anonymous + #/.id /.no_id] + #/.group [#/.name /.anonymous + #/.id /.no_id]] expected_content])) (format.result /.writer) (<b>.result /.parser))] @@ -254,10 +254,10 @@ tar (|> (row.row (#/.Normal [path (instant.of_millis +0) expected_mode - {#/.user {#/.name /.anonymous - #/.id /.no_id} - #/.group {#/.name /.anonymous - #/.id /.no_id}} + [#/.user [#/.name /.anonymous + #/.id /.no_id] + #/.group [#/.name /.anonymous + #/.id /.no_id]] content])) (format.result /.writer) (<b>.result /.parser))] @@ -277,10 +277,10 @@ tar (|> (row.row (#/.Normal [path (instant.of_millis +0) <expected_mode> - {#/.user {#/.name /.anonymous - #/.id /.no_id} - #/.group {#/.name /.anonymous - #/.id /.no_id}} + [#/.user [#/.name /.anonymous + #/.id /.no_id] + #/.group [#/.name /.anonymous + #/.id /.no_id]] content])) (format.result /.writer) (<b>.result /.parser))] @@ -344,10 +344,10 @@ tar (|> (row.row (#/.Normal [path (instant.of_millis +0) /.none - {#/.user {#/.name expected - #/.id /.no_id} - #/.group {#/.name /.anonymous - #/.id /.no_id}} + [#/.user [#/.name expected + #/.id /.no_id] + #/.group [#/.name /.anonymous + #/.id /.no_id]] content])) (format.result /.writer) (<b>.result /.parser))] @@ -368,10 +368,10 @@ tar (|> (row.row (#/.Normal [path (instant.of_millis +0) /.none - {#/.user {#/.name /.anonymous - #/.id /.no_id} - #/.group {#/.name /.anonymous - #/.id /.no_id}} + [#/.user [#/.name /.anonymous + #/.id /.no_id] + #/.group [#/.name /.anonymous + #/.id /.no_id]] content])) (format.result /.writer) (<b>.result /.parser))] diff --git a/stdlib/source/test/lux/locale/language.lux b/stdlib/source/test/lux/locale/language.lux index e11595968..f8969b224 100644 --- a/stdlib/source/test/lux/locale/language.lux +++ b/stdlib/source/test/lux/locale/language.lux @@ -25,11 +25,11 @@ (type: Bundle (Record - {#amount Nat + [#amount Nat #names (Set Text) #codes (Set Text) #languages (Set /.Language) - #test Test})) + #test Test])) (template [<bundle> <languages>] [(def: <bundle> @@ -37,12 +37,12 @@ (let [amount (template.amount <languages>) languages (: (List /.Language) (`` (list (~~ (template.spliced <languages>)))))] - {#amount amount + [#amount amount #names (|> languages (list\each /.name) (set.of_list text.hash)) #codes (|> languages (list\each /.code) (set.of_list text.hash)) #languages (set.of_list /.hash languages) #test (_.cover <languages> - true)}))] + true)]))] [languages/a [/.afar /.abkhazian /.achinese /.acoli /.adangme /.adyghe /.afro_asiatic /.afrihili /.afrikaans /.ainu diff --git a/stdlib/source/test/lux/locale/territory.lux b/stdlib/source/test/lux/locale/territory.lux index b129c333c..f71e26c78 100644 --- a/stdlib/source/test/lux/locale/territory.lux +++ b/stdlib/source/test/lux/locale/territory.lux @@ -25,27 +25,27 @@ (type: Bundle (Record - {#amount Nat + [#amount Nat #names (Set Text) #shorts (Set Text) #longs (Set Text) #numbers (Set Nat) #territories (Set /.Territory) - #test Test})) + #test Test])) (template [<bundle> <territories>] [(def: <bundle> Bundle (let [amount (template.amount <territories>) territories (`` (list (~~ (template.spliced <territories>))))] - {#amount amount + [#amount amount #names (|> territories (list\each /.name) (set.of_list text.hash)) #shorts (|> territories (list\each /.short_code) (set.of_list text.hash)) #longs (|> territories (list\each /.long_code) (set.of_list text.hash)) #numbers (|> territories (list\each /.numeric_code) (set.of_list n.hash)) #territories (|> territories (set.of_list /.hash)) #test (_.cover <territories> - true)}))] + true)]))] [territories/a [/.afghanistan /.aland_islands /.albania /.algeria /.american_samoa /.andorra /.angola /.anguilla /.antarctica /.antigua diff --git a/stdlib/source/test/lux/macro.lux b/stdlib/source/test/lux/macro.lux index ec8b70644..83c27d94c 100644 --- a/stdlib/source/test/lux/macro.lux +++ b/stdlib/source/test/lux/macro.lux @@ -65,14 +65,14 @@ current_module (name.module (name_of .._))]] (in [seed identifier_prefix - {#.info {#.target "" + [#.info [#.target "" #.version "" - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 ""] #.location location.dummy #.current_module (#.Some current_module) #.modules (list [macro_module - {#.module_hash 0 + [#.module_hash 0 #.module_aliases (list) #.definitions (: (List [Text .Global]) (list (!global /.log_single_expansion!) @@ -80,9 +80,9 @@ (!global /.log_full_expansion!))) #.imports (list) #.module_annotations #.None - #.module_state #.Active}] + #.module_state #.Active]] [current_module - {#.module_hash 0 + [#.module_hash 0 #.module_aliases (list) #.definitions (: (List [Text .Global]) (list (!global ..pow/2) @@ -90,17 +90,17 @@ (!global ..repeated))) #.imports (list) #.module_annotations #.None - #.module_state #.Active}]) + #.module_state #.Active]]) #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected #.None #.seed seed #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}]))) + #.host []]]))) (def: expander Test diff --git a/stdlib/source/test/lux/macro/syntax/check.lux b/stdlib/source/test/lux/macro/syntax/check.lux index c2bfd9896..7e69b7dec 100644 --- a/stdlib/source/test/lux/macro/syntax/check.lux +++ b/stdlib/source/test/lux/macro/syntax/check.lux @@ -38,8 +38,8 @@ [[type value] ..random] (_.cover [/.format /.parser] (case (<code>.result /.parser - (list (/.format {#/.type type - #/.value value}))) + (list (/.format [#/.type type + #/.value value]))) (#try.Failure _) false diff --git a/stdlib/source/test/lux/macro/syntax/definition.lux b/stdlib/source/test/lux/macro/syntax/definition.lux index e76d65a7b..aaddbdff5 100644 --- a/stdlib/source/test/lux/macro/syntax/definition.lux +++ b/stdlib/source/test/lux/macro/syntax/definition.lux @@ -36,23 +36,23 @@ )) (def: compiler - {#.info {#.target "FAKE" + [#.info [#.target "FAKE" #.version "0.0.0" - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 ""] #.location location.dummy #.current_module #.None #.modules (list) #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected #.None #.seed 0 #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}) + #.host []]) (def: .public test Test diff --git a/stdlib/source/test/lux/meta.lux b/stdlib/source/test/lux/meta.lux index 9e0175947..132768afa 100644 --- a/stdlib/source/test/lux/meta.lux +++ b/stdlib/source/test/lux/meta.lux @@ -50,23 +50,23 @@ expected_seed random.nat expected random.nat dummy (random.only (|>> (n.= expected) not) random.nat) - .let [expected_lux {#.info {#.target target + .let [expected_lux [#.info [#.target target #.version version - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 source_code] #.location location.dummy #.current_module (#.Some expected_current_module) #.modules (list) #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected (#.Some (#.Primitive primitive_type (list))) #.seed expected_seed #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}]] + #.host []]]] ($_ _.and (_.cover [/.result] (|> (\ /.monad in expected) @@ -98,23 +98,23 @@ expected random.nat dummy (random.only (|>> (n.= expected) not) random.nat) expected_error (random.ascii/upper 1) - .let [expected_lux {#.info {#.target target + .let [expected_lux [#.info [#.target target #.version version - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 source_code] #.location location.dummy #.current_module (#.Some expected_current_module) #.modules (list) #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected (#.Some (#.Primitive primitive_type (list))) #.seed expected_seed #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}]] + #.host []]]] ($_ _.and (_.cover [/.failure] (|> (/.failure expected_error) @@ -179,39 +179,39 @@ (not (or (text\= expected_current_module module) (text\= imported_module_name module)))) (random.ascii/upper 1)) - .let [imported_module {#.module_hash 0 + .let [imported_module [#.module_hash 0 #.module_aliases (list) #.definitions (list) #.imports (list) #.module_annotations #.None - #.module_state #.Active} - expected_module {#.module_hash 0 + #.module_state #.Active] + expected_module [#.module_hash 0 #.module_aliases (list) #.definitions (list) #.imports (list imported_module_name) #.module_annotations #.None - #.module_state #.Active} + #.module_state #.Active] expected_modules (list [expected_current_module expected_module] [imported_module_name imported_module]) - expected_lux {#.info {#.target target + expected_lux [#.info [#.target target #.version version - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 source_code] #.location location.dummy #.current_module (#.Some expected_current_module) #.modules expected_modules #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected (#.Some (#.Primitive primitive_type (list))) #.seed expected_seed #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}]] + #.host []]]] (<| (_.for [.Module]) ($_ _.and (_.cover [/.current_module_name] @@ -293,12 +293,12 @@ expected random.nat dummy (random.only (|>> (n.= expected) not) random.nat) expected_location ..random_location - .let [type_context {#.ex_counter 0 + .let [type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} - expected_lux {#.info {#.target target + #.var_bindings (list)] + expected_lux [#.info [#.target target #.version version - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 source_code] #.location expected_location #.current_module (#.Some expected_current_module) @@ -310,7 +310,7 @@ #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}]] + #.host []]]] ($_ _.and (_.cover [/.seed] (|> (do /.monad @@ -369,36 +369,36 @@ (list)))] [current_globals macro_globals - {#.info {#.target "" + [#.info [#.target "" #.version "" - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 ""] #.location location.dummy #.current_module (#.Some expected_current_module) #.modules (list [expected_current_module - {#.module_hash 0 + [#.module_hash 0 #.module_aliases (list) #.definitions current_globals #.imports (list) #.module_annotations #.None - #.module_state #.Active}] + #.module_state #.Active]] [expected_macro_module - {#.module_hash 0 + [#.module_hash 0 #.module_aliases (list) #.definitions macro_globals #.imports (list) #.module_annotations #.None - #.module_state #.Active}]) + #.module_state #.Active]]) #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected #.None #.seed 0 #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}])))]] + #.host []]])))]] ($_ _.and (_.cover [.Global .Alias /.globals] (let [[current_globals macro_globals expected_lux] @@ -487,36 +487,36 @@ (list)))] [current_globals macro_globals - {#.info {#.target "" + [#.info [#.target "" #.version "" - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 ""] #.location location.dummy #.current_module (#.Some expected_current_module) #.modules (list [expected_current_module - {#.module_hash 0 + [#.module_hash 0 #.module_aliases (list) #.definitions current_globals #.imports (list) #.module_annotations #.None - #.module_state #.Active}] + #.module_state #.Active]] [expected_macro_module - {#.module_hash 0 + [#.module_hash 0 #.module_aliases (list) #.definitions macro_globals #.imports (list) #.module_annotations #.None - #.module_state #.Active}]) + #.module_state #.Active]]) #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected #.None #.seed 0 #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}])))]] + #.host []]])))]] ($_ _.and (_.cover [/.export] (and (let [[current_globals macro_globals expected_lux] @@ -661,21 +661,21 @@ expected_lux (: Lux - {#.info {#.target "" + [#.info [#.target "" #.version "" - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 ""] #.location location.dummy #.current_module (#.Some current_module) #.modules (list [current_module - {#.module_hash 0 + [#.module_hash 0 #.module_aliases (list) #.definitions (list) #.imports (list tag_module) #.module_annotations #.None - #.module_state #.Active}] + #.module_state #.Active]] [tag_module - {#.module_hash 0 + [#.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)])] @@ -690,17 +690,17 @@ [(format "#" short) (#.Slot [true type_1 (#.Item tags_1) index])]))))) #.imports (list) #.module_annotations #.None - #.module_state #.Active}]) + #.module_state #.Active]]) #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected #.None #.seed 0 #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []})]] + #.host []])]] ($_ _.and (_.cover [/.tag_lists] (let [equivalence (list.equivalence @@ -717,12 +717,12 @@ (/.result expected_lux) (try\each (\ (maybe.equivalence (list.equivalence name.equivalence)) = (#.Some (list\each (|>> [tag_module]) (#.Item tags_1))))) (try.else false))) - (_.cover [/.tag] + (_.cover [/.slot] (|> (#.Item tags_1) list.enumeration (list.every? (function (_ [expected_index tag]) (|> [tag_module tag] - /.tag + /.slot (/.result expected_lux) (!expect (^multi (#try.Success [actual_index actual_tags actual_type]) (let [correct_index! @@ -767,50 +767,50 @@ (list [name_4 (#.Definition [false type_4 (' {}) []])])) - scopes (list {#.name (list) + scopes (list [#.name (list) #.inner 0 - #.locals {#.counter 1 - #.mappings (list [name_3 [type_3 3]])} - #.captured {#.counter 0 - #.mappings (list)}} - {#.name (list) + #.locals [#.counter 1 + #.mappings (list [name_3 [type_3 3]])] + #.captured [#.counter 0 + #.mappings (list)]] + [#.name (list) #.inner 0 - #.locals {#.counter 2 + #.locals [#.counter 2 #.mappings (list [name_1 [type_1 1]] - [name_2 [type_2 2]])} - #.captured {#.counter 0 - #.mappings (list)}} - {#.name (list) + [name_2 [type_2 2]])] + #.captured [#.counter 0 + #.mappings (list)]] + [#.name (list) #.inner 0 - #.locals {#.counter 1 - #.mappings (list [name_0 [type_0 0]])} - #.captured {#.counter 0 - #.mappings (list)}})] + #.locals [#.counter 1 + #.mappings (list [name_0 [type_0 0]])] + #.captured [#.counter 0 + #.mappings (list)]])] .let [expected_lux (: Lux - {#.info {#.target "" + [#.info [#.target "" #.version "" - #.mode #.Build} + #.mode #.Build] #.source [location.dummy 0 ""] #.location location.dummy #.current_module (#.Some current_module) #.modules (list [current_module - {#.module_hash 0 + [#.module_hash 0 #.module_aliases (list) #.definitions globals #.imports (list) #.module_annotations #.None - #.module_state #.Active}]) + #.module_state #.Active]]) #.scopes scopes - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected #.None #.seed 0 #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []})]] + #.host []])]] ($_ _.and (_.cover [.Scope /.locals] (let [equivalence (: (Equivalence (List (List [Text Type]))) @@ -901,23 +901,23 @@ expected random.nat dummy (random.only (|>> (n.= expected) not) random.nat) expected_location ..random_location - .let [expected_lux {#.info {#.target target + .let [expected_lux [#.info [#.target target #.version version - #.mode #.Build} + #.mode #.Build] #.source [expected_location 0 source_code] #.location expected_location #.current_module (#.Some expected_current_module) #.modules (list) #.scopes (list) - #.type_context {#.ex_counter 0 + #.type_context [#.ex_counter 0 #.var_counter 0 - #.var_bindings (list)} + #.var_bindings (list)] #.expected (#.Some expected_type) #.seed expected_seed #.scope_type_vars (list) #.extensions [] #.eval (:as (-> Type Code (Meta Any)) []) - #.host []}]] + #.host []]]] ($_ _.and (_.for [/.functor] ($functor.spec ..injection (..comparison expected_lux) /.functor)) diff --git a/stdlib/source/test/lux/target/jvm.lux b/stdlib/source/test/lux/target/jvm.lux index 2a9161c8c..436b78d6d 100644 --- a/stdlib/source/test/lux/target/jvm.lux +++ b/stdlib/source/test/lux/target/jvm.lux @@ -135,11 +135,11 @@ (type: (Primitive a) (Record - {#unboxed (Type category.Return) + [#unboxed (Type category.Return) #boxed (Type category.Class) #wrap (Bytecode Any) #random (Random a) - #literal (-> a (Bytecode Any))})) + #literal (-> a (Bytecode Any))])) (def: $Boolean (/type.class "java.lang.Boolean" (list))) @@ -155,11 +155,11 @@ ..!false)) (def: $Boolean::primitive (Primitive java/lang/Boolean) - {#unboxed /type.boolean + [#unboxed /type.boolean #boxed ..$Boolean #wrap ..$Boolean::wrap #random ..$Boolean::random - #literal ..$Boolean::literal}) + #literal ..$Boolean::literal]) (def: $Byte (/type.class "java.lang.Byte" (list))) @@ -173,11 +173,11 @@ (|>> ffi.byte_to_long (:as I64) i32.i32 /.int)) (def: $Byte::primitive (Primitive java/lang/Byte) - {#unboxed /type.byte + [#unboxed /type.byte #boxed ..$Byte #wrap ..$Byte::wrap #random ..$Byte::random - #literal ..$Byte::literal}) + #literal ..$Byte::literal]) (def: $Short (/type.class "java.lang.Short" (list))) @@ -191,11 +191,11 @@ (|>> ffi.short_to_long (:as I64) i32.i32 /.int)) (def: $Short::primitive (Primitive java/lang/Short) - {#unboxed /type.short + [#unboxed /type.short #boxed ..$Short #wrap ..$Short::wrap #random ..$Short::random - #literal ..$Short::literal}) + #literal ..$Short::literal]) (def: $Integer (/type.class "java.lang.Integer" (list))) @@ -209,11 +209,11 @@ (|>> ffi.int_to_long (:as I64) i32.i32 /.int)) (def: $Integer::primitive (Primitive java/lang/Integer) - {#unboxed /type.int + [#unboxed /type.int #boxed ..$Integer #wrap ..$Integer::wrap #random ..$Integer::random - #literal ..$Integer::literal}) + #literal ..$Integer::literal]) (def: $Long (/type.class "java.lang.Long" (list))) (def: $Long::wrap (/.invokestatic ..$Long "valueOf" (/type.method [(list) (list /type.long) ..$Long (list)]))) @@ -221,11 +221,11 @@ (def: $Long::literal (-> java/lang/Long (Bytecode Any)) (|>> (:as Int) /.long)) (def: $Long::primitive (Primitive java/lang/Long) - {#unboxed /type.long + [#unboxed /type.long #boxed ..$Long #wrap ..$Long::wrap #random ..$Long::random - #literal ..$Long::literal}) + #literal ..$Long::literal]) (def: $Float (/type.class "java.lang.Float" (list))) (def: $Float::wrap (/.invokestatic ..$Float "valueOf" (/type.method [(list) (list /type.float) ..$Float (list)]))) @@ -241,11 +241,11 @@ ..$Float::random)) (def: $Float::primitive (Primitive java/lang/Float) - {#unboxed /type.float + [#unboxed /type.float #boxed ..$Float #wrap ..$Float::wrap #random ..valid_float - #literal ..$Float::literal}) + #literal ..$Float::literal]) (def: $Double (/type.class "java.lang.Double" (list))) (def: $Double::wrap (/.invokestatic ..$Double "valueOf" (/type.method [(list) (list /type.double) ..$Double (list)]))) @@ -259,11 +259,11 @@ ..$Double::random)) (def: $Double::primitive (Primitive java/lang/Double) - {#unboxed /type.double + [#unboxed /type.double #boxed ..$Double #wrap ..$Double::wrap #random ..valid_double - #literal ..$Double::literal}) + #literal ..$Double::literal]) (def: $Character (/type.class "java.lang.Character" (list))) @@ -277,11 +277,11 @@ (|>> ffi.char_to_long (:as I64) i32.i32 /.int)) (def: $Character::primitive (Primitive java/lang/Character) - {#unboxed /type.char + [#unboxed /type.char #boxed ..$Character #wrap ..$Character::wrap #random ..$Character::random - #literal ..$Character::literal}) + #literal ..$Character::literal]) (def: $String (/type.class "java.lang.String" (list))) @@ -296,11 +296,11 @@ (def: $String::primitive (Primitive java/lang/String) - {#unboxed ..$String + [#unboxed ..$String #boxed ..$String #wrap /.nop #random ..$String::random - #literal ..$String::literal}) + #literal ..$String::literal]) (template [<name> <bits> <type> <push> <wrap> <message> <to_long> <signed>] [(def: <name> @@ -1374,11 +1374,11 @@ (_.lifted "DRETURN" (primitive_return ..$Double::primitive /.dreturn #.None (!::= java/lang/Double "jvm deq" "jvm double ="))) (_.lifted "ARETURN" (primitive_return ..$String::primitive /.areturn #.None (function (_ expected actual) (text\= (:as Text expected) (:as Text actual))))) (_.lifted "RETURN" (primitive_return (: (Primitive java/lang/String) - {#unboxed /type.void + [#unboxed /type.void #boxed ..$String #wrap /.nop #random ..$String::random - #literal (function.constant /.nop)}) + #literal (function.constant /.nop)]) /.return (#.Some ..$String::literal) (function (_ expected actual) (text\= (:as Text expected) (:as Text actual))))) 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 c39978c4f..e716d380a 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 @@ -175,10 +175,10 @@ (#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)) - #analysis.then (analysis.nat else)})]]))) + [[#analysis.when (analysis.pattern/bit test) + #analysis.then (analysis.nat then)] + (list [#analysis.when (analysis.pattern/bit (not test)) + #analysis.then (analysis.nat else)])]]))) (def: (random_five hash random_element) (All (_ a) (-> (Hash a) (Random a) (Random [a a a a a]))) @@ -203,11 +203,11 @@ (#synthesis.Seq (<path> test/2) (#synthesis.Then (<synthesis> body/2))) (#synthesis.Seq (<path> test/3) (#synthesis.Then (<synthesis> body/3))) (#synthesis.Seq (<path> test/4) (#synthesis.Then (<synthesis> body/4)))) - [{#analysis.when (<pattern> test/0) #analysis.then (<analysis> body/0)} - (list {#analysis.when (<pattern> test/1) #analysis.then (<analysis> body/1)} - {#analysis.when (<pattern> test/2) #analysis.then (<analysis> body/2)} - {#analysis.when (<pattern> test/3) #analysis.then (<analysis> body/3)} - {#analysis.when (<pattern> test/4) #analysis.then (<analysis> body/4)})]])))] + [[#analysis.when (<pattern> test/0) #analysis.then (<analysis> body/0)] + (list [#analysis.when (<pattern> test/1) #analysis.then (<analysis> body/1)] + [#analysis.when (<pattern> test/2) #analysis.then (<analysis> body/2)] + [#analysis.when (<pattern> test/3) #analysis.then (<analysis> body/3)] + [#analysis.when (<pattern> test/4) #analysis.then (<analysis> body/4)])]])))] [random_nat n.hash random.nat (|>> .i64 synthesis.path/i64) (|>> .i64 synthesis.i64) analysis.pattern/nat analysis.nat] [random_int int.hash random.int (|>> .i64 synthesis.path/i64) (|>> .i64 synthesis.i64) analysis.pattern/int analysis.int] @@ -243,10 +243,10 @@ (#synthesis.Then (synthesis.f64 body))))) branch (: (-> Nat Bit Text Frac Branch) (function (_ lefts right? value body) - {#analysis.when (analysis.pattern/variant {#analysis.lefts lefts + [#analysis.when (analysis.pattern/variant [#analysis.lefts lefts #analysis.right? right? - #analysis.value (analysis.pattern/text value)}) - #analysis.then (analysis.frac body)}))]] + #analysis.value (analysis.pattern/text value)]) + #analysis.then (analysis.frac body)]))]] (in [($_ #synthesis.Alt (path lefts/0 false value/0 body/0) (path lefts/1 false value/1 body/1) @@ -289,14 +289,14 @@ (#synthesis.Then (synthesis.f64 body)))))) branch (: (-> Nat Bit Text Frac Branch) (function (_ lefts right? value body) - {#analysis.when (if right? + [#analysis.when (if right? (analysis.pattern/tuple (list\composite (list.repeated (++ lefts) (analysis.pattern/unit)) (list (analysis.pattern/text value)))) (analysis.pattern/tuple ($_ list\composite (list.repeated lefts (analysis.pattern/unit)) (list (analysis.pattern/text value) (analysis.pattern/unit))))) - #analysis.then (analysis.frac body)}))]] + #analysis.then (analysis.frac body)]))]] (in [(list\mix (function (_ left right) (#synthesis.Alt left right)) (path (++ mid_size) true value/last body/last) 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 f66e00492..099e10d50 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 @@ -39,14 +39,14 @@ (def: (n_function loop? arity body) (-> Bit Arity Synthesis Synthesis) (synthesis.function/abstraction - {#synthesis.environment (list) + [#synthesis.environment (list) #synthesis.arity arity #synthesis.body (if loop? (synthesis.loop/scope - {#synthesis.start 1 + [#synthesis.start 1 #synthesis.inits (list) - #synthesis.iteration body}) - body)})) + #synthesis.iteration body]) + body)])) (def: (n_abstraction arity body) (-> Arity Analysis Analysis) @@ -70,9 +70,10 @@ false)) (type: Circumstance - {#loop? Bit - #expectation Synthesis - #reality Analysis}) + (Record + [#loop? Bit + #expectation Synthesis + #reality Analysis])) (type: Scenario (-> Bit (Random Circumstance))) @@ -119,13 +120,13 @@ [loop? expected_value actual_value] (random_value false)] (in [loop? (synthesis.variant - {#analysis.lefts lefts + [#analysis.lefts lefts #analysis.right? right? - #analysis.value expected_value}) + #analysis.value expected_value]) (analysis.variant - {#analysis.lefts lefts + [#analysis.lefts lefts #analysis.right? right? - #analysis.value actual_value})]))) + #analysis.value actual_value])]))) (def: (random_tuple random_value output?) (-> Scenario Scenario) @@ -211,29 +212,29 @@ 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.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 + #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.then actual_output])])]))) (def: (random_let arity random_value output?) (-> Arity Scenario Scenario) @@ -246,8 +247,8 @@ (++ arity) expected_output]) (#analysis.Case actual_input - [{#analysis.when (#analysis.Bind 2) - #analysis.then actual_output} + [[#analysis.when (#analysis.Bind 2) + #analysis.then actual_output] (list)])]))) (def: (random_if random_value output?) @@ -265,15 +266,15 @@ 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.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.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) @@ -287,12 +288,12 @@ (#.Left lefts))) expected_record]) (#analysis.Case actual_record - [{#analysis.when (analysis.pattern/tuple + [[#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))} + #analysis.then (#analysis.Reference (reference.local 2))] (list)])]))) (def: (random_branch arity random_value output?) @@ -323,9 +324,9 @@ true (list\each product.left resets)) (synthesis.loop/scope - {#synthesis.start (++ arity) + [#synthesis.start (++ arity) #synthesis.inits (list\each (|>> product.right product.left) resets) - #synthesis.iteration expected_output}) + #synthesis.iteration expected_output]) (analysis.apply [(..n_abstraction arity actual_output) (list\each (|>> product.right product.right) resets)])]))) @@ -349,12 +350,12 @@ (list (#variable.Local 1)))]] (in [true (synthesis.function/abstraction - {#synthesis.environment environment + [#synthesis.environment environment #synthesis.arity 1 #synthesis.body (synthesis.loop/scope - {#synthesis.start 1 + [#synthesis.start 1 #synthesis.inits (list) - #synthesis.iteration expected_output})}) + #synthesis.iteration expected_output])]) (#analysis.Function environment actual_output)]))) 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 63212fe0a..59e9f03cf 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 @@ -92,13 +92,13 @@ [next [valueE valueA]] (..reference offset arity next)] (in [next [(//.variant - {#analysis.lefts lefts + [#analysis.lefts lefts #analysis.right? right? - #analysis.value valueE}) + #analysis.value valueE]) (//.variant - {#analysis.lefts lefts + [#analysis.lefts lefts #analysis.right? right? - #analysis.value valueA})]])) + #analysis.value valueA])]])) (do {! random.monad} [[next [leftE leftA]] (..reference offset arity next) [next [rightE rightA]] (..reference offset arity next)] @@ -204,13 +204,13 @@ [next [iterationE iterationA]] (..reference offset arity next)] (in [next [(//.loop/scope - {#//.start (/.register_optimization offset next) + [#//.start (/.register_optimization offset next) #//.inits (list firstE secondE) - #//.iteration iterationE}) + #//.iteration iterationE]) (//.loop/scope - {#//.start next + [#//.start next #//.inits (list firstA secondA) - #//.iteration iterationA})]])) + #//.iteration iterationA])]])) )) (def: (function offset arity next) @@ -223,13 +223,13 @@ [next [bodyE bodyA]] (..primitive 0 arity next)] (in [next [(//.function/abstraction - {#//.environment (list firstE secondE) + [#//.environment (list firstE secondE) #//.arity arity - #//.body bodyE}) + #//.body bodyE]) (//.function/abstraction - {#//.environment (list firstA secondA) + [#//.environment (list firstA secondA) #//.arity arity - #//.body bodyA})]])) + #//.body bodyA])]])) )) (def: (control offset arity next) @@ -274,11 +274,11 @@ [_ [expected iteration]] (..scenario expected_offset arity 0)] (_.cover [/.Transform /.optimization /.register_optimization] (case (/.optimization true expected_offset expected_inits - {#//.environment (|> expected_offset + [#//.environment (|> expected_offset list.indices (list\each (|>> #variable.Local))) #//.arity arity - #//.body iteration}) + #//.body iteration]) (^ (#.Some (//.loop/scope [actual_offset actual_inits actual]))) (and (n.= expected_offset 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 e817d05c5..fa9a9f646 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 @@ -35,8 +35,8 @@ false)) (type: Context - {#redundants Nat - #necessary (Dictionary Nat Nat)}) + [#redundants Nat + #necessary (Dictionary Nat Nat)]) (type: (Scenario a) (-> Context (Random [a a]))) @@ -319,8 +319,8 @@ (def: default Context - {#redundants 0 - #necessary (dictionary.empty n.hash)}) + [#redundants 0 + #necessary (dictionary.empty n.hash)]) (def: .public test Test diff --git a/stdlib/source/test/lux/type/poly/equivalence.lux b/stdlib/source/test/lux/type/poly/equivalence.lux index a66c390b3..e30ae9ba4 100644 --- a/stdlib/source/test/lux/type/poly/equivalence.lux +++ b/stdlib/source/test/lux/type/poly/equivalence.lux @@ -38,7 +38,7 @@ (type: Record (.Record - {#bit Bit + [#bit Bit #int Int #frac Frac #text Text @@ -46,7 +46,7 @@ #list (List Int) #variant Variant #tuple [Int Frac Text] - #recursive Recursive})) + #recursive Recursive])) (def: gen_recursive (Random Recursive) diff --git a/stdlib/source/test/lux/type/poly/json.lux b/stdlib/source/test/lux/type/poly/json.lux index 9b6d5338a..f5bc61ab0 100644 --- a/stdlib/source/test/lux/type/poly/json.lux +++ b/stdlib/source/test/lux/type/poly/json.lux @@ -62,7 +62,7 @@ (type: Record (.Record - {#bit Bit + [#bit Bit #frac Frac #text Text #maybe (Maybe Frac) @@ -74,7 +74,7 @@ ... #instant ti.Instant ... #duration tdu.Duration #date tda.Date - #grams (unit.Qty unit.Gram)})) + #grams (unit.Qty unit.Gram)])) (def: gen_recursive (Random Recursive) diff --git a/stdlib/source/test/lux/world/net/http/client.lux b/stdlib/source/test/lux/world/net/http/client.lux index cdac7ac43..3f0531040 100644 --- a/stdlib/source/test/lux/world/net/http/client.lux +++ b/stdlib/source/test/lux/world/net/http/client.lux @@ -60,10 +60,10 @@ (\ nat.decimal encoded) (\ utf8.codec encoded))] (#try.Success [//status.ok - {#//.headers headers + [#//.headers headers #//.body (function (_ ?wanted_bytes) (io.io (#try.Success [(binary.size data) - data])))}]))))))]] + data])))]]))))))]] (`` ($_ _.and (~~ (template [<definition> <expected>] [(_.cover [<definition>] -- cgit v1.2.3