From 104130efba46a875eba566384578f8aa8593ad37 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Fri, 1 Jul 2022 18:53:58 -0400 Subject: Moved "lux/macro/code" to "lux/meta/code". --- documentation/bookmark/analysis/static.md | 1 + documentation/bookmark/audio.md | 1 + documentation/bookmark/blockchain.md | 1 + documentation/bookmark/coding_style.md | 7 + documentation/bookmark/concurrency/clock.md | 5 + .../bookmark/concurrency/lock_free_programming.md | 2 + documentation/bookmark/documentation.md | 1 + documentation/bookmark/game/engine.md | 3 + documentation/bookmark/law/gdpr.md | 5 + documentation/bookmark/math.md | 55 ++++ documentation/bookmark/optimization/simd.md | 5 - .../simd__single_instruction_multiple_data.md | 7 + .../bookmark/programming_language/syntax.md | 1 + documentation/bookmark/security/authentication.md | 2 + stdlib/source/documentation/lux/macro/code.lux | 37 --- stdlib/source/documentation/lux/meta/code.lux | 37 +++ stdlib/source/format/lux/data/text.lux | 8 +- stdlib/source/library/lux/abstract/interval.lux | 4 +- .../source/library/lux/abstract/monad/indexed.lux | 3 +- .../source/library/lux/control/concatenative.lux | 8 +- stdlib/source/library/lux/control/continuation.lux | 3 +- stdlib/source/library/lux/control/exception.lux | 11 +- .../library/lux/control/function/contract.lux | 9 +- .../source/library/lux/control/function/inline.lux | 8 +- .../source/library/lux/control/function/mutual.lux | 8 +- stdlib/source/library/lux/control/io.lux | 8 +- stdlib/source/library/lux/control/lazy.lux | 8 +- stdlib/source/library/lux/control/pipe.lux | 9 +- stdlib/source/library/lux/control/remember.lux | 4 +- .../library/lux/control/security/capability.lux | 8 +- .../library/lux/data/collection/sequence.lux | 9 +- .../source/library/lux/data/collection/stream.lux | 9 +- stdlib/source/library/lux/data/collection/tree.lux | 3 +- .../source/library/lux/data/format/css/class.lux | 4 +- stdlib/source/library/lux/data/format/css/font.lux | 8 +- stdlib/source/library/lux/data/format/css/id.lux | 4 +- .../library/lux/data/format/css/property.lux | 5 +- .../source/library/lux/data/format/css/query.lux | 12 +- .../source/library/lux/data/format/css/value.lux | 8 +- stdlib/source/library/lux/data/format/json.lux | 10 +- stdlib/source/library/lux/data/text/escape.lux | 4 +- stdlib/source/library/lux/data/text/regex.lux | 10 +- stdlib/source/library/lux/debug.lux | 8 +- stdlib/source/library/lux/documentation.lux | 8 +- stdlib/source/library/lux/extension.lux | 3 +- stdlib/source/library/lux/ffi.jvm.lux | 14 +- stdlib/source/library/lux/ffi.lux | 10 +- stdlib/source/library/lux/ffi.old.lux | 8 +- stdlib/source/library/lux/ffi.php.lux | 8 +- stdlib/source/library/lux/ffi.scm.lux | 8 +- stdlib/source/library/lux/ffi/export.js.lux | 66 ++--- stdlib/source/library/lux/ffi/export.jvm.lux | 3 +- stdlib/source/library/lux/ffi/export.lua.lux | 90 +++--- stdlib/source/library/lux/ffi/export.py.lux | 52 ++-- stdlib/source/library/lux/ffi/export.rb.lux | 70 ++--- stdlib/source/library/lux/macro.lux | 11 +- stdlib/source/library/lux/macro/code.lux | 135 --------- stdlib/source/library/lux/macro/context.lux | 10 +- stdlib/source/library/lux/macro/local.lux | 10 +- stdlib/source/library/lux/macro/syntax.lux | 10 +- stdlib/source/library/lux/macro/syntax/check.lux | 3 +- .../library/lux/macro/syntax/declaration.lux | 2 +- .../source/library/lux/macro/syntax/definition.lux | 8 +- stdlib/source/library/lux/macro/syntax/export.lux | 3 +- stdlib/source/library/lux/macro/syntax/input.lux | 2 +- .../library/lux/macro/syntax/type/variable.lux | 2 +- stdlib/source/library/lux/macro/template.lux | 10 +- stdlib/source/library/lux/math.lux | 10 +- stdlib/source/library/lux/math/infix.lux | 9 +- stdlib/source/library/lux/math/modular.lux | 7 +- stdlib/source/library/lux/math/modulus.lux | 11 +- stdlib/source/library/lux/math/number/complex.lux | 9 +- stdlib/source/library/lux/math/number/ratio.lux | 3 +- stdlib/source/library/lux/meta.lux | 6 +- stdlib/source/library/lux/meta/code.lux | 135 +++++++++ stdlib/source/library/lux/meta/configuration.lux | 10 +- stdlib/source/library/lux/meta/type.lux | 8 +- stdlib/source/library/lux/meta/type/dynamic.lux | 3 +- stdlib/source/library/lux/meta/type/implicit.lux | 9 +- stdlib/source/library/lux/meta/type/poly.lux | 9 +- stdlib/source/library/lux/meta/type/primitive.lux | 18 +- stdlib/source/library/lux/meta/type/quotient.lux | 3 +- stdlib/source/library/lux/meta/type/refinement.lux | 3 +- stdlib/source/library/lux/meta/type/resource.lux | 10 +- stdlib/source/library/lux/meta/type/unit.lux | 9 +- stdlib/source/library/lux/meta/type/unit/scale.lux | 10 +- stdlib/source/library/lux/meta/version.lux | 4 +- stdlib/source/library/lux/program.lux | 3 +- stdlib/source/library/lux/static.lux | 10 +- stdlib/source/library/lux/target/jvm/bytecode.lux | 2 +- stdlib/source/library/lux/target/jvm/modifier.lux | 8 +- .../source/library/lux/target/jvm/type/alias.lux | 9 +- stdlib/source/library/lux/target/lua.lux | 8 +- stdlib/source/library/lux/target/php.lux | 8 +- stdlib/source/library/lux/target/python.lux | 8 +- stdlib/source/library/lux/target/r.lux | 8 +- stdlib/source/library/lux/target/ruby.lux | 8 +- stdlib/source/library/lux/test.lux | 6 +- .../lux/tool/compiler/language/lux/analysis.lux | 8 +- .../tool/compiler/language/lux/phase/analysis.lux | 4 +- .../compiler/language/lux/phase/analysis/case.lux | 4 +- .../language/lux/phase/analysis/complex.lux | 3 +- .../language/lux/phase/extension/analysis/js.lux | 7 +- .../language/lux/phase/extension/analysis/jvm.lux | 14 +- .../language/lux/phase/extension/analysis/lua.lux | 5 +- .../language/lux/phase/extension/analysis/lux.lux | 6 +- .../language/lux/phase/extension/analysis/php.lux | 5 +- .../lux/phase/extension/analysis/python.lux | 5 +- .../language/lux/phase/extension/analysis/r.lux | 5 +- .../language/lux/phase/extension/analysis/ruby.lux | 5 +- .../lux/phase/extension/analysis/scheme.lux | 5 +- .../lux/phase/extension/declaration/jvm.lux | 7 +- .../lux/phase/extension/declaration/lux.lux | 8 +- .../lux/phase/generation/common_lisp/runtime.lux | 8 +- .../language/lux/phase/generation/extension.lux | 4 +- .../language/lux/phase/generation/js/runtime.lux | 8 +- .../generation/jvm/function/field/variable.lux | 2 +- .../jvm/function/field/variable/partial.lux | 2 +- .../jvm/function/method/implementation.lux | 2 +- .../phase/generation/jvm/function/method/new.lux | 2 +- .../phase/generation/jvm/function/method/reset.lux | 2 +- .../language/lux/phase/generation/jvm/host.lux | 2 +- .../language/lux/phase/generation/lua/runtime.lux | 8 +- .../language/lux/phase/generation/php/runtime.lux | 8 +- .../lux/phase/generation/python/runtime.lux | 8 +- .../language/lux/phase/generation/r/runtime.lux | 8 +- .../language/lux/phase/generation/ruby/runtime.lux | 8 +- .../phase/generation/scheme/extension/common.lux | 3 +- .../lux/phase/generation/scheme/runtime.lux | 8 +- .../lux/tool/compiler/language/lux/syntax.lux | 6 +- .../source/library/lux/world/net/http/client.lux | 9 +- stdlib/source/parser/lux/data/format/json.lux | 6 +- stdlib/source/parser/lux/data/text.lux | 5 +- stdlib/source/parser/lux/macro/code.lux | 226 --------------- stdlib/source/parser/lux/meta/code.lux | 225 +++++++++++++++ stdlib/source/parser/lux/meta/type.lux | 7 +- .../source/polytypic/lux/abstract/equivalence.lux | 3 +- stdlib/source/polytypic/lux/abstract/functor.lux | 3 +- stdlib/source/polytypic/lux/data/format/json.lux | 6 +- .../program/aedifex/artifact/snapshot/stamp.lux | 2 +- stdlib/source/program/aedifex/input.lux | 5 +- .../source/program/aedifex/metadata/artifact.lux | 2 +- stdlib/source/program/aedifex/parser.lux | 2 +- .../specification/compositor/analysis/type.lux | 2 +- .../compositor/generation/structure.lux | 2 +- stdlib/source/test/aedifex/artifact/time.lux | 6 +- stdlib/source/test/aedifex/metadata/artifact.lux | 4 +- stdlib/source/test/aedifex/metadata/snapshot.lux | 4 +- stdlib/source/test/aedifex/parser.lux | 2 +- stdlib/source/test/lux.lux | 8 +- stdlib/source/test/lux/control/parser.lux | 3 +- stdlib/source/test/lux/control/remember.lux | 12 +- stdlib/source/test/lux/data/binary.lux | 4 +- stdlib/source/test/lux/data/format/json.lux | 4 +- stdlib/source/test/lux/data/text.lux | 11 +- stdlib/source/test/lux/data/text/escape.lux | 10 +- stdlib/source/test/lux/data/text/regex.lux | 9 +- stdlib/source/test/lux/debug.lux | 10 +- stdlib/source/test/lux/documentation.lux | 4 +- stdlib/source/test/lux/extension.lux | 91 +++--- stdlib/source/test/lux/ffi.jvm.lux | 8 +- stdlib/source/test/lux/ffi/export.jvm.lux | 6 +- stdlib/source/test/lux/macro.lux | 10 +- stdlib/source/test/lux/macro/code.lux | 318 --------------------- stdlib/source/test/lux/macro/local.lux | 10 +- stdlib/source/test/lux/macro/pattern.lux | 6 +- stdlib/source/test/lux/macro/syntax.lux | 8 +- stdlib/source/test/lux/macro/syntax/check.lux | 11 +- .../source/test/lux/macro/syntax/declaration.lux | 7 +- stdlib/source/test/lux/macro/syntax/definition.lux | 18 +- stdlib/source/test/lux/macro/syntax/export.lux | 8 +- stdlib/source/test/lux/macro/syntax/input.lux | 17 +- .../source/test/lux/macro/syntax/type/variable.lux | 7 +- stdlib/source/test/lux/macro/template.lux | 9 +- stdlib/source/test/lux/math/modulus.lux | 4 +- stdlib/source/test/lux/meta.lux | 2 + stdlib/source/test/lux/meta/code.lux | 318 +++++++++++++++++++++ stdlib/source/test/lux/meta/configuration.lux | 10 +- stdlib/source/test/lux/meta/location.lux | 7 +- stdlib/source/test/lux/meta/type.lux | 6 +- stdlib/source/test/lux/meta/type/primitive.lux | 10 +- stdlib/source/test/lux/meta/type/resource.lux | 10 +- stdlib/source/test/lux/meta/type/unit/scale.lux | 8 +- stdlib/source/test/lux/meta/version.lux | 10 +- stdlib/source/test/lux/program.lux | 9 +- stdlib/source/test/lux/static.lux | 7 +- stdlib/source/test/lux/target/jvm.lux | 6 +- stdlib/source/test/lux/target/python.lux | 6 +- .../compiler/language/lux/analysis/inference.lux | 4 +- .../tool/compiler/language/lux/analysis/macro.lux | 9 +- .../tool/compiler/language/lux/phase/analysis.lux | 4 +- .../compiler/language/lux/phase/analysis/case.lux | 4 +- .../language/lux/phase/analysis/complex.lux | 4 +- .../language/lux/phase/analysis/function.lux | 4 +- .../language/lux/phase/extension/analysis/lux.lux | 3 +- .../test/lux/tool/compiler/language/lux/syntax.lux | 3 +- 196 files changed, 1559 insertions(+), 1472 deletions(-) create mode 100644 documentation/bookmark/coding_style.md create mode 100644 documentation/bookmark/concurrency/clock.md create mode 100644 documentation/bookmark/law/gdpr.md delete mode 100644 documentation/bookmark/optimization/simd.md create mode 100644 documentation/bookmark/optimization/simd__single_instruction_multiple_data.md delete mode 100644 stdlib/source/documentation/lux/macro/code.lux create mode 100644 stdlib/source/documentation/lux/meta/code.lux delete mode 100644 stdlib/source/library/lux/macro/code.lux create mode 100644 stdlib/source/library/lux/meta/code.lux delete mode 100644 stdlib/source/parser/lux/macro/code.lux create mode 100644 stdlib/source/parser/lux/meta/code.lux delete mode 100644 stdlib/source/test/lux/macro/code.lux create mode 100644 stdlib/source/test/lux/meta/code.lux diff --git a/documentation/bookmark/analysis/static.md b/documentation/bookmark/analysis/static.md index 0300a44d1..daae87e7b 100644 --- a/documentation/bookmark/analysis/static.md +++ b/documentation/bookmark/analysis/static.md @@ -1,6 +1,7 @@ # Reference 0. []() +0. [Souffle: Logic Defined Static Analysis.](https://souffle-lang.github.io/index.html) 0. [Fusing Industry and Academia at GitHub (Experience Report)](https://arxiv.org/abs/2206.09206) 0. [Software can literally be perfect](https://www.youtube.com/watch?v=Lf7ML_ErWvQ) 0. [Magmide](https://github.com/magmide/magmide) diff --git a/documentation/bookmark/audio.md b/documentation/bookmark/audio.md index fef45b127..f2e88a58d 100644 --- a/documentation/bookmark/audio.md +++ b/documentation/bookmark/audio.md @@ -1,5 +1,6 @@ # Reference 0. []() +0. [Ambisonics](https://en.wikipedia.org/wiki/Ambisonics) 0. [JUCE: The leading framework for multi-platform audio applications](https://juce.com/) diff --git a/documentation/bookmark/blockchain.md b/documentation/bookmark/blockchain.md index 014e8cb8f..6dc4be393 100644 --- a/documentation/bookmark/blockchain.md +++ b/documentation/bookmark/blockchain.md @@ -1,5 +1,6 @@ # Reference 0. []() +0. [OpenAttestation: Document Endorsement and Verification Framework](https://www.openattestation.com/) 0. [Crypto is crashing but the tech behind it could save luxury brands billions](https://edition.cnn.com/2022/06/26/business/aura-blockchain-luxury-counterfeit-hnk-spc-intl/index.html) diff --git a/documentation/bookmark/coding_style.md b/documentation/bookmark/coding_style.md new file mode 100644 index 000000000..6df265f00 --- /dev/null +++ b/documentation/bookmark/coding_style.md @@ -0,0 +1,7 @@ +# Reference + +0. []() +0. [the gizmo's role in markup](https://t-ravis.com/post/doc/the_gizmos_role_in_markup/) +0. [the hard problem: naming functions and other gizmos](https://t-ravis.com/post/doc/naming_functions_methods_and_other_gizmos/) +0. [WHAT functions and WHY functions](https://t-ravis.com/post/doc/what_functions_and_why_functions/) + diff --git a/documentation/bookmark/concurrency/clock.md b/documentation/bookmark/concurrency/clock.md new file mode 100644 index 000000000..b62ce80e8 --- /dev/null +++ b/documentation/bookmark/concurrency/clock.md @@ -0,0 +1,5 @@ +# Reference + +0. []() +0. [A Tree Clock Data Structure for Causal Orderings in Concurrent Executions](https://dl.acm.org/doi/pdf/10.1145/3503222.3507734) + diff --git a/documentation/bookmark/concurrency/lock_free_programming.md b/documentation/bookmark/concurrency/lock_free_programming.md index d904c8841..7a64aa21f 100644 --- a/documentation/bookmark/concurrency/lock_free_programming.md +++ b/documentation/bookmark/concurrency/lock_free_programming.md @@ -1,5 +1,7 @@ # Reference +0. []() +0. [Handling Concurrency Without Locks: How to not let concurrency cripple your system](https://hakibenita.com/django-concurrency) 0. [Nonblocking Algorithms and Scalable Multicore Programming: Exploring some alternatives to lock-based synchronization](https://queue.acm.org/detail.cfm?id=2492433) 0. [Design and Implementation of Highly Scalable Quantifiable Data Structures in C++ - CppCon 2021](https://www.youtube.com/watch?v=ECWsLj0pgbI) 0. [Building a Lock-free Multi-producer, Multi-consumer Queue for Tcmalloc - Matt Kulukundis - CppCon 21](https://www.youtube.com/watch?v=_qaKkHuHYE0) diff --git a/documentation/bookmark/documentation.md b/documentation/bookmark/documentation.md index 470a27b3e..ab65452ba 100644 --- a/documentation/bookmark/documentation.md +++ b/documentation/bookmark/documentation.md @@ -65,6 +65,7 @@ # Reference 0. []() +0. [TimelineJS: Easy-to-make, beautiful timelines.](http://timeline.knightlab.com/) 0. [Introduction to the Zettelkasten Method](https://zettelkasten.de/introduction/) 0. [Building a community of open-source documentation contributors](https://news.ycombinator.com/newest?next=31705868&n=1171) 0. [Documentation in the Era of Concepts and Ranges - Christopher Di Bella & Sy Brand - CppCon 2021](https://www.youtube.com/watch?v=nm45t2fnUms) diff --git a/documentation/bookmark/game/engine.md b/documentation/bookmark/game/engine.md index 45d78ec5b..848857189 100644 --- a/documentation/bookmark/game/engine.md +++ b/documentation/bookmark/game/engine.md @@ -2,11 +2,14 @@ ## General +0. []() +0. [MonoGame: One framework for creating powerful cross-platform games](https://www.monogame.net/) 0. [Heaps.io](https://heaps.io/index.html) 0. [The Machinery](https://ourmachinery.com/) 0. [Open 3D Engine](https://www.o3de.org/) ## Specialized +0. []() 0. [RPG Paper Maker](http://rpg-paper-maker.com/) diff --git a/documentation/bookmark/law/gdpr.md b/documentation/bookmark/law/gdpr.md new file mode 100644 index 000000000..48035be6b --- /dev/null +++ b/documentation/bookmark/law/gdpr.md @@ -0,0 +1,5 @@ +# Reference + +0. []() +0. [Is my cookie illegal?: Twelve questions from developers to privacy experts.](https://volument.com/blog/is-my-cookie-illegal) + diff --git a/documentation/bookmark/math.md b/documentation/bookmark/math.md index 113ec69a7..9c36118ed 100644 --- a/documentation/bookmark/math.md +++ b/documentation/bookmark/math.md @@ -1,66 +1,82 @@ # Logarithm +0. []() 0. [Logarithm: The Complete Guide (Theory & Applications)](https://mathvault.ca/logarithm-theory/) # Ball arithmetic +0. []() 0. [Ball arithmetic](http://www.texmacs.org/joris/ball/ball.html) # Arithmetic +0. []() 0. [The Definitive Higher Math Guide on Integer Long Division (and Its Variants)](https://mathvault.ca/long-division/) # Tensor calculus +0. []() 0. [Introduction to Tensor Calculus](http://www.ita.uni-heidelberg.de/~dullemond/lectures/tensor/tensor.pdf) # Geometry +0. []() 0. [Perspectives on Projective Geometry: A Guided Tour through Real and Complex Geometry](https://www-m10.ma.tum.de/foswiki/pub/Lehre/WS0910/ProjektiveGeometrieWS0910/GeomBook.pdf) 0. [Symplectic Geometry for Engineers - Fundamentals](https://www.researchgate.net/publication/338124384_Symplectic_Geometry_for_Engineers_-_Fundamentals) # Prime number +0. []() 0. [The History of the Primality of One: A Selection of Sources](https://cs.uwaterloo.ca/journals/JIS/VOL15/Caldwell2/cald6.pdf) # Trigonometry +0. []() 0. [Approximating the Sine Function](http://datagenetics.com/blog/july12019/index.html) # Period +0. []() 0. https://en.wikipedia.org/wiki/Ring_of_periods 0. [PERIODS](http://www.ihes.fr/~maxim/TEXTS/Periods.pdf) # Proof theory +0. []() 0. [Mathematical Components](https://math-comp.github.io/mcb/) # Statistics +0. []() 0. https://www.statisticsdonewrong.com/ # Topology +0. []() 0. [What is Topology?](https://medium.com/cantors-paradise/what-is-topology-963ef4cc6365) 0. [Pointless topology](https://en.wikipedia.org/wiki/Pointless_topology) 0. [ELEMENTARY APPLIED TOPOLOGY](https://www.math.upenn.edu/~ghrist/notes.html) # Library +0. []() 0. https://github.com/ZacharyPatten/Towel # Polynomials +0. []() 0. https://brainbomb.org/0-1-efficient-metholds-for-evaluting-polynomials/ 0. https://en.wikipedia.org/wiki/Horner%27s_method # Chaos Theory +0. []() 0. http://ncase.me/attractors/ # Number Theory +0. []() +0. [Introduction to number theory (Berkeley Math 115)](https://www.youtube.com/playlist?list=PL8yHsr3EFj53L8sMbzIhhXSAOpuZ1Fov8) 0. https://twitter.com/johncarlosbaez/status/1184492139897507840 0. https://en.wikipedia.org/wiki/Division_algebra 0. [Division algebras](https://www.youtube.com/watch?v=3BZyds_KFWM&list=PLNxhIPHaOTRZMO1VjJcs7_3dgyJ2qU1yZ) @@ -70,8 +86,10 @@ ## Hyperreal number +0. []() 0. [Yes, You Can Manipulate Infinity—in Math](https://mindmatters.ai/2019/10/yes-you-can-manipulate-infinity-in-math/) +0. []() # Quaternions 0. [Quaternions: Part 1](https://liorsinai.github.io/mathematics/2021/11/05/quaternion-1-intro.html) @@ -85,6 +103,7 @@ # _Compendium of resources_ +0. []() 0. [How to Learn Advanced Mathematics Without Heading to University - Part 1](https://www.quantstart.com/articles/How-to-Learn-Advanced-Mathematics-Without-Heading-to-University-Part-1/) 0. [How to Learn Advanced Mathematics Without Heading to University - Part 2](https://www.quantstart.com/articles/How-to-Learn-Advanced-Mathematics-Without-Heading-to-University-Part-2/) 0. [How to Learn Advanced Mathematics Without Heading to University - Part 3](https://www.quantstart.com/articles/How-to-Learn-Advanced-Mathematics-Without-Heading-to-University-Part-3/) @@ -101,10 +120,12 @@ # Number systems +0. []() 0. https://en.wikipedia.org/wiki/Negative_base # Discrete mathematics +0. []() 0. [Applied Discrete Structures](http://discretemath.org/ads-latex/ads.pdf) 0. [Notes on Discrete Mathematics](http://www.cs.yale.edu/homes/aspnes/classes/202/notes.pdf) 0. [The system of integer functions, an efficient version of discrete mathematical analysis](https://arxiv.org/abs/1710.00676) @@ -113,14 +134,17 @@ # Probability +0. []() 0. [Introduction to Probability at anadvanced leve](https://www.stat.berkeley.edu/~aditya/resources/AllLectures2018Fall201A.pdf) # Domain Theory +0. []() 0. [A Brief Intro to Domain Theory](https://www.alignmentforum.org/posts/4C4jha5SdReWgg7dF/a-brief-intro-to-domain-theory) # Category Theory +0. []() 0. [Programming with Categories](https://www.youtube.com/watch?v=Y5YCE_mVjvg&list=PLhgq-BqyZ7i7MTGhUROZy3BOICnVixETS&index=1) 0. [Awesome Applied Category Theory](https://github.com/statebox/awesome-applied-ct) 0. [Categorical Query Language](https://www.categoricaldata.net/) @@ -138,10 +162,12 @@ # Direct Logic +0. []() 0. [Strong Types for Direct Logic](https://drive.google.com/file/d/1relKFB4aOMD2VZHM9qj3wWMXOq-q2AJr/view) # Geometric Algebra | Clifford Algebra +0. []() 0. [Symplectic Geometry meets Geometric Algebra in 2D](https://www.researchgate.net/publication/356781838_Symplectic_Geometry_meets_Geometric_Algebra_in_2D) 0. [Siggraph2019 Geometric Algebra](https://www.youtube.com/watch?v=tX4H_ctggYo) 0. [Dr Leo Dorst' Keynote talk at CGI2020](https://www.youtube.com/watch?v=T7xVTBpHMjA) @@ -178,6 +204,7 @@ # Abstract Algebra +0. []() 0. [A Brief Guide to A Few Algebraic Structures](https://argumatronic.com//posts/2019-06-21-algebra-cheatsheet.html) 0. [DUALITY FOR GROUPS](https://projecteuclid.org/download/pdf_1/euclid.bams/1183515045) 0. https://gowers.wordpress.com/2011/11/20/normal-subgroups-and-quotient-groups/ @@ -191,10 +218,12 @@ # Logic +0. []() 0. http://openlogicproject.org/ # Calculus +0. []() 0. [What is Jacobian? | The right way of thinking derivatives and integrals](https://www.youtube.com/watch?v=wCZ1VEmVjVo) 0. [The Fractional Derivative, what is it? | Introduction to Fractional Calculus](https://www.youtube.com/watch?v=A4sTAKN6yFA) 0. [Calculus on Manifolds](http://strangebeautiful.com/other-texts/spivak-calc-manifolds.pdf) @@ -209,61 +238,74 @@ # Continuous Calculus +0. []() 0. [Continuous Calculus](http://www-users.math.umn.edu/~olver/ln_/cc.pdf) # Octonion +0. []() 0. http://math.ucr.edu/home/baez/octonions/ # Differential Geometry +0. []() 0. [differential geometry reconstructed: a unified systematic framework](http://www.geometry.org/tex/conc/dgstats.php) 0. [Differential geometry reconstructed: a unified systematic framework](http://www.topology.org/tex/conc/dg.html) # Information Theory +0. []() 0. [Functional Bits: Lambda Calculus based Algorithmic Information Theory](https://tromp.github.io/cl/LC.pdf) # Graph Theory +0. []() 0. [Graphs and Geometry](http://web.cs.elte.hu/~lovasz/bookxx/geomgraphbook/geombook2019.01.11.pdf) 0. [Graph-Based Algorithms for Boolean Function Manipulation](http://mtv.ece.ucsb.edu/courses/ece156B_14/randy_obdd86.pdf) 0. [better geometry through graph theory](http://ideolalia.com/2018/08/28/artifex.html) # Division by Zero +0. []() 0. [29. Dividing by zero to invert matrices](https://graphicallinearalgebra.net/2016/06/22/29-inverting-matrices-and-dividing-by-zero/) 0. https://www.hillelwayne.com/post/divide-by-zero/ 0. https://www.1dividedby0.com/ # Partial Fractions +0. []() 0. https://jaydaigle.net/blog/calculus/easier-partial-fractions/ # Non-commutative Algebra +0. []() 0. [An Invitation to Noncommutative Algebra](https://arxiv.org/abs/1808.03172) # Lambda Calculus +0. []() 0. https://medium.com/@maiavictor/the-abstract-calculus-fe8c46bcf39c # _Software Library_ +0. []() 0. https://github.com/arguiot/TheoremJS 0. https://github.com/arguiot/Descartes # Set Theory +0. []() 0. [Set Theory and Algebra in Computer Science: A Gentle Introduction to Mathematical Modeling](https://pdfs.semanticscholar.org/d106/6b6de601c1d7d5af25af3f7091bc7ad3ad51.pdf) # Uncertainty Theory +0. []() 0. http://faculty.math.tsinghua.edu.cn/~bliu/ut.pdf 0. [An Introduction to the Mathematics of Uncertainty: including Set Theory, Logic, Probability, Fuzzy Sets, Rough Sets, and Evidence Theory](https://www.creighton.edu/fileadmin/user/CCAS/programs/fuzzy_math/docs/MOU.pdf) # Computational Geometry +0. []() 0. [CMPT 813: Computational Geometry (Fall 2011)](http://www.cs.sfu.ca/~binay/813.2011/) 0. https://www.johndcook.com/blog/2018/09/26/polygon-area/ 0. http://s2geometry.io/devguide/s2cell_hierarchy.html @@ -272,45 +314,54 @@ # Finitism +0. []() 0. ["REAL" ANALYSIS Is A DEGENERATE CASE of DISCRETE ANALYSIS](http://sites.math.rutgers.edu/~zeilberg/mamarim/mamarimPDF/real.pdf) # Linear programming +0. []() 0. https://en.wikibooks.org/wiki/GLPK 0. https://white.ucc.asn.au/2018/05/28/Optimizing-your-diet-with-JuMP.html # Measure theory +0. []() 0. [Resources for Learning Measure Theory](https://bcmullins.github.io/measure_theory_resources/) # Combinatorics +0. []() 0. [Advances in Combinatorics](https://www.advancesincombinatorics.com/) 0. http://andy.kitchen/combinations.html 0. [Combinatorial Algorithms](http://www2.denizyuret.com/bib/kreher/donald1999combinatorial/combinatorialA.pdf) # Vector +0. []() 0. [A Student's Guide to Vectors and Tensors (Student's Guides)](https://www.amazon.com/Students-Guide-Vectors-Tensors-Guides/dp/0521171903) 0. https://www.researchgate.net/publication/327989714_Coordinate_Free_Vector_Algebra_in_R2 # Knot theory +0. []() 0. [KNOT THEORY and ITS APPLICATIONS](https://www.maths.ed.ac.uk/~v1ranick/papers/murasug3.pdf) 0. [Primes and Knots - Akshay Venkatesh](https://www.youtube.com/watch?v=jvoYgNYKyk0) 0. [The Knot Book](http://math.harvard.edu/~ctm/home/text/books/adams/knot_book/knot_book.pdf) # Axiom +0. []() 0. [INTRODUCTION TO AXIOMATIC REASONING](http://www.math.harvard.edu/~mazur/papers/Axiomatic.pdf) # Differential equations +0. []() 0. [ELEMENTARY DIFFERENTIAL EQUATIONS](http://ramanujan.math.trinity.edu/wtrench/texts/TRENCH_FREE_DIFFEQ_I.PDF) 0. [Lecture Notes on Difference Equations](http://people.math.aau.dk/~matarne/11-imat/notes2011a.pdf) # Algebraic geometry +0. []() 0. [The Stacks project](https://stacks.math.columbia.edu/) 0. http://nautil.us/issue/69/patterns/the-math-that-takes-newton-into-the-quantum-world 0. [Algebraic Geometry](http://www.mathematik.uni-kl.de/~gathmann/class/alggeom-2014/main.pdf) @@ -318,20 +369,24 @@ # Physics +0. []() 0. https://www.researchgate.net/publication/309533409_Beyond_Einstein_non-local_physics 0. https://www.theoretical-physics.com/dev/index.html # Spherical trigonometry +0. []() 0. https://en.wikipedia.org/wiki/Haversine_formula # Hyperbolic geometry +0. []() 0. [Intuitive Guide to Hyperbolic Functions](https://betterexplained.com/articles/hyperbolic-functions/) 0. [Hyperbolic Functions and Non-Hyperbolic Claims](https://elliptigon.com/hyperbolic-functions-explained/) # **Temp Cache** +0. []() 0. https://mathlets.org/mathlets/ 0. [Quadratic splines are useful too](https://wordsandbuttons.online/quadric_splines_are_useful_too.html) 0. [Derivations of Applied Mathematics](http://www.derivations.org/) diff --git a/documentation/bookmark/optimization/simd.md b/documentation/bookmark/optimization/simd.md deleted file mode 100644 index fa90da369..000000000 --- a/documentation/bookmark/optimization/simd.md +++ /dev/null @@ -1,5 +0,0 @@ -# Reference - -0. [Closing the Performance Gap Between Lisp and C](https://zenodo.org/record/6335627#.YpzmCDnMJH5) -0. [Vectorization, dependencies and outer loop vectorization: if you can’t beat them, join them](https://johnysswlab.com/vectorization-dependencies-and-outer-loop-vectorization-if-you-cant-beat-them-join-them/) - diff --git a/documentation/bookmark/optimization/simd__single_instruction_multiple_data.md b/documentation/bookmark/optimization/simd__single_instruction_multiple_data.md new file mode 100644 index 000000000..a0cb71744 --- /dev/null +++ b/documentation/bookmark/optimization/simd__single_instruction_multiple_data.md @@ -0,0 +1,7 @@ +# Reference + +0. []() +0. [10x Performance Improvement for Expression Evaluation Made Possible by Vectorized Execution and the Community](https://en.pingcap.com/blog/10x-performance-improvement-for-expression-evaluation-made-possible-by-vectorized-execution/) +0. [Closing the Performance Gap Between Lisp and C](https://zenodo.org/record/6335627#.YpzmCDnMJH5) +0. [Vectorization, dependencies and outer loop vectorization: if you can’t beat them, join them](https://johnysswlab.com/vectorization-dependencies-and-outer-loop-vectorization-if-you-cant-beat-them-join-them/) + diff --git a/documentation/bookmark/programming_language/syntax.md b/documentation/bookmark/programming_language/syntax.md index 5d28ea88d..b472a2c6b 100644 --- a/documentation/bookmark/programming_language/syntax.md +++ b/documentation/bookmark/programming_language/syntax.md @@ -1,6 +1,7 @@ # Reference 0. []() +0. [Wisp: Whitespace to Lisp](https://www.draketo.de/proj/wisp/) 0. [Composable and Compilable Macros: You Want it When?](https://www.cs.utah.edu/plt/publications/macromod.pdf) 0. [From Macros to Reusable Generative Programming](http://cs.brown.edu/~sk/Publications/Papers/Published/kfd-macro-to-gen-prog/) 0. [Not everything is an expression](https://codewords.recurse.com/issues/two/not-everything-is-an-expression) diff --git a/documentation/bookmark/security/authentication.md b/documentation/bookmark/security/authentication.md index 96284cf57..152f17b1b 100644 --- a/documentation/bookmark/security/authentication.md +++ b/documentation/bookmark/security/authentication.md @@ -1,5 +1,7 @@ # Reference +0. []() +0. [A07:2021 – Identification and Authentication Failures ](https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/) 0. [The future of authentication is both stateful and stateless](https://clerk.dev/blog/future-of-auth-stateless-and-stateful) 0. [Move beyond passwords](https://developer.apple.com/videos/play/wwdc2021/10106/) 0. [WebAuthn.io](https://webauthn.io/) diff --git a/stdlib/source/documentation/lux/macro/code.lux b/stdlib/source/documentation/lux/macro/code.lux deleted file mode 100644 index df50d5049..000000000 --- a/stdlib/source/documentation/lux/macro/code.lux +++ /dev/null @@ -1,37 +0,0 @@ -(.require - [library - [lux (.except char local global) - ["$" documentation] - [data - [text - ["%" \\format (.only format)]] - [collection - ["[0]" list]]]]] - [\\library - ["[0]" /]]) - -(.def .public documentation - (.List $.Module) - ($.module /._ - "" - [($.default /.bit) - ($.default /.nat) - ($.default /.int) - ($.default /.rev) - ($.default /.frac) - ($.default /.text) - ($.default /.symbol) - ($.default /.form) - ($.default /.variant) - ($.default /.tuple) - - ($.default /.equivalence) - ($.default /.format) - - ($.documentation /.local - "Produces a local symbol (an symbol with no module prefix).") - - ($.documentation /.replaced - "" - [(replaced original substitute ast)])] - [])) diff --git a/stdlib/source/documentation/lux/meta/code.lux b/stdlib/source/documentation/lux/meta/code.lux new file mode 100644 index 000000000..df50d5049 --- /dev/null +++ b/stdlib/source/documentation/lux/meta/code.lux @@ -0,0 +1,37 @@ +(.require + [library + [lux (.except char local global) + ["$" documentation] + [data + [text + ["%" \\format (.only format)]] + [collection + ["[0]" list]]]]] + [\\library + ["[0]" /]]) + +(.def .public documentation + (.List $.Module) + ($.module /._ + "" + [($.default /.bit) + ($.default /.nat) + ($.default /.int) + ($.default /.rev) + ($.default /.frac) + ($.default /.text) + ($.default /.symbol) + ($.default /.form) + ($.default /.variant) + ($.default /.tuple) + + ($.default /.equivalence) + ($.default /.format) + + ($.documentation /.local + "Produces a local symbol (an symbol with no module prefix).") + + ($.documentation /.replaced + "" + [(replaced original substitute ast)])] + [])) diff --git a/stdlib/source/format/lux/data/text.lux b/stdlib/source/format/lux/data/text.lux index af6e502b6..6dda0729b 100644 --- a/stdlib/source/format/lux/data/text.lux +++ b/stdlib/source/format/lux/data/text.lux @@ -31,13 +31,13 @@ ["[0]" ratio]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["[0]" template]] [meta ["[0]" location] ["[0]" symbol] - ["[0]" type]]]]) + ["[0]" type] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (.type .public (Format a) (-> a Text)) diff --git a/stdlib/source/library/lux/abstract/interval.lux b/stdlib/source/library/lux/abstract/interval.lux index 913f29274..e5ed383fc 100644 --- a/stdlib/source/library/lux/abstract/interval.lux +++ b/stdlib/source/library/lux/abstract/interval.lux @@ -4,8 +4,8 @@ [lux (.except)]] [// [equivalence (.only Equivalence)] - ["[0]" order] - [enum (.only Enum)]]) + [enum (.only Enum)] + ["[0]" order]]) (type .public (Interval a) (Interface diff --git a/stdlib/source/library/lux/abstract/monad/indexed.lux b/stdlib/source/library/lux/abstract/monad/indexed.lux index 8d03d011e..cba3ac6e1 100644 --- a/stdlib/source/library/lux/abstract/monad/indexed.lux +++ b/stdlib/source/library/lux/abstract/monad/indexed.lux @@ -7,7 +7,8 @@ [collection ["[0]" list (.use "[1]#[0]" functor mix)]]] ["[0]" macro (.only) - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" //]) diff --git a/stdlib/source/library/lux/control/concatenative.lux b/stdlib/source/library/lux/control/concatenative.lux index 3a24dedfc..795d387cb 100644 --- a/stdlib/source/library/lux/control/concatenative.lux +++ b/stdlib/source/library/lux/control/concatenative.lux @@ -13,9 +13,7 @@ ["[0]" list (.use "[1]#[0]" mix functor)]]] ["[0]" macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["[0]" template]] [math [number ["n" nat] @@ -23,7 +21,9 @@ ["r" rev] ["f" frac]]] ["[0]" meta (.only) - ["[0]" type]]]] + ["[0]" type] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] [// ["<>" parser (.use "[1]#[0]" monad)]]) diff --git a/stdlib/source/library/lux/control/continuation.lux b/stdlib/source/library/lux/control/continuation.lux index a9e62ac66..8a398b377 100644 --- a/stdlib/source/library/lux/control/continuation.lux +++ b/stdlib/source/library/lux/control/continuation.lux @@ -8,7 +8,8 @@ [control ["[0]" function]] [macro (.only with_symbols) - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["<[1]>" \\parser]]]]]) diff --git a/stdlib/source/library/lux/control/exception.lux b/stdlib/source/library/lux/control/exception.lux index cf45dfe13..073db8397 100644 --- a/stdlib/source/library/lux/control/exception.lux +++ b/stdlib/source/library/lux/control/exception.lux @@ -1,8 +1,6 @@ (.require [library [lux (.except except with) - ["[0]" macro] - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -13,16 +11,17 @@ ["[0]" text (.use "[1]#[0]" monoid)] [collection ["[0]" list (.use "[1]#[0]" functor mix)]]] - [macro - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]] + ["[0]" macro (.only) [syntax (.only syntax) ["|[0]|" input] ["[0]" type ["|[1]_[0]|" variable]]]] [math [number - ["n" nat (.use "[1]#[0]" decimal)]]]]] + ["n" nat (.use "[1]#[0]" decimal)]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] [// ["//" try (.only Try)]]) diff --git a/stdlib/source/library/lux/control/function/contract.lux b/stdlib/source/library/lux/control/function/contract.lux index df8702fed..bb6ef6731 100644 --- a/stdlib/source/library/lux/control/function/contract.lux +++ b/stdlib/source/library/lux/control/function/contract.lux @@ -7,12 +7,13 @@ [text ["%" \\format (.only format)]]] [macro (.only with_symbols) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number - ["i" int]]]]]) + ["i" int]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (with_template [] [(exception .public ( [condition Code]) diff --git a/stdlib/source/library/lux/control/function/inline.lux b/stdlib/source/library/lux/control/function/inline.lux index 98d6e56c9..0564edc3d 100644 --- a/stdlib/source/library/lux/control/function/inline.lux +++ b/stdlib/source/library/lux/control/function/inline.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -10,10 +9,11 @@ [collection ["[0]" list (.use "[1]#[0]" monad)]]] ["[0]" macro (.only) - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]] [syntax (.only syntax) - ["|[0]|" export]]]]]) + ["|[0]|" export]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (def declaration (Parser [Text (List Code)]) diff --git a/stdlib/source/library/lux/control/function/mutual.lux b/stdlib/source/library/lux/control/function/mutual.lux index fb74ef01e..f00643060 100644 --- a/stdlib/source/library/lux/control/function/mutual.lux +++ b/stdlib/source/library/lux/control/function/mutual.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except Definition let def macro) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -15,10 +14,11 @@ ["[0]" list (.use "[1]#[0]" functor)]]] ["[0]" macro (.only) ["[0]" local] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]] [syntax (.only syntax) - ["[0]" declaration (.only Declaration)]]]]] + ["[0]" declaration (.only Declaration)]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" //]) (type Mutual diff --git a/stdlib/source/library/lux/control/io.lux b/stdlib/source/library/lux/control/io.lux index 13eda4b75..bd0e441e2 100644 --- a/stdlib/source/library/lux/control/io.lux +++ b/stdlib/source/library/lux/control/io.lux @@ -7,12 +7,12 @@ [monad (.only Monad do)]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" template] - ["[0]" code - ["<[1]>" \\parser]]] + ["[0]" template]] [meta [type - [primitive (.except)]]]]]) + [primitive (.except)]] + ["[0]" code + ["<[1]>" \\parser]]]]]) (primitive .public (IO a) (-> Any a) diff --git a/stdlib/source/library/lux/control/lazy.lux b/stdlib/source/library/lux/control/lazy.lux index d2bf0531f..857fdccff 100644 --- a/stdlib/source/library/lux/control/lazy.lux +++ b/stdlib/source/library/lux/control/lazy.lux @@ -11,12 +11,12 @@ [concurrency ["[0]" atom]]] [macro (.only with_symbols) - [syntax (.only syntax)] - ["[0]" code - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [meta [type (.only sharing) - [primitive (.except)]]]]]) + [primitive (.except)]] + ["[0]" code + ["<[1]>" \\parser]]]]]) (primitive .public (Lazy a) (-> [] a) diff --git a/stdlib/source/library/lux/control/pipe.lux b/stdlib/source/library/lux/control/pipe.lux index 99e7a697c..cdd6589b8 100644 --- a/stdlib/source/library/lux/control/pipe.lux +++ b/stdlib/source/library/lux/control/pipe.lux @@ -11,13 +11,14 @@ [collection ["[0]" list (.use "[1]#[0]" monad)]]] [macro (.only with_symbols) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + [syntax (.only syntax)]] [math [number ["n" nat] - ["i" int]]]]]) + ["i" int]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (def body (Parser (List Code)) diff --git a/stdlib/source/library/lux/control/remember.lux b/stdlib/source/library/lux/control/remember.lux index bce726fb1..227a7bd4b 100644 --- a/stdlib/source/library/lux/control/remember.lux +++ b/stdlib/source/library/lux/control/remember.lux @@ -14,10 +14,10 @@ [time ["[0]" instant] ["[0]" date (.only Date) (.use "[1]#[0]" order)]] - ["[0]" meta] [macro [syntax (.only syntax)] - ["[0]" template] + ["[0]" template]] + ["[0]" meta (.only) ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]]) diff --git a/stdlib/source/library/lux/control/security/capability.lux b/stdlib/source/library/lux/control/security/capability.lux index 90a503c3a..2a8627855 100644 --- a/stdlib/source/library/lux/control/security/capability.lux +++ b/stdlib/source/library/lux/control/security/capability.lux @@ -16,13 +16,13 @@ [meta [type [primitive (.except)]]] - ["[0]" meta] ["[0]" macro (.only) - ["[0]" code (.only) - ["<[1]>" \\parser]] [syntax (.only syntax) ["|[0]|" export] - ["|[0]|" declaration]]]]]) + ["|[0]|" declaration]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (primitive .public (Capability brand input output) (-> input output) diff --git a/stdlib/source/library/lux/data/collection/sequence.lux b/stdlib/source/library/lux/data/collection/sequence.lux index 1f5186289..77873fa40 100644 --- a/stdlib/source/library/lux/data/collection/sequence.lux +++ b/stdlib/source/library/lux/data/collection/sequence.lux @@ -27,13 +27,14 @@ ["[1]" \\unsafe (.only Array)]]]] [macro [syntax (.only syntax)] - ["^" pattern] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["^" pattern]] [math [number ["n" nat] - ["[0]" i64]]]]]) + ["[0]" i64]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (type (Node a) (Variant diff --git a/stdlib/source/library/lux/data/collection/stream.lux b/stdlib/source/library/lux/data/collection/stream.lux index 4e82cbe1e..3c41ccda0 100644 --- a/stdlib/source/library/lux/data/collection/stream.lux +++ b/stdlib/source/library/lux/data/collection/stream.lux @@ -12,12 +12,13 @@ [collection ["[0]" list (.use "[1]#[0]" monad)]]] [macro (.only with_symbols) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + [syntax (.only syntax)]] [math [number - ["n" nat]]]]]) + ["n" nat]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (type .public (Stream a) (Cont [a (Stream a)])) diff --git a/stdlib/source/library/lux/data/collection/tree.lux b/stdlib/source/library/lux/data/collection/tree.lux index 64288458d..2e7c7b59d 100644 --- a/stdlib/source/library/lux/data/collection/tree.lux +++ b/stdlib/source/library/lux/data/collection/tree.lux @@ -12,7 +12,8 @@ [collection ["[0]" list (.use "[1]#[0]" monad mix)]]] [macro - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]]) diff --git a/stdlib/source/library/lux/data/format/css/class.lux b/stdlib/source/library/lux/data/format/css/class.lux index 95ecbb9dc..cf0d3423a 100644 --- a/stdlib/source/library/lux/data/format/css/class.lux +++ b/stdlib/source/library/lux/data/format/css/class.lux @@ -8,9 +8,9 @@ ["[0]" text (.use "[1]#[0]" hash) ["%" \\format (.only format)]]] [macro - [syntax (.only syntax)] - ["[0]" code]] + [syntax (.only syntax)]] [meta + ["[0]" code] [type [primitive (.except)]]]]]) diff --git a/stdlib/source/library/lux/data/format/css/font.lux b/stdlib/source/library/lux/data/format/css/font.lux index 37d63c8c7..5d97d5382 100644 --- a/stdlib/source/library/lux/data/format/css/font.lux +++ b/stdlib/source/library/lux/data/format/css/font.lux @@ -1,11 +1,9 @@ (.require [library [lux (.except) - [type - abstract] - [control - [parser - ["s" code]]] + [meta + [code + ["s" \\parser]]] [world [net (.only URL)]]]] ["[0]" // diff --git a/stdlib/source/library/lux/data/format/css/id.lux b/stdlib/source/library/lux/data/format/css/id.lux index d4ce16d6a..ee61013bf 100644 --- a/stdlib/source/library/lux/data/format/css/id.lux +++ b/stdlib/source/library/lux/data/format/css/id.lux @@ -8,9 +8,9 @@ ["[0]" text (.use "[1]#[0]" hash) ["%" \\format (.only format)]]] [macro - [syntax (.only syntax)] - ["[0]" code]] + [syntax (.only syntax)]] [meta + ["[0]" code] [type [primitive (.except)]]]]]) diff --git a/stdlib/source/library/lux/data/format/css/property.lux b/stdlib/source/library/lux/data/format/css/property.lux index 089e117c2..1a3b8ee02 100644 --- a/stdlib/source/library/lux/data/format/css/property.lux +++ b/stdlib/source/library/lux/data/format/css/property.lux @@ -1,9 +1,6 @@ (.require [library [lux (.except All Location) - [control - [parser - ["s" code]]] [data ["[0]" text]] [macro @@ -11,6 +8,8 @@ ["[0]" template] ["[0]" code]] [meta + [code + ["s" \\parser]] [type [primitive (.except)]]]]] [// diff --git a/stdlib/source/library/lux/data/format/css/query.lux b/stdlib/source/library/lux/data/format/css/query.lux index ec39e8425..d3edc6d31 100644 --- a/stdlib/source/library/lux/data/format/css/query.lux +++ b/stdlib/source/library/lux/data/format/css/query.lux @@ -1,17 +1,15 @@ (.require [library [lux (.except and or not) - [control - [parser - ["s" code]]] [data - ["[0]" text + ["[0]" text (.only) ["%" \\format (.only format)]]] [macro - ["[0]" template] - ["[0]" code] - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" template]] [meta + ["[0]" code (.only syntax) + ["s" \\parser]] [type [primitive (.except)]]]]] ["[0]" // diff --git a/stdlib/source/library/lux/data/format/css/value.lux b/stdlib/source/library/lux/data/format/css/value.lux index 14d2a2cec..d4732c5da 100644 --- a/stdlib/source/library/lux/data/format/css/value.lux +++ b/stdlib/source/library/lux/data/format/css/value.lux @@ -12,9 +12,7 @@ ["[0]" list (.use "[1]#[0]" functor)]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math [number ["n" nat] @@ -23,7 +21,9 @@ ["f" frac]]] [meta [type - [primitive (.except)]]] + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [world [net (.only URL)]]]] [// diff --git a/stdlib/source/library/lux/data/format/json.lux b/stdlib/source/library/lux/data/format/json.lux index 2bb8638fb..d419ac68f 100644 --- a/stdlib/source/library/lux/data/format/json.lux +++ b/stdlib/source/library/lux/data/format/json.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except has) - ["[0]" meta (.only monad)] [abstract [equivalence (.only Equivalence)] [codec (.only Codec)] @@ -24,13 +23,14 @@ ["[0]" dictionary (.only Dictionary)]]] [macro [syntax (.only syntax)] - ["^" pattern] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["^" pattern]] [math [number ["n" nat] - ["f" frac (.use "[1]#[0]" decimal)]]]]]) + ["f" frac (.use "[1]#[0]" decimal)]]] + ["[0]" meta (.only monad) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (with_template [ ] [(type .public diff --git a/stdlib/source/library/lux/data/text/escape.lux b/stdlib/source/library/lux/data/text/escape.lux index aff108c29..9963627fb 100644 --- a/stdlib/source/library/lux/data/text/escape.lux +++ b/stdlib/source/library/lux/data/text/escape.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except) - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -14,7 +13,8 @@ ["n" nat]]] [macro [syntax (.only syntax)] - ["^" pattern] + ["^" pattern]] + ["[0]" meta (.only) ["[0]" code (.only) ["<[1]>" \\parser]]]]] ["[0]" // (.only Char) diff --git a/stdlib/source/library/lux/data/text/regex.lux b/stdlib/source/library/lux/data/text/regex.lux index c9a8a5d68..39fb077d0 100644 --- a/stdlib/source/library/lux/data/text/regex.lux +++ b/stdlib/source/library/lux/data/text/regex.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except pattern) - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -17,12 +16,13 @@ ["[0]" list (.use "[1]#[0]" mix monad)]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["^" pattern] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["^" pattern]] [math [number (.only hex) - ["n" nat (.use "[1]#[0]" decimal)]]]]] + ["n" nat (.use "[1]#[0]" decimal)]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] ["[0]" // (.only) ["%" \\format (.only format)]]) diff --git a/stdlib/source/library/lux/debug.lux b/stdlib/source/library/lux/debug.lux index 78160f4cd..217cb3947 100644 --- a/stdlib/source/library/lux/debug.lux +++ b/stdlib/source/library/lux/debug.lux @@ -25,9 +25,7 @@ [macro ["^" pattern] ["[0]" template] - ["[0]" syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" syntax (.only syntax)]] [math [number [ratio (.only Ratio)] @@ -41,7 +39,9 @@ [day (.only Day)]] [meta ["[0]" type (.only) - ["<[1]>" \\parser (.only Parser)]]]]]) + ["<[1]>" \\parser (.only Parser)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (with_expansions [ (these (import java/lang/String "[1]::[0]") diff --git a/stdlib/source/library/lux/documentation.lux b/stdlib/source/library/lux/documentation.lux index 3f7df3b4e..1aaf71e5c 100644 --- a/stdlib/source/library/lux/documentation.lux +++ b/stdlib/source/library/lux/documentation.lux @@ -21,14 +21,14 @@ ["[0]" macro (.only) [syntax (.only syntax)] ["^" pattern] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["[0]" template]] [math [number ["n" nat]]] ["[0]" meta (.only) - ["[0]" type (.use "[1]#[0]" equivalence)]] + ["[0]" type (.use "[1]#[0]" equivalence)] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [tool [compiler [language diff --git a/stdlib/source/library/lux/extension.lux b/stdlib/source/library/lux/extension.lux index cfa13af9b..abd125701 100644 --- a/stdlib/source/library/lux/extension.lux +++ b/stdlib/source/library/lux/extension.lux @@ -10,7 +10,8 @@ [collection ["[0]" list (.use "[1]#[0]" functor)]]] [macro (.only with_symbols) - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["" \\parser (.only Parser)]]] [tool diff --git a/stdlib/source/library/lux/ffi.jvm.lux b/stdlib/source/library/lux/ffi.jvm.lux index 69090b80f..405d5bf09 100644 --- a/stdlib/source/library/lux/ffi.jvm.lux +++ b/stdlib/source/library/lux/ffi.jvm.lux @@ -23,12 +23,15 @@ [syntax (.only syntax)] ["^" pattern] ["[0]" template] - ["[0]" context] - ["[0]" code (.only) - ["<[1]>" \\parser(.only Parser)]]] + ["[0]" context]] [math [number ["n" nat]]] + [meta + ["[0]" type (.use "[1]#[0]" equivalence) + ["[0]" check]] + ["[0]" code (.only) + ["<[1]>" \\parser(.only Parser)]]] [target ["[0]" jvm [encoding @@ -39,10 +42,7 @@ ["[0]" descriptor] ["[0]" signature] ["[0]" reflection] - ["[0]" parser]]]] - [meta - ["[0]" type (.use "[1]#[0]" equivalence) - ["[0]" check]]]]]) + ["[0]" parser]]]]]]) (def internal (-> External Text) diff --git a/stdlib/source/library/lux/ffi.lux b/stdlib/source/library/lux/ffi.lux index 44e4e685e..90681746d 100644 --- a/stdlib/source/library/lux/ffi.lux +++ b/stdlib/source/library/lux/ffi.lux @@ -17,14 +17,14 @@ ["[0]" list (.use "[1]#[0]" monad mix)]]] ["[0]" macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" template] + ["[0]" template]] + [meta + [type + [primitive (.except)]] ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]] ["@" target (.only) - ["[0]" js]] - [meta - [type - [primitive (.except)]]]]]) + ["[0]" js]]]]) (with_expansions [ (for @.js "js constant" @.python "python constant" diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux index f713ebf1c..e35e7844d 100644 --- a/stdlib/source/library/lux/ffi.old.lux +++ b/stdlib/source/library/lux/ffi.old.lux @@ -21,11 +21,11 @@ ["[0]" macro (.only with_symbols) [syntax (.only syntax)] ["^" pattern] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["[0]" template]] ["[0]" meta (.only) - ["[0]" type (.use "[1]#[0]" equivalence)]]]]) + ["[0]" type (.use "[1]#[0]" equivalence)] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (with_template [ ] [(def .public ( value) diff --git a/stdlib/source/library/lux/ffi.php.lux b/stdlib/source/library/lux/ffi.php.lux index a720cc6f1..42df739ad 100644 --- a/stdlib/source/library/lux/ffi.php.lux +++ b/stdlib/source/library/lux/ffi.php.lux @@ -16,12 +16,12 @@ ["[0]" list (.use "[1]#[0]" functor)]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["[0]" template]] ["[0]" meta (.only) [type - abstract]]]]) + abstract] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (primitive .public (Object brand) Any) diff --git a/stdlib/source/library/lux/ffi.scm.lux b/stdlib/source/library/lux/ffi.scm.lux index 679a9b58e..04d157393 100644 --- a/stdlib/source/library/lux/ffi.scm.lux +++ b/stdlib/source/library/lux/ffi.scm.lux @@ -16,12 +16,12 @@ ["[0]" list (.use "[1]#[0]" functor)]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["[0]" template]] ["[0]" meta (.only) [type - abstract]]]]) + abstract] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (primitive .public (Object brand) Any) diff --git a/stdlib/source/library/lux/ffi/export.js.lux b/stdlib/source/library/lux/ffi/export.js.lux index a887d9f84..2a0d25f6f 100644 --- a/stdlib/source/library/lux/ffi/export.js.lux +++ b/stdlib/source/library/lux/ffi/export.js.lux @@ -2,7 +2,6 @@ [library [lux (.except) [extension (.only declaration)] - ["[0]" meta] ["[0]" static] [abstract ["[0]" monad (.only do)]] @@ -15,11 +14,12 @@ ["[0]" list (.use "[1]#[0]" monad mix)] ["[0]" set]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" random]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] [target ["/" js]] [tool @@ -51,39 +51,39 @@ random.nat)] (declaration ( self phase archive [name .text term .any]) - (do [! phase.monad] - [next declaration.analysis - [_ term] (<| declaration.lifted_analysis - type.inferring - (next archive term)) + (do [! phase.monad] + [next declaration.analysis + [_ term] (<| declaration.lifted_analysis + type.inferring + (next archive term)) - next declaration.synthesis - term (declaration.lifted_synthesis - (next archive term)) + next declaration.synthesis + term (declaration.lifted_synthesis + (next archive term)) - dependencies (declaration.lifted_generation - (dependency.dependencies archive term)) + dependencies (declaration.lifted_generation + (dependency.dependencies archive term)) - next declaration.generation - [interim_artifacts term] (declaration.lifted_generation - (generation.with_interim_artifacts archive - (next archive term))) + next declaration.generation + [interim_artifacts term] (declaration.lifted_generation + (generation.with_interim_artifacts archive + (next archive term))) - _ (declaration.lifted_generation - (do ! - [@self (generation.learn_custom name (list#mix set.has dependencies interim_artifacts)) - .let [$module (/.var "module") - $exports (/.the "exports" $module) - definition (/.define (/.var name) term) - export (/.when (/.not (/.= (/.string "undefined") (/.type_of $module))) - (/.set (/.the name $exports) (/.var name))) - code (all /.then - definition - export)] - _ (generation.execute! definition) - _ (generation.save! @self {.#None} code)] - (generation.log! (%.format "Export " (%.text name)))))] - (in declaration.no_requirements))) + _ (declaration.lifted_generation + (do ! + [@self (generation.learn_custom name (list#mix set.has dependencies interim_artifacts)) + .let [$module (/.var "module") + $exports (/.the "exports" $module) + definition (/.define (/.var name) term) + export (/.when (/.not (/.= (/.string "undefined") (/.type_of $module))) + (/.set (/.the name $exports) (/.var name))) + code (all /.then + definition + export)] + _ (generation.execute! definition) + _ (generation.save! @self {.#None} code)] + (generation.log! (%.format "Export " (%.text name)))))] + (in declaration.no_requirements))) (def .public export (syntax (_ [exports (<>.many .any)]) diff --git a/stdlib/source/library/lux/ffi/export.jvm.lux b/stdlib/source/library/lux/ffi/export.jvm.lux index 6aebb2c13..876491f0a 100644 --- a/stdlib/source/library/lux/ffi/export.jvm.lux +++ b/stdlib/source/library/lux/ffi/export.jvm.lux @@ -7,7 +7,8 @@ [collection ["[0]" list (.use "[1]#[0]" monad)]]] [macro - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" //]) diff --git a/stdlib/source/library/lux/ffi/export.lua.lux b/stdlib/source/library/lux/ffi/export.lua.lux index c38eaf711..ef326c6ab 100644 --- a/stdlib/source/library/lux/ffi/export.lua.lux +++ b/stdlib/source/library/lux/ffi/export.lua.lux @@ -2,7 +2,6 @@ [library [lux (.except) [extension (.only declaration)] - ["[0]" meta] ["[0]" static] [abstract ["[0]" monad (.only do)]] @@ -15,11 +14,12 @@ ["[0]" list (.use "[1]#[0]" monad mix)] ["[0]" set]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" random]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] [target ["/" lua]] [tool @@ -55,51 +55,51 @@ random.nat)] (declaration ( self phase archive [name .text term .any]) - (do [! phase.monad] - [next declaration.analysis - [_ term] (<| declaration.lifted_analysis - type.inferring - (next archive term)) + (do [! phase.monad] + [next declaration.analysis + [_ term] (<| declaration.lifted_analysis + type.inferring + (next archive term)) - next declaration.synthesis - term (declaration.lifted_synthesis - (next archive term)) + next declaration.synthesis + term (declaration.lifted_synthesis + (next archive term)) - dependencies (declaration.lifted_generation - (dependency.dependencies archive term)) + dependencies (declaration.lifted_generation + (dependency.dependencies archive term)) - next declaration.generation - [interim_artifacts term] (declaration.lifted_generation - (generation.with_interim_artifacts archive - (next archive term))) + next declaration.generation + [interim_artifacts term] (declaration.lifted_generation + (generation.with_interim_artifacts archive + (next archive term))) - _ (declaration.lifted_generation - (do ! - [@self (generation.learn_custom name (list#mix set.has dependencies interim_artifacts)) - .let [$exports (/.var "_REQUIREDNAME") - $global (/.var "_G") - exporting? (/.not (/.= /.nil $exports)) - no_exports? (/.= /.nil (/.item $exports $global)) - initialize_exports! (/.set (list (/.item $exports $global)) (/.table (list))) - export_definition! (/.set (|> $global - (/.item $exports) - (/.item (/.string name)) - (list)) - (/.var name)) - export! (/.when exporting? - (all /.then - (/.when no_exports? - initialize_exports!) - export_definition! - ))] - _ (generation.execute! (all /.then - (/.set (list (/.var name)) term) - export!)) - _ (generation.save! @self {.#None} (all /.then - (/.local/1 (/.var name) term) - export!))] - (generation.log! (%.format "Export " (%.text name)))))] - (in declaration.no_requirements))) + _ (declaration.lifted_generation + (do ! + [@self (generation.learn_custom name (list#mix set.has dependencies interim_artifacts)) + .let [$exports (/.var "_REQUIREDNAME") + $global (/.var "_G") + exporting? (/.not (/.= /.nil $exports)) + no_exports? (/.= /.nil (/.item $exports $global)) + initialize_exports! (/.set (list (/.item $exports $global)) (/.table (list))) + export_definition! (/.set (|> $global + (/.item $exports) + (/.item (/.string name)) + (list)) + (/.var name)) + export! (/.when exporting? + (all /.then + (/.when no_exports? + initialize_exports!) + export_definition! + ))] + _ (generation.execute! (all /.then + (/.set (list (/.var name)) term) + export!)) + _ (generation.save! @self {.#None} (all /.then + (/.local/1 (/.var name) term) + export!))] + (generation.log! (%.format "Export " (%.text name)))))] + (in declaration.no_requirements))) (def .public export (syntax (_ [exports (<>.many .any)]) diff --git a/stdlib/source/library/lux/ffi/export.py.lux b/stdlib/source/library/lux/ffi/export.py.lux index be61ff11e..4c1fe2cc0 100644 --- a/stdlib/source/library/lux/ffi/export.py.lux +++ b/stdlib/source/library/lux/ffi/export.py.lux @@ -2,7 +2,6 @@ [library [lux (.except) [extension (.only declaration)] - ["[0]" meta] ["[0]" static] [abstract ["[0]" monad (.only do)]] @@ -15,11 +14,12 @@ ["[0]" list (.use "[1]#[0]" monad mix)] ["[0]" set]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" random]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] [target ["/" python]] [tool @@ -51,32 +51,32 @@ random.nat)] (declaration ( self phase archive [name .text term .any]) - (do [! phase.monad] - [next declaration.analysis - [_ term] (<| declaration.lifted_analysis - type.inferring - (next archive term)) + (do [! phase.monad] + [next declaration.analysis + [_ term] (<| declaration.lifted_analysis + type.inferring + (next archive term)) - next declaration.synthesis - term (declaration.lifted_synthesis - (next archive term)) + next declaration.synthesis + term (declaration.lifted_synthesis + (next archive term)) - dependencies (declaration.lifted_generation - (dependency.dependencies archive term)) + dependencies (declaration.lifted_generation + (dependency.dependencies archive term)) - next declaration.generation - [interim_artifacts term] (declaration.lifted_generation - (generation.with_interim_artifacts archive - (next archive term))) + next declaration.generation + [interim_artifacts term] (declaration.lifted_generation + (generation.with_interim_artifacts archive + (next archive term))) - _ (declaration.lifted_generation - (do ! - [@self (generation.learn_custom name (list#mix set.has dependencies interim_artifacts)) - .let [code (/.set (list (/.item (/.string name) /.globals/0)) term)] - _ (generation.execute! code) - _ (generation.save! @self {.#None} code)] - (generation.log! (%.format "Export " (%.text name)))))] - (in declaration.no_requirements))) + _ (declaration.lifted_generation + (do ! + [@self (generation.learn_custom name (list#mix set.has dependencies interim_artifacts)) + .let [code (/.set (list (/.item (/.string name) /.globals/0)) term)] + _ (generation.execute! code) + _ (generation.save! @self {.#None} code)] + (generation.log! (%.format "Export " (%.text name)))))] + (in declaration.no_requirements))) (def .public export (syntax (_ [exports (<>.many .any)]) diff --git a/stdlib/source/library/lux/ffi/export.rb.lux b/stdlib/source/library/lux/ffi/export.rb.lux index b29982a1c..ff00305b6 100644 --- a/stdlib/source/library/lux/ffi/export.rb.lux +++ b/stdlib/source/library/lux/ffi/export.rb.lux @@ -2,7 +2,6 @@ [library [lux (.except global) [extension (.only declaration)] - ["[0]" meta] ["[0]" static] ["[0]" type] [abstract @@ -17,11 +16,12 @@ ["[0]" list (.use "[1]#[0]" monad mix)] ["[0]" set]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" random]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] [target ["/" ruby]] [tool @@ -90,42 +90,42 @@ (declaration ( self phase archive [global? .bit name .text term .any]) - (do [! phase.monad] - [next declaration.analysis - [type term] (<| declaration.lifted_analysis - analysis.inferring - (next archive term)) + (do [! phase.monad] + [next declaration.analysis + [type term] (<| declaration.lifted_analysis + analysis.inferring + (next archive term)) - next declaration.synthesis - term (declaration.lifted_synthesis - (next archive term)) + next declaration.synthesis + term (declaration.lifted_synthesis + (next archive term)) - dependencies (declaration.lifted_generation - (dependency.dependencies archive term)) + dependencies (declaration.lifted_generation + (dependency.dependencies archive term)) - next declaration.generation - [interim_artifacts term] (declaration.lifted_generation - (generation.with_interim_artifacts archive - (next archive term))) + next declaration.generation + [interim_artifacts term] (declaration.lifted_generation + (generation.with_interim_artifacts archive + (next archive term))) - _ (declaration.lifted_generation - (do ! - [@self (generation.learn_custom name (list#mix set.has dependencies interim_artifacts)) - .let [[:input:/* :output:] (type.flat_function type) - code (if global? - (/.set (list (/.manual name)) term) - (case :input:/* - {.#End} - (/.function (/.manual name) (list) - (/.return term)) + _ (declaration.lifted_generation + (do ! + [@self (generation.learn_custom name (list#mix set.has dependencies interim_artifacts)) + .let [[:input:/* :output:] (type.flat_function type) + code (if global? + (/.set (list (/.manual name)) term) + (case :input:/* + {.#End} + (/.function (/.manual name) (list) + (/.return term)) - _ - (/.statement (/.apply (list (/.string name) term) {.#None} - (/.manual "define_method")))))] - _ (generation.execute! code) - _ (generation.save! @self {.#None} code)] - (generation.log! (%.format "Export " (%.text name)))))] - (in declaration.no_requirements))) + _ + (/.statement (/.apply (list (/.string name) term) {.#None} + (/.manual "define_method")))))] + _ (generation.execute! code) + _ (generation.save! @self {.#None} code)] + (generation.log! (%.format "Export " (%.text name)))))] + (in declaration.no_requirements))) (def .public export (syntax (_ [exports (<>.many .any)]) diff --git a/stdlib/source/library/lux/macro.lux b/stdlib/source/library/lux/macro.lux index e14bf061b..612077261 100644 --- a/stdlib/source/library/lux/macro.lux +++ b/stdlib/source/library/lux/macro.lux @@ -11,12 +11,11 @@ [number ["[0]" nat] ["[0]" int]]]]] - [/ - ["[0]" code] - ["[0]" // - ["[1]" meta (.only) - ["[0]" location] - ["[0]" symbol (.use "[1]#[0]" codec)]]]]) + ["[0]" // + ["[1]" meta (.only) + ["[0]" code] + ["[0]" location] + ["[0]" symbol (.use "[1]#[0]" codec)]]]) (def .public (single_expansion syntax) (-> Code (Meta (List Code))) diff --git a/stdlib/source/library/lux/macro/code.lux b/stdlib/source/library/lux/macro/code.lux deleted file mode 100644 index dc182b124..000000000 --- a/stdlib/source/library/lux/macro/code.lux +++ /dev/null @@ -1,135 +0,0 @@ -(.require - [library - [lux (.except nat int rev local global symbol) - [abstract - [equivalence (.only Equivalence)]] - [data - ["[0]" product] - ["[0]" bit] - ["[0]" text (.use "[1]#[0]" monoid equivalence)] - [collection - ["[0]" list (.use "[1]#[0]" functor mix)]]] - [macro - ["^" pattern]] - [math - [number - ["[0]" nat] - ["[0]" int] - ["[0]" rev] - ["[0]" frac]]] - [meta - ["[0]" location] - ["[0]" symbol]]]]) - -... (type (Code' w) -... {.#Bit Bit} -... {.#Nat Nat} -... {.#Int Int} -... {.#Rev Rev} -... {.#Frac Frac} -... {.#Text Text} -... {.#Symbol Symbol} -... {.#Form (List (w (Code' w)))} -... {.#Variant (List (w (Code' w)))} -... {.#Tuple (List (w (Code' w)))}) - -... (type Code -... (Ann Location (Code' (Ann Location)))) - -(with_template [ ] - [(def .public ( x) - (-> Code) - [location.dummy { x}])] - - [bit Bit .#Bit] - [nat Nat .#Nat] - [int Int .#Int] - [rev Rev .#Rev] - [frac Frac .#Frac] - [text Text .#Text] - [symbol Symbol .#Symbol] - [form (List Code) .#Form] - [variant (List Code) .#Variant] - [tuple (List Code) .#Tuple] - ) - -(with_template [ ] - [(def .public ( name) - (-> Text Code) - [location.dummy { ["" name]}])] - - [local .#Symbol]) - -(def .public equivalence - (Equivalence Code) - (implementation - (def (= x y) - (case [x y] - (^.with_template [ ] - [[[_ { x'}] [_ { y'}]] - (at = x' y')]) - ([.#Bit bit.equivalence] - [.#Nat nat.equivalence] - [.#Int int.equivalence] - [.#Rev rev.equivalence] - [.#Frac frac.equivalence] - [.#Text text.equivalence] - [.#Symbol symbol.equivalence]) - - (^.with_template [] - [[[_ { xs'}] [_ { ys'}]] - (at (list.equivalence =) = xs' ys')]) - ([.#Form] - [.#Variant] - [.#Tuple]) - - _ - false)))) - -(def .public (format ast) - (-> Code Text) - (case ast - (^.with_template [ ] - [[_ { value}] - (at encoded value)]) - ([.#Bit bit.codec] - [.#Nat nat.decimal] - [.#Int int.decimal] - [.#Rev rev.decimal] - [.#Frac frac.decimal] - [.#Symbol symbol.codec]) - - [_ {.#Text value}] - (text.format value) - - (^.with_template [ ] - [[_ { members}] - (all text#composite - - (list#mix (function (_ next prev) - (let [next (format next)] - (if (text#= "" prev) - next - (all text#composite prev " " next)))) - "" - members) - )]) - ([.#Form "(" ")"] - [.#Variant "{" "}"] - [.#Tuple "[" "]"]) - )) - -(def .public (replaced original substitute ast) - (-> Code Code Code Code) - (if (at ..equivalence = original ast) - substitute - (case ast - (^.with_template [] - [[location { parts}] - [location { (list#each (replaced original substitute) parts)}]]) - ([.#Form] - [.#Variant] - [.#Tuple]) - - _ - ast))) diff --git a/stdlib/source/library/lux/macro/context.lux b/stdlib/source/library/lux/macro/context.lux index b85f94af8..e1a127bf9 100644 --- a/stdlib/source/library/lux/macro/context.lux +++ b/stdlib/source/library/lux/macro/context.lux @@ -14,15 +14,13 @@ [collection ["[0]" list (.only) ["[0]" property]]]] - [macro - ["[0]" code - ["?[1]" \\parser]]] ["[0]" meta (.only) - ["[0]" symbol (.use "[1]#[0]" codec)]]]] + ["[0]" symbol (.use "[1]#[0]" codec)] + ["[0]" code (.only) + ["?[1]" \\parser]]]]] ["[0]" // (.only) [syntax (.only syntax)] - ["^" pattern] - ["[0]" code]]) + ["^" pattern]]) (type .public Stack List) diff --git a/stdlib/source/library/lux/macro/local.lux b/stdlib/source/library/lux/macro/local.lux index 29fa9820c..036da756f 100644 --- a/stdlib/source/library/lux/macro/local.lux +++ b/stdlib/source/library/lux/macro/local.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except with let) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -13,11 +12,12 @@ ["[0]" text] [collection ["[0]" list (.use "[1]#[0]" functor) - ["[0]" property]]]]]] + ["[0]" property]]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] ["[0]" // (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]]) + [syntax (.only syntax)]]) (exception .public (unknown_module [module Text]) (exception.report diff --git a/stdlib/source/library/lux/macro/syntax.lux b/stdlib/source/library/lux/macro/syntax.lux index 5f8242c85..8e9d32686 100644 --- a/stdlib/source/library/lux/macro/syntax.lux +++ b/stdlib/source/library/lux/macro/syntax.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -10,10 +9,11 @@ [data ["[0]" text (.use "[1]#[0]" monoid)] [collection - ["[0]" list]]]]] - ["[0]" // (.only with_symbols) - ["[0]" code (.only) - ["" \\parser (.only Parser)]]]) + ["[0]" list]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["" \\parser (.only Parser)]]]]] + ["[0]" // (.only with_symbols)]) (def (self_documenting binding parser) (All (_ a) (-> Code (Parser a) (Parser a))) diff --git a/stdlib/source/library/lux/macro/syntax/check.lux b/stdlib/source/library/lux/macro/syntax/check.lux index 7a4b6ac73..69621e1e2 100644 --- a/stdlib/source/library/lux/macro/syntax/check.lux +++ b/stdlib/source/library/lux/macro/syntax/check.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except) - ["[0]" meta] [abstract [equivalence (.only Equivalence)] [monad (.only do)]] @@ -9,7 +8,7 @@ ["<>" parser]] [data ["[0]" product]] - [macro + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]]) diff --git a/stdlib/source/library/lux/macro/syntax/declaration.lux b/stdlib/source/library/lux/macro/syntax/declaration.lux index dbb86e1ce..a60ce50ad 100644 --- a/stdlib/source/library/lux/macro/syntax/declaration.lux +++ b/stdlib/source/library/lux/macro/syntax/declaration.lux @@ -10,7 +10,7 @@ ["[0]" text] [collection ["[0]" list (.use "[1]#[0]" functor)]]] - [macro + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]]) diff --git a/stdlib/source/library/lux/macro/syntax/definition.lux b/stdlib/source/library/lux/macro/syntax/definition.lux index b93e0bd64..9c8551195 100644 --- a/stdlib/source/library/lux/macro/syntax/definition.lux +++ b/stdlib/source/library/lux/macro/syntax/definition.lux @@ -1,6 +1,7 @@ (.require [library [lux (.except Definition) + ["[0]" macro] [abstract [equivalence (.only Equivalence)] [monad (.only do)]] @@ -15,11 +16,10 @@ ["%" \\format]] [collection ["[0]" list]]] - ["[0]" macro (.only) - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] ["[0]" meta (.only) - ["[0]" location]]]] + ["[0]" location] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" // (.only) ["[1][0]" check (.only Check)]]) diff --git a/stdlib/source/library/lux/macro/syntax/export.lux b/stdlib/source/library/lux/macro/syntax/export.lux index e47b09750..81400ed1f 100644 --- a/stdlib/source/library/lux/macro/syntax/export.lux +++ b/stdlib/source/library/lux/macro/syntax/export.lux @@ -6,7 +6,8 @@ [control ["<>" parser]] [macro - ["^" pattern] + ["^" pattern]] + [meta ["[0]" code ["<[1]>" \\parser (.only Parser)]]]]]) diff --git a/stdlib/source/library/lux/macro/syntax/input.lux b/stdlib/source/library/lux/macro/syntax/input.lux index 1354a9a54..4461c7df9 100644 --- a/stdlib/source/library/lux/macro/syntax/input.lux +++ b/stdlib/source/library/lux/macro/syntax/input.lux @@ -9,7 +9,7 @@ ["[0]" product] [collection ["[0]" list (.use "[1]#[0]" monad)]]] - [macro + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]]) diff --git a/stdlib/source/library/lux/macro/syntax/type/variable.lux b/stdlib/source/library/lux/macro/syntax/type/variable.lux index 2658572e6..363f85fc0 100644 --- a/stdlib/source/library/lux/macro/syntax/type/variable.lux +++ b/stdlib/source/library/lux/macro/syntax/type/variable.lux @@ -5,7 +5,7 @@ [equivalence (.only Equivalence)]] [data ["[0]" text]] - [macro + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]]) diff --git a/stdlib/source/library/lux/macro/template.lux b/stdlib/source/library/lux/macro/template.lux index 68a37a237..cc82b10f3 100644 --- a/stdlib/source/library/lux/macro/template.lux +++ b/stdlib/source/library/lux/macro/template.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except let local symbol macro) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -21,12 +20,13 @@ ["[0]" nat (.use "[1]#[0]" decimal)] ["[0]" int (.use "[1]#[0]" decimal)] ["[0]" rev (.use "[1]#[0]" decimal)] - ["[0]" frac (.use "[1]#[0]" decimal)]]]]] + ["[0]" frac (.use "[1]#[0]" decimal)]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" // (.only) [syntax (.only syntax)] - ["[0]" local] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]]) + ["[0]" local]]) (def .public spliced (syntax (_ [parts (.tuple (<>.some .any))]) diff --git a/stdlib/source/library/lux/math.lux b/stdlib/source/library/lux/math.lux index d5b8f2629..d2c69aede 100644 --- a/stdlib/source/library/lux/math.lux +++ b/stdlib/source/library/lux/math.lux @@ -17,7 +17,10 @@ ["[0]" list (.use "[1]#[0]" mix)]]] [macro [syntax (.only syntax)] - ["[0]" template] + ["[0]" template]] + [meta + [type + ["[0]" check]] ["[0]" code ["<[1]>" \\parser]]] [tool @@ -28,10 +31,7 @@ ["[0]" analysis (.only Analysis Operation Phase) ["[0]" type]]]] [meta - [archive (.only Archive)]]]] - [meta - [type - ["[0]" check]]]]] + [archive (.only Archive)]]]]]] [/ ["[0]" random] [number diff --git a/stdlib/source/library/lux/math/infix.lux b/stdlib/source/library/lux/math/infix.lux index 01930c466..ee319a0e7 100644 --- a/stdlib/source/library/lux/math/infix.lux +++ b/stdlib/source/library/lux/math/infix.lux @@ -10,13 +10,14 @@ [collection ["[0]" list (.use "[1]#[0]" mix)]]] [macro - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + [syntax (.only syntax)]] [math [number ["n" nat] - ["i" int]]]]]) + ["i" int]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (type Infix (Rec Infix diff --git a/stdlib/source/library/lux/math/modular.lux b/stdlib/source/library/lux/math/modular.lux index b2ae0a5b3..b6f9afdc7 100644 --- a/stdlib/source/library/lux/math/modular.lux +++ b/stdlib/source/library/lux/math/modular.lux @@ -15,15 +15,14 @@ ["[0]" product] ["[0]" text (.use "[1]#[0]" monoid) ["<[1]>" \\parser (.only Parser)]]] - [macro - ["[0]" code (.only) - ["<[1]>" \\parser]]] [math [number ["i" int (.use "[1]#[0]" decimal)]]] [meta [type - [primitive (.except)]]]]] + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] ["[0]" // ["[1]" modulus (.only Modulus)]]) diff --git a/stdlib/source/library/lux/math/modulus.lux b/stdlib/source/library/lux/math/modulus.lux index 333946b3d..46eb4e45e 100644 --- a/stdlib/source/library/lux/math/modulus.lux +++ b/stdlib/source/library/lux/math/modulus.lux @@ -1,22 +1,21 @@ (.require [library [lux (.except) - ["[0]" meta] [abstract [monad (.only do)]] [control ["[0]" try (.only Try)] ["[0]" exception (.only exception)]] [macro - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number ["i" int]]] - [meta + ["[0]" meta (.only) [type - [primitive (.except)]]]]]) + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (exception .public zero_cannot_be_a_modulus) diff --git a/stdlib/source/library/lux/math/number/complex.lux b/stdlib/source/library/lux/math/number/complex.lux index d22ce8ad2..5e8161de3 100644 --- a/stdlib/source/library/lux/math/number/complex.lux +++ b/stdlib/source/library/lux/math/number/complex.lux @@ -10,13 +10,14 @@ [collection ["[0]" list (.use "[1]#[0]" functor)]]] [macro - [syntax (.only syntax)] - ["[0]" code - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number ["f" frac] - ["[0]" int]]]]]) + ["[0]" int]]] + [meta + ["[0]" code + ["<[1]>" \\parser]]]]]) (type .public Complex (Record diff --git a/stdlib/source/library/lux/math/number/ratio.lux b/stdlib/source/library/lux/math/number/ratio.lux index 6deac08f0..d9c927d35 100644 --- a/stdlib/source/library/lux/math/number/ratio.lux +++ b/stdlib/source/library/lux/math/number/ratio.lux @@ -16,7 +16,8 @@ ["[0]" product] ["[0]" text (.use "[1]#[0]" monoid)]] [macro - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]]]] [// diff --git a/stdlib/source/library/lux/meta.lux b/stdlib/source/library/lux/meta.lux index 64d84a933..10f0056d7 100644 --- a/stdlib/source/library/lux/meta.lux +++ b/stdlib/source/library/lux/meta.lux @@ -15,14 +15,14 @@ ["[0]" list (.use "[1]#[0]" monoid monad) ["[0]" property]]]] [macro - ["^" pattern] - ["[0]" code]] + ["^" pattern]] [math [number ["n" nat] ["i" int]]] [meta - ["[0]" symbol (.use "[1]#[0]" codec equivalence)]]]] + ["[0]" symbol (.use "[1]#[0]" codec equivalence)] + ["[0]" code]]]] [/ ["[0]" location]]) diff --git a/stdlib/source/library/lux/meta/code.lux b/stdlib/source/library/lux/meta/code.lux new file mode 100644 index 000000000..dc182b124 --- /dev/null +++ b/stdlib/source/library/lux/meta/code.lux @@ -0,0 +1,135 @@ +(.require + [library + [lux (.except nat int rev local global symbol) + [abstract + [equivalence (.only Equivalence)]] + [data + ["[0]" product] + ["[0]" bit] + ["[0]" text (.use "[1]#[0]" monoid equivalence)] + [collection + ["[0]" list (.use "[1]#[0]" functor mix)]]] + [macro + ["^" pattern]] + [math + [number + ["[0]" nat] + ["[0]" int] + ["[0]" rev] + ["[0]" frac]]] + [meta + ["[0]" location] + ["[0]" symbol]]]]) + +... (type (Code' w) +... {.#Bit Bit} +... {.#Nat Nat} +... {.#Int Int} +... {.#Rev Rev} +... {.#Frac Frac} +... {.#Text Text} +... {.#Symbol Symbol} +... {.#Form (List (w (Code' w)))} +... {.#Variant (List (w (Code' w)))} +... {.#Tuple (List (w (Code' w)))}) + +... (type Code +... (Ann Location (Code' (Ann Location)))) + +(with_template [ ] + [(def .public ( x) + (-> Code) + [location.dummy { x}])] + + [bit Bit .#Bit] + [nat Nat .#Nat] + [int Int .#Int] + [rev Rev .#Rev] + [frac Frac .#Frac] + [text Text .#Text] + [symbol Symbol .#Symbol] + [form (List Code) .#Form] + [variant (List Code) .#Variant] + [tuple (List Code) .#Tuple] + ) + +(with_template [ ] + [(def .public ( name) + (-> Text Code) + [location.dummy { ["" name]}])] + + [local .#Symbol]) + +(def .public equivalence + (Equivalence Code) + (implementation + (def (= x y) + (case [x y] + (^.with_template [ ] + [[[_ { x'}] [_ { y'}]] + (at = x' y')]) + ([.#Bit bit.equivalence] + [.#Nat nat.equivalence] + [.#Int int.equivalence] + [.#Rev rev.equivalence] + [.#Frac frac.equivalence] + [.#Text text.equivalence] + [.#Symbol symbol.equivalence]) + + (^.with_template [] + [[[_ { xs'}] [_ { ys'}]] + (at (list.equivalence =) = xs' ys')]) + ([.#Form] + [.#Variant] + [.#Tuple]) + + _ + false)))) + +(def .public (format ast) + (-> Code Text) + (case ast + (^.with_template [ ] + [[_ { value}] + (at encoded value)]) + ([.#Bit bit.codec] + [.#Nat nat.decimal] + [.#Int int.decimal] + [.#Rev rev.decimal] + [.#Frac frac.decimal] + [.#Symbol symbol.codec]) + + [_ {.#Text value}] + (text.format value) + + (^.with_template [ ] + [[_ { members}] + (all text#composite + + (list#mix (function (_ next prev) + (let [next (format next)] + (if (text#= "" prev) + next + (all text#composite prev " " next)))) + "" + members) + )]) + ([.#Form "(" ")"] + [.#Variant "{" "}"] + [.#Tuple "[" "]"]) + )) + +(def .public (replaced original substitute ast) + (-> Code Code Code Code) + (if (at ..equivalence = original ast) + substitute + (case ast + (^.with_template [] + [[location { parts}] + [location { (list#each (replaced original substitute) parts)}]]) + ([.#Form] + [.#Variant] + [.#Tuple]) + + _ + ast))) diff --git a/stdlib/source/library/lux/meta/configuration.lux b/stdlib/source/library/lux/meta/configuration.lux index d1858ca56..3ed5e3e6c 100644 --- a/stdlib/source/library/lux/meta/configuration.lux +++ b/stdlib/source/library/lux/meta/configuration.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except for) - ["[0]" meta] [abstract [equivalence (.only Equivalence)] [monoid (.only Monoid)] @@ -18,11 +17,12 @@ ["[0]" list (.use "[1]#[0]" functor mix) ["/" property]]]] [macro - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math - [number (.only hex)]]]]) + [number (.only hex)]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (type .public Configuration (/.List Text)) diff --git a/stdlib/source/library/lux/meta/type.lux b/stdlib/source/library/lux/meta/type.lux index 00afaddc0..b2c4173a8 100644 --- a/stdlib/source/library/lux/meta/type.lux +++ b/stdlib/source/library/lux/meta/type.lux @@ -17,15 +17,15 @@ ["[0]" list (.use "[1]#[0]" monad monoid mix)]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["^" pattern] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["^" pattern]] [math [number ["n" nat (.use "[1]#[0]" decimal)]]] ["[0]" meta (.only) ["[0]" location] - ["[0]" symbol (.use "[1]#[0]" equivalence codec)]]]]) + ["[0]" symbol (.use "[1]#[0]" equivalence codec)] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (with_template [ ] [(def .public ( type) diff --git a/stdlib/source/library/lux/meta/type/dynamic.lux b/stdlib/source/library/lux/meta/type/dynamic.lux index 86ccf5753..90c0b3837 100644 --- a/stdlib/source/library/lux/meta/type/dynamic.lux +++ b/stdlib/source/library/lux/meta/type/dynamic.lux @@ -9,7 +9,8 @@ [text ["%" \\format]]] [macro (.only with_symbols) - ["[0]" syntax (.only syntax)] + ["[0]" syntax (.only syntax)]] + [meta ["[0]" code ["<[1]>" \\parser]]]]] ["[0]" // (.only) diff --git a/stdlib/source/library/lux/meta/type/implicit.lux b/stdlib/source/library/lux/meta/type/implicit.lux index 977467202..bdea9933d 100644 --- a/stdlib/source/library/lux/meta/type/implicit.lux +++ b/stdlib/source/library/lux/meta/type/implicit.lux @@ -16,12 +16,13 @@ ["[0]" list (.use "[1]#[0]" monad mix)] ["[0]" dictionary (.only Dictionary)]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + [syntax (.only syntax)]] [math ["[0]" number (.only) - ["n" nat]]]]] + ["n" nat]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" // (.use "[1]#[0]" equivalence) ["/[1]" //] ["[0]" check (.only Check)]]) diff --git a/stdlib/source/library/lux/meta/type/poly.lux b/stdlib/source/library/lux/meta/type/poly.lux index 95d9f8ea7..da8fc8a07 100644 --- a/stdlib/source/library/lux/meta/type/poly.lux +++ b/stdlib/source/library/lux/meta/type/poly.lux @@ -14,12 +14,13 @@ ["[0]" dictionary]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["^" pattern] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]]] + ["^" pattern]] [math [number - ["n" nat]]]]] + ["n" nat]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" // (.only) ["<[1]>" \\parser (.only Env)] ["/[1]" //]]) diff --git a/stdlib/source/library/lux/meta/type/primitive.lux b/stdlib/source/library/lux/meta/type/primitive.lux index 50c288e1c..e58f13f56 100644 --- a/stdlib/source/library/lux/meta/type/primitive.lux +++ b/stdlib/source/library/lux/meta/type/primitive.lux @@ -13,12 +13,12 @@ ["[0]" macro (.only) ["^" pattern] ["[0]" context] - ["[0]" code (.only) - ["<[1]>" \\parser (.only Parser)]] [syntax (.only syntax) ["|[0]|" export]]] [meta - ["[0]" symbol (.use "[1]#[0]" codec)]]]] + ["[0]" symbol (.use "[1]#[0]" codec)] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" //]) (type .public Frame @@ -86,12 +86,12 @@ abstraction_declaration (` ((~ (code.local name)) (~+ type_varsC))) representation_declaration (` ((~ g!Representation) (~+ type_varsC)))]] (..declaration [name type_varsC abstraction_declaration representation_declaration] - (` (.these (type (~ export_policy) (~ abstraction_declaration) - (Primitive (~ (code.text (symbol#encoded [current_module name]))) - [(~+ type_varsC)])) - (type (~ representation_declaration) - (~ representation_type)) - (~+ primitives))))))) + (` (.these (type (~ export_policy) (~ abstraction_declaration) + (Primitive (~ (code.text (symbol#encoded [current_module name]))) + [(~+ type_varsC)])) + (type (~ representation_declaration) + (~ representation_type)) + (~+ primitives))))))) (def selection (Parser [(List Code) Code]) diff --git a/stdlib/source/library/lux/meta/type/quotient.lux b/stdlib/source/library/lux/meta/type/quotient.lux index 72088cd46..6f9c48586 100644 --- a/stdlib/source/library/lux/meta/type/quotient.lux +++ b/stdlib/source/library/lux/meta/type/quotient.lux @@ -4,7 +4,8 @@ [abstract [equivalence (only Equivalence)]] [macro (.only with_symbols) - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code ["<[1]>" \\parser]]]]] ["[0]" // (.only) diff --git a/stdlib/source/library/lux/meta/type/refinement.lux b/stdlib/source/library/lux/meta/type/refinement.lux index 24e0aa2e2..45c6d01e6 100644 --- a/stdlib/source/library/lux/meta/type/refinement.lux +++ b/stdlib/source/library/lux/meta/type/refinement.lux @@ -5,7 +5,8 @@ [function [predicate (.only Predicate)]]] ["[0]" macro (.only) - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code ["<[1]>" \\parser]]]]] ["[0]" // (.only) diff --git a/stdlib/source/library/lux/meta/type/resource.lux b/stdlib/source/library/lux/meta/type/resource.lux index bd9e71c08..44e9cf7a7 100644 --- a/stdlib/source/library/lux/meta/type/resource.lux +++ b/stdlib/source/library/lux/meta/type/resource.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except) - ["[0]" meta] [abstract ["[0]" monad (.only Monad do) [indexed (.only IxMonad)]]] @@ -17,12 +16,13 @@ ["[0]" sequence (.only Sequence)] ["[0]" list (.use "[1]#[0]" functor mix)]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] + [syntax (.only syntax)]] [math [number - ["n" nat]]]]] + ["n" nat]]] + ["[0]" meta (.only) + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]]]] [// [primitive (.except)]]) diff --git a/stdlib/source/library/lux/meta/type/unit.lux b/stdlib/source/library/lux/meta/type/unit.lux index 994e7ad11..a3fca0079 100644 --- a/stdlib/source/library/lux/meta/type/unit.lux +++ b/stdlib/source/library/lux/meta/type/unit.lux @@ -6,12 +6,13 @@ [order (.only Order)] [enum (.only Enum)]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number - ["i" int]]]]] + ["i" int]]] + [meta + ["[0]" code + ["<[1]>" \\parser]]]]] ["[0]" // (.only) [primitive (.except)]]) diff --git a/stdlib/source/library/lux/meta/type/unit/scale.lux b/stdlib/source/library/lux/meta/type/unit/scale.lux index b7f598d13..f8ea57031 100644 --- a/stdlib/source/library/lux/meta/type/unit/scale.lux +++ b/stdlib/source/library/lux/meta/type/unit/scale.lux @@ -1,15 +1,15 @@ (.require [library [lux (.except type) - [control] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number ["i" int] - ["[0]" ratio (.only Ratio)]]]]] + ["[0]" ratio (.only Ratio)]]] + [meta + ["[0]" code + ["<[1]>" \\parser]]]]] ["[0]" // (.only) ["/[1]" //]]) diff --git a/stdlib/source/library/lux/meta/version.lux b/stdlib/source/library/lux/meta/version.lux index f7df8ac2f..7c3eaf426 100644 --- a/stdlib/source/library/lux/meta/version.lux +++ b/stdlib/source/library/lux/meta/version.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except for) - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -12,7 +11,8 @@ [collection ["[0]" list (.use "[1]#[0]" mix)]]] [macro - [syntax (.only syntax)] + [syntax (.only syntax)]] + ["[0]" meta (.only) ["[0]" code (.only) ["<[1]>" \\parser]]] [tool diff --git a/stdlib/source/library/lux/program.lux b/stdlib/source/library/lux/program.lux index 81b455cb1..c02d60c69 100644 --- a/stdlib/source/library/lux/program.lux +++ b/stdlib/source/library/lux/program.lux @@ -10,7 +10,8 @@ [concurrency ["[0]" thread]]] [macro (.only with_symbols) - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["<[1]>" \\parser]]]]] ["" \\parser]) diff --git a/stdlib/source/library/lux/static.lux b/stdlib/source/library/lux/static.lux index a473f8288..5f4560e52 100644 --- a/stdlib/source/library/lux/static.lux +++ b/stdlib/source/library/lux/static.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except nat int rev if cond) - ["[0]" meta (.use "[1]#[0]" functor)] [abstract [monad (.only do)]] [control @@ -10,12 +9,13 @@ [collection ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex)] - ["[0]" random (.only Random)]]]]) + ["[0]" random (.only Random)]] + ["[0]" meta (.use "[1]#[0]" functor) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (with_template [ ] [(def .public diff --git a/stdlib/source/library/lux/target/jvm/bytecode.lux b/stdlib/source/library/lux/target/jvm/bytecode.lux index 5d407ac59..267705aa7 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode.lux @@ -29,9 +29,9 @@ ["i" int] ["[0]" i32 (.only I32)]]]]] ["[0]" / + ["_" instruction (.only Primitive_Array_Type Instruction Estimator) (.use "[1]#[0]" monoid)] ["[1][0]" address (.only Address)] ["[1][0]" jump (.only Jump Big_Jump)] - ["_" instruction (.only Primitive_Array_Type Instruction Estimator) (.use "[1]#[0]" monoid)] ["[1][0]" environment (.only Environment) [limit ["/[0]" registry (.only Register Registry)] diff --git a/stdlib/source/library/lux/target/jvm/modifier.lux b/stdlib/source/library/lux/target/jvm/modifier.lux index 9d135aa55..b12b167cc 100644 --- a/stdlib/source/library/lux/target/jvm/modifier.lux +++ b/stdlib/source/library/lux/target/jvm/modifier.lux @@ -11,15 +11,15 @@ ["[0]" binary ["[1]F" \\format (.only Format)]]] [macro (.only with_symbols) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" number (.only hex) ["[0]" i64]]] [meta [type - [primitive (.except)]]]]] + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] ["[0]" // [encoding ["[1][0]" unsigned]]]) diff --git a/stdlib/source/library/lux/target/jvm/type/alias.lux b/stdlib/source/library/lux/target/jvm/type/alias.lux index a7cb3625b..8d9ddc7f4 100644 --- a/stdlib/source/library/lux/target/jvm/type/alias.lux +++ b/stdlib/source/library/lux/target/jvm/type/alias.lux @@ -4,9 +4,9 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser (.only)] ["[0]" maybe] - ["[0]" try] - ["<>" parser (.only)]] + ["[0]" try]] [data ["[0]" text (.only) ["%" \\format (.only format)] @@ -18,10 +18,7 @@ ["[1][0]" descriptor] ["[1][0]" signature (.only Signature)] ["[1][0]" reflection] - ["[1][0]" parser] - ["/[1]" // - [encoding - ["[1][0]" name]]]]) + ["[1][0]" parser]]) (type .public Aliasing (Dictionary Text Text)) diff --git a/stdlib/source/library/lux/target/lua.lux b/stdlib/source/library/lux/target/lua.lux index 8f8a3ed42..440c3f4ce 100644 --- a/stdlib/source/library/lux/target/lua.lux +++ b/stdlib/source/library/lux/target/lua.lux @@ -15,9 +15,7 @@ ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math [number ["n" nat] @@ -25,7 +23,9 @@ ["f" frac]]] [meta [type - [primitive (.except)]]]]]) + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) ... Added the carriage return for better Windows compatibility. (def \n+ diff --git a/stdlib/source/library/lux/target/php.lux b/stdlib/source/library/lux/target/php.lux index 2e11466f9..747a55abf 100644 --- a/stdlib/source/library/lux/target/php.lux +++ b/stdlib/source/library/lux/target/php.lux @@ -15,16 +15,16 @@ ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math [number ["n" nat] ["f" frac]]] [meta [type - [primitive (.except)]]]]]) + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (def input_separator ", ") (def statement_suffix ";") diff --git a/stdlib/source/library/lux/target/python.lux b/stdlib/source/library/lux/target/python.lux index 3237a638c..a297ad529 100644 --- a/stdlib/source/library/lux/target/python.lux +++ b/stdlib/source/library/lux/target/python.lux @@ -16,16 +16,16 @@ ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math [number ["n" nat] ["f" frac]]] [meta [type - [primitive (.except)]]]]]) + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (.def input_separator ", ") diff --git a/stdlib/source/library/lux/target/r.lux b/stdlib/source/library/lux/target/r.lux index 4c6d87403..574dcb4bf 100644 --- a/stdlib/source/library/lux/target/r.lux +++ b/stdlib/source/library/lux/target/r.lux @@ -12,15 +12,15 @@ ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math [number ["f" frac]]] [meta [type - [primitive (.except)]]]]]) + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (primitive .public (Code kind) Text diff --git a/stdlib/source/library/lux/target/ruby.lux b/stdlib/source/library/lux/target/ruby.lux index b2dee4ea6..aa92ae9b3 100644 --- a/stdlib/source/library/lux/target/ruby.lux +++ b/stdlib/source/library/lux/target/ruby.lux @@ -15,16 +15,16 @@ ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math [number ["n" nat] ["f" frac]]] [meta [type - [primitive (.except)]]]]]) + [primitive (.except)]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (def input_separator ", ") (def statement_suffix ";") diff --git a/stdlib/source/library/lux/test.lux b/stdlib/source/library/lux/test.lux index 5f086c633..69db97f42 100644 --- a/stdlib/source/library/lux/test.lux +++ b/stdlib/source/library/lux/test.lux @@ -33,11 +33,11 @@ ["n" nat] ["f" frac]]] [macro - [syntax (.only syntax)] + [syntax (.only syntax)]] + ["[0]" meta (.only) + ["[0]" symbol] ["[0]" code (.only) ["<[1]>" \\parser]]] - ["[0]" meta (.only) - ["[0]" symbol]] [world ["[0]" environment] ["[0]" console]]]]) 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 c3ccd43e9..2d149643e 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux @@ -18,9 +18,7 @@ [collection ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro - [syntax (.only syntax)] - ["[0]" code - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number ["n" nat] @@ -29,7 +27,9 @@ ["f" frac]]] [meta ["[0]" location] - ["[0]" configuration (.only Configuration)]]]] + ["[0]" configuration (.only Configuration)] + ["[0]" code + ["<[1]>" \\parser]]]]] ["[0]" / ["[1][0]" simple (.only Simple)] ["[1][0]" complex (.only Tuple Variant Complex)] 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 804b99019..adabb8621 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 @@ -11,12 +11,12 @@ [collection ["[0]" list]]] [macro - ["^" pattern] - ["[0]" code]] + ["^" pattern]] [math [number ["n" nat]]] ["[0]" meta (.only) + ["[0]" code] ["[0]" location]]]] ["[0]" / ["[1][0]" simple] 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 6f3c13d65..db181d050 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 @@ -17,9 +17,9 @@ [number ["n" nat]]] [macro - ["^" pattern] - ["[0]" code]] + ["^" pattern]] ["[0]" meta (.only) + ["[0]" code] ["[0]" type (.only) ["[0]" check (.only Check)]]]]] ["[0]" / diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/complex.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/complex.lux index c355ad0d1..4328de2b2 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/complex.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/complex.lux @@ -15,13 +15,12 @@ [collection ["[0]" list (.use "[1]#[0]" monad)] ["[0]" dictionary (.only Dictionary)]]] - [macro - ["[0]" code]] [math [number ["n" nat]]] ["[0]" meta (.only) ["[0]" symbol] + ["[0]" code] ["[0]" type (.only) ["[0]" check]]]]] ["[0]" // diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/js.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/js.lux index 580faf086..028f9ea0e 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/js.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/js.lux @@ -11,12 +11,11 @@ ["[0]" array] ["[0]" dictionary] ["[0]" list]]] - [macro - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] [meta ["[0]" type (.only) - ["[0]" check]]] + ["[0]" check]] + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] ["@" target (.only) ["_" js]]]] [// 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 cad6fe27b..42e4d3e3c 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 @@ -26,13 +26,16 @@ ["[0]" sequence]]] [macro ["^" pattern] - ["[0]" template] - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] + ["[0]" template]] [math [number ["n" nat] ["[0]" i32]]] + ["[0]" meta (.only) + ["[0]" code + ["<[1]>" \\parser (.only Parser)]] + ["[0]" type (.only) + ["[0]" check (.only Check) (.use "[1]#[0]" monad)]]] [target ["[0]" jvm ["[0]!" reflection] @@ -55,10 +58,7 @@ ["[0]" signature] ["[0]" parser] ["[0]" alias (.only Aliasing)] - ["[0]T" lux (.only Mapping)]]]] - ["[0]" meta (.only) - ["[0]" type (.only) - ["[0]" check (.only Check) (.use "[1]#[0]" monad)]]]]] + ["[0]T" lux (.only Mapping)]]]]]] ["[0]" // ["[1][0]" lux (.only custom)] ["/[1]" // (.only) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lua.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lua.lux index d62efd51f..914d3de39 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lua.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lua.lux @@ -11,10 +11,9 @@ ["[0]" array] ["[0]" dictionary] ["[0]" list]]] - [macro - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] [meta + ["[0]" code + ["<[1]>" \\parser (.only Parser)]] ["[0]" type (.only) ["[0]" check]]] ["@" target (.only) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux index 37ba8abe9..a9932f619 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux @@ -15,13 +15,13 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" dictionary (.only Dictionary)]]] [macro - ["^" pattern] - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] + ["^" pattern]] [math [number ["n" nat]]] [meta + ["[0]" code + ["<[1]>" \\parser (.only Parser)]] [type ["[0]" check]]] ["[0]" meta]]] diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/php.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/php.lux index 3417bf78a..972bd8b90 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/php.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/php.lux @@ -11,10 +11,9 @@ ["[0]" array (.only Array)] ["[0]" dictionary] ["[0]" list]]] - [macro - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] [meta + ["[0]" code + ["<[1]>" \\parser (.only Parser)]] ["[0]" type (.only) ["[0]" check]]] ["@" target (.only) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/python.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/python.lux index 0712fe644..29b8d1015 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/python.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/python.lux @@ -11,10 +11,9 @@ ["[0]" array] ["[0]" dictionary] ["[0]" list]]] - [macro - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] [meta + ["[0]" code + ["<[1]>" \\parser (.only Parser)]] ["[0]" type (.only) ["[0]" check]]] ["@" target (.only) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/r.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/r.lux index 67f44e35a..a1e27d28e 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/r.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/r.lux @@ -11,10 +11,9 @@ ["[0]" array (.only Array)] ["[0]" dictionary] ["[0]" list]]] - [macro - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] [meta + ["[0]" code + ["<[1]>" \\parser (.only Parser)]] ["[0]" type (.only) ["[0]" check]]] ["@" target diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/ruby.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/ruby.lux index 965f580b1..0bd416eed 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/ruby.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/ruby.lux @@ -11,10 +11,9 @@ ["[0]" array] ["[0]" dictionary] ["[0]" list]]] - [macro - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] [meta + ["[0]" code + ["<[1]>" \\parser (.only Parser)]] ["[0]" type (.only) ["[0]" check]]] ["@" target (.only) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/scheme.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/scheme.lux index 5768379ce..0ea42268f 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/scheme.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/scheme.lux @@ -11,10 +11,9 @@ ["[0]" array (.only Array)] ["[0]" dictionary] ["[0]" list]]] - [macro - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] [meta + ["[0]" code + ["<[1]>" \\parser (.only Parser)]] ["[0]" type (.only) ["[0]" check]]] ["@" target (.only) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/declaration/jvm.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/declaration/jvm.lux index f43c26adf..556a622be 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/declaration/jvm.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/declaration/jvm.lux @@ -23,13 +23,14 @@ ["[0]" set (.only Set)]]] [macro ["^" pattern] - ["[0]" template] - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] + ["[0]" template]] [math [number ["n" nat] ["[0]" i32]]] + [meta + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] [target [jvm ["_" bytecode (.only Bytecode) (.use "[1]#[0]" monad)] diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/declaration/lux.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/declaration/lux.lux index d2d4592e6..8b50853ac 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/declaration/lux.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/declaration/lux.lux @@ -2,7 +2,6 @@ [library [lux (.except) ["@" target] - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -22,12 +21,13 @@ ["[0]" list (.use "[1]#[0]" functor mix)] ["[0]" set (.only Set)]]] [macro - ["^" pattern] - ["[0]" code - ["<[1]>" \\parser (.only Parser)]]] + ["^" pattern]] [math [number ["n" nat]]] + ["[0]" meta (.only) + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] ["[0]" type (.only sharing) (.use "[1]#[0]" equivalence) ["[0]" check]]]] ["[0]" /// (.only Extender) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux index 42c75531d..5667e47db 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except Location) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -16,12 +15,13 @@ ["[0]" list (.use "[1]#[0]" functor monoid)] ["[0]" sequence]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex) ["[0]" i64]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["@" target ["_" common_lisp (.only Expression Computation Literal)]]]] ["[0]" /// diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/extension.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/extension.lux index 501587da2..0f8d68aea 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/extension.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/extension.lux @@ -6,9 +6,9 @@ [data [collection ["[0]" list (.use "[1]#[0]" functor)]]] - ["[0]" meta] ["[0]" macro (.only with_symbols) - [syntax (.only syntax)] + [syntax (.only syntax)]] + ["[0]" meta (.only) ["[0]" code (.only) ["<[1]>" \\parser]]]]] ["[0]" /// diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux index 3eaadc3f5..cc2e746e4 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except i64 left right) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -17,12 +16,13 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" sequence]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex) ["[0]" i64]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] [target ["_" js (.only Expression Var Computation Statement)]]]] ["[0]" /// diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable.lux index 16a7e67a3..08a3c9df8 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable.lux @@ -7,9 +7,9 @@ ["[0]" sequence]]] [target [jvm + ["_" bytecode (.only Bytecode)] ["[0]" modifier (.only Modifier) (.use "[1]#[0]" monoid)] ["[0]" field (.only Field)] - ["_" bytecode (.only Bytecode)] [type (.only Type) [category (.only Value Class)]] [constant diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux index 95b3fb619..4f0e6c222 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux @@ -11,8 +11,8 @@ ["n" nat]]] [target [jvm - ["[0]" field (.only Field)] ["_" bytecode (.only Bytecode) (.use "[1]#[0]" monad)] + ["[0]" field (.only Field)] [type (.only Type) [category (.only Class)]] [constant diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/implementation.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/implementation.lux index 86965220b..438f9f68d 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/implementation.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/implementation.lux @@ -9,9 +9,9 @@ ["n" nat]]] [target [jvm + ["_" bytecode (.only Label Bytecode)] ["[0]" modifier (.only Modifier) (.use "[1]#[0]" monoid)] ["[0]" method (.only Method)] - ["_" bytecode (.only Label Bytecode)] [constant [pool (.only Resource)]] ["[0]" type (.only Type) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux index 1daa92777..f61d67d93 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux @@ -11,9 +11,9 @@ ["n" nat]]] [target [jvm + ["_" bytecode (.only Bytecode)] ["[0]" field (.only Field)] ["[0]" method (.only Method)] - ["_" bytecode (.only Bytecode)] ["[0]" constant (.only) [pool (.only Resource)]] [type (.only Type) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/reset.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/reset.lux index faff66f47..f38edc961 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/reset.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/reset.lux @@ -6,8 +6,8 @@ ["[0]" list (.use "[1]#[0]" functor)]]] [target [jvm - ["[0]" method (.only Method)] ["_" bytecode (.only Bytecode)] + ["[0]" method (.only Method)] [constant [pool (.only Resource)]] ["[0]" type (.only Type) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/host.lux index c8d769e87..493b47a6e 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/host.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/host.lux @@ -12,9 +12,9 @@ [concurrency ["[0]" atom (.only Atom atom)]]] [data + ["[0]" product] [binary (.only Binary) ["[0]" \\format]] - ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) ["%" \\format (.only format)]] [collection diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux index f7fb63f10..1c22af9cc 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except Label Location left right) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -17,12 +16,13 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" sequence]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex) ["[0]" i64]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["@" target (.only) ["_" lua (.only Expression Location Var Computation Literal Label Statement)]]]] ["[0]" /// 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 1254f50bc..fa45c35b0 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/runtime.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except Location) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -17,12 +16,13 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" sequence]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex) ["[0]" i64]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["@" target (.only) ["_" php (.only Expression Label Constant Var Computation Literal Statement)]]]] ["[0]" /// diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/runtime.lux index dfef07d7c..93f0477c7 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/runtime.lux @@ -16,15 +16,15 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" sequence]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex) ["f" frac] ["[0]" i64]]] ["[0]" meta (.only) - ["[0]" version]] + ["[0]" version] + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["@" target (.only) ["_" python (.only Expression SVar Computation Literal Statement)]]]] ["[0]" /// diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux index 089bdf2b9..b0d02c095 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except Location ++ i64) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -17,14 +16,15 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" sequence]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex) ["n" nat] ["i" int (.use "[1]#[0]" interval)] ["[0]" i64]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["@" target (.only) ["_" r (.only SVar Expression)]]]] ["[0]" /// diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux index 74261ccc3..a3d1fe4ab 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except i64 left right) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -17,13 +16,14 @@ ["[0]" list (.use "[1]#[0]" functor mix)] ["[0]" sequence]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex) ["[0]" i64] ["[0]" int (.use "[1]#[0]" interval)]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["@" target (.only) ["_" ruby (.only Expression LVar Computation Literal Statement)]]]] ["[0]" /// diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux index a99e83f84..cbf99339c 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux @@ -12,7 +12,8 @@ ["[0]" list (.use "[1]#[0]" functor)] ["dict" dictionary (.only Dictionary)]]] ["[0]" macro (.only with_symbols) - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["<[1]>" \\parser]]] [target diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux index 0b287568a..215e6af9a 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux @@ -1,7 +1,6 @@ (.require [library [lux (.except Location) - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -17,12 +16,13 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" sequence]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex) ["[0]" i64]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["@" target (.only) ["_" scheme (.only Expression Computation Var)]]]] ["[0]" /// diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux b/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux index 7b31c9a0a..a3872dfa5 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux @@ -43,11 +43,11 @@ ["[0]" dictionary (.only Dictionary)]]] [macro [syntax (.only syntax)] - ["[0]" template] + ["[0]" template]] + [meta + ["[0]" symbol] ["[0]" code ["<[1]>" \\parser]]] - [meta - ["[0]" symbol]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/world/net/http/client.lux b/stdlib/source/library/lux/world/net/http/client.lux index 52812a399..3cc84fdcf 100644 --- a/stdlib/source/library/lux/world/net/http/client.lux +++ b/stdlib/source/library/lux/world/net/http/client.lux @@ -19,13 +19,14 @@ ["[0]" dictionary]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math [number ["n" nat] - ["i" int]]]]] + ["i" int]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] ["[0]" // (.only) [// (.only URL)]]) diff --git a/stdlib/source/parser/lux/data/format/json.lux b/stdlib/source/parser/lux/data/format/json.lux index c78f8132c..ddb73da8f 100644 --- a/stdlib/source/parser/lux/data/format/json.lux +++ b/stdlib/source/parser/lux/data/format/json.lux @@ -14,11 +14,11 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" sequence] ["[0]" dictionary (.only Dictionary)]]] - [macro - ["[0]" code]] [math [number - ["[0]" frac]]]]] + ["[0]" frac]]] + [meta + ["[0]" code]]]] [\\library ["[0]" / (.only JSON)]]) diff --git a/stdlib/source/parser/lux/data/text.lux b/stdlib/source/parser/lux/data/text.lux index 3cd4076f5..a85ef474a 100644 --- a/stdlib/source/parser/lux/data/text.lux +++ b/stdlib/source/parser/lux/data/text.lux @@ -15,11 +15,12 @@ ["[0]" list (.use "[1]#[0]" mix)]]] [macro ["^" pattern] - ["[0]" code] ["[0]" template]] [math [number - ["n" nat (.use "[1]#[0]" decimal)]]]]]) + ["n" nat (.use "[1]#[0]" decimal)]]] + [meta + ["[0]" code]]]]) (type .public Offset Nat) diff --git a/stdlib/source/parser/lux/macro/code.lux b/stdlib/source/parser/lux/macro/code.lux deleted file mode 100644 index 85490e2d0..000000000 --- a/stdlib/source/parser/lux/macro/code.lux +++ /dev/null @@ -1,226 +0,0 @@ -(.require - [library - [lux (.except nat int rev local not symbol local global) - [abstract - ["[0]" monad (.only do)]] - [control - ["//" parser] - ["[0]" try (.only Try)]] - [data - ["[0]" bit] - ["[0]" text (.use "[1]#[0]" monoid)] - [collection - ["[0]" list (.use "[1]#[0]" functor)]]] - [macro - ["[0]" code (.use "[1]#[0]" equivalence)]] - [math - [number - ["[0]" nat] - ["[0]" int] - ["[0]" rev] - ["[0]" frac]]] - [meta - ["[0]" symbol]]]]) - -(def (un_paired pairs) - (All (_ a) (-> (List [a a]) (List a))) - (case pairs - {.#End} - {.#End} - - {.#Item [[x y] pairs']} - (list.partial x y (un_paired pairs')))) - -(type .public Parser - (//.Parser (List Code))) - -(def remaining_inputs - (-> (List Code) Text) - (|>> (list#each code.format) - (text.interposed " ") - (all text#composite text.new_line "Remaining input: "))) - -(def .public any - (Parser Code) - (function (_ tokens) - (case tokens - {.#End} - {try.#Failure "There are no tokens to parse!"} - - {.#Item [t tokens']} - {try.#Success [tokens' t]}))) - -(def .public next - (Parser Code) - (function (_ tokens) - (case tokens - {.#End} - {try.#Failure "There are no tokens to parse!"} - - {.#Item next _} - {try.#Success [tokens next]}))) - -(with_template [ ] - [(with_expansions [ (these {try.#Failure (all text#composite "Cannot parse " (remaining_inputs tokens))})] - (def .public - (Parser ) - (function (_ tokens) - (case tokens - {.#Item [[_ { x}] tokens']} - {try.#Success [tokens' x]} - - _ - ))) - - (def .public ( expected) - (-> (Parser Any)) - (function (_ tokens) - (case tokens - {.#Item [[_ { actual}] tokens']} - (if (at = expected actual) - {try.#Success [tokens' []]} - ) - - _ - ))))] - - [bit this_bit Bit .#Bit bit.equivalence "bit"] - [nat this_nat Nat .#Nat nat.equivalence "nat"] - [int this_int Int .#Int int.equivalence "int"] - [rev this_rev Rev .#Rev rev.equivalence "rev"] - [frac this_frac Frac .#Frac frac.equivalence "frac"] - [text this_text Text .#Text text.equivalence "text"] - [symbol this_symbol Symbol .#Symbol symbol.equivalence "symbol"] - ) - -(def .public (this code) - (-> Code (Parser Any)) - (function (_ tokens) - (case tokens - {.#Item [token tokens']} - (if (code#= code token) - {try.#Success [tokens' []]} - {try.#Failure (all text#composite "Expected a " (code.format code) " but instead got " (code.format token) - (remaining_inputs tokens))}) - - _ - {try.#Failure "There are no tokens to parse!"}))) - -(with_expansions [ (these {try.#Failure (all text#composite "Cannot parse local symbol" (remaining_inputs tokens))})] - (def .public local - (Parser Text) - (function (_ tokens) - (case tokens - {.#Item [[_ {.#Symbol ["" x]}] tokens']} - {try.#Success [tokens' x]} - - _ - ))) - - (def .public (this_local expected) - (-> Text (Parser Any)) - (function (_ tokens) - (case tokens - {.#Item [[_ {.#Symbol ["" actual]}] tokens']} - (if (at text.equivalence = expected actual) - {try.#Success [tokens' []]} - ) - - _ - )))) - -(with_expansions [ (these {try.#Failure (all text#composite "Cannot parse local symbol" (remaining_inputs tokens))})] - (def .public global - (Parser Symbol) - (function (_ tokens) - (case tokens - {.#Item [[_ {.#Symbol ["" short]}] tokens']} - - - {.#Item [[_ {.#Symbol it}] tokens']} - {try.#Success [tokens' it]} - - _ - ))) - - (def .public (this_global expected) - (-> Symbol (Parser Any)) - (function (_ tokens) - (case tokens - {.#Item [[_ {.#Symbol ["" actual]}] tokens']} - - - {.#Item [[_ {.#Symbol it}] tokens']} - (if (at symbol.equivalence = expected it) - {try.#Success [tokens' []]} - ) - - _ - )))) - -(with_template [ ] - [(def .public ( p) - (All (_ a) - (-> (Parser a) (Parser a))) - (function (_ tokens) - (case tokens - {.#Item [[_ { members}] tokens']} - (case (p members) - {try.#Success [{.#End} x]} {try.#Success [tokens' x]} - _ {try.#Failure (all text#composite "Parser was expected to fully consume " (remaining_inputs tokens))}) - - _ - {try.#Failure (all text#composite "Cannot parse " (remaining_inputs tokens))})))] - - [form .#Form "form"] - [variant .#Variant "variant"] - [tuple .#Tuple "tuple"] - ) - -(def .public end - (Parser Any) - (function (_ tokens) - (case tokens - {.#End} {try.#Success [tokens []]} - _ {try.#Failure (all text#composite "Expected list of tokens to be empty!" (remaining_inputs tokens))}))) - -(def .public end? - (Parser Bit) - (function (_ tokens) - {try.#Success [tokens (case tokens - {.#End} true - _ false)]})) - -(def .public (result parser inputs) - (All (_ a) (-> (Parser a) (List Code) (Try a))) - (case (parser inputs) - {try.#Failure error} - {try.#Failure error} - - {try.#Success [unconsumed value]} - (case unconsumed - {.#End} - {try.#Success value} - - _ - {try.#Failure (|> unconsumed - (list#each code.format) - (text.interposed ", ") - (text#composite "Unconsumed inputs: "))}))) - -(def .public (locally inputs parser) - (All (_ a) (-> (List Code) (Parser a) (Parser a))) - (function (_ real) - (do try.monad - [value (..result parser inputs)] - (in [real value])))) - -(def .public (not parser) - (All (_ a) (-> (Parser a) (Parser Code))) - (do //.monad - [sample ..next - result (//.or parser - ..any)] - (case result - {.#Left _} (//.failure (text#composite "Did NOT expect to parse code: " (code.format sample))) - {.#Right output} (in output)))) diff --git a/stdlib/source/parser/lux/meta/code.lux b/stdlib/source/parser/lux/meta/code.lux new file mode 100644 index 000000000..844c0e1c2 --- /dev/null +++ b/stdlib/source/parser/lux/meta/code.lux @@ -0,0 +1,225 @@ +(.require + [library + [lux (.except nat int rev local not symbol local global) + [abstract + ["[0]" monad (.only do)]] + [control + ["//" parser] + ["[0]" try (.only Try)]] + [data + ["[0]" bit] + ["[0]" text (.use "[1]#[0]" monoid)] + [collection + ["[0]" list (.use "[1]#[0]" functor)]]] + [math + [number + ["[0]" nat] + ["[0]" int] + ["[0]" rev] + ["[0]" frac]]] + [meta + ["[0]" symbol] + ["[0]" code (.use "[1]#[0]" equivalence)]]]]) + +(def (un_paired pairs) + (All (_ a) (-> (List [a a]) (List a))) + (case pairs + {.#End} + {.#End} + + {.#Item [[x y] pairs']} + (list.partial x y (un_paired pairs')))) + +(type .public Parser + (//.Parser (List Code))) + +(def remaining_inputs + (-> (List Code) Text) + (|>> (list#each code.format) + (text.interposed " ") + (all text#composite text.new_line "Remaining input: "))) + +(def .public any + (Parser Code) + (function (_ tokens) + (case tokens + {.#End} + {try.#Failure "There are no tokens to parse!"} + + {.#Item [t tokens']} + {try.#Success [tokens' t]}))) + +(def .public next + (Parser Code) + (function (_ tokens) + (case tokens + {.#End} + {try.#Failure "There are no tokens to parse!"} + + {.#Item next _} + {try.#Success [tokens next]}))) + +(with_template [ ] + [(with_expansions [ (these {try.#Failure (all text#composite "Cannot parse " (remaining_inputs tokens))})] + (def .public + (Parser ) + (function (_ tokens) + (case tokens + {.#Item [[_ { x}] tokens']} + {try.#Success [tokens' x]} + + _ + ))) + + (def .public ( expected) + (-> (Parser Any)) + (function (_ tokens) + (case tokens + {.#Item [[_ { actual}] tokens']} + (if (at = expected actual) + {try.#Success [tokens' []]} + ) + + _ + ))))] + + [bit this_bit Bit .#Bit bit.equivalence "bit"] + [nat this_nat Nat .#Nat nat.equivalence "nat"] + [int this_int Int .#Int int.equivalence "int"] + [rev this_rev Rev .#Rev rev.equivalence "rev"] + [frac this_frac Frac .#Frac frac.equivalence "frac"] + [text this_text Text .#Text text.equivalence "text"] + [symbol this_symbol Symbol .#Symbol symbol.equivalence "symbol"] + ) + +(def .public (this code) + (-> Code (Parser Any)) + (function (_ tokens) + (case tokens + {.#Item [token tokens']} + (if (code#= code token) + {try.#Success [tokens' []]} + {try.#Failure (all text#composite "Expected a " (code.format code) " but instead got " (code.format token) + (remaining_inputs tokens))}) + + _ + {try.#Failure "There are no tokens to parse!"}))) + +(with_expansions [ (these {try.#Failure (all text#composite "Cannot parse local symbol" (remaining_inputs tokens))})] + (def .public local + (Parser Text) + (function (_ tokens) + (case tokens + {.#Item [[_ {.#Symbol ["" x]}] tokens']} + {try.#Success [tokens' x]} + + _ + ))) + + (def .public (this_local expected) + (-> Text (Parser Any)) + (function (_ tokens) + (case tokens + {.#Item [[_ {.#Symbol ["" actual]}] tokens']} + (if (at text.equivalence = expected actual) + {try.#Success [tokens' []]} + ) + + _ + )))) + +(with_expansions [ (these {try.#Failure (all text#composite "Cannot parse local symbol" (remaining_inputs tokens))})] + (def .public global + (Parser Symbol) + (function (_ tokens) + (case tokens + {.#Item [[_ {.#Symbol ["" short]}] tokens']} + + + {.#Item [[_ {.#Symbol it}] tokens']} + {try.#Success [tokens' it]} + + _ + ))) + + (def .public (this_global expected) + (-> Symbol (Parser Any)) + (function (_ tokens) + (case tokens + {.#Item [[_ {.#Symbol ["" actual]}] tokens']} + + + {.#Item [[_ {.#Symbol it}] tokens']} + (if (at symbol.equivalence = expected it) + {try.#Success [tokens' []]} + ) + + _ + )))) + +(with_template [ ] + [(def .public ( p) + (All (_ a) + (-> (Parser a) (Parser a))) + (function (_ tokens) + (case tokens + {.#Item [[_ { members}] tokens']} + (case (p members) + {try.#Success [{.#End} x]} {try.#Success [tokens' x]} + _ {try.#Failure (all text#composite "Parser was expected to fully consume " (remaining_inputs tokens))}) + + _ + {try.#Failure (all text#composite "Cannot parse " (remaining_inputs tokens))})))] + + [form .#Form "form"] + [variant .#Variant "variant"] + [tuple .#Tuple "tuple"] + ) + +(def .public end + (Parser Any) + (function (_ tokens) + (case tokens + {.#End} {try.#Success [tokens []]} + _ {try.#Failure (all text#composite "Expected list of tokens to be empty!" (remaining_inputs tokens))}))) + +(def .public end? + (Parser Bit) + (function (_ tokens) + {try.#Success [tokens (case tokens + {.#End} true + _ false)]})) + +(def .public (result parser inputs) + (All (_ a) (-> (Parser a) (List Code) (Try a))) + (case (parser inputs) + {try.#Failure error} + {try.#Failure error} + + {try.#Success [unconsumed value]} + (case unconsumed + {.#End} + {try.#Success value} + + _ + {try.#Failure (|> unconsumed + (list#each code.format) + (text.interposed ", ") + (text#composite "Unconsumed inputs: "))}))) + +(def .public (locally inputs parser) + (All (_ a) (-> (List Code) (Parser a) (Parser a))) + (function (_ real) + (do try.monad + [value (..result parser inputs)] + (in [real value])))) + +(def .public (not parser) + (All (_ a) (-> (Parser a) (Parser Code))) + (do //.monad + [sample ..next + result (//.or parser + ..any)] + (case result + {.#Left _} (//.failure (text#composite "Did NOT expect to parse code: " (code.format sample))) + {.#Right output} (in output)))) diff --git a/stdlib/source/parser/lux/meta/type.lux b/stdlib/source/parser/lux/meta/type.lux index 7c7090474..46f89fec7 100644 --- a/stdlib/source/parser/lux/meta/type.lux +++ b/stdlib/source/parser/lux/meta/type.lux @@ -15,11 +15,12 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" dictionary (.only Dictionary)]]] [macro - ["^" pattern] - ["[0]" code]] + ["^" pattern]] [math [number - ["n" nat (.use "[1]#[0]" decimal)]]]]] + ["n" nat (.use "[1]#[0]" decimal)]]] + [meta + ["[0]" code]]]] [\\library ["[0]" / (.use "[1]#[0]" equivalence) ["[0]" check]]]) diff --git a/stdlib/source/polytypic/lux/abstract/equivalence.lux b/stdlib/source/polytypic/lux/abstract/equivalence.lux index 983beea4d..0c83b9ab5 100644 --- a/stdlib/source/polytypic/lux/abstract/equivalence.lux +++ b/stdlib/source/polytypic/lux/abstract/equivalence.lux @@ -19,8 +19,6 @@ ["[0]" set] ["[0]" dictionary (.only Dictionary)] ["[0]" tree]]] - [macro - ["[0]" code]] [math [number ["[0]" nat (.use "[1]#[0]" decimal)] @@ -34,6 +32,7 @@ ["[0]" day] ["[0]" month]] [meta + ["[0]" code] ["[0]" type (.only) ["<[1]>" \\parser] ["[0]" poly (.only polytypic)] diff --git a/stdlib/source/polytypic/lux/abstract/functor.lux b/stdlib/source/polytypic/lux/abstract/functor.lux index e10853519..db17e49ac 100644 --- a/stdlib/source/polytypic/lux/abstract/functor.lux +++ b/stdlib/source/polytypic/lux/abstract/functor.lux @@ -11,12 +11,11 @@ ["%" \\format (.only format)]] [collection ["[0]" list (.use "[1]#[0]" monad monoid)]]] - [macro - ["[0]" code]] [math [number ["n" nat]]] [meta + ["[0]" code] ["[0]" type (.only) ["<[1]>" \\parser] ["[0]" poly (.only polytypic)]]]]] diff --git a/stdlib/source/polytypic/lux/data/format/json.lux b/stdlib/source/polytypic/lux/data/format/json.lux index 229abb9c9..a8eee64d0 100644 --- a/stdlib/source/polytypic/lux/data/format/json.lux +++ b/stdlib/source/polytypic/lux/data/format/json.lux @@ -18,9 +18,7 @@ ["[0]" sequence (.only sequence)] ["[0]" dictionary]]] [macro - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number ["n" nat (.use "[1]#[0]" decimal)] @@ -34,6 +32,8 @@ ["[0]" day] ["[0]" month]] [meta + ["[0]" code (.only) + ["<[1]>" \\parser]] ["[0]" type (.only) ["<[1]>" \\parser] ["[0]" unit] diff --git a/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux b/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux index 6fbeb5b07..d6032bc33 100644 --- a/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux +++ b/stdlib/source/program/aedifex/artifact/snapshot/stamp.lux @@ -7,9 +7,9 @@ [control ["<>" parser]] [data + ["[0]" product] ["[0]" text ["<[1]>" \\parser]] - ["[0]" product] [format ["[0]" xml (.only XML) ["<[1]>" \\parser (.only Parser)]]]]]] diff --git a/stdlib/source/program/aedifex/input.lux b/stdlib/source/program/aedifex/input.lux index 918c051b1..fc477f0a1 100644 --- a/stdlib/source/program/aedifex/input.lux +++ b/stdlib/source/program/aedifex/input.lux @@ -14,11 +14,10 @@ ["[0]" utf8]]] [collection ["[0]" list]]] - [macro + [meta + ["[0]" location] ["[0]" code (.only) ["<[1]>" \\parser]]] - [meta - ["[0]" location]] [tool [compiler [language diff --git a/stdlib/source/program/aedifex/metadata/artifact.lux b/stdlib/source/program/aedifex/metadata/artifact.lux index a8840bab7..3ddc320b2 100644 --- a/stdlib/source/program/aedifex/metadata/artifact.lux +++ b/stdlib/source/program/aedifex/metadata/artifact.lux @@ -5,9 +5,9 @@ [monad (.only do)] [equivalence (.only Equivalence)]] [control + ["<>" parser] ["[0]" pipe] ["[0]" try (.only Try)] - ["<>" parser] [concurrency ["[0]" async (.only Async)]]] [data diff --git a/stdlib/source/program/aedifex/parser.lux b/stdlib/source/program/aedifex/parser.lux index 5255067fd..cad4c3f40 100644 --- a/stdlib/source/program/aedifex/parser.lux +++ b/stdlib/source/program/aedifex/parser.lux @@ -13,7 +13,7 @@ ["[0]" dictionary (.only Dictionary)] [list ["[0]" property]]]] - [macro + [meta ["[0]" code (.only) ["<[1]>" \\parser (.only Parser)]]] [tool diff --git a/stdlib/source/specification/compositor/analysis/type.lux b/stdlib/source/specification/compositor/analysis/type.lux index 018683d99..abeed68de 100644 --- a/stdlib/source/specification/compositor/analysis/type.lux +++ b/stdlib/source/specification/compositor/analysis/type.lux @@ -9,7 +9,7 @@ ["[0]" try]] [math ["r" random (.only Random)]] - [macro + [meta ["[0]" code]] [tool [compiler diff --git a/stdlib/source/specification/compositor/generation/structure.lux b/stdlib/source/specification/compositor/generation/structure.lux index efdbd3ad2..ba552577b 100644 --- a/stdlib/source/specification/compositor/generation/structure.lux +++ b/stdlib/source/specification/compositor/generation/structure.lux @@ -1,6 +1,7 @@ (.require [lux (.except) ["_" test (.only Test)] + ["[0]" ffi (.only import)] [abstract [monad (.only do)]] [control @@ -18,7 +19,6 @@ ["[0]" list (.use "[1]#[0]" functor)]]] [math ["r" random]] - ["[0]" ffi (.only import)] [tool [compiler ["[0]" analysis] diff --git a/stdlib/source/test/aedifex/artifact/time.lux b/stdlib/source/test/aedifex/artifact/time.lux index 2ef81472a..c81dffa89 100644 --- a/stdlib/source/test/aedifex/artifact/time.lux +++ b/stdlib/source/test/aedifex/artifact/time.lux @@ -11,12 +11,12 @@ [data ["[0]" text ["<[1]>" \\parser]]] - [time - ["[0]" instant (.use "[1]#[0]" equivalence)]] [math ["[0]" random (.only Random)] [number - ["i" int]]]]] + ["i" int]]] + [time + ["[0]" instant (.use "[1]#[0]" equivalence)]]]] [\\program ["[0]" /]] ["[0]" / diff --git a/stdlib/source/test/aedifex/metadata/artifact.lux b/stdlib/source/test/aedifex/metadata/artifact.lux index 5e0a5b41c..17770c575 100644 --- a/stdlib/source/test/aedifex/metadata/artifact.lux +++ b/stdlib/source/test/aedifex/metadata/artifact.lux @@ -20,12 +20,12 @@ ["<[1]>" \\parser]]] [collection ["[0]" list]]] - [macro - ["[0]" code]] [math ["[0]" random (.only Random)] [number ["n" nat]]] + [meta + ["[0]" code]] ["[0]" time (.only) ["[0]" date] ["[0]" year] diff --git a/stdlib/source/test/aedifex/metadata/snapshot.lux b/stdlib/source/test/aedifex/metadata/snapshot.lux index 9d88a0617..46e368dbf 100644 --- a/stdlib/source/test/aedifex/metadata/snapshot.lux +++ b/stdlib/source/test/aedifex/metadata/snapshot.lux @@ -20,12 +20,12 @@ ["<[1]>" \\parser]]] [collection ["[0]" list]]] - [macro - ["[0]" code]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number ["n" nat]]] + [meta + ["[0]" code]] ["[0]" time (.only) ["[0]" date] ["[0]" year] diff --git a/stdlib/source/test/aedifex/parser.lux b/stdlib/source/test/aedifex/parser.lux index cd49c6417..01daa640e 100644 --- a/stdlib/source/test/aedifex/parser.lux +++ b/stdlib/source/test/aedifex/parser.lux @@ -18,7 +18,7 @@ ["[0]" random (.only Random)] [number ["n" nat]]] - [macro + [meta ["[0]" code (.only) ["<[1]>" \\parser]]]]] [// diff --git a/stdlib/source/test/lux.lux b/stdlib/source/test/lux.lux index 04f893c8f..a7cb9cfa9 100644 --- a/stdlib/source/test/lux.lux +++ b/stdlib/source/test/lux.lux @@ -24,9 +24,7 @@ ["[0]" macro (.only) [syntax (.only syntax)] ["^" pattern] - ["[0]" template] - ["[0]" code (.use "[1]#[0]" equivalence) - ["<[1]>" \\parser]]] + ["[0]" template]] ["[0]" math ["[0]" random (.use "[1]#[0]" functor)] [number @@ -38,7 +36,9 @@ ["f" frac] ["[0]" i64]]] ["[0]" meta (.use "[1]#[0]" monad) - ["[0]" location (.use "[1]#[0]" equivalence)]]]] + ["[0]" location (.use "[1]#[0]" equivalence)] + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]]]] ... TODO: Must have 100% coverage on tests. ["[0]" / ["[1][0]" abstract] diff --git a/stdlib/source/test/lux/control/parser.lux b/stdlib/source/test/lux/control/parser.lux index aa083b543..738a8b739 100644 --- a/stdlib/source/test/lux/control/parser.lux +++ b/stdlib/source/test/lux/control/parser.lux @@ -21,7 +21,8 @@ [number ["n" nat]]] [macro - [syntax (.only syntax)] + [syntax (.only syntax)]] + [meta ["[0]" code (.only) ["<[1]>" \\parser]]]]] [\\library diff --git a/stdlib/source/test/lux/control/remember.lux b/stdlib/source/test/lux/control/remember.lux index 44216d17d..8d6c21767 100644 --- a/stdlib/source/test/lux/control/remember.lux +++ b/stdlib/source/test/lux/control/remember.lux @@ -2,7 +2,6 @@ [library [lux (.except) ["_" test (.only Test)] - ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control @@ -16,14 +15,15 @@ [math [number (.only hex)] ["[0]" random (.only Random) (.use "[1]#[0]" monad)]] + ["[0]" macro (.only) + ["[0]" syntax (.only syntax)]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]] [time ["[0]" date (.only Date)] ["[0]" instant] - ["[0]" duration]] - ["[0]" macro (.only) - ["[0]" syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]]]] + ["[0]" duration]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/data/binary.lux b/stdlib/source/test/lux/data/binary.lux index 5bd685351..4fde0e1f9 100644 --- a/stdlib/source/test/lux/data/binary.lux +++ b/stdlib/source/test/lux/data/binary.lux @@ -32,8 +32,7 @@ [array [\\unsafe (.only)]]]] [macro - ["^" pattern] - ["[0]" code]] + ["^" pattern]] [math ["[0]" random (.only Random)] [number @@ -43,6 +42,7 @@ ["[0]" rev] ["[0]" frac]]] [meta + ["[0]" code] ["[0]" symbol] ["[0]" type]]]] [\\library diff --git a/stdlib/source/test/lux/data/format/json.lux b/stdlib/source/test/lux/data/format/json.lux index 75d616037..7177b268d 100644 --- a/stdlib/source/test/lux/data/format/json.lux +++ b/stdlib/source/test/lux/data/format/json.lux @@ -29,8 +29,7 @@ ["[0]" list (.use "[1]#[0]" functor)]]] ["[0]" macro (.only) ["^" pattern] - ["[0]" syntax (.only syntax)] - ["[0]" code]] + ["[0]" syntax (.only syntax)]] [math ["[0]" random (.only Random)] [number @@ -43,6 +42,7 @@ ["[0]" duration ["[0]/[1]" \\test]]] ["[0]" meta (.only) + ["[0]" code] [type ["[0]" unit]]]]] ["[0]" \\polytypic] diff --git a/stdlib/source/test/lux/data/text.lux b/stdlib/source/test/lux/data/text.lux index ca4866bc4..04c67ac15 100644 --- a/stdlib/source/test/lux/data/text.lux +++ b/stdlib/source/test/lux/data/text.lux @@ -34,9 +34,7 @@ ["[1]" set] ["[1]/[0]" block]]]] [macro - ["^" pattern] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["^" pattern]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] ["[0]" modulus] @@ -50,7 +48,9 @@ [meta ["[0]" location] ["[0]" symbol] - ["[0]" type]] + ["[0]" type] + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["[0]" time (.only) ["[0]" day] ["[0]" month] @@ -62,9 +62,8 @@ ["[1][0]" xml] ["[1][0]" json]] [// - [macro - ["[1][0]" code]] [meta + ["[1][0]" code] ["[1][0]" symbol] ["[1][0]" type]]]] ["[0]" / diff --git a/stdlib/source/test/lux/data/text/escape.lux b/stdlib/source/test/lux/data/text/escape.lux index 86e2a645a..94808d95b 100644 --- a/stdlib/source/test/lux/data/text/escape.lux +++ b/stdlib/source/test/lux/data/text/escape.lux @@ -3,7 +3,6 @@ [lux (.except) ["_" test (.only Test)] ["[0]" debug] - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -17,13 +16,14 @@ ["[0]" set (.only Set)]]] [macro [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math ["[0]" random (.only Random)] [number (.only hex) - ["n" nat]]]]] + ["n" nat]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" / (.only) [// diff --git a/stdlib/source/test/lux/data/text/regex.lux b/stdlib/source/test/lux/data/text/regex.lux index 5988210cd..4d480632b 100644 --- a/stdlib/source/test/lux/data/text/regex.lux +++ b/stdlib/source/test/lux/data/text/regex.lux @@ -12,12 +12,13 @@ ["%" \\format (.only format)] ["<[1]>" \\parser (.only Parser)]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math [number (.only hex)] - ["[0]" random]]]] + ["[0]" random]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/debug.lux b/stdlib/source/test/lux/debug.lux index d85343bc9..245f5bdba 100644 --- a/stdlib/source/test/lux/debug.lux +++ b/stdlib/source/test/lux/debug.lux @@ -17,13 +17,14 @@ [json (.only JSON)] [xml (.only XML)]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" random (.only Random)] [number [ratio (.only Ratio)]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser]]] [time (.only Time) [instant (.only Instant)] [date (.only Date)] @@ -37,12 +38,11 @@ [format ["[1][0]" json] ["[1][0]" xml]]] - [macro - ["[1][0]" code]] [math [number ["[1][0]" ratio]]] [meta + ["[1][0]" code] ["[1][0]" location] ["[1][0]" symbol] ["[1][0]" type]]]) diff --git a/stdlib/source/test/lux/documentation.lux b/stdlib/source/test/lux/documentation.lux index 8054dbbcc..bac10e185 100644 --- a/stdlib/source/test/lux/documentation.lux +++ b/stdlib/source/test/lux/documentation.lux @@ -2,7 +2,6 @@ [library [lux (.except) ["_" test (.only Test)] - ["[0]" meta] [control ["[0]" try] ["[0]" exception]] @@ -13,7 +12,8 @@ ["md" markdown]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" template] + ["[0]" template]] + ["[0]" meta (.only) ["[0]" code (.only) ["<[1]>" \\parser]]]]] [\\library diff --git a/stdlib/source/test/lux/extension.lux b/stdlib/source/test/lux/extension.lux index 4ee1757d0..27a8a4cc8 100644 --- a/stdlib/source/test/lux/extension.lux +++ b/stdlib/source/test/lux/extension.lux @@ -31,13 +31,14 @@ ["[0]" sequence] ["[0]" list (.use "[1]#[0]" functor)]]] [macro - ["[0]" template] - ["[0]" code - ["<[1]>" \\parser]]] + ["[0]" template]] [math ["[0]" random] [number ["n" nat]]] + [meta + ["[0]" code + ["<[1]>" \\parser]]] [tool [compiler ["[0]" phase] @@ -135,48 +136,48 @@ ... Declaration (declaration (..my_declaration self phase archive [expression .any]) - (do [! phase.monad] - [analysis_phase declaration.analysis - expressionA (<| declaration.lifted_analysis - (type.expecting .Any) - (analysis_phase archive expression)) - - synthesis_phase declaration.synthesis - expressionS (declaration.lifted_synthesis - (synthesis_phase archive expressionA)) - - generation_phase declaration.generation - expressionG (declaration.lifted_generation - (generation_phase archive expressionS)) - - _ (declaration.lifted_generation - (generation.with_new_context archive unit.none - (do ! - [[module_id artifact_id] (generation.context archive) - .let [commentary (format "Successfully installed declaration " (%.text self) "!")] - _ (generation.save! artifact_id {.#None} - (for @.jvm (let [$class (jvm/runtime.class_name [module_id artifact_id])] - (<| [$class] - (try.else (binary.empty 0)) - (try#each (binaryF.result class.format)) - (class.class version.v6_0 class.public - (name.internal $class) - {.#None} - (name.internal "java.lang.Object") - (list) - (list) - (list) - sequence.empty))) - @.js (js.comment commentary - (js.statement (js.string commentary))) - @.python (python.comment commentary - (python.statement (python.string commentary))) - @.lua (lua.comment commentary - (lua.statement expressionG)) - @.ruby (ruby.comment commentary - (ruby.statement (ruby.string commentary)))))] - (generation.log! commentary))))] - (in declaration.no_requirements))) + (do [! phase.monad] + [analysis_phase declaration.analysis + expressionA (<| declaration.lifted_analysis + (type.expecting .Any) + (analysis_phase archive expression)) + + synthesis_phase declaration.synthesis + expressionS (declaration.lifted_synthesis + (synthesis_phase archive expressionA)) + + generation_phase declaration.generation + expressionG (declaration.lifted_generation + (generation_phase archive expressionS)) + + _ (declaration.lifted_generation + (generation.with_new_context archive unit.none + (do ! + [[module_id artifact_id] (generation.context archive) + .let [commentary (format "Successfully installed declaration " (%.text self) "!")] + _ (generation.save! artifact_id {.#None} + (for @.jvm (let [$class (jvm/runtime.class_name [module_id artifact_id])] + (<| [$class] + (try.else (binary.empty 0)) + (try#each (binaryF.result class.format)) + (class.class version.v6_0 class.public + (name.internal $class) + {.#None} + (name.internal "java.lang.Object") + (list) + (list) + (list) + sequence.empty))) + @.js (js.comment commentary + (js.statement (js.string commentary))) + @.python (python.comment commentary + (python.statement (python.string commentary))) + @.lua (lua.comment commentary + (lua.statement expressionG)) + @.ruby (ruby.comment commentary + (ruby.statement (ruby.string commentary)))))] + (generation.log! commentary))))] + (in declaration.no_requirements))) (`` ((~~ (static ..my_declaration)) (n.* 2 3))) )) diff --git a/stdlib/source/test/lux/ffi.jvm.lux b/stdlib/source/test/lux/ffi.jvm.lux index 13c9f2fcd..375de540a 100644 --- a/stdlib/source/test/lux/ffi.jvm.lux +++ b/stdlib/source/test/lux/ffi.jvm.lux @@ -19,9 +19,7 @@ ["[0]" array (.only Array)]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number (.only hex) @@ -30,7 +28,9 @@ ["i" int (.use "[1]#[0]" equivalence)] ["f" frac (.use "[1]#[0]" equivalence)]]] ["[0]" meta (.only) - ["[0]" type (.use "[1]#[0]" equivalence)]] + ["[0]" type (.use "[1]#[0]" equivalence)] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [target ["[0]" jvm ["[1]" type (.use "[1]#[0]" equivalence)]]]]] diff --git a/stdlib/source/test/lux/ffi/export.jvm.lux b/stdlib/source/test/lux/ffi/export.jvm.lux index b4e827e14..8ad59d6ed 100644 --- a/stdlib/source/test/lux/ffi/export.jvm.lux +++ b/stdlib/source/test/lux/ffi/export.jvm.lux @@ -2,7 +2,6 @@ [library [lux (.except) ["_" test (.only Test)] - ["[0]" meta] ["[0]" debug] ["[0]" static] [abstract @@ -12,14 +11,15 @@ ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format]]] [macro - ["[0]" code] ["[0]" template]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number (.only hex) ["[0]" i64] ["[0]" int (.use "[1]#[0]" equivalence)] - ["[0]" frac (.use "[1]#[0]" equivalence)]]]]] + ["[0]" frac (.use "[1]#[0]" equivalence)]]] + ["[0]" meta (.only) + ["[0]" code]]]] [\\library ["[0]" / (.only) ["/[1]" //]]]) diff --git a/stdlib/source/test/lux/macro.lux b/stdlib/source/test/lux/macro.lux index 3f6e3fe92..555a47c03 100644 --- a/stdlib/source/test/lux/macro.lux +++ b/stdlib/source/test/lux/macro.lux @@ -21,15 +21,14 @@ ["n" nat]]] ["[0]" meta (.only) ["[0]" location] - ["[0]" symbol]]]] + ["[0]" symbol] + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]]]] [\\library ["[0]" / (.only) [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.use "[1]#[0]" equivalence) - ["<[1]>" \\parser]]]] + ["[0]" template]]] ["[0]" / - ["[1][0]" code] ["[1][0]" local] ["[1][0]" syntax] ["[1][0]" template] @@ -243,7 +242,6 @@ ..test|expansion - /code.test /local.test /syntax.test /template.test diff --git a/stdlib/source/test/lux/macro/code.lux b/stdlib/source/test/lux/macro/code.lux deleted file mode 100644 index a566b030d..000000000 --- a/stdlib/source/test/lux/macro/code.lux +++ /dev/null @@ -1,318 +0,0 @@ -(.require - [library - [lux (.except local global) - ["_" test (.only Test)] - [abstract - [monad (.only do)] - [\\specification - ["$[0]" equivalence]]] - [control - ["<>" parser] - ["[0]" function] - ["[0]" try (.only Try)]] - [data - ["[0]" bit] - ["[0]" product] - ["[0]" text] - [collection - ["[0]" list (.use "[1]#[0]" functor)]]] - [macro - ["^" pattern]] - [math - ["[0]" random (.only Random) (.use "[1]#[0]" monad)] - [number - ["[0]" nat] - ["[0]" int] - ["[0]" rev] - ["[0]" frac]]] - [meta - ["[0]" symbol] - ["[0]" location]] - [tool - [compiler - [language - [lux - ["[0]" syntax]]]]]]] - ["[0]" \\parser] - [\\library - ["[0]" /]]) - -(def !expect - (template (_ ) - [(case - - true - - _ - false)])) - -(def local - (Random Text) - (random.lower_case 1)) - -(def global - (Random Symbol) - (all random.and - (random.lower_case 1) - (random.lower_case 1) - )) - -(def any_symbol - (Random Symbol) - (all random.either - (random#each (|>> [""]) - ..local) - ..global - )) - -(def \\parser - Test - (<| (_.covering \\parser._) - (_.for [\\parser.Parser]) - (`` (all _.and - (do [! random.monad] - [expected (at ! each /.bit random.bit)] - (_.coverage [\\parser.result] - (and (|> (\\parser.result \\parser.any (list expected)) - (!expect {try.#Success _})) - (|> (\\parser.result \\parser.any (list)) - (!expect {try.#Failure _}))))) - (~~ (with_template [ ] - [(do [! random.monad] - [expected - dummy (|> (random.only (|>> (at = expected) not)))] - (all _.and - (_.coverage [] - (|> (\\parser.result (list ( expected))) - (!expect (^.multi {try.#Success actual} - (at = expected actual))))) - (_.coverage [] - (and (|> (\\parser.result ( expected) (list ( expected))) - (!expect {try.#Success []})) - (|> (\\parser.result ( expected) (list ( dummy))) - (!expect {try.#Failure _})))) - ))] - - [\\parser.any \\parser.this (at ! each /.bit random.bit) function.identity /.equivalence] - [\\parser.bit \\parser.this_bit random.bit /.bit bit.equivalence] - [\\parser.nat \\parser.this_nat random.nat /.nat nat.equivalence] - [\\parser.int \\parser.this_int random.int /.int int.equivalence] - [\\parser.rev \\parser.this_rev random.rev /.rev rev.equivalence] - [\\parser.frac \\parser.this_frac random.safe_frac /.frac frac.equivalence] - [\\parser.text \\parser.this_text (random.unicode 1) /.text text.equivalence] - [\\parser.local \\parser.this_local ..local /.local text.equivalence] - [\\parser.global \\parser.this_global ..global /.symbol symbol.equivalence] - [\\parser.symbol \\parser.this_symbol ..any_symbol /.symbol symbol.equivalence] - )) - (~~ (with_template [ ] - [(do [! random.monad] - [expected_left random.nat - expected_right random.int] - (_.coverage [] - (|> (\\parser.result ( (<>.and \\parser.nat \\parser.int)) - (list ( (list (/.nat expected_left) - (/.int expected_right))))) - (!expect (^.multi {try.#Success [actual_left actual_right]} - (and (at nat.equivalence = expected_left actual_left) - (at int.equivalence = expected_right actual_right)))))))] - - [\\parser.form /.form] - [\\parser.variant /.variant] - [\\parser.tuple /.tuple] - )) - (do [! random.monad] - [expected_local random.nat - expected_global random.int] - (_.coverage [\\parser.locally] - (|> (\\parser.result (<>.and (\\parser.locally (list (/.nat expected_local)) \\parser.nat) - \\parser.int) - (list (/.int expected_global))) - (!expect (^.multi {try.#Success [actual_local actual_global]} - (and (at nat.equivalence = expected_local actual_local) - (at int.equivalence = expected_global actual_global))))))) - (do [! random.monad] - [dummy (at ! each /.bit random.bit)] - (_.coverage [\\parser.end?] - (|> (\\parser.result (do <>.monad - [pre \\parser.end? - _ \\parser.any - post \\parser.end?] - (in (and (not pre) - post))) - (list dummy)) - (!expect (^.multi {try.#Success verdict} - verdict))))) - (do [! random.monad] - [dummy (at ! each /.bit random.bit)] - (_.coverage [\\parser.end] - (and (|> (\\parser.result \\parser.end (list)) - (!expect {try.#Success []})) - (|> (\\parser.result \\parser.end (list dummy)) - (!expect {try.#Failure _}))))) - (do [! random.monad] - [expected (at ! each /.bit random.bit)] - (_.coverage [\\parser.next] - (|> (\\parser.result (do <>.monad - [pre \\parser.next - post \\parser.any] - (in (and (same? expected pre) - (same? pre post)))) - (list expected)) - (!expect {try.#Success _})))) - (do [! random.monad] - [expected (at ! each /.bit random.bit)] - (_.coverage [\\parser.not] - (and (|> (\\parser.result (\\parser.not \\parser.nat) (list expected)) - (!expect (^.multi {try.#Success actual} - (same? expected actual)))) - (|> (\\parser.result (\\parser.not \\parser.bit) (list expected)) - (!expect {try.#Failure _}))))) - )))) - -(def random_text - (Random Text) - (random.alphabetic 10)) - -(def random_symbol - (Random Symbol) - (random.and ..random_text ..random_text)) - -(def (random_sequence random) - (All (_ a) (-> (Random a) (Random (List a)))) - (do [! random.monad] - [size (|> random.nat (at ! each (nat.% 3)))] - (random.list size random))) - -(def .public random - (Random Code) - (random.rec - (function (_ random) - (all random.either - (random#each /.bit random.bit) - (random#each /.nat random.nat) - (random#each /.int random.int) - (random#each /.rev random.rev) - (random#each /.frac random.safe_frac) - (random#each /.text ..random_text) - (random#each /.symbol ..random_symbol) - (random#each /.form (..random_sequence random)) - (random#each /.variant (..random_sequence random)) - (random#each /.tuple (..random_sequence random)) - )))) - -(def (read source_code) - (-> Text (Try Code)) - (let [parse (syntax.parse "" - syntax.no_aliases - (text.size source_code)) - start (is Source - [location.dummy 0 source_code])] - (case (parse start) - {.#Left [end error]} - {try.#Failure error} - - {.#Right [end lux_code]} - {try.#Success lux_code}))) - -(def (replacement_simulation [original substitute]) - (-> [Code Code] (Random [Code Code])) - (random.rec - (function (_ replacement_simulation) - (let [for_sequence (is (-> (-> (List Code) Code) (Random [Code Code])) - (function (_ to_code) - (random.only (|>> product.left (at /.equivalence = original) not) - (do [! random.monad] - [parts (..random_sequence replacement_simulation)] - (in [(to_code (list#each product.left parts)) - (to_code (list#each product.right parts))])))))] - (all random.either - (random#in [original substitute]) - (do [! random.monad] - [sample (random.only (|>> (at /.equivalence = original) not) - (all random.either - (random#each /.bit random.bit) - (random#each /.nat random.nat) - (random#each /.int random.int) - (random#each /.rev random.rev) - (random#each /.frac random.safe_frac) - (random#each /.text ..random_text) - (random#each /.symbol ..random_symbol)))] - (in [sample sample])) - (for_sequence /.form) - (for_sequence /.variant) - (for_sequence /.tuple) - ))))) - -(def for_format - Test - (`` (all _.and - (~~ (with_template [ ] - [(do [! random.monad] - [expected ] - (_.coverage [] - (and (case (..read (/.format ( expected))) - {try.#Success actual} - (at /.equivalence = - actual - ( expected)) - - {try.#Failure error} - false) - (at /.equivalence = - [location.dummy { expected}] - ( expected)))))] - - [/.bit random.bit .#Bit] - [/.nat random.nat .#Nat] - [/.int random.int .#Int] - [/.rev random.rev .#Rev] - [/.frac random.safe_frac .#Frac] - [/.text ..random_text .#Text] - [/.symbol ..random_symbol .#Symbol] - [/.form (..random_sequence ..random) .#Form] - [/.variant (..random_sequence ..random) .#Variant] - [/.tuple (..random_sequence ..random) .#Tuple])) - (~~ (with_template [ ] - [(do [! random.monad] - [expected ] - (_.coverage [] - (and (case (..read (/.format ( expected))) - {try.#Success actual} - (at /.equivalence = - actual - ( expected)) - - {try.#Failure error} - false) - (at /.equivalence = - [location.dummy { ["" expected]}] - ( expected))) - ))] - - [/.local ..random_text .#Symbol] - ))))) - -(def .public test - Test - (<| (_.covering /._) - (all _.and - (_.for [/.equivalence] - ($equivalence.spec /.equivalence ..random)) - - (_.for [/.format] - ..for_format) - - (do [! random.monad] - [[original substitute] (random.only (function (_ [original substitute]) - (not (at /.equivalence = original substitute))) - (random.and ..random ..random)) - [sample expected] (random.only (function (_ [sample expected]) - (not (at /.equivalence = sample expected))) - (..replacement_simulation [original substitute]))] - (_.coverage [/.replaced] - (at /.equivalence = - expected - (/.replaced original substitute sample)))) - - ..\\parser - ))) diff --git a/stdlib/source/test/lux/macro/local.lux b/stdlib/source/test/lux/macro/local.lux index 74d66e29c..eb904eed8 100644 --- a/stdlib/source/test/lux/macro/local.lux +++ b/stdlib/source/test/lux/macro/local.lux @@ -2,7 +2,6 @@ [library [lux (.except with) ["_" test (.only Test)] - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -16,13 +15,14 @@ ["[0]" list ["[0]" property]]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" random (.only Random)] [number - ["n" nat]]]]] + ["n" nat]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/macro/pattern.lux b/stdlib/source/test/lux/macro/pattern.lux index 8ebdf71db..7b9e161c1 100644 --- a/stdlib/source/test/lux/macro/pattern.lux +++ b/stdlib/source/test/lux/macro/pattern.lux @@ -6,14 +6,14 @@ [monad (.only do)]] [data ["[0]" bit (.use "[1]#[0]" equivalence)]] - [macro - ["[0]" code]] [math ["[0]" random (.only Random)] [number ["n" nat] ["i" int] - ["f" frac]]]]] + ["f" frac]]] + [meta + ["[0]" code]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/macro/syntax.lux b/stdlib/source/test/lux/macro/syntax.lux index c973ed03c..84304452c 100644 --- a/stdlib/source/test/lux/macro/syntax.lux +++ b/stdlib/source/test/lux/macro/syntax.lux @@ -7,12 +7,12 @@ [math ["[0]" random] [number - ["n" nat]]]]] - [\\library - ["[0]" / (.only) - [// + ["n" nat]]] + [meta ["[0]" code ["<[1]>" \\parser]]]]] + [\\library + ["[0]" /]] ["[0]" / ["[1][0]" check] ["[1][0]" declaration] diff --git a/stdlib/source/test/lux/macro/syntax/check.lux b/stdlib/source/test/lux/macro/syntax/check.lux index b8e3aa34b..11fa981e6 100644 --- a/stdlib/source/test/lux/macro/syntax/check.lux +++ b/stdlib/source/test/lux/macro/syntax/check.lux @@ -11,19 +11,20 @@ ["[0]" try]] [math ["[0]" random (.only Random)]] - [macro + [meta ["[0]" code (.use "[1]#[0]" equivalence) ["<[1]>" \\parser]]]]] [\\library ["[0]" /]] - ["$[0]" /// - ["[1][0]" code]]) + ["$[0]" //// + [meta + ["[1][0]" code]]]) (def .public random (Random /.Check) (all random.and - $///code.random - $///code.random + $////code.random + $////code.random )) (def .public test diff --git a/stdlib/source/test/lux/macro/syntax/declaration.lux b/stdlib/source/test/lux/macro/syntax/declaration.lux index b6c571170..d111576fc 100644 --- a/stdlib/source/test/lux/macro/syntax/declaration.lux +++ b/stdlib/source/test/lux/macro/syntax/declaration.lux @@ -14,9 +14,10 @@ ["n" nat]]]]] [\\library ["[0]" / (.only) - [/// - ["[0]" code - ["<[1]>" \\parser]]]]]) + [//// + [meta + ["[0]" code + ["<[1]>" \\parser]]]]]]) (def .public random (Random /.Declaration) diff --git a/stdlib/source/test/lux/macro/syntax/definition.lux b/stdlib/source/test/lux/macro/syntax/definition.lux index eab4879a0..0ebf14286 100644 --- a/stdlib/source/test/lux/macro/syntax/definition.lux +++ b/stdlib/source/test/lux/macro/syntax/definition.lux @@ -10,26 +10,26 @@ ["<>" parser] ["[0]" try] ["[0]" exception]] - [macro - ["[0]" code (.use "[1]#[0]" equivalence) - ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)]] [meta - ["[0]" location]]]] + ["[0]" location] + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]] ["$[0]"// ["[1][0]" check] - ["[1]/" // - ["[1][0]" code]]]) + ["[1]//" /// + [meta + ["[1][0]" code]]]]) (def .public random (Random /.Definition) (all random.and (random.alphabetic 5) (random.or $//check.random - $///code.random) + $////code.random) random.bit )) @@ -64,8 +64,8 @@ (do random.monad [expected ..random - type $///code.random - untyped_value $///code.random] + type $////code.random + untyped_value $////code.random] (all _.and (_.coverage [/.format /.parser] (case (.result (/.parser compiler) diff --git a/stdlib/source/test/lux/macro/syntax/export.lux b/stdlib/source/test/lux/macro/syntax/export.lux index 3ef76a0bb..bace31485 100644 --- a/stdlib/source/test/lux/macro/syntax/export.lux +++ b/stdlib/source/test/lux/macro/syntax/export.lux @@ -7,13 +7,13 @@ [control ["[0]" maybe] ["[0]" try (.use "[1]#[0]" functor)]] - [macro - ["[0]" code (.use "[1]#[0]" equivalence) - ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)] [number - ["n" nat]]]]] + ["n" nat]]] + [meta + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/macro/syntax/input.lux b/stdlib/source/test/lux/macro/syntax/input.lux index 7768f7c6b..2294518a9 100644 --- a/stdlib/source/test/lux/macro/syntax/input.lux +++ b/stdlib/source/test/lux/macro/syntax/input.lux @@ -14,20 +14,21 @@ [math ["[0]" random (.only Random)] [number - ["n" nat]]]]] - [\\library - ["[0]" / (.only) - [/// + ["n" nat]]] + [meta ["[0]" code ["<[1]>" \\parser]]]]] - ["$[0]" /// - ["[1][0]" code]]) + [\\library + ["[0]" /]] + ["$[0]" //// + [meta + ["[1][0]" code]]]) (def .public random (Random /.Input) (all random.and - $///code.random - $///code.random + $////code.random + $////code.random )) (def .public test diff --git a/stdlib/source/test/lux/macro/syntax/type/variable.lux b/stdlib/source/test/lux/macro/syntax/type/variable.lux index 1970a6ef8..d0c249716 100644 --- a/stdlib/source/test/lux/macro/syntax/type/variable.lux +++ b/stdlib/source/test/lux/macro/syntax/type/variable.lux @@ -12,9 +12,10 @@ ["[0]" random (.only Random)]]]] [\\library ["[0]" / (.only) - [//// - ["[0]" code - ["<[1]>" \\parser]]]]]) + [///// + [meta + ["[0]" code + ["<[1]>" \\parser]]]]]]) (def .public random (Random /.Variable) diff --git a/stdlib/source/test/lux/macro/template.lux b/stdlib/source/test/lux/macro/template.lux index 4c48e5561..d279edfeb 100644 --- a/stdlib/source/test/lux/macro/template.lux +++ b/stdlib/source/test/lux/macro/template.lux @@ -11,13 +11,14 @@ [collection ["[0]" list]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" random (.only Random)] [number - ["[0]" nat]]]]] + ["[0]" nat]]] + [meta + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/math/modulus.lux b/stdlib/source/test/lux/math/modulus.lux index 5109bb34b..98c4480d2 100644 --- a/stdlib/source/test/lux/math/modulus.lux +++ b/stdlib/source/test/lux/math/modulus.lux @@ -2,7 +2,6 @@ [library [lux (.except) ["_" test (.only Test)] - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -13,7 +12,8 @@ [number ["i" int]]] [macro - [syntax (.only syntax)] + [syntax (.only syntax)]] + ["[0]" meta (.only) ["[0]" code]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/meta.lux b/stdlib/source/test/lux/meta.lux index e5166d7ee..2c2943c19 100644 --- a/stdlib/source/test/lux/meta.lux +++ b/stdlib/source/test/lux/meta.lux @@ -33,6 +33,7 @@ ["[0]" / (.only) ["[0]" type (.use "[1]#[0]" equivalence)]]] ["[0]" / + ["[1][0]" code] ["[1][0]" location] ["[1][0]" symbol] ["[1][0]" configuration] @@ -1017,6 +1018,7 @@ ..label_related) )) + /code.test /location.test /symbol.test /configuration.test diff --git a/stdlib/source/test/lux/meta/code.lux b/stdlib/source/test/lux/meta/code.lux new file mode 100644 index 000000000..a566b030d --- /dev/null +++ b/stdlib/source/test/lux/meta/code.lux @@ -0,0 +1,318 @@ +(.require + [library + [lux (.except local global) + ["_" test (.only Test)] + [abstract + [monad (.only do)] + [\\specification + ["$[0]" equivalence]]] + [control + ["<>" parser] + ["[0]" function] + ["[0]" try (.only Try)]] + [data + ["[0]" bit] + ["[0]" product] + ["[0]" text] + [collection + ["[0]" list (.use "[1]#[0]" functor)]]] + [macro + ["^" pattern]] + [math + ["[0]" random (.only Random) (.use "[1]#[0]" monad)] + [number + ["[0]" nat] + ["[0]" int] + ["[0]" rev] + ["[0]" frac]]] + [meta + ["[0]" symbol] + ["[0]" location]] + [tool + [compiler + [language + [lux + ["[0]" syntax]]]]]]] + ["[0]" \\parser] + [\\library + ["[0]" /]]) + +(def !expect + (template (_ ) + [(case + + true + + _ + false)])) + +(def local + (Random Text) + (random.lower_case 1)) + +(def global + (Random Symbol) + (all random.and + (random.lower_case 1) + (random.lower_case 1) + )) + +(def any_symbol + (Random Symbol) + (all random.either + (random#each (|>> [""]) + ..local) + ..global + )) + +(def \\parser + Test + (<| (_.covering \\parser._) + (_.for [\\parser.Parser]) + (`` (all _.and + (do [! random.monad] + [expected (at ! each /.bit random.bit)] + (_.coverage [\\parser.result] + (and (|> (\\parser.result \\parser.any (list expected)) + (!expect {try.#Success _})) + (|> (\\parser.result \\parser.any (list)) + (!expect {try.#Failure _}))))) + (~~ (with_template [ ] + [(do [! random.monad] + [expected + dummy (|> (random.only (|>> (at = expected) not)))] + (all _.and + (_.coverage [] + (|> (\\parser.result (list ( expected))) + (!expect (^.multi {try.#Success actual} + (at = expected actual))))) + (_.coverage [] + (and (|> (\\parser.result ( expected) (list ( expected))) + (!expect {try.#Success []})) + (|> (\\parser.result ( expected) (list ( dummy))) + (!expect {try.#Failure _})))) + ))] + + [\\parser.any \\parser.this (at ! each /.bit random.bit) function.identity /.equivalence] + [\\parser.bit \\parser.this_bit random.bit /.bit bit.equivalence] + [\\parser.nat \\parser.this_nat random.nat /.nat nat.equivalence] + [\\parser.int \\parser.this_int random.int /.int int.equivalence] + [\\parser.rev \\parser.this_rev random.rev /.rev rev.equivalence] + [\\parser.frac \\parser.this_frac random.safe_frac /.frac frac.equivalence] + [\\parser.text \\parser.this_text (random.unicode 1) /.text text.equivalence] + [\\parser.local \\parser.this_local ..local /.local text.equivalence] + [\\parser.global \\parser.this_global ..global /.symbol symbol.equivalence] + [\\parser.symbol \\parser.this_symbol ..any_symbol /.symbol symbol.equivalence] + )) + (~~ (with_template [ ] + [(do [! random.monad] + [expected_left random.nat + expected_right random.int] + (_.coverage [] + (|> (\\parser.result ( (<>.and \\parser.nat \\parser.int)) + (list ( (list (/.nat expected_left) + (/.int expected_right))))) + (!expect (^.multi {try.#Success [actual_left actual_right]} + (and (at nat.equivalence = expected_left actual_left) + (at int.equivalence = expected_right actual_right)))))))] + + [\\parser.form /.form] + [\\parser.variant /.variant] + [\\parser.tuple /.tuple] + )) + (do [! random.monad] + [expected_local random.nat + expected_global random.int] + (_.coverage [\\parser.locally] + (|> (\\parser.result (<>.and (\\parser.locally (list (/.nat expected_local)) \\parser.nat) + \\parser.int) + (list (/.int expected_global))) + (!expect (^.multi {try.#Success [actual_local actual_global]} + (and (at nat.equivalence = expected_local actual_local) + (at int.equivalence = expected_global actual_global))))))) + (do [! random.monad] + [dummy (at ! each /.bit random.bit)] + (_.coverage [\\parser.end?] + (|> (\\parser.result (do <>.monad + [pre \\parser.end? + _ \\parser.any + post \\parser.end?] + (in (and (not pre) + post))) + (list dummy)) + (!expect (^.multi {try.#Success verdict} + verdict))))) + (do [! random.monad] + [dummy (at ! each /.bit random.bit)] + (_.coverage [\\parser.end] + (and (|> (\\parser.result \\parser.end (list)) + (!expect {try.#Success []})) + (|> (\\parser.result \\parser.end (list dummy)) + (!expect {try.#Failure _}))))) + (do [! random.monad] + [expected (at ! each /.bit random.bit)] + (_.coverage [\\parser.next] + (|> (\\parser.result (do <>.monad + [pre \\parser.next + post \\parser.any] + (in (and (same? expected pre) + (same? pre post)))) + (list expected)) + (!expect {try.#Success _})))) + (do [! random.monad] + [expected (at ! each /.bit random.bit)] + (_.coverage [\\parser.not] + (and (|> (\\parser.result (\\parser.not \\parser.nat) (list expected)) + (!expect (^.multi {try.#Success actual} + (same? expected actual)))) + (|> (\\parser.result (\\parser.not \\parser.bit) (list expected)) + (!expect {try.#Failure _}))))) + )))) + +(def random_text + (Random Text) + (random.alphabetic 10)) + +(def random_symbol + (Random Symbol) + (random.and ..random_text ..random_text)) + +(def (random_sequence random) + (All (_ a) (-> (Random a) (Random (List a)))) + (do [! random.monad] + [size (|> random.nat (at ! each (nat.% 3)))] + (random.list size random))) + +(def .public random + (Random Code) + (random.rec + (function (_ random) + (all random.either + (random#each /.bit random.bit) + (random#each /.nat random.nat) + (random#each /.int random.int) + (random#each /.rev random.rev) + (random#each /.frac random.safe_frac) + (random#each /.text ..random_text) + (random#each /.symbol ..random_symbol) + (random#each /.form (..random_sequence random)) + (random#each /.variant (..random_sequence random)) + (random#each /.tuple (..random_sequence random)) + )))) + +(def (read source_code) + (-> Text (Try Code)) + (let [parse (syntax.parse "" + syntax.no_aliases + (text.size source_code)) + start (is Source + [location.dummy 0 source_code])] + (case (parse start) + {.#Left [end error]} + {try.#Failure error} + + {.#Right [end lux_code]} + {try.#Success lux_code}))) + +(def (replacement_simulation [original substitute]) + (-> [Code Code] (Random [Code Code])) + (random.rec + (function (_ replacement_simulation) + (let [for_sequence (is (-> (-> (List Code) Code) (Random [Code Code])) + (function (_ to_code) + (random.only (|>> product.left (at /.equivalence = original) not) + (do [! random.monad] + [parts (..random_sequence replacement_simulation)] + (in [(to_code (list#each product.left parts)) + (to_code (list#each product.right parts))])))))] + (all random.either + (random#in [original substitute]) + (do [! random.monad] + [sample (random.only (|>> (at /.equivalence = original) not) + (all random.either + (random#each /.bit random.bit) + (random#each /.nat random.nat) + (random#each /.int random.int) + (random#each /.rev random.rev) + (random#each /.frac random.safe_frac) + (random#each /.text ..random_text) + (random#each /.symbol ..random_symbol)))] + (in [sample sample])) + (for_sequence /.form) + (for_sequence /.variant) + (for_sequence /.tuple) + ))))) + +(def for_format + Test + (`` (all _.and + (~~ (with_template [ ] + [(do [! random.monad] + [expected ] + (_.coverage [] + (and (case (..read (/.format ( expected))) + {try.#Success actual} + (at /.equivalence = + actual + ( expected)) + + {try.#Failure error} + false) + (at /.equivalence = + [location.dummy { expected}] + ( expected)))))] + + [/.bit random.bit .#Bit] + [/.nat random.nat .#Nat] + [/.int random.int .#Int] + [/.rev random.rev .#Rev] + [/.frac random.safe_frac .#Frac] + [/.text ..random_text .#Text] + [/.symbol ..random_symbol .#Symbol] + [/.form (..random_sequence ..random) .#Form] + [/.variant (..random_sequence ..random) .#Variant] + [/.tuple (..random_sequence ..random) .#Tuple])) + (~~ (with_template [ ] + [(do [! random.monad] + [expected ] + (_.coverage [] + (and (case (..read (/.format ( expected))) + {try.#Success actual} + (at /.equivalence = + actual + ( expected)) + + {try.#Failure error} + false) + (at /.equivalence = + [location.dummy { ["" expected]}] + ( expected))) + ))] + + [/.local ..random_text .#Symbol] + ))))) + +(def .public test + Test + (<| (_.covering /._) + (all _.and + (_.for [/.equivalence] + ($equivalence.spec /.equivalence ..random)) + + (_.for [/.format] + ..for_format) + + (do [! random.monad] + [[original substitute] (random.only (function (_ [original substitute]) + (not (at /.equivalence = original substitute))) + (random.and ..random ..random)) + [sample expected] (random.only (function (_ [sample expected]) + (not (at /.equivalence = sample expected))) + (..replacement_simulation [original substitute]))] + (_.coverage [/.replaced] + (at /.equivalence = + expected + (/.replaced original substitute sample)))) + + ..\\parser + ))) diff --git a/stdlib/source/test/lux/meta/configuration.lux b/stdlib/source/test/lux/meta/configuration.lux index e1a546d82..141d7ed96 100644 --- a/stdlib/source/test/lux/meta/configuration.lux +++ b/stdlib/source/test/lux/meta/configuration.lux @@ -2,7 +2,6 @@ [library [lux (.except) ["_" test (.only Test)] - ["[0]" meta] [abstract [monad (.only do)] [\\specification @@ -18,11 +17,12 @@ [collection ["[0]" list]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math - ["[0]" random (.only Random) (.use "[1]#[0]" monad)]]]] + ["[0]" random (.only Random) (.use "[1]#[0]" monad)]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/meta/location.lux b/stdlib/source/test/lux/meta/location.lux index de92d9eac..d87af185b 100644 --- a/stdlib/source/test/lux/meta/location.lux +++ b/stdlib/source/test/lux/meta/location.lux @@ -12,9 +12,8 @@ ["[0]" random (.only Random)]]]] [\\library ["[0]" /]] - ["$[0]" /// - [macro - ["[1][0]" code]]]) + ["$[0]" // + ["[1][0]" code]]) (def .public random (Random Location) @@ -44,7 +43,7 @@ (text.contains? error located_error))))) (do random.monad - [[location _] $///code.random] + [[location _] $//code.random] (_.coverage [/.dummy] (at /.equivalence = /.dummy location))) ))) diff --git a/stdlib/source/test/lux/meta/type.lux b/stdlib/source/test/lux/meta/type.lux index 9f753b1d0..59ca03061 100644 --- a/stdlib/source/test/lux/meta/type.lux +++ b/stdlib/source/test/lux/meta/type.lux @@ -20,14 +20,14 @@ ["[0]" list] ["[0]" array]]] [macro - ["^" pattern] - ["[0]" code (.use "[1]#[0]" equivalence)]] + ["^" pattern]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number ["n" nat]]] [meta - ["[0]" symbol (.use "[1]#[0]" equivalence)]]]] + ["[0]" symbol (.use "[1]#[0]" equivalence)] + ["[0]" code (.use "[1]#[0]" equivalence)]]]] ["[0]" \\parser] [\\library ["[0]" / (.use "[1]#[0]" equivalence)]] diff --git a/stdlib/source/test/lux/meta/type/primitive.lux b/stdlib/source/test/lux/meta/type/primitive.lux index 7b4500c00..8766f07c2 100644 --- a/stdlib/source/test/lux/meta/type/primitive.lux +++ b/stdlib/source/test/lux/meta/type/primitive.lux @@ -2,7 +2,6 @@ [library [lux (.except) ["_" test (.only Test)] - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -12,13 +11,14 @@ ["[0]" text (.use "[1]#[0]" equivalence)]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" template] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + ["[0]" template]] ["[0]" math (.only) ["[0]" random] [number - ["n" nat]]]]] + ["n" nat]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/meta/type/resource.lux b/stdlib/source/test/lux/meta/type/resource.lux index a23f1cacf..f7d04d659 100644 --- a/stdlib/source/test/lux/meta/type/resource.lux +++ b/stdlib/source/test/lux/meta/type/resource.lux @@ -2,7 +2,6 @@ [library [lux (.except) ["_" test (.only Test)] - ["[0]" meta] [abstract ["[0]" monad (.only) [indexed (.only do)]]] @@ -17,11 +16,12 @@ ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format (.only format)]]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math - ["[0]" random]]]] + ["[0]" random]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" / (.only Res)]]) diff --git a/stdlib/source/test/lux/meta/type/unit/scale.lux b/stdlib/source/test/lux/meta/type/unit/scale.lux index adc3523b5..0c305912b 100644 --- a/stdlib/source/test/lux/meta/type/unit/scale.lux +++ b/stdlib/source/test/lux/meta/type/unit/scale.lux @@ -2,18 +2,18 @@ [library [lux (.except) ["_" test (.only Test)] - ["[0]" meta] [abstract [monad (.only do)] [equivalence (.only Equivalence)]] [macro - [syntax (.only syntax)] - ["[0]" code]] + [syntax (.only syntax)]] [math ["[0]" random (.only Random)] [number ["i" int] - ["[0]" ratio (.use "[1]#[0]" equivalence)]]]]] + ["[0]" ratio (.use "[1]#[0]" equivalence)]]] + ["[0]" meta (.only) + ["[0]" code]]]] [\\library ["[0]" / (.only) ["/[1]" //]]]) diff --git a/stdlib/source/test/lux/meta/version.lux b/stdlib/source/test/lux/meta/version.lux index ff70f25a0..e225265da 100644 --- a/stdlib/source/test/lux/meta/version.lux +++ b/stdlib/source/test/lux/meta/version.lux @@ -3,7 +3,6 @@ [lux (.except) ["_" test (.only Test)] ["[0]" static] - ["[0]" meta] [abstract [monad (.only do)]] [control @@ -12,13 +11,14 @@ [data ["[0]" text]] ["[0]" macro (.only) - [syntax (.only syntax)] - ["[0]" code (.only) - ["<[1]>" \\parser]]] + [syntax (.only syntax)]] [math ["[0]" random] [number - ["n" nat]]]]] + ["n" nat]]] + ["[0]" meta (.only) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/program.lux b/stdlib/source/test/lux/program.lux index 8d534dd6e..cedad66d5 100644 --- a/stdlib/source/test/lux/program.lux +++ b/stdlib/source/test/lux/program.lux @@ -14,13 +14,14 @@ ["[0]" list]]] [macro [syntax (.only syntax)] - ["^" pattern] - ["[0]" code - ["<[1]>" \\parser]]] + ["^" pattern]] [math ["[0]" random] [number - ["n" nat (.use "[1]#[0]" decimal)]]]]] + ["n" nat (.use "[1]#[0]" decimal)]]] + [meta + ["[0]" code + ["<[1]>" \\parser]]]]] ["[0]" \\parser] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/static.lux b/stdlib/source/test/lux/static.lux index 95896cb7c..5748958f4 100644 --- a/stdlib/source/test/lux/static.lux +++ b/stdlib/source/test/lux/static.lux @@ -3,21 +3,20 @@ [lux (.except) ["_" test (.only Test)] ["@" target] - ["[0]" meta] [data ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format (.only format)]] [collection ["[0]" list (.use "[1]#[0]" mix)]]] - [macro - ["[0]" code]] [math ["[0]" random (.use "[1]#[0]" functor)] [number ["n" nat] ["i" int] ["r" rev] - ["f" frac]]]]] + ["f" frac]]] + ["[0]" meta (.only) + ["[0]" code]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/target/jvm.lux b/stdlib/source/test/lux/target/jvm.lux index fd972f3e0..afda8957c 100644 --- a/stdlib/source/test/lux/target/jvm.lux +++ b/stdlib/source/test/lux/target/jvm.lux @@ -1,8 +1,9 @@ (.require [library [lux (.except Type Primitive Label int) - ["[0]" ffi (.only import)] + ["_" test (.only Test)] ["@" target] + ["[0]" ffi (.only import)] [abstract ["[0]" monad (.only do)]] [control @@ -31,8 +32,7 @@ ["i" int] ["f" frac] ["[0]" i32 (.only I32)] - ["[0]" i64]]] - ["_" test (.only Test)]]] + ["[0]" i64]]]]] [\\library ["[0]" / ["[1][0]" loader (.only Library)] diff --git a/stdlib/source/test/lux/target/python.lux b/stdlib/source/test/lux/target/python.lux index 7fa88daf7..8e3fb3472 100644 --- a/stdlib/source/test/lux/target/python.lux +++ b/stdlib/source/test/lux/target/python.lux @@ -20,15 +20,15 @@ ["%" \\format (.only format)]] [collection ["[0]" list (.use "[1]#[0]" functor)]]] - [macro - ["[0]" code]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number ["n" nat] ["i" int] ["f" frac] - ["[0]" i64]]]]] + ["[0]" i64]]] + [meta + ["[0]" code]]]] [\\library ["[0]" / (.use "[1]#[0]" equivalence)]]) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/inference.lux b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/inference.lux index 987a00507..7387ce1bc 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/inference.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/inference.lux @@ -2,6 +2,7 @@ [library [lux (.except) ["_" test (.only Test)] + ["[0]" macro] [abstract [monad (.only do)]] [control @@ -14,13 +15,12 @@ ["[0]" text] [collection ["[0]" list (.use "[1]#[0]" monad)]]] - ["[0]" macro (.only) - ["[0]" code]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number ["n" nat]]] [meta + ["[0]" code] ["[0]" symbol ["$[1]" \\test]] ["[0]" configuration diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/macro.lux b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/macro.lux index 0563892be..5a830ba38 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/macro.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/macro.lux @@ -2,6 +2,7 @@ [library [lux (.except) ["_" test (.only Test)] + ["[0]" macro] [abstract [monad (.only do)] [\\specification @@ -16,20 +17,18 @@ ["[0]" text (.use "[1]#[0]" equivalence)] [collection ["[0]" list (.use "[1]#[0]" monad)]]] - ["[0]" macro (.only) - ["[0]" code (.use "[1]#[0]" equivalence)]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number ["n" nat]]] ["[0]" meta (.only) + ["[0]" code (.use "[1]#[0]" equivalence)] ["[0]" configuration ["$[1]" \\test]]]]] ["$" /////// - [macro - ["[1][0]" code]] [meta - ["[1][0]" symbol]]] + ["[1][0]" symbol] + ["[1][0]" code]]] [\\library ["[0]" / (.only) ["/[1]" //]]]) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis.lux index 3c0823345..0c68a9690 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis.lux @@ -2,6 +2,7 @@ [library [lux (.except) ["_" test (.only Test)] + ["[0]" macro] [abstract [monad (.only do)]] [control @@ -12,13 +13,12 @@ ["[0]" text] [collection ["[0]" list]]] - ["[0]" macro (.only) - ["[0]" code]] [math ["[0]" random] [number ["n" nat]]] [meta + ["[0]" code] ["[0]" type (.use "[1]#[0]" equivalence) ["[0]" check]]]]] [\\library diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux index e5254f4b4..35da92ea5 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux @@ -2,6 +2,7 @@ [library [lux (.except) ["_" test (.only Test)] + ["[0]" macro] [abstract [monad (.only do)]] [control @@ -11,11 +12,10 @@ ["[0]" product] ["[0]" text (.only) ["%" \\format]]] - ["[0]" macro (.only) - ["[0]" code]] [math ["[0]" random]] [meta + ["[0]" code] ["[0]" type (.use "[1]#[0]" equivalence) ["[0]" check]]]]] [\\library diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/complex.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/complex.lux index 31e3355f2..29da6a3cd 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/complex.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/complex.lux @@ -18,14 +18,14 @@ ["[0]" list (.use "[1]#[0]" monad monoid)] ["[0]" set]]] ["[0]" macro (.only) - ["^" pattern] - ["[0]" code]] + ["^" pattern]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number ["n" nat] ["f" frac]]] [meta + ["[0]" code] ["[0]" symbol (.only) ["$[1]" \\test]] ["[0]" configuration diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/function.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/function.lux index 1a865d0d6..421c41900 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/function.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/function.lux @@ -2,6 +2,7 @@ [library [lux (.except) ["_" test (.only Test)] + ["[0]" macro] [abstract [monad (.only do)]] [control @@ -14,13 +15,12 @@ ["%" \\format]] [collection ["[0]" list]]] - ["[0]" macro (.only) - ["[0]" code]] [math ["[0]" random] [number ["n" nat]]] [meta + ["[0]" code] ["[0]" symbol ["$[1]" \\test]] ["[0]" type (.use "[1]#[0]" equivalence) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux index 7507a6da6..a3b9b281d 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/extension/analysis/lux.lux @@ -14,9 +14,8 @@ ["[0]" atom]]] [data ["[0]" product]] - [macro - ["[0]" code]] [meta + ["[0]" code] ["[0]" symbol] ["[0]" type (.use "[1]#[0]" equivalence)]]] [//// diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/syntax.lux b/stdlib/source/test/lux/tool/compiler/language/lux/syntax.lux index 52e957f9c..98b9a71fd 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/syntax.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/syntax.lux @@ -16,9 +16,8 @@ [collection ["[0]" list] ["[0]" dictionary (.only Dictionary)]]] - [macro - ["[0]" code]] [meta + ["[0]" code] ["[0]" location] ["[0]" symbol]]] [\\ -- cgit v1.2.3