diff options
186 files changed, 1062 insertions, 1270 deletions
diff --git a/documentation/bookmark/Data format.md b/documentation/bookmark/data/format.md index 6961ff704..6961ff704 100644 --- a/documentation/bookmark/Data format.md +++ b/documentation/bookmark/data/format.md diff --git a/documentation/bookmark/data_science.md b/documentation/bookmark/data/science.md index aecf4e81f..aecf4e81f 100644 --- a/documentation/bookmark/data_science.md +++ b/documentation/bookmark/data/science.md diff --git a/documentation/bookmark/data_structure/persistent.md b/documentation/bookmark/data/structure/persistent.md index abb205b80..abb205b80 100644 --- a/documentation/bookmark/data_structure/persistent.md +++ b/documentation/bookmark/data/structure/persistent.md diff --git a/documentation/bookmark/data_structure/probabilistic.md b/documentation/bookmark/data/structure/probabilistic.md index dd769409d..dd769409d 100644 --- a/documentation/bookmark/data_structure/probabilistic.md +++ b/documentation/bookmark/data/structure/probabilistic.md diff --git a/lux-r/source/program.lux b/lux-r/source/program.lux index 356c54ff5..7b379d027 100644 --- a/lux-r/source/program.lux +++ b/lux-r/source/program.lux @@ -12,9 +12,7 @@ ["[0]" exception (.only exception)] ["[0]" io (.only IO io)] [concurrency - ["[0]" promise (.only Promise)]] - [parser - ["<[0]>" code]]] + ["[0]" promise (.only Promise)]]] [data ["[0]" text (.use "[1]#[0]" hash) ["%" \\format (.only format)] @@ -25,7 +23,8 @@ ["[0]" macro [syntax (.only syntax)] ["[0]" template] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["n" nat] diff --git a/stdlib/source/documentation/lux.lux b/stdlib/source/documentation/lux.lux index 72fa36c45..0bf71c4ad 100644 --- a/stdlib/source/documentation/lux.lux +++ b/stdlib/source/documentation/lux.lux @@ -5,9 +5,7 @@ ["$" documentation (.only documentation)] ["[0]" debug] [control - ["[0]" io] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" io]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]] diff --git a/stdlib/source/documentation/lux/data/collection/array.lux b/stdlib/source/documentation/lux/data/collection/array.lux index b8a5f6e8a..8697a4686 100644 --- a/stdlib/source/documentation/lux/data/collection/array.lux +++ b/stdlib/source/documentation/lux/data/collection/array.lux @@ -2,9 +2,6 @@ [library [lux (.except list) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/bits.lux b/stdlib/source/documentation/lux/data/collection/bits.lux index 117f4c7d6..075c71091 100644 --- a/stdlib/source/documentation/lux/data/collection/bits.lux +++ b/stdlib/source/documentation/lux/data/collection/bits.lux @@ -2,9 +2,6 @@ [library [lux (.except or and not) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/dictionary.lux b/stdlib/source/documentation/lux/data/collection/dictionary.lux index b7a04eda8..72ed210aa 100644 --- a/stdlib/source/documentation/lux/data/collection/dictionary.lux +++ b/stdlib/source/documentation/lux/data/collection/dictionary.lux @@ -2,9 +2,6 @@ [library [lux (.except has revised) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/dictionary/ordered.lux b/stdlib/source/documentation/lux/data/collection/dictionary/ordered.lux index 4f4e6a259..d5f857c5c 100644 --- a/stdlib/source/documentation/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/documentation/lux/data/collection/dictionary/ordered.lux @@ -2,9 +2,6 @@ [library [lux (.except has revised) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/dictionary/plist.lux b/stdlib/source/documentation/lux/data/collection/dictionary/plist.lux index 2edd88313..0dafc6340 100644 --- a/stdlib/source/documentation/lux/data/collection/dictionary/plist.lux +++ b/stdlib/source/documentation/lux/data/collection/dictionary/plist.lux @@ -2,9 +2,6 @@ [library [lux (.except has revised) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/list.lux b/stdlib/source/documentation/lux/data/collection/list.lux index 0841931de..8d8a47651 100644 --- a/stdlib/source/documentation/lux/data/collection/list.lux +++ b/stdlib/source/documentation/lux/data/collection/list.lux @@ -2,9 +2,6 @@ [library [lux (.except all) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/queue.lux b/stdlib/source/documentation/lux/data/collection/queue.lux index 5e3595df8..19fee78c9 100644 --- a/stdlib/source/documentation/lux/data/collection/queue.lux +++ b/stdlib/source/documentation/lux/data/collection/queue.lux @@ -2,9 +2,6 @@ [library [lux (.except list) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/queue/priority.lux b/stdlib/source/documentation/lux/data/collection/queue/priority.lux index f73f16453..47ccd89bb 100644 --- a/stdlib/source/documentation/lux/data/collection/queue/priority.lux +++ b/stdlib/source/documentation/lux/data/collection/queue/priority.lux @@ -2,9 +2,6 @@ [library [lux (.except list) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/sequence.lux b/stdlib/source/documentation/lux/data/collection/sequence.lux index d4694429e..7c286aa0a 100644 --- a/stdlib/source/documentation/lux/data/collection/sequence.lux +++ b/stdlib/source/documentation/lux/data/collection/sequence.lux @@ -2,9 +2,6 @@ [library [lux (.except list has revised) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/set.lux b/stdlib/source/documentation/lux/data/collection/set.lux index 322ec2394..2eb5f11c9 100644 --- a/stdlib/source/documentation/lux/data/collection/set.lux +++ b/stdlib/source/documentation/lux/data/collection/set.lux @@ -2,9 +2,6 @@ [library [lux (.except list has) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/set/multi.lux b/stdlib/source/documentation/lux/data/collection/set/multi.lux index 7137544a3..5f48a9e9e 100644 --- a/stdlib/source/documentation/lux/data/collection/set/multi.lux +++ b/stdlib/source/documentation/lux/data/collection/set/multi.lux @@ -2,9 +2,6 @@ [library [lux (.except list has) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/set/ordered.lux b/stdlib/source/documentation/lux/data/collection/set/ordered.lux index 7d5073699..88ae58dc6 100644 --- a/stdlib/source/documentation/lux/data/collection/set/ordered.lux +++ b/stdlib/source/documentation/lux/data/collection/set/ordered.lux @@ -2,9 +2,6 @@ [library [lux (.except list has) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/stack.lux b/stdlib/source/documentation/lux/data/collection/stack.lux index 91229d086..da805da8a 100644 --- a/stdlib/source/documentation/lux/data/collection/stack.lux +++ b/stdlib/source/documentation/lux/data/collection/stack.lux @@ -2,9 +2,6 @@ [library [lux (.except list) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/stream.lux b/stdlib/source/documentation/lux/data/collection/stream.lux index 54c485d4f..f77decc5e 100644 --- a/stdlib/source/documentation/lux/data/collection/stream.lux +++ b/stdlib/source/documentation/lux/data/collection/stream.lux @@ -2,9 +2,6 @@ [library [lux (.except list pattern) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/tree.lux b/stdlib/source/documentation/lux/data/collection/tree.lux index a29e8fff7..9c9fe9ad5 100644 --- a/stdlib/source/documentation/lux/data/collection/tree.lux +++ b/stdlib/source/documentation/lux/data/collection/tree.lux @@ -2,9 +2,6 @@ [library [lux (.except list) ["$" documentation (.only documentation:)] - [control - ["<>" parser (.only) - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/tree/finger.lux b/stdlib/source/documentation/lux/data/collection/tree/finger.lux index 32baf2a3b..31f2dac1f 100644 --- a/stdlib/source/documentation/lux/data/collection/tree/finger.lux +++ b/stdlib/source/documentation/lux/data/collection/tree/finger.lux @@ -2,9 +2,6 @@ [library [lux (.except list) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/collection/tree/zipper.lux b/stdlib/source/documentation/lux/data/collection/tree/zipper.lux index 61beb4f1e..4ad5aae46 100644 --- a/stdlib/source/documentation/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/documentation/lux/data/collection/tree/zipper.lux @@ -2,9 +2,6 @@ [library [lux (.except list) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/data/color.lux b/stdlib/source/documentation/lux/data/color.lux index 3846ced3e..603ccb07b 100644 --- a/stdlib/source/documentation/lux/data/color.lux +++ b/stdlib/source/documentation/lux/data/color.lux @@ -2,16 +2,14 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser (.only) - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] [macro [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]]]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]] ["[0]" / diff --git a/stdlib/source/documentation/lux/data/color/named.lux b/stdlib/source/documentation/lux/data/color/named.lux index e595febb4..d905485f0 100644 --- a/stdlib/source/documentation/lux/data/color/named.lux +++ b/stdlib/source/documentation/lux/data/color/named.lux @@ -2,9 +2,6 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser (.only) - ["<[0]>" code]]] [data ["[0]" text ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/extension.lux b/stdlib/source/documentation/lux/extension.lux index 6cd4922ed..1379b60a3 100644 --- a/stdlib/source/documentation/lux/extension.lux +++ b/stdlib/source/documentation/lux/extension.lux @@ -3,16 +3,15 @@ [lux (.except) ["$" documentation (.only documentation:)] ["[0]" debug] - [control - ["<>" parser - ["<[0]>" code]]] [data [text ["%" \\format (.only format)]] [collection ["[0]" sequence]]] [macro - ["[0]" template]] + ["[0]" template] + ["[0]" code + ["<[1]>" \\parser]]] ["@" target ["[0]" jvm]] [tool diff --git a/stdlib/source/documentation/lux/test.lux b/stdlib/source/documentation/lux/test.lux index 9b89be715..b9196ae25 100644 --- a/stdlib/source/documentation/lux/test.lux +++ b/stdlib/source/documentation/lux/test.lux @@ -2,9 +2,6 @@ [library [lux (.except and for) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/time.lux b/stdlib/source/documentation/lux/time.lux index 54dd90c9a..1b0b5ac6c 100644 --- a/stdlib/source/documentation/lux/time.lux +++ b/stdlib/source/documentation/lux/time.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser (.only) - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/time/date.lux b/stdlib/source/documentation/lux/time/date.lux index 9bf40345c..818371741 100644 --- a/stdlib/source/documentation/lux/time/date.lux +++ b/stdlib/source/documentation/lux/time/date.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/time/day.lux b/stdlib/source/documentation/lux/time/day.lux index 02472edcf..5cd046493 100644 --- a/stdlib/source/documentation/lux/time/day.lux +++ b/stdlib/source/documentation/lux/time/day.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/time/duration.lux b/stdlib/source/documentation/lux/time/duration.lux index 6e02734e4..448ea46eb 100644 --- a/stdlib/source/documentation/lux/time/duration.lux +++ b/stdlib/source/documentation/lux/time/duration.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/time/instant.lux b/stdlib/source/documentation/lux/time/instant.lux index ec6515e74..9eb35f53d 100644 --- a/stdlib/source/documentation/lux/time/instant.lux +++ b/stdlib/source/documentation/lux/time/instant.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/time/month.lux b/stdlib/source/documentation/lux/time/month.lux index 1dcb72d41..ccd31a8c4 100644 --- a/stdlib/source/documentation/lux/time/month.lux +++ b/stdlib/source/documentation/lux/time/month.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/time/year.lux b/stdlib/source/documentation/lux/time/year.lux index 3e7957de9..b8dc23837 100644 --- a/stdlib/source/documentation/lux/time/year.lux +++ b/stdlib/source/documentation/lux/time/year.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type.lux b/stdlib/source/documentation/lux/type.lux index 16b7f238a..37322e9c0 100644 --- a/stdlib/source/documentation/lux/type.lux +++ b/stdlib/source/documentation/lux/type.lux @@ -2,9 +2,6 @@ [library [lux (.except function as let) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format]]] diff --git a/stdlib/source/documentation/lux/type/check.lux b/stdlib/source/documentation/lux/type/check.lux index df026fac7..959cda6a4 100644 --- a/stdlib/source/documentation/lux/type/check.lux +++ b/stdlib/source/documentation/lux/type/check.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/dynamic.lux b/stdlib/source/documentation/lux/type/dynamic.lux index 182cafaec..d6930a245 100644 --- a/stdlib/source/documentation/lux/type/dynamic.lux +++ b/stdlib/source/documentation/lux/type/dynamic.lux @@ -2,9 +2,6 @@ [library [lux (.except static) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/implicit.lux b/stdlib/source/documentation/lux/type/implicit.lux index 3152aa23d..713ad788c 100644 --- a/stdlib/source/documentation/lux/type/implicit.lux +++ b/stdlib/source/documentation/lux/type/implicit.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/poly.lux b/stdlib/source/documentation/lux/type/poly.lux index 6fe2dcf42..31159c6a5 100644 --- a/stdlib/source/documentation/lux/type/poly.lux +++ b/stdlib/source/documentation/lux/type/poly.lux @@ -6,9 +6,6 @@ [\\specification ["$[0]" equivalence] ["$[0]" codec]]] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/primitive.lux b/stdlib/source/documentation/lux/type/primitive.lux index 8224eca7f..252891761 100644 --- a/stdlib/source/documentation/lux/type/primitive.lux +++ b/stdlib/source/documentation/lux/type/primitive.lux @@ -2,9 +2,6 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/quotient.lux b/stdlib/source/documentation/lux/type/quotient.lux index 2546996d7..c0185b109 100644 --- a/stdlib/source/documentation/lux/type/quotient.lux +++ b/stdlib/source/documentation/lux/type/quotient.lux @@ -2,9 +2,6 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/refinement.lux b/stdlib/source/documentation/lux/type/refinement.lux index 0c2d8eec5..083dd523e 100644 --- a/stdlib/source/documentation/lux/type/refinement.lux +++ b/stdlib/source/documentation/lux/type/refinement.lux @@ -2,9 +2,6 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/resource.lux b/stdlib/source/documentation/lux/type/resource.lux index 4a1a408f2..e6f964b9b 100644 --- a/stdlib/source/documentation/lux/type/resource.lux +++ b/stdlib/source/documentation/lux/type/resource.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/unit.lux b/stdlib/source/documentation/lux/type/unit.lux index 681708f55..edfd3340b 100644 --- a/stdlib/source/documentation/lux/type/unit.lux +++ b/stdlib/source/documentation/lux/type/unit.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/type/variance.lux b/stdlib/source/documentation/lux/type/variance.lux index 09b787cd5..d4a1052d3 100644 --- a/stdlib/source/documentation/lux/type/variance.lux +++ b/stdlib/source/documentation/lux/type/variance.lux @@ -2,9 +2,6 @@ [library [lux (.except and) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/console.lux b/stdlib/source/documentation/lux/world/console.lux index 8f5180287..9c5004ae1 100644 --- a/stdlib/source/documentation/lux/world/console.lux +++ b/stdlib/source/documentation/lux/world/console.lux @@ -3,9 +3,6 @@ [lux (.except) ["$" documentation (.only documentation:)] ["@" target] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/file.lux b/stdlib/source/documentation/lux/world/file.lux index 019ecb99a..753ebd8ea 100644 --- a/stdlib/source/documentation/lux/world/file.lux +++ b/stdlib/source/documentation/lux/world/file.lux @@ -3,9 +3,6 @@ [lux (.except) ["$" documentation (.only documentation:)] ["@" target] - [control - ["<>" parser (.only) - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/file/watch.lux b/stdlib/source/documentation/lux/world/file/watch.lux index 93d0b4410..94ec46172 100644 --- a/stdlib/source/documentation/lux/world/file/watch.lux +++ b/stdlib/source/documentation/lux/world/file/watch.lux @@ -3,9 +3,6 @@ [lux (.except) ["$" documentation (.only documentation:)] ["@" target] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/input/keyboard.lux b/stdlib/source/documentation/lux/world/input/keyboard.lux index 23868eeaa..86011916c 100644 --- a/stdlib/source/documentation/lux/world/input/keyboard.lux +++ b/stdlib/source/documentation/lux/world/input/keyboard.lux @@ -2,9 +2,6 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/net/http/client.lux b/stdlib/source/documentation/lux/world/net/http/client.lux index 5f2af5e06..27cb1e449 100644 --- a/stdlib/source/documentation/lux/world/net/http/client.lux +++ b/stdlib/source/documentation/lux/world/net/http/client.lux @@ -3,9 +3,6 @@ [lux (.except) ["$" documentation (.only documentation:)] ["@" target] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/net/http/status.lux b/stdlib/source/documentation/lux/world/net/http/status.lux index 129a7d833..1999f23e9 100644 --- a/stdlib/source/documentation/lux/world/net/http/status.lux +++ b/stdlib/source/documentation/lux/world/net/http/status.lux @@ -2,9 +2,6 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/output/video/resolution.lux b/stdlib/source/documentation/lux/world/output/video/resolution.lux index 8da9cc2ca..97d312c77 100644 --- a/stdlib/source/documentation/lux/world/output/video/resolution.lux +++ b/stdlib/source/documentation/lux/world/output/video/resolution.lux @@ -2,9 +2,6 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/program.lux b/stdlib/source/documentation/lux/world/program.lux index 5def43411..0e932c07d 100644 --- a/stdlib/source/documentation/lux/world/program.lux +++ b/stdlib/source/documentation/lux/world/program.lux @@ -2,9 +2,6 @@ [library [lux (.except) ["$" documentation (.only documentation:)] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/documentation/lux/world/shell.lux b/stdlib/source/documentation/lux/world/shell.lux index fed983eed..b2ad55851 100644 --- a/stdlib/source/documentation/lux/world/shell.lux +++ b/stdlib/source/documentation/lux/world/shell.lux @@ -3,9 +3,6 @@ [lux (.except) ["$" documentation (.only documentation:)] ["@" target] - [control - ["<>" parser - ["<[0]>" code]]] [data ["[0]" text (.only \n) ["%" \\format (.only format)]]] diff --git a/stdlib/source/format/lux/data/text.lux b/stdlib/source/format/lux/data/text.lux index 7c80696fd..bae5e1263 100644 --- a/stdlib/source/format/lux/data/text.lux +++ b/stdlib/source/format/lux/data/text.lux @@ -6,8 +6,7 @@ [functor ["[0]" contravariant]]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data ["[0]" bit] ["[0]" text] @@ -32,8 +31,9 @@ ["[0]" ratio]]] [macro [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [meta ["[0]" location] ["[0]" symbol]] diff --git a/stdlib/source/library/lux/abstract/monad/indexed.lux b/stdlib/source/library/lux/abstract/monad/indexed.lux index ae8ad03db..8d03d011e 100644 --- a/stdlib/source/library/lux/abstract/monad/indexed.lux +++ b/stdlib/source/library/lux/abstract/monad/indexed.lux @@ -2,14 +2,14 @@ [library [lux (.except global) [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" list (.use "[1]#[0]" functor mix)]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]]]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" //]) (type .public (IxMonad m) diff --git a/stdlib/source/library/lux/control/concatenative.lux b/stdlib/source/library/lux/control/concatenative.lux index b0768b43e..4e900a860 100644 --- a/stdlib/source/library/lux/control/concatenative.lux +++ b/stdlib/source/library/lux/control/concatenative.lux @@ -15,8 +15,9 @@ ["[0]" list (.use "[1]#[0]" mix functor)]]] ["[0]" macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat] @@ -24,8 +25,7 @@ ["r" rev] ["f" frac]]]]] [// - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]]) + ["<>" parser (.use "[1]#[0]" monad)]]) (type Stack (Record diff --git a/stdlib/source/library/lux/control/continuation.lux b/stdlib/source/library/lux/control/continuation.lux index 57f0053e9..a9e62ac66 100644 --- a/stdlib/source/library/lux/control/continuation.lux +++ b/stdlib/source/library/lux/control/continuation.lux @@ -6,12 +6,11 @@ [apply (.only Apply)] [monad (.only Monad do)]] [control - ["[0]" function] - [parser - ["<[0]>" code]]] + ["[0]" function]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code]]]]) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (type .public (Cont i o) (-> (-> i o) o)) diff --git a/stdlib/source/library/lux/control/exception.lux b/stdlib/source/library/lux/control/exception.lux index 98e0c6f72..cf45dfe13 100644 --- a/stdlib/source/library/lux/control/exception.lux +++ b/stdlib/source/library/lux/control/exception.lux @@ -6,16 +6,16 @@ [abstract [monad (.only do)]] [control - ["[0]" maybe] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["<>" parser (.use "[1]#[0]" monad)] + ["[0]" maybe]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" monoid)] [collection ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro - ["[0]" code] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]] [syntax (.only syntax) ["|[0]|" input] ["[0]" type diff --git a/stdlib/source/library/lux/control/function/contract.lux b/stdlib/source/library/lux/control/function/contract.lux index 80e90f6ca..df8702fed 100644 --- a/stdlib/source/library/lux/control/function/contract.lux +++ b/stdlib/source/library/lux/control/function/contract.lux @@ -2,15 +2,14 @@ [library [lux (.except) [control - ["[0]" exception (.only exception)] - [parser - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data [text ["%" \\format (.only format)]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["i" int]]]]]) diff --git a/stdlib/source/library/lux/control/function/inline.lux b/stdlib/source/library/lux/control/function/inline.lux index 10141088d..98d6e56c9 100644 --- a/stdlib/source/library/lux/control/function/inline.lux +++ b/stdlib/source/library/lux/control/function/inline.lux @@ -5,13 +5,13 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" list (.use "[1]#[0]" monad)]]] ["[0]" macro (.only) - ["[0]" code] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]] [syntax (.only syntax) ["|[0]|" export]]]]]) diff --git a/stdlib/source/library/lux/control/function/mutual.lux b/stdlib/source/library/lux/control/function/mutual.lux index 617efe7de..c6107b1a9 100644 --- a/stdlib/source/library/lux/control/function/mutual.lux +++ b/stdlib/source/library/lux/control/function/mutual.lux @@ -5,9 +5,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" try (.only Try)] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["<>" parser (.use "[1]#[0]" monad)] + ["[0]" try (.only Try)]] [data ["[0]" product] [text @@ -18,7 +17,8 @@ ["[0]" plist (.only PList)]]]] ["[0]" macro (.only) ["[0]" local] - ["[0]" code] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]] [syntax (.only syntax) ["[0]" declaration (.only Declaration)]]]]] ["[0]" //]) diff --git a/stdlib/source/library/lux/control/io.lux b/stdlib/source/library/lux/control/io.lux index 5ae034638..609814844 100644 --- a/stdlib/source/library/lux/control/io.lux +++ b/stdlib/source/library/lux/control/io.lux @@ -5,14 +5,13 @@ [functor (.only Functor)] [apply (.only Apply)] [monad (.only Monad do)]] - [control - [parser - ["<[0]>" code]]] [type [primitive (.except)]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" template]]]]) + ["[0]" template] + ["[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 95299e5f0..b20711ba7 100644 --- a/stdlib/source/library/lux/control/lazy.lux +++ b/stdlib/source/library/lux/control/lazy.lux @@ -8,12 +8,12 @@ [equivalence (.only Equivalence)]] [control ["[0]" io] - [parser - ["<[0]>" code]] [concurrency ["[0]" atom]]] [macro (.only with_symbols) - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] [type (.only sharing) [primitive (.except)]]]]) diff --git a/stdlib/source/library/lux/control/pipe.lux b/stdlib/source/library/lux/control/pipe.lux index eff3b6dce..99e7a697c 100644 --- a/stdlib/source/library/lux/control/pipe.lux +++ b/stdlib/source/library/lux/control/pipe.lux @@ -4,16 +4,16 @@ [abstract ["[0]" monad]] [control - ["[0]" try] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser] + ["[0]" try]] [data ["[0]" identity] [collection ["[0]" list (.use "[1]#[0]" monad)]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/control/remember.lux b/stdlib/source/library/lux/control/remember.lux index 264d13adb..bce726fb1 100644 --- a/stdlib/source/library/lux/control/remember.lux +++ b/stdlib/source/library/lux/control/remember.lux @@ -4,11 +4,10 @@ [abstract [monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" functor)] ["[0]" io] ["[0]" try] - ["[0]" exception (.only exception)] - ["<>" parser (.use "[1]#[0]" functor) - ["<c>" code (.only Parser)]]] + ["[0]" exception (.only exception)]] [data ["[0]" text ["%" \\format (.only format)]]] @@ -17,9 +16,10 @@ ["[0]" date (.only Date) (.use "[1]#[0]" order)]] ["[0]" meta] [macro - ["[0]" code] + [syntax (.only syntax)] ["[0]" template] - [syntax (.only syntax)]]]]) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (exception .public (must_remember [deadline Date today Date @@ -40,9 +40,9 @@ (Parser Date) (all <>.either (<>#each (|>> instant.of_millis instant.date) - <c>.int) + <code>.int) (do <>.monad - [raw <c>.text] + [raw <code>.text] (case (at date.codec decoded raw) {try.#Success date} (in date) @@ -52,8 +52,8 @@ (def .public remember (syntax (_ [deadline ..deadline - message <c>.text - focus (<>.maybe <c>.any)]) + message <code>.text + focus (<>.maybe <code>.any)]) (let [now (io.run! instant.now) today (instant.date now)] (if (date#< deadline today) @@ -68,8 +68,8 @@ (with_template [<name> <message>] [(`` (def .public <name> (syntax (_ [deadline ..deadline - message <c>.text - focus (<>.maybe <c>.any)]) + message <code>.text + focus (<>.maybe <code>.any)]) (in (list (` (..remember (~ (code.text (%.date deadline))) (~ (code.text (format <message> " " message))) (~+ (case focus diff --git a/stdlib/source/library/lux/control/security/capability.lux b/stdlib/source/library/lux/control/security/capability.lux index 0164bcc7b..96813f726 100644 --- a/stdlib/source/library/lux/control/security/capability.lux +++ b/stdlib/source/library/lux/control/security/capability.lux @@ -4,9 +4,8 @@ [abstract [monad (.only do)]] [control + ["<>" parser] ["[0]" io (.only IO)] - ["<>" parser (.only) - ["<c>" code]] [concurrency ["[0]" async (.only Async)]]] [data @@ -18,7 +17,8 @@ [primitive (.except)]] ["[0]" meta] ["[0]" macro (.only) - ["[0]" code] + ["[0]" code (.only) + ["<[1]>" \\parser]] [syntax (.only syntax) ["|[0]|" export] ["|[0]|" declaration]]]]]) @@ -44,7 +44,7 @@ (|export|.parser (all <>.and |declaration|.parser - (<c>.form (all <>.and <c>.local <c>.any <c>.any))))]) + (<code>.form (all <>.and <code>.local <code>.any <code>.any))))]) (macro.with_symbols [g!_] (do [! meta.monad] [this_module meta.current_module_name diff --git a/stdlib/source/library/lux/data/collection/sequence.lux b/stdlib/source/library/lux/data/collection/sequence.lux index 493b5d411..3d5dfd300 100644 --- a/stdlib/source/library/lux/data/collection/sequence.lux +++ b/stdlib/source/library/lux/data/collection/sequence.lux @@ -14,11 +14,10 @@ [mix (.only Mix)] [predicate (.only Predicate)]] [control + ["<>" parser] ["[0]" maybe (.use "[1]#[0]" functor)] ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception (.only exception)]] [data ["[0]" product] [collection @@ -28,7 +27,8 @@ [macro [syntax (.only syntax)] ["^" pattern] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/data/collection/stream.lux b/stdlib/source/library/lux/data/collection/stream.lux index 42523d5e3..4e82cbe1e 100644 --- a/stdlib/source/library/lux/data/collection/stream.lux +++ b/stdlib/source/library/lux/data/collection/stream.lux @@ -6,15 +6,15 @@ [comonad (.only CoMonad)]] [control ["//" continuation (.only Cont)] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data ["[0]" bit] [collection ["[0]" list (.use "[1]#[0]" monad)]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat]]]]]) diff --git a/stdlib/source/library/lux/data/collection/tree.lux b/stdlib/source/library/lux/data/collection/tree.lux index f05521c70..64288458d 100644 --- a/stdlib/source/library/lux/data/collection/tree.lux +++ b/stdlib/source/library/lux/data/collection/tree.lux @@ -7,14 +7,14 @@ [mix (.only Mix)] [monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" list (.use "[1]#[0]" monad mix)]]] [macro [syntax (.only syntax)] - ["[0]" code]]]]) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (type .public (Tree a) (Record diff --git a/stdlib/source/library/lux/data/format/css/value.lux b/stdlib/source/library/lux/data/format/css/value.lux index ac6af642c..6dab6619e 100644 --- a/stdlib/source/library/lux/data/format/css/value.lux +++ b/stdlib/source/library/lux/data/format/css/value.lux @@ -2,9 +2,7 @@ [library [lux (.except Label All Location and static false true) [control - ["[0]" maybe] - [parser - ["<[0]>" code]]] + ["[0]" maybe]] [data ["[0]" color] ["[0]" product] @@ -15,7 +13,8 @@ [macro [syntax (.only syntax)] ["[0]" template] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/data/format/json.lux b/stdlib/source/library/lux/data/format/json.lux index 845a4e057..3f14a9599 100644 --- a/stdlib/source/library/lux/data/format/json.lux +++ b/stdlib/source/library/lux/data/format/json.lux @@ -8,11 +8,10 @@ [predicate (.only Predicate)] ["[0]" monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" monad)] ["[0]" pipe] ["[0]" maybe] - ["[0]" try (.only Try)] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code]]] + ["[0]" try (.only Try)]] [data ["[0]" bit] ["[0]" product] @@ -25,7 +24,8 @@ [macro [syntax (.only syntax)] ["^" pattern] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/data/text/escape.lux b/stdlib/source/library/lux/data/text/escape.lux index f8980caf1..aff108c29 100644 --- a/stdlib/source/library/lux/data/text/escape.lux +++ b/stdlib/source/library/lux/data/text/escape.lux @@ -5,18 +5,18 @@ [abstract [monad (.only do)]] [control + ["<>" parser] ["[0]" maybe] ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - ["<>" parser - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [math [number (.only hex) ["n" nat]]] [macro [syntax (.only syntax)] ["^" pattern] - ["[0]" code]]]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] ["[0]" // (.only Char) ["%" \\format (.only format)]]) diff --git a/stdlib/source/library/lux/data/text/regex.lux b/stdlib/source/library/lux/data/text/regex.lux index 957c12bd7..c9a8a5d68 100644 --- a/stdlib/source/library/lux/data/text/regex.lux +++ b/stdlib/source/library/lux/data/text/regex.lux @@ -5,11 +5,10 @@ [abstract [monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" monad)] ["[0]" maybe] ["[0]" try] - ["[0]" exception (.only exception)] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data ["[0]" product] ["[0]" text @@ -19,7 +18,8 @@ [macro (.only with_symbols) [syntax (.only syntax)] ["^" pattern] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["n" nat (.use "[1]#[0]" decimal)]]]]] diff --git a/stdlib/source/library/lux/debug.lux b/stdlib/source/library/lux/debug.lux index 3db55592d..fa9e36cff 100644 --- a/stdlib/source/library/lux/debug.lux +++ b/stdlib/source/library/lux/debug.lux @@ -2,19 +2,16 @@ [library [lux (.except private) ["@" target] - ["[0]" type] ["[0]" ffi (.only import)] ["[0]" meta] [abstract ["[0]" monad (.only do)]] [control + ["<>" parser] ["[0]" pipe] ["[0]" function] ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" type (.only Parser)] - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data ["[0]" text (.only) ["%" \\format (.only Format)]] @@ -29,7 +26,8 @@ ["^" pattern] ["[0]" template] ["[0]" syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number [ratio (.only Ratio)] @@ -40,7 +38,9 @@ [duration (.only Duration)] [date (.only Date)] [month (.only Month)] - [day (.only Day)]]]]) + [day (.only Day)]] + ["[0]" type (.only) + ["<[1]>" \\parser (.only Parser)]]]]) (with_expansions [<jvm> (these (import java/lang/String "[1]::[0]") diff --git a/stdlib/source/library/lux/documentation.lux b/stdlib/source/library/lux/documentation.lux index 26e87d50d..2fd1b2bdf 100644 --- a/stdlib/source/library/lux/documentation.lux +++ b/stdlib/source/library/lux/documentation.lux @@ -7,10 +7,9 @@ [monad (.only do)] ["[0]" enum]] [control + ["<>" parser (.use "[1]#[0]" monad)] ["[0]" maybe (.use "[1]#[0]" functor)] - ["[0]" exception (.only exception)] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception (.only exception)]] [data ["[0]" product] ["[0]" text (.only \n) (.use "[1]#[0]" order) @@ -24,8 +23,9 @@ ["[0]" macro (.only) [syntax (.only syntax)] ["^" pattern] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat]]] diff --git a/stdlib/source/library/lux/extension.lux b/stdlib/source/library/lux/extension.lux index 3d1b684f6..9c3946a30 100644 --- a/stdlib/source/library/lux/extension.lux +++ b/stdlib/source/library/lux/extension.lux @@ -4,15 +4,15 @@ [abstract ["[0]" monad]] [control - ["<>" parser (.use "[1]#[0]" monad) - ["<c>" code (.only Parser)]]] + ["<>" parser (.use "[1]#[0]" monad)]] [data ["[0]" product] [collection ["[0]" list (.use "[1]#[0]" functor)]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<c>" \\parser (.only Parser)]]] [tool [compiler ["[0]" phase] diff --git a/stdlib/source/library/lux/ffi.jvm.lux b/stdlib/source/library/lux/ffi.jvm.lux index fddb85cb7..5768251a8 100644 --- a/stdlib/source/library/lux/ffi.jvm.lux +++ b/stdlib/source/library/lux/ffi.jvm.lux @@ -5,12 +5,11 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" monad)] ["[0]" io] ["[0]" maybe] ["[0]" try (.only Try)] - ["[0]" exception (.only Exception exception)] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception (.only Exception exception)]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" equivalence) @@ -23,9 +22,10 @@ [macro (.only with_symbols) [syntax (.only syntax)] ["^" pattern] - ["[0]" code] ["[0]" template] - ["[0]" context]] + ["[0]" context] + ["[0]" code (.only) + ["<[1]>" \\parser(.only Parser)]]] [math [number ["n" nat]]] diff --git a/stdlib/source/library/lux/ffi.lux b/stdlib/source/library/lux/ffi.lux index 097f91e77..103d2babd 100644 --- a/stdlib/source/library/lux/ffi.lux +++ b/stdlib/source/library/lux/ffi.lux @@ -5,11 +5,10 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" monad)] ["[0]" io] ["[0]" maybe (.use "[1]#[0]" functor)] - ["[0]" try] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["[0]" try]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" equivalence) @@ -18,8 +17,9 @@ ["[0]" list (.use "[1]#[0]" monad mix)]]] ["[0]" macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] ["@" target (.only) ["[0]" js]] [type @@ -378,8 +378,8 @@ parameters (list#each ..output_type :parameters:))] (` (.def ((~ g!it) (~+ (case g!parameters - {.#End} (list g!it) - _ (list#each (the #mandatory) g!parameters)))) + {.#End} (list g!it) + _ (list#each (the #mandatory) g!parameters)))) (.All ((~ g!it) (~+ g!variables)) (-> (~+ :input:/*) (~ (|> :output: @@ -450,8 +450,8 @@ g!class (` ((~ (code.local (maybe.else class_name alias))) (~+ g!class_variables))) :output: [#optional? false #mandatory g!class]] (` (.def ((~ g!it) (~+ (case g!parameters - {.#End} (list g!it) - _ (list#each (the #mandatory) g!parameters)))) + {.#End} (list g!it) + _ (list#each (the #mandatory) g!parameters)))) (.All ((~ g!it) (~+ g!class_variables) (~+ g!input_variables)) (.-> (~+ (list#each ..output_type :parameters:)) (~ (|> :output: @@ -728,51 +728,51 @@ {try.#Failure (%.format "Invalid inputs for extension: " (%.text name))})))))])) (analysis <undefined> - [name phase archive state] - <code>.end - _ - {try.#Success [state (extension_analysis name (list))]}) + [name phase archive state] + <code>.end + _ + {try.#Success [state (extension_analysis name (list))]}) (generation <undefined> - [name phase archive state] - (list) - {try.#Success [state js.undefined]}) + [name phase archive state] + (list) + {try.#Success [state js.undefined]}) (def .public undefined (template (undefined) [(.is ..Undefined (<undefined>))])) (analysis <undefined?> - [name phase archive state] - <code>.any - it - (do try.monad - [[state it] (phase archive (` (.is .Any (~ it))) state)] - (in [state (extension_analysis name (list it))]))) + [name phase archive state] + <code>.any + it + (do try.monad + [[state it] (phase archive (` (.is .Any (~ it))) state)] + (in [state (extension_analysis name (list it))]))) (generation <undefined?> - [name phase archive state] - (list it) - (do try.monad - [[state it] (phase archive it state)] - (in [state (js.= js.undefined it)]))) + [name phase archive state] + (list it) + (do try.monad + [[state it] (phase archive it state)] + (in [state (js.= js.undefined it)]))) (def .public undefined? (template (undefined? <it>) [(.as .Bit (.is .Any (<undefined?> <it>)))])) (analysis <object> - [name phase archive state] - (<>.some (<>.and <code>.text <code>.any)) - it - (do [! try.monad] - [[state output] (monad.mix ! (.function (_ [key value] [state output]) - (do ! - [[state value] (phase archive (` (.is .Any (~ value))) state)] - (in [state (list.partial value (text_analysis key) output)]))) - [state (list)] - it)] - (in [state (extension_analysis name (list.reversed output))]))) + [name phase archive state] + (<>.some (<>.and <code>.text <code>.any)) + it + (do [! try.monad] + [[state output] (monad.mix ! (.function (_ [key value] [state output]) + (do ! + [[state value] (phase archive (` (.is .Any (~ value))) state)] + (in [state (list.partial value (text_analysis key) output)]))) + [state (list)] + it)] + (in [state (extension_analysis name (list.reversed output))]))) (def text_synthesis (template (_ <it>) @@ -791,22 +791,22 @@ (.undefined))) (generation <object> - [name phase archive state] - (list.partial head_key head_value tail) - (do [! try.monad] - [[state output] (monad.mix ! - (.function (_ [key value] [state output]) - (case key - (pattern (text_synthesis key)) - (do try.monad - [[state value] (phase archive value state)] - (in [state (list.partial [key value] output)])) - - _ - (.undefined))) - [state (list)] - (pairs (list.partial head_key head_value tail)))] - (in [state (js.object (list.reversed output))]))) + [name phase archive state] + (list.partial head_key head_value tail) + (do [! try.monad] + [[state output] (monad.mix ! + (.function (_ [key value] [state output]) + (case key + (pattern (text_synthesis key)) + (do try.monad + [[state value] (phase archive value state)] + (in [state (list.partial [key value] output)])) + + _ + (.undefined))) + [state (list)] + (pairs (list.partial head_key head_value tail)))] + (in [state (js.object (list.reversed output))]))) (def .public object (syntax (_ [it (<>.some <code>.any)]) diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux index a577a3b6d..a199b5012 100644 --- a/stdlib/source/library/lux/ffi.old.lux +++ b/stdlib/source/library/lux/ffi.old.lux @@ -6,12 +6,11 @@ ["[0]" monad (.only Monad do)] ["[0]" enum]] [control + ["<>" parser] ["[0]" function] ["[0]" io] ["[0]" maybe] - ["[0]" try (.only Try)] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" try (.only Try)]] [data ["[0]" product] ["[0]" bit (.use "[1]#[0]" codec)] @@ -23,8 +22,9 @@ ["[0]" macro (.only with_symbols) [syntax (.only syntax)] ["^" pattern] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] ["[0]" meta]]]) (with_template [<name> <op> <from> <to>] @@ -324,7 +324,7 @@ (text.replaced "/" ".")) (def (generic_class_type' mode type_params in_array? name+params - class_type') + class_type') (-> Primitive_Mode (List Type_Parameter) Bit [Text (List GenericType)] (-> Primitive_Mode (List Type_Parameter) Bit GenericType Code) Code) diff --git a/stdlib/source/library/lux/ffi.php.lux b/stdlib/source/library/lux/ffi.php.lux index 00b35e83d..f5f357021 100644 --- a/stdlib/source/library/lux/ffi.php.lux +++ b/stdlib/source/library/lux/ffi.php.lux @@ -6,10 +6,9 @@ [abstract [monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" monad)] ["[0]" io] - ["[0]" maybe] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["[0]" maybe]] [data ["[0]" product] ["[0]" text @@ -20,8 +19,9 @@ abstract] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]]]]) + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (primitive .public (Object brand) Any) @@ -224,7 +224,7 @@ (-> Code Code Code (List Nullable) Bit Bit Nullable Code) (let [g!inputs (input_variables inputsT)] (` (def ((~ g!method) - [(~+ (list#each product.right g!inputs))]) + [(~+ (list#each product.right g!inputs))]) (-> [(~+ (list#each nullable_type inputsT))] (~ (|> (nullable_type outputT) (try_type try?) @@ -286,8 +286,8 @@ {#Virtual [method alias inputsT io? try? outputT]} (let [g!inputs (input_variables inputsT)] (` (def ((~ (qualify (maybe.else method alias))) - [(~+ (list#each product.right g!inputs))] - (~ g!object)) + [(~+ (list#each product.right g!inputs))] + (~ g!object)) (-> [(~+ (list#each nullable_type inputsT))] (~ g!type) (~ (|> (nullable_type outputT) diff --git a/stdlib/source/library/lux/ffi.scm.lux b/stdlib/source/library/lux/ffi.scm.lux index 49296eef7..27f8c4f4f 100644 --- a/stdlib/source/library/lux/ffi.scm.lux +++ b/stdlib/source/library/lux/ffi.scm.lux @@ -6,10 +6,9 @@ [abstract [monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" monad)] ["[0]" io] - ["[0]" maybe] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["[0]" maybe]] [data ["[0]" product] ["[0]" text @@ -20,8 +19,9 @@ abstract] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]]]]) + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (primitive .public (Object brand) Any) @@ -189,7 +189,7 @@ (-> Code Code Code (List Nilable) Bit Bit Nilable Code) (let [g!inputs (input_variables inputsT)] (` (def ((~ g!method) - [(~+ (list#each product.right g!inputs))]) + [(~+ (list#each product.right g!inputs))]) (-> [(~+ (list#each nilable_type inputsT))] (~ (|> (nilable_type outputT) (try_type try?) diff --git a/stdlib/source/library/lux/ffi/export.js.lux b/stdlib/source/library/lux/ffi/export.js.lux index 2f635e20b..e40ea1964 100644 --- a/stdlib/source/library/lux/ffi/export.js.lux +++ b/stdlib/source/library/lux/ffi/export.js.lux @@ -7,8 +7,7 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser]] [data [text ["%" \\format]] @@ -17,7 +16,8 @@ ["[0]" set]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random]] [target diff --git a/stdlib/source/library/lux/ffi/export.jvm.lux b/stdlib/source/library/lux/ffi/export.jvm.lux index 8d3cc0ea1..6aebb2c13 100644 --- a/stdlib/source/library/lux/ffi/export.jvm.lux +++ b/stdlib/source/library/lux/ffi/export.jvm.lux @@ -2,14 +2,14 @@ [library [lux (.except function) [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" list (.use "[1]#[0]" monad)]]] [macro [syntax (.only syntax)] - ["[0]" code]]]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] ["[0]" //]) (type (API of) diff --git a/stdlib/source/library/lux/ffi/export.lua.lux b/stdlib/source/library/lux/ffi/export.lua.lux index 6cfe5b891..66b98998d 100644 --- a/stdlib/source/library/lux/ffi/export.lua.lux +++ b/stdlib/source/library/lux/ffi/export.lua.lux @@ -7,8 +7,7 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser]] [data [text ["%" \\format]] @@ -17,7 +16,8 @@ ["[0]" set]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random]] [target diff --git a/stdlib/source/library/lux/ffi/export.py.lux b/stdlib/source/library/lux/ffi/export.py.lux index 1a4b3e054..42309927e 100644 --- a/stdlib/source/library/lux/ffi/export.py.lux +++ b/stdlib/source/library/lux/ffi/export.py.lux @@ -7,8 +7,7 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser]] [data [text ["%" \\format]] @@ -17,7 +16,8 @@ ["[0]" set]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random]] [target diff --git a/stdlib/source/library/lux/ffi/export.rb.lux b/stdlib/source/library/lux/ffi/export.rb.lux index 1266c730c..6777bfa86 100644 --- a/stdlib/source/library/lux/ffi/export.rb.lux +++ b/stdlib/source/library/lux/ffi/export.rb.lux @@ -8,8 +8,7 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser]] [data ["[0]" text ["%" \\format] @@ -19,7 +18,8 @@ ["[0]" set]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random]] [target diff --git a/stdlib/source/library/lux/macro/context.lux b/stdlib/source/library/lux/macro/context.lux index fef8ae1d8..4d4224ccf 100644 --- a/stdlib/source/library/lux/macro/context.lux +++ b/stdlib/source/library/lux/macro/context.lux @@ -5,16 +5,18 @@ [monad (.only do)] ["[0]" predicate (.only Predicate)]] [control + ["?" parser] ["[0]" exception (.only exception)] - ["[0]" maybe] - ["?" parser (.only) - ["?[0]" code]]] + ["[0]" maybe]] [data ["[0]" text (.use "[1]#[0]" equivalence monoid)] [collection ["[0]" list] [dictionary ["[0]" plist (.only PList)]]]] + [macro + ["[0]" code + ["?[1]" \\parser]]] ["[0]" meta (.only) ["[0]" symbol (.use "[1]#[0]" codec)]]]] ["[0]" // (.only) diff --git a/stdlib/source/library/lux/macro/local.lux b/stdlib/source/library/lux/macro/local.lux index 4e762b81d..ef15fbe10 100644 --- a/stdlib/source/library/lux/macro/local.lux +++ b/stdlib/source/library/lux/macro/local.lux @@ -5,10 +5,9 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser] ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data ["[0]" product] ["[0]" text] @@ -18,7 +17,8 @@ ["[0]" plist (.only PList)]]]]]] ["[0]" // (.only) [syntax (.only syntax)] - ["[1][0]" code]]) + ["[0]" code (.only) + ["<[1]>" \\parser]]]) (exception .public (unknown_module [module Text]) (exception.report @@ -106,7 +106,7 @@ seed meta.seed g!pop (//.symbol "pop") _ (.let [g!pop (is Symbol - ["" (//code.format g!pop)])] + ["" (code.format g!pop)])] (..push_one [g!pop (..pop_all (list#each product.left macros) g!pop)]))] (in (` ((~ g!pop)))))) diff --git a/stdlib/source/library/lux/macro/syntax.lux b/stdlib/source/library/lux/macro/syntax.lux index 897b778e5..380713ff0 100644 --- a/stdlib/source/library/lux/macro/syntax.lux +++ b/stdlib/source/library/lux/macro/syntax.lux @@ -5,10 +5,9 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser] ["[0]" maybe] - ["[0]" try] - ["<>" parser (.only) - ["</>" code (.only Parser)]]] + ["[0]" try]] [data ["[0]" text (.use "[1]#[0]" monoid)] [collection @@ -20,7 +19,8 @@ ["[0]" rev] ["[0]" frac]]]]] ["[0]" // (.only with_symbols) - ["[0]" code]] + ["[0]" code (.only) + ["</>" \\parser (.only Parser)]]] ["[0]" / ["[1][0]" export]]) diff --git a/stdlib/source/library/lux/macro/syntax/check.lux b/stdlib/source/library/lux/macro/syntax/check.lux index 6649a6864..7a4b6ac73 100644 --- a/stdlib/source/library/lux/macro/syntax/check.lux +++ b/stdlib/source/library/lux/macro/syntax/check.lux @@ -6,12 +6,12 @@ [equivalence (.only Equivalence)] [monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data ["[0]" product]] [macro - ["[0]" code]]]]) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (def extension "lux check") diff --git a/stdlib/source/library/lux/macro/syntax/declaration.lux b/stdlib/source/library/lux/macro/syntax/declaration.lux index c4cac1e99..dbb86e1ce 100644 --- a/stdlib/source/library/lux/macro/syntax/declaration.lux +++ b/stdlib/source/library/lux/macro/syntax/declaration.lux @@ -4,15 +4,15 @@ [abstract [equivalence (.only Equivalence)]] [control - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["<>" parser (.use "[1]#[0]" monad)]] [data ["[0]" product] ["[0]" text] [collection ["[0]" list (.use "[1]#[0]" functor)]]] [macro - ["[0]" code]]]]) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (type .public Declaration (Record diff --git a/stdlib/source/library/lux/macro/syntax/definition.lux b/stdlib/source/library/lux/macro/syntax/definition.lux index eee400dfe..b93e0bd64 100644 --- a/stdlib/source/library/lux/macro/syntax/definition.lux +++ b/stdlib/source/library/lux/macro/syntax/definition.lux @@ -5,9 +5,8 @@ [equivalence (.only Equivalence)] [monad (.only do)]] [control - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser] + ["[0]" exception (.only exception)]] [data ["[0]" sum] ["[0]" product] @@ -17,7 +16,8 @@ [collection ["[0]" list]]] ["[0]" macro (.only) - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] ["[0]" meta (.only) ["[0]" location]]]] ["[0]" // (.only) diff --git a/stdlib/source/library/lux/macro/syntax/export.lux b/stdlib/source/library/lux/macro/syntax/export.lux index 1a80d36c1..e47b09750 100644 --- a/stdlib/source/library/lux/macro/syntax/export.lux +++ b/stdlib/source/library/lux/macro/syntax/export.lux @@ -4,10 +4,11 @@ [abstract [monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [macro - ["^" pattern]]]]) + ["^" pattern] + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]]]]) (def .public default_policy Code diff --git a/stdlib/source/library/lux/macro/syntax/input.lux b/stdlib/source/library/lux/macro/syntax/input.lux index b0022bc25..1354a9a54 100644 --- a/stdlib/source/library/lux/macro/syntax/input.lux +++ b/stdlib/source/library/lux/macro/syntax/input.lux @@ -4,14 +4,14 @@ [abstract [equivalence (.only Equivalence)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data ["[0]" product] [collection ["[0]" list (.use "[1]#[0]" monad)]]] [macro - ["[0]" code]]]]) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (type .public Input (Record diff --git a/stdlib/source/library/lux/macro/syntax/type/variable.lux b/stdlib/source/library/lux/macro/syntax/type/variable.lux index ada8766cb..2658572e6 100644 --- a/stdlib/source/library/lux/macro/syntax/type/variable.lux +++ b/stdlib/source/library/lux/macro/syntax/type/variable.lux @@ -3,13 +3,11 @@ [lux (.except) [abstract [equivalence (.only Equivalence)]] - [control - [parser - ["<[0]>" code (.only Parser)]]] [data ["[0]" text]] [macro - ["[0]" code]]]]) + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]]) (type .public Variable Text) diff --git a/stdlib/source/library/lux/macro/template.lux b/stdlib/source/library/lux/macro/template.lux index 834599518..68a37a237 100644 --- a/stdlib/source/library/lux/macro/template.lux +++ b/stdlib/source/library/lux/macro/template.lux @@ -5,10 +5,9 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" functor)] ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - ["<>" parser (.use "[1]#[0]" functor) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception (.only exception)]] [data ["[0]" bit (.use "[1]#[0]" codec)] ["[0]" text] @@ -25,8 +24,9 @@ ["[0]" frac (.use "[1]#[0]" decimal)]]]]] ["[0]" // (.only) [syntax (.only syntax)] - ["[0]" code] - ["[0]" local]]) + ["[0]" local] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]) (def .public spliced (syntax (_ [parts (<code>.tuple (<>.some <code>.any))]) diff --git a/stdlib/source/library/lux/math.lux b/stdlib/source/library/lux/math.lux index 6404b3343..63f2e931c 100644 --- a/stdlib/source/library/lux/math.lux +++ b/stdlib/source/library/lux/math.lux @@ -7,10 +7,9 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser] ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data [text ["%" \\format]] @@ -18,7 +17,9 @@ ["[0]" list (.use "[1]#[0]" mix)]]] [macro [syntax (.only syntax)] - ["[0]" template]] + ["[0]" template] + ["[0]" code + ["<[1]>" \\parser]]] [tool [compiler ["[0]" phase (.use "[1]#[0]" monad)] diff --git a/stdlib/source/library/lux/math/infix.lux b/stdlib/source/library/lux/math/infix.lux index af6268977..01930c466 100644 --- a/stdlib/source/library/lux/math/infix.lux +++ b/stdlib/source/library/lux/math/infix.lux @@ -4,15 +4,15 @@ [abstract [monad (.only do)]] [control - ["<>" parser (.use "[1]#[0]" functor) - ["<[0]>" code (.only Parser)]]] + ["<>" parser (.use "[1]#[0]" functor)]] [data ["[0]" product] [collection ["[0]" list (.use "[1]#[0]" mix)]]] [macro [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/math/modular.lux b/stdlib/source/library/lux/math/modular.lux index 4fcb27d65..489f798ab 100644 --- a/stdlib/source/library/lux/math/modular.lux +++ b/stdlib/source/library/lux/math/modular.lux @@ -8,16 +8,16 @@ [codec (.only Codec)] [monad (.only do)]] [control + ["<>" parser] ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" monoid) ["<[1]>" \\parser (.only Parser)]]] [macro - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["i" int (.use "[1]#[0]" decimal)]]] diff --git a/stdlib/source/library/lux/math/modulus.lux b/stdlib/source/library/lux/math/modulus.lux index f22bb1d39..d440669ae 100644 --- a/stdlib/source/library/lux/math/modulus.lux +++ b/stdlib/source/library/lux/math/modulus.lux @@ -6,12 +6,11 @@ [monad (.only do)]] [control ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - [parser - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [macro [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["i" int]]] diff --git a/stdlib/source/library/lux/math/number/complex.lux b/stdlib/source/library/lux/math/number/complex.lux index 611d66066..d22ce8ad2 100644 --- a/stdlib/source/library/lux/math/number/complex.lux +++ b/stdlib/source/library/lux/math/number/complex.lux @@ -4,14 +4,15 @@ [abstract [equivalence (.only Equivalence)]] [control - ["[0]" maybe] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" maybe]] [data [collection ["[0]" list (.use "[1]#[0]" functor)]]] [macro - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] [math [number ["f" frac] diff --git a/stdlib/source/library/lux/math/number/ratio.lux b/stdlib/source/library/lux/math/number/ratio.lux index 2e77616c6..6deac08f0 100644 --- a/stdlib/source/library/lux/math/number/ratio.lux +++ b/stdlib/source/library/lux/math/number/ratio.lux @@ -8,17 +8,17 @@ [codec (.only Codec)] [monad (.only do)]] [control + ["<>" parser] ["[0]" function] ["[0]" maybe] - ["[0]" try] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" try]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" monoid)]] [macro [syntax (.only syntax)] - ["[0]" code]]]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]]]] [// ["n" nat (.use "[1]#[0]" decimal)]]) diff --git a/stdlib/source/library/lux/meta/configuration.lux b/stdlib/source/library/lux/meta/configuration.lux index d52b60914..d0dea1e76 100644 --- a/stdlib/source/library/lux/meta/configuration.lux +++ b/stdlib/source/library/lux/meta/configuration.lux @@ -7,10 +7,9 @@ [monoid (.only Monoid)] [monad (.only do)]] [control + ["<>" parser] ["[0]" maybe (.use "[1]#[0]" functor)] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format] @@ -21,7 +20,8 @@ ["/" plist]]]] [macro [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex)]]]]) diff --git a/stdlib/source/library/lux/meta/version.lux b/stdlib/source/library/lux/meta/version.lux index da5d349bb..f7df8ac2f 100644 --- a/stdlib/source/library/lux/meta/version.lux +++ b/stdlib/source/library/lux/meta/version.lux @@ -5,16 +5,16 @@ [abstract [monad (.only do)]] [control - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" exception (.only exception)]] [data ["[0]" text (.use "[1]#[0]" equivalence)] [collection ["[0]" list (.use "[1]#[0]" mix)]]] [macro [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [tool [compiler [version (.only Version)]]]]]) diff --git a/stdlib/source/library/lux/program.lux b/stdlib/source/library/lux/program.lux index ca420eb9f..99fb1832e 100644 --- a/stdlib/source/library/lux/program.lux +++ b/stdlib/source/library/lux/program.lux @@ -9,11 +9,11 @@ [concurrency ["[0]" thread]] ["<>" parser (.only) - ["<[0]>" code] ["<[0]>" cli]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code]]]]) + ["[0]" code (.only) + ["<[1]>" \\parser]]]]]) (type Arguments (Variant diff --git a/stdlib/source/library/lux/static.lux b/stdlib/source/library/lux/static.lux index 53426b0f8..a473f8288 100644 --- a/stdlib/source/library/lux/static.lux +++ b/stdlib/source/library/lux/static.lux @@ -5,14 +5,14 @@ [abstract [monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser]] [data [collection ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex)] ["[0]" random (.only Random)]]]]) diff --git a/stdlib/source/library/lux/target/jvm/modifier.lux b/stdlib/source/library/lux/target/jvm/modifier.lux index 058027fab..ac45136d6 100644 --- a/stdlib/source/library/lux/target/jvm/modifier.lux +++ b/stdlib/source/library/lux/target/jvm/modifier.lux @@ -5,15 +5,15 @@ ["[0]" equivalence (.only Equivalence)] ["[0]" monoid (.only Monoid)]] [control - ["[0]" try] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" try]] [data ["[0]" binary ["[1]F" \\format (.only Writer)]]] [macro (.only with_symbols) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" number (.only hex) ["[0]" i64]]] diff --git a/stdlib/source/library/lux/target/lua.lux b/stdlib/source/library/lux/target/lua.lux index 635117c5e..f12cfbac6 100644 --- a/stdlib/source/library/lux/target/lua.lux +++ b/stdlib/source/library/lux/target/lua.lux @@ -7,9 +7,7 @@ [hash (.only Hash)] ["[0]" enum]] [control - ["[0]" pipe] - [parser - ["<[0]>" code]]] + ["[0]" pipe]] [data ["[0]" text (.only) ["%" \\format (.only format)]] @@ -18,7 +16,8 @@ [macro [syntax (.only syntax)] ["[0]" template] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/target/php.lux b/stdlib/source/library/lux/target/php.lux index 99b0c1d3f..2ad1863b6 100644 --- a/stdlib/source/library/lux/target/php.lux +++ b/stdlib/source/library/lux/target/php.lux @@ -7,9 +7,7 @@ [hash (.only Hash)] ["[0]" enum]] [control - ["[0]" pipe] - [parser - ["<[0]>" code]]] + ["[0]" pipe]] [data ["[0]" text (.only) ["%" \\format (.only format)]] @@ -18,7 +16,8 @@ [macro [syntax (.only syntax)] ["[0]" template] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/target/python.lux b/stdlib/source/library/lux/target/python.lux index 1ce2789e7..ddc601161 100644 --- a/stdlib/source/library/lux/target/python.lux +++ b/stdlib/source/library/lux/target/python.lux @@ -8,9 +8,7 @@ [hash (.only Hash)] ["[0]" enum]] [control - ["[0]" pipe] - [parser - ["<[0]>" code]]] + ["[0]" pipe]] [data ["[0]" text (.only) ["%" \\format (.only format)]] @@ -19,7 +17,8 @@ [macro [syntax (.only syntax)] ["[0]" template] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/target/r.lux b/stdlib/source/library/lux/target/r.lux index 6ec808501..6d56eea58 100644 --- a/stdlib/source/library/lux/target/r.lux +++ b/stdlib/source/library/lux/target/r.lux @@ -4,9 +4,7 @@ [control ["[0]" pipe] ["[0]" function] - ["[0]" maybe (.use "[1]#[0]" functor)] - [parser - ["<[0]>" code]]] + ["[0]" maybe (.use "[1]#[0]" functor)]] [data ["[0]" text ["%" \\format (.only format)]] @@ -15,7 +13,8 @@ [macro [syntax (.only syntax)] ["[0]" template] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["f" frac]]] diff --git a/stdlib/source/library/lux/target/ruby.lux b/stdlib/source/library/lux/target/ruby.lux index 980307456..5a5f5af9d 100644 --- a/stdlib/source/library/lux/target/ruby.lux +++ b/stdlib/source/library/lux/target/ruby.lux @@ -7,9 +7,7 @@ [hash (.only Hash)] ["[0]" enum]] [control - ["[0]" pipe] - [parser - ["<[0]>" code]]] + ["[0]" pipe]] [data ["[0]" text (.only) ["%" \\format (.only format)]] @@ -18,7 +16,8 @@ [macro [syntax (.only syntax)] ["[0]" template] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/test.lux b/stdlib/source/library/lux/test.lux index b7cdc5ca7..110675c5d 100644 --- a/stdlib/source/library/lux/test.lux +++ b/stdlib/source/library/lux/test.lux @@ -6,6 +6,7 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser] ["[0]" pipe] ["[0]" maybe] ["[0]" try] @@ -13,9 +14,7 @@ ["[0]" io] [concurrency ["[0]" atom (.only Atom)] - ["[0]" async (.only Async) (.use "[1]#[0]" monad)]] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" async (.only Async) (.use "[1]#[0]" monad)]]] [data ["[0]" product] ["[0]" text (.only) @@ -35,7 +34,8 @@ ["f" frac]]] [macro [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["[0]" meta (.only) ["[0]" symbol]] [world 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 81d6ccdf5..c3ccd43e9 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux @@ -9,9 +9,7 @@ ["[0]" function] ["[0]" maybe] ["[0]" try (.only Try)] - ["[0]" exception (.only Exception)] - [parser - ["<[0]>" code]]] + ["[0]" exception (.only Exception)]] [data ["[0]" product] ["[0]" bit (.use "[1]#[0]" equivalence)] @@ -20,7 +18,9 @@ [collection ["[0]" list (.use "[1]#[0]" functor mix)]]] [macro - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/common_lisp.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/common_lisp.lux index 5e7529857..377ce23c4 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/common_lisp.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/common_lisp.lux @@ -1,32 +1,10 @@ (.require [library - [lux (.except) - ["[0]" ffi] - [abstract - ["[0]" monad (.only do)]] - [control - ["<>" parser (.only) - ["<c>" code (.only Parser)]]] - [data - [collection - ["[0]" array (.only Array)] - ["[0]" dictionary] - ["[0]" list]]] - ["[0]" type (.only) - ["[0]" check]] - ["@" target - ["_" common_lisp]]]] - [// - ["/" lux (.only custom)] - [// - ["[0]" bundle] - [// - ["[0]" analysis - ["[1]/[0]" type]] - [// - ["[0]" analysis (.only Analysis Operation Phase Handler Bundle)] - [/// - ["[0]" phase]]]]]]) + [lux (.except)]] + [/// + ["[0]" bundle] + [/// + [analysis (.only Bundle)]]]) (def .public bundle Bundle 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 af44a8272..102e5adcf 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 @@ -5,13 +5,15 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" array] ["[0]" dictionary] ["[0]" list]]] + [macro + ["[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/jvm.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/analysis/jvm.lux index 32ca3161d..16cb9e777 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 @@ -7,12 +7,11 @@ ["[0]" monad (.only do)] ["[0]" predicate]] [control + ["<>" parser] ["[0]" pipe] ["[0]" maybe (.use "[1]#[0]" functor)] ["[0]" try (.only Try) (.use "[1]#[0]" monad)] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception (.only exception)]] [data [binary (.only Binary) ["[0]" \\format]] @@ -27,7 +26,9 @@ ["[0]" sequence]]] [macro ["^" pattern] - ["[0]" template]] + ["[0]" template] + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat] 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 b507b7a15..3c0e4cc86 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 @@ -5,13 +5,15 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" array] ["[0]" dictionary] ["[0]" list]]] + [macro + ["[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 448735394..75e4e8516 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 @@ -4,11 +4,10 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser] ["[0]" maybe] ["[0]" try] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception (.only exception)]] [data ["[0]" text (.only) ["%" \\format (.only format)]] @@ -16,7 +15,9 @@ ["[0]" list (.use "[1]#[0]" functor)] ["[0]" dictionary (.only Dictionary)]]] [macro - ["^" pattern]] + ["^" pattern] + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat]]] 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 27e096e18..3852d2b24 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 @@ -5,13 +5,15 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<c>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" array (.only Array)] ["[0]" dictionary] ["[0]" list]]] + [macro + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] ["[0]" type (.only) ["[0]" check]] ["@" target (.only) @@ -31,7 +33,7 @@ (def array::new Handler (custom - [<c>.any + [<code>.any (function (_ extension phase archive lengthC) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -44,7 +46,7 @@ (def array::length Handler (custom - [<c>.any + [<code>.any (function (_ extension phase archive arrayC) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -57,7 +59,7 @@ (def array::read Handler (custom - [(<>.and <c>.any <c>.any) + [(<>.and <code>.any <code>.any) (function (_ extension phase archive [indexC arrayC]) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -72,7 +74,7 @@ (def array::write Handler (custom - [(all <>.and <c>.any <c>.any <c>.any) + [(all <>.and <code>.any <code>.any <code>.any) (function (_ extension phase archive [indexC valueC arrayC]) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -89,7 +91,7 @@ (def array::delete Handler (custom - [(all <>.and <c>.any <c>.any) + [(all <>.and <code>.any <code>.any) (function (_ extension phase archive [indexC arrayC]) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -127,7 +129,7 @@ (def object::new Handler (custom - [(all <>.and <c>.text (<>.some <c>.any)) + [(all <>.and <code>.text (<>.some <code>.any)) (function (_ extension phase archive [constructor inputsC]) (do [! phase.monad] [inputsA (monad.each ! (|>> (phase archive) (analysis/type.with_type Any)) inputsC) @@ -137,7 +139,7 @@ (def object::get Handler (custom - [(all <>.and <c>.text <c>.any) + [(all <>.and <code>.text <code>.any) (function (_ extension phase archive [fieldC objectC]) (do phase.monad [objectA (analysis/type.with_type ..Object @@ -149,7 +151,7 @@ (def object::do Handler (custom - [(all <>.and <c>.text <c>.any (<>.some <c>.any)) + [(all <>.and <code>.text <code>.any (<>.some <code>.any)) (function (_ extension phase archive [methodC objectC inputsC]) (do [! phase.monad] [objectA (analysis/type.with_type ..Object @@ -174,7 +176,7 @@ (def php::constant Handler (custom - [<c>.text + [<code>.text (function (_ extension phase archive name) (do phase.monad [_ (analysis/type.infer Any)] @@ -183,7 +185,7 @@ (def php::apply Handler (custom - [(all <>.and <c>.any (<>.some <c>.any)) + [(all <>.and <code>.any (<>.some <code>.any)) (function (_ extension phase archive [abstractionC inputsC]) (do [! phase.monad] [abstractionA (analysis/type.with_type ..Function @@ -195,7 +197,7 @@ (def php::pack Handler (custom - [(all <>.and <c>.any <c>.any) + [(all <>.and <code>.any <code>.any) (function (_ extension phase archive [formatC dataC]) (do [! phase.monad] [formatA (analysis/type.with_type Text 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 d44c8f5de..3c6e4b452 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 @@ -5,13 +5,15 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" array] ["[0]" dictionary] ["[0]" list]]] + [macro + ["[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 c499e23d8..a53133555 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 @@ -5,13 +5,15 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<c>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" array (.only Array)] ["[0]" dictionary] ["[0]" list]]] + [macro + ["[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 b43fb8c4f..3029aec9d 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 @@ -5,13 +5,15 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" array] ["[0]" dictionary] ["[0]" list]]] + [macro + ["[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 0220eb1f4..bf1493940 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 @@ -5,13 +5,15 @@ [abstract ["[0]" monad (.only do)]] [control - ["<>" parser (.only) - ["<c>" code (.only Parser)]]] + ["<>" parser]] [data [collection ["[0]" array (.only Array)] ["[0]" dictionary] ["[0]" list]]] + [macro + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] ["[0]" type (.only) ["[0]" check]] ["@" target (.only) @@ -31,7 +33,7 @@ (def array::new Handler (custom - [<c>.any + [<code>.any (function (_ extension phase archive lengthC) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -44,7 +46,7 @@ (def array::length Handler (custom - [<c>.any + [<code>.any (function (_ extension phase archive arrayC) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -57,7 +59,7 @@ (def array::read Handler (custom - [(<>.and <c>.any <c>.any) + [(<>.and <code>.any <code>.any) (function (_ extension phase archive [indexC arrayC]) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -72,7 +74,7 @@ (def array::write Handler (custom - [(all <>.and <c>.any <c>.any <c>.any) + [(all <>.and <code>.any <code>.any <code>.any) (function (_ extension phase archive [indexC valueC arrayC]) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -89,7 +91,7 @@ (def array::delete Handler (custom - [(all <>.and <c>.any <c>.any) + [(all <>.and <code>.any <code>.any) (function (_ extension phase archive [indexC arrayC]) (<| analysis/type.with_var (function (_ [@var :var:])) @@ -131,7 +133,7 @@ (def scheme::constant Handler (custom - [<c>.text + [<code>.text (function (_ extension phase archive name) (do phase.monad [_ (analysis/type.infer Any)] @@ -140,7 +142,7 @@ (def scheme::apply Handler (custom - [(all <>.and <c>.any (<>.some <c>.any)) + [(all <>.and <code>.any (<>.some <code>.any)) (function (_ extension phase archive [abstractionC inputsC]) (do [! phase.monad] [abstractionA (analysis/type.with_type ..Function diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux index e2833a6c1..05da344e7 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/jvm.lux @@ -5,11 +5,10 @@ [abstract ["[0]" monad (.only do)]] [control + ["<>" parser (.use "[1]#[0]" monad)] ["[0]" pipe] ["[0]" try (.only Try) (.use "[1]#[0]" functor)] - ["[0]" exception] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception]] [data ["[0]" product] [binary (.only Binary) @@ -24,7 +23,9 @@ ["[0]" set (.only Set)]]] [macro ["^" pattern] - ["[0]" template]] + ["[0]" template] + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/lux.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/lux.lux index 20f7aa448..0d02b109f 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/lux.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/directive/lux.lux @@ -7,11 +7,10 @@ ["[0]" monad (.only do)]] [control [io (.only IO)] + ["<>" parser] ["[0]" maybe (.use "[1]#[0]" functor)] ["[0]" try] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception (.only exception)]] [data ["[0]" binary] ["[0]" product] @@ -24,7 +23,8 @@ ["[0]" set (.only Set)]]] [macro ["^" pattern] - ["[0]" code]] + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat]]] 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 25e2a8d21..42c75531d 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 @@ -5,9 +5,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" function]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) @@ -18,7 +17,8 @@ ["[0]" sequence]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["[0]" i64]]] 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 5e96d3ec3..75cb5a86e 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 @@ -3,16 +3,14 @@ [lux (.except) [abstract ["[0]" monad (.only do)]] - [control - [parser - ["<[0]>" code]]] [data [collection ["[0]" list (.use "[1]#[0]" functor)]]] ["[0]" meta] ["[0]" macro (.only with_symbols) - ["[0]" code] - [syntax (.only syntax)]]]] + [syntax (.only syntax)] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] ["[0]" /// ["[1][0]" extension] [// 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 45ec51f44..3eaadc3f5 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 @@ -5,9 +5,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" function]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) @@ -19,7 +18,8 @@ ["[0]" sequence]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["[0]" i64]]] 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 1e9b333c4..f7fb63f10 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 @@ -5,9 +5,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" function]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) @@ -19,7 +18,8 @@ ["[0]" sequence]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["[0]" i64]]] 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 c1867a620..1254f50bc 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 @@ -5,9 +5,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" function]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) @@ -19,7 +18,8 @@ ["[0]" sequence]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["[0]" i64]]] 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 40b7ebd56..dfef07d7c 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 @@ -4,9 +4,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" function]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) @@ -18,7 +17,8 @@ ["[0]" sequence]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["f" frac] 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 69fff57bc..089bdf2b9 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 @@ -5,9 +5,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" function]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) @@ -19,7 +18,8 @@ ["[0]" sequence]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["n" nat] 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 4754c861b..74261ccc3 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 @@ -5,9 +5,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" function]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) @@ -19,7 +18,8 @@ ["[0]" sequence]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["[0]" i64] 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 bbb7db4e9..a99e83f84 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 @@ -3,9 +3,6 @@ [lux (.except) [abstract ["[0]" monad (.only do)]] - [control - [parser - ["<[0]>" code]]] [data ["[0]" product] ["[0]" text] @@ -15,8 +12,9 @@ ["[0]" list (.use "[1]#[0]" functor)] ["dict" dictionary (.only Dictionary)]]] ["[0]" macro (.only with_symbols) - ["[0]" code] - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [target ["_" scheme (.only Expression Computation)]]]] ["[0]" /// 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 35e49dc7e..0b287568a 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 @@ -5,9 +5,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" function]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" hash) @@ -19,7 +18,8 @@ ["[0]" sequence]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex) ["[0]" i64]]] 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 1e1e062eb..7b31c9a0a 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux @@ -31,10 +31,9 @@ [abstract [monad (.only do)]] [control + ["<>" parser] ["[0]" maybe] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data ["[0]" text (.only) [\\parser (.only Offset)] @@ -44,7 +43,9 @@ ["[0]" dictionary (.only Dictionary)]]] [macro [syntax (.only syntax)] - ["[0]" template]] + ["[0]" template] + ["[0]" code + ["<[1]>" \\parser]]] [meta ["[0]" symbol]] [math diff --git a/stdlib/source/library/lux/type.lux b/stdlib/source/library/lux/type.lux index ac1e01df2..00afaddc0 100644 --- a/stdlib/source/library/lux/type.lux +++ b/stdlib/source/library/lux/type.lux @@ -6,10 +6,9 @@ [equivalence (.only Equivalence)] [monad (.only Monad do)]] [control + ["<>" parser] ["[0]" function] - ["[0]" maybe] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" maybe]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" monoid equivalence)] @@ -19,7 +18,8 @@ ["[0]" macro (.only) [syntax (.only syntax)] ["^" pattern] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat (.use "[1]#[0]" decimal)]]] diff --git a/stdlib/source/library/lux/type/dynamic.lux b/stdlib/source/library/lux/type/dynamic.lux index 9afa8f395..fd98afcdf 100644 --- a/stdlib/source/library/lux/type/dynamic.lux +++ b/stdlib/source/library/lux/type/dynamic.lux @@ -4,14 +4,14 @@ ["[0]" debug] [control ["[0]" try (.only Try)] - ["[0]" exception (.only exception)] - [parser - ["<[0]>" code]]] + ["[0]" exception (.only exception)]] [data [text ["%" \\format]]] [macro (.only with_symbols) - ["[0]" syntax (.only syntax)]] + ["[0]" syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] ["[0]" type (.only) ["[0]" primitive (.only primitive)]]]]) diff --git a/stdlib/source/library/lux/type/implicit.lux b/stdlib/source/library/lux/type/implicit.lux index 3b330f2c1..f831c551b 100644 --- a/stdlib/source/library/lux/type/implicit.lux +++ b/stdlib/source/library/lux/type/implicit.lux @@ -5,10 +5,9 @@ ["[0]" monad (.only do)] ["[0]" equivalence]] [control + ["<>" parser] ["[0]" maybe] - ["[0]" try] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" try]] [data ["[0]" product] ["[0]" text (.use "[1]#[0]" equivalence) @@ -17,8 +16,9 @@ ["[0]" list (.use "[1]#[0]" monad mix)] ["[0]" dictionary (.only Dictionary)]]] ["[0]" macro (.only) - ["[0]" code] - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math ["[0]" number (.only) ["n" nat]]] diff --git a/stdlib/source/library/lux/type/poly.lux b/stdlib/source/library/lux/type/poly.lux index 1555bfe9a..4f70bb937 100644 --- a/stdlib/source/library/lux/type/poly.lux +++ b/stdlib/source/library/lux/type/poly.lux @@ -2,14 +2,11 @@ [library [lux (.except) ["[0]" meta] - ["[0]" type] [abstract ["[0]" monad (.only do)]] [control - ["[0]" maybe] - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" type (.only Env)] - ["<[0]>" code (.only Parser)]]] + ["<>" parser (.use "[1]#[0]" monad)] + ["[0]" maybe]] [data ["[0]" product] ["[0]" text] @@ -19,10 +16,13 @@ [macro (.only with_symbols) [syntax (.only syntax)] ["^" pattern] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [math [number - ["n" nat]]]]]) + ["n" nat]]] + ["[0]" type (.only) + ["<[1]>" \\parser (.only Env)]]]]) (def .public polytypic (syntax (_ [name <code>.local diff --git a/stdlib/source/library/lux/type/primitive.lux b/stdlib/source/library/lux/type/primitive.lux index c7d4a147a..50c288e1c 100644 --- a/stdlib/source/library/lux/type/primitive.lux +++ b/stdlib/source/library/lux/type/primitive.lux @@ -5,16 +5,16 @@ [abstract [monad (.only do)]] [control - ["<>" parser (.use "[1]#[0]" monad) - ["<[0]>" code (.only Parser)]]] + ["<>" parser (.use "[1]#[0]" monad)]] [data ["[0]" text (.use "[1]#[0]" equivalence)] [collection ["[0]" list (.use "[1]#[0]" functor)]]] ["[0]" macro (.only) ["^" pattern] - ["[0]" code] ["[0]" context] + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]] [syntax (.only syntax) ["|[0]|" export]]] [meta diff --git a/stdlib/source/library/lux/type/quotient.lux b/stdlib/source/library/lux/type/quotient.lux index 8e96bfd3b..98292553c 100644 --- a/stdlib/source/library/lux/type/quotient.lux +++ b/stdlib/source/library/lux/type/quotient.lux @@ -3,11 +3,10 @@ [lux (.except type) [abstract [equivalence (only Equivalence)]] - [control - [parser - ["<[0]>" code]]] [macro (.only with_symbols) - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] ["[0]" type [primitive (.except)]]]]) diff --git a/stdlib/source/library/lux/type/refinement.lux b/stdlib/source/library/lux/type/refinement.lux index a4054407c..3a7a2ef85 100644 --- a/stdlib/source/library/lux/type/refinement.lux +++ b/stdlib/source/library/lux/type/refinement.lux @@ -3,11 +3,10 @@ [lux (.except only type) [abstract [predicate (.only Predicate)]] - [control - [parser - ["<[0]>" code]]] ["[0]" macro (.only) - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] ["[0]" type (.only) [primitive (.except)]]]]) diff --git a/stdlib/source/library/lux/type/resource.lux b/stdlib/source/library/lux/type/resource.lux index 6a35b1567..760f07dc2 100644 --- a/stdlib/source/library/lux/type/resource.lux +++ b/stdlib/source/library/lux/type/resource.lux @@ -6,10 +6,9 @@ ["[0]" monad (.only Monad do) [indexed (.only IxMonad)]]] [control + ["<>" parser] ["[0]" maybe] - ["[0]" exception (.only exception)] - ["<>" parser (.only) - ["<[0]>" code (.only Parser)]]] + ["[0]" exception (.only exception)]] [data [text ["%" \\format (.only format)]] @@ -18,7 +17,9 @@ ["[0]" sequence (.only Sequence)] ["[0]" list (.use "[1]#[0]" functor mix)]]] ["[0]" macro (.only) - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser (.only Parser)]]] [math [number ["n" nat]]] diff --git a/stdlib/source/library/lux/type/unit.lux b/stdlib/source/library/lux/type/unit.lux index bcc8f672c..e7327e551 100644 --- a/stdlib/source/library/lux/type/unit.lux +++ b/stdlib/source/library/lux/type/unit.lux @@ -5,11 +5,10 @@ [equivalence (.only Equivalence)] [order (.only Order)] [enum (.only Enum)]] - [control - [parser - ["<[0]>" code]]] ["[0]" macro (.only) - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] [math [number ["i" int]]]]] diff --git a/stdlib/source/library/lux/type/unit/scale.lux b/stdlib/source/library/lux/type/unit/scale.lux index 9eacbb81b..e88ee83e8 100644 --- a/stdlib/source/library/lux/type/unit/scale.lux +++ b/stdlib/source/library/lux/type/unit/scale.lux @@ -1,11 +1,11 @@ (.require [library [lux (.except type) - [control - [parser - ["<[0]>" code]]] + [control] ["[0]" macro (.only) - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] [math [number ["i" int] diff --git a/stdlib/source/library/lux/world/net/http/client.lux b/stdlib/source/library/lux/world/net/http/client.lux index 832ff6f23..52812a399 100644 --- a/stdlib/source/library/lux/world/net/http/client.lux +++ b/stdlib/source/library/lux/world/net/http/client.lux @@ -11,9 +11,7 @@ ["[0]" maybe (.use "[1]#[0]" functor)] ["[0]" try (.only Try)] [concurrency - ["[0]" async (.only Async)]] - [parser - ["<[0]>" code]]] + ["[0]" async (.only Async)]]] [data ["[0]" binary (.only Binary)] ["[0]" text] @@ -21,8 +19,9 @@ ["[0]" dictionary]]] [macro [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["n" nat] diff --git a/stdlib/source/library/lux/control/parser/code.lux b/stdlib/source/parser/lux/macro/code.lux index a73b18c55..85490e2d0 100644 --- a/stdlib/source/library/lux/control/parser/code.lux +++ b/stdlib/source/parser/lux/macro/code.lux @@ -4,6 +4,7 @@ [abstract ["[0]" monad (.only do)]] [control + ["//" parser] ["[0]" try (.only Try)]] [data ["[0]" bit] @@ -19,8 +20,7 @@ ["[0]" rev] ["[0]" frac]]] [meta - ["[0]" symbol]]]] - ["[0]" //]) + ["[0]" symbol]]]]) (def (un_paired pairs) (All (_ a) (-> (List [a a]) (List a))) diff --git a/stdlib/source/library/lux/control/parser/type.lux b/stdlib/source/parser/lux/type.lux index b4609b897..a107a1778 100644 --- a/stdlib/source/library/lux/control/parser/type.lux +++ b/stdlib/source/parser/lux/type.lux @@ -4,6 +4,7 @@ [abstract ["[0]" monad (.only do)]] [control + ["//" parser] ["[0]" try (.only Try)] ["[0]" exception (.only exception)] ["[0]" function]] @@ -20,8 +21,7 @@ [number ["n" nat (.use "[1]#[0]" decimal)]]] ["[0]" type (.use "[1]#[0]" equivalence) - ["[0]" check]]]] - ["[0]" //]) + ["[0]" check]]]]) (def |recursion_dummy| (template (|recursion_dummy|) diff --git a/stdlib/source/polytypic/lux/abstract/equivalence.lux b/stdlib/source/polytypic/lux/abstract/equivalence.lux index fce8d86bd..3d8497e87 100644 --- a/stdlib/source/polytypic/lux/abstract/equivalence.lux +++ b/stdlib/source/polytypic/lux/abstract/equivalence.lux @@ -4,9 +4,8 @@ [abstract [monad (.only Monad do)]] [control - ["[0]" maybe] - ["<>" parser (.only) - ["<[0]>" type]]] + ["<>" parser] + ["[0]" maybe]] [data ["[0]" product] ["[0]" bit] @@ -35,6 +34,7 @@ ["[0]" day] ["[0]" month]] ["[0]" type (.only) + ["<[1]>" \\parser] ["[0]" poly (.only polytypic)] ["[0]" unit]]]] [\\library diff --git a/stdlib/source/polytypic/lux/abstract/functor.lux b/stdlib/source/polytypic/lux/abstract/functor.lux index 1ff6c0398..3cc3074b0 100644 --- a/stdlib/source/polytypic/lux/abstract/functor.lux +++ b/stdlib/source/polytypic/lux/abstract/functor.lux @@ -4,9 +4,7 @@ [abstract [monad (.only Monad do)]] [control - ["p" parser (.only) - ["<[0]>" type] - ["s" code (.only Parser)]]] + ["<>" parser]] [data ["[0]" product] ["[0]" text (.only) @@ -19,13 +17,14 @@ [number ["n" nat]]] ["[0]" type (.only) + ["<[1]>" \\parser] ["[0]" poly (.only polytypic)]]]] [\\library ["[0]" /]]) (def .public functor (polytypic functor - (do [! p.monad] + (do [! <>.monad] [.let [g!_ (code.local "____________") type_funcC (code.local "____________type_funcC") funcC (code.local "____________funcC") @@ -44,16 +43,16 @@ ((~! /.Functor) ((~ (poly.code *env* unwrappedT)) (~+ paramsC))))))))) Arg<?> (is (-> Code (<type>.Parser Code)) (function (Arg<?> valueC) - (all p.either + (all <>.either ... Type-var - (do p.monad + (do <>.monad [.let [varI (|> num_vars (n.* 2) --)] _ (<type>.this_parameter varI)] (in (` ((~ funcC) (~ valueC))))) ... Variants (do ! [_ (in []) - membersC (<type>.variant (p.many (Arg<?> valueC))) + membersC (<type>.variant (<>.many (Arg<?> valueC))) .let [last (-- (list.size membersC))]] (in (` (case (~ valueC) (~+ (list#conjoint (list#each (function (_ [tag memberC]) @@ -64,18 +63,18 @@ (` {(~ (code.nat tag)) #0 (~ memberC)})))) (list.enumeration membersC)))))))) ... Tuples - (do p.monad + (do <>.monad [pairsCC (is (<type>.Parser (List [Code Code])) (<type>.tuple (loop (again [idx 0 pairsCC (is (List [Code Code]) (list))]) - (p.either (let [slotC (|> idx %.nat (format "____________slot") code.local)] - (do ! - [_ (in []) - memberC (Arg<?> slotC)] - (again (++ idx) - (list#composite pairsCC (list [slotC memberC]))))) - (in pairsCC)))))] + (<>.either (let [slotC (|> idx %.nat (format "____________slot") code.local)] + (do ! + [_ (in []) + memberC (Arg<?> slotC)] + (again (++ idx) + (list#composite pairsCC (list [slotC memberC]))))) + (in pairsCC)))))] (in (` (case (~ valueC) [(~+ (list#each product.left pairsCC))] [(~+ (list#each product.right pairsCC))])))) @@ -84,7 +83,7 @@ [_ (in []) .let [g! (code.local "____________") outL (code.local "____________outL")] - [inT+ outC] (<type>.function (p.many <type>.any) + [inT+ outC] (<type>.function (<>.many <type>.any) (Arg<?> outL)) .let [inC+ (|> (list.size inT+) list.indices @@ -93,18 +92,18 @@ (let [(~ outL) ((~ valueC) (~+ inC+))] (~ outC)))))) ... Recursion - (do p.monad + (do <>.monad [_ <type>.recursive_call] (in (` ((~' each) (~ funcC) (~ valueC))))) ... Parameters - (do p.monad + (do <>.monad [_ <type>.any] (in valueC)) )))] [_ _ outputC] (is (<type>.Parser [Code (List Code) Code]) - (p.either (<type>.polymorphic - (Arg<?> inputC)) - (p.failure (format "Cannot create Functor for: " (%.type inputT)))))] + (<>.either (<type>.polymorphic + (Arg<?> inputC)) + (<>.failure (format "Cannot create Functor for: " (%.type inputT)))))] (in (` (is (~ (@Functor inputT)) (implementation (def ((~' each) (~ funcC) (~ inputC)) diff --git a/stdlib/source/polytypic/lux/data/format/json.lux b/stdlib/source/polytypic/lux/data/format/json.lux index 8ce7112e3..064e4bcce 100644 --- a/stdlib/source/polytypic/lux/data/format/json.lux +++ b/stdlib/source/polytypic/lux/data/format/json.lux @@ -5,10 +5,8 @@ [monad (.only do)] ["[0]" codec]] [control - ["[0]" try] - ["<>" parser (.only) - ["<[0]>" type] - ["<[0]>" code]]] + ["<>" parser] + ["[0]" try]] [data ["[0]" text (.only) ["%" \\format (.only format)]] @@ -21,7 +19,8 @@ ["[0]" dictionary]]] [macro [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number ["n" nat (.use "[1]#[0]" decimal)] @@ -35,6 +34,7 @@ ["[0]" day] ["[0]" month]] ["[0]" type (.only) + ["<[1]>" \\parser] ["[0]" unit] ["[0]" poly (.only polytypic)]]]] [\\library diff --git a/stdlib/source/program/aedifex/input.lux b/stdlib/source/program/aedifex/input.lux index 0cbe189b0..918c051b1 100644 --- a/stdlib/source/program/aedifex/input.lux +++ b/stdlib/source/program/aedifex/input.lux @@ -6,9 +6,7 @@ ["[0]" mix]] [control ["[0]" pipe] - ["[0]" try (.only Try)] - [parser - ["<[0]>" code]]] + ["[0]" try (.only Try)]] [data [binary (.only Binary)] ["[0]" text @@ -16,6 +14,9 @@ ["[0]" utf8]]] [collection ["[0]" list]]] + [macro + ["[0]" code (.only) + ["<[1]>" \\parser]]] [meta ["[0]" location]] [tool diff --git a/stdlib/source/program/aedifex/parser.lux b/stdlib/source/program/aedifex/parser.lux index 18a682362..30660e707 100644 --- a/stdlib/source/program/aedifex/parser.lux +++ b/stdlib/source/program/aedifex/parser.lux @@ -4,15 +4,17 @@ [abstract [monad (.only do)]] [control - ["[0]" maybe] - ["<>" parser (.use "[1]#[0]" functor) - ["<[0]>" code (.only Parser)]]] + ["<>" parser (.use "[1]#[0]" functor)] + ["[0]" maybe]] [data ["[0]" text] [collection ["[0]" set (.only Set)] ["[0]" dictionary (.only Dictionary) ["[0]" plist (.only PList)]]]] + [macro + ["[0]" code (.only) + ["<[1]>" \\parser (.only Parser)]]] [tool [compiler [meta diff --git a/stdlib/source/test/aedifex/parser.lux b/stdlib/source/test/aedifex/parser.lux index c07e675a4..cd49c6417 100644 --- a/stdlib/source/test/aedifex/parser.lux +++ b/stdlib/source/test/aedifex/parser.lux @@ -7,9 +7,7 @@ [hash (.only Hash)]] [control ["[0]" pipe] - ["[0]" try] - [parser - ["<[0]>" code]]] + ["[0]" try]] [data ["[0]" text] [collection @@ -21,7 +19,8 @@ [number ["n" nat]]] [macro - ["[0]" code]]]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [// ["@[0]" profile]] [\\program diff --git a/stdlib/source/test/lux.lux b/stdlib/source/test/lux.lux index 35ba915da..7f9d94809 100644 --- a/stdlib/source/test/lux.lux +++ b/stdlib/source/test/lux.lux @@ -11,9 +11,7 @@ ["[0]" io] ["[0]" maybe (.use "[1]#[0]" functor)] [concurrency - ["[0]" atom (.only Atom)]] - [parser - ["<[0]>" code]]] + ["[0]" atom (.only Atom)]]] [data ["[0]" product] ["[0]" bit (.use "[1]#[0]" equivalence)] @@ -27,8 +25,9 @@ ["[0]" macro (.only) [syntax (.only syntax)] ["^" pattern] - ["[0]" code (.use "[1]#[0]" equivalence)] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]] ["[0]" math ["[0]" random (.use "[1]#[0]" functor)] [number @@ -464,39 +463,39 @@ []] [(.require [<module/0>' - [<alias> <module/1>']]) + [<alias> <module/1>']]) ("lux def module" [[<m0/1> <alias>]]) [(<referral> <m0/1>)]] [(.require ["[0]" <module/0>' - ["[0]" <module/1>']]) + ["[0]" <module/1>']]) ("lux def module" [[<module/0> <module/0>] [<m0/1> <module/1>]]) [(<referral> <module/0>) (<referral> <m0/1>)]] [(.require ["[0]" <module/0>' - ["[1]" <module/1>']]) + ["[1]" <module/1>']]) ("lux def module" [[<m0/1> <module/0>]]) [(<referral> <m0/1>)]] [(.require ["[0]" <module/0>' - ["[1]" <module/1>' - ["[2]" <module/2>']]]) + ["[1]" <module/1>' + ["[2]" <module/2>']]]) ("lux def module" [[<m0/1/2> <module/0>]]) [(<referral> <m0/1/2>)]] [(.require [<module/0>' - ["[0]" <module/1>' - ["[0]" <//>']]]) + ["[0]" <module/1>' + ["[0]" <//>']]]) ("lux def module" [[<m0/1> <module/1>] [<m0/2> <//>]]) [(<referral> <m0/1>) (<referral> <m0/2>)]] [(.require ["[0]" <module/0>' - [<module/1>' - ["[0]" <\\>']]]) + [<module/1>' + ["[0]" <\\>']]]) ("lux def module" [[<module/0> <module/0>] [<m2/1> <\\>]]) [(<referral> <module/0>) diff --git a/stdlib/source/test/lux/control/parser.lux b/stdlib/source/test/lux/control/parser.lux index b9a6da76f..e977e9df3 100644 --- a/stdlib/source/test/lux/control/parser.lux +++ b/stdlib/source/test/lux/control/parser.lux @@ -10,9 +10,7 @@ ["$[0]" apply] ["$[0]" monad]]] [control - ["[0]" try (.only Try)] - [parser - ["<[0]>" code]]] + ["[0]" try (.only Try)]] [data ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format (.only format)]] @@ -24,15 +22,14 @@ ["n" nat]]] [macro [syntax (.only syntax)] - ["[0]" code]]]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" / (.only Parser)]] ["[0]" / ["[1][0]" cli] - ["[1][0]" code] ["[1][0]" environment] - ["[1][0]" tree] - ["[1][0]" type]]) + ["[1][0]" tree]]) (def (should_fail expected input) (All (_ a) (-> Text (Try a) Bit)) @@ -381,8 +378,6 @@ ..combinators_2 /cli.test - /code.test /environment.test /tree.test - /type.test )))) diff --git a/stdlib/source/test/lux/control/parser/code.lux b/stdlib/source/test/lux/control/parser/code.lux deleted file mode 100644 index a3ba95629..000000000 --- a/stdlib/source/test/lux/control/parser/code.lux +++ /dev/null @@ -1,161 +0,0 @@ -(.require - [library - [lux (.except local global) - ["_" test (.only Test)] - [abstract - [monad (.only do)]] - [control - ["[0]" function] - ["[0]" try] - ["<>" parser]] - [data - ["[0]" bit] - ["[0]" text] - [collection - ["[0]" list]]] - [macro - ["^" pattern] - ["[0]" code]] - [math - ["[0]" random (.only Random) (.use "[1]#[0]" functor)] - [number - ["[0]" nat] - ["[0]" int] - ["[0]" rev] - ["[0]" frac]]] - [meta - ["[0]" symbol]]]] - [\\library - ["[0]" /]]) - -(def !expect - (template (_ <pattern> <value>) - [(case <value> - <pattern> - 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 .public test - Test - (<| (_.covering /._) - (_.for [/.Parser]) - (`` (all _.and - (do [! random.monad] - [expected (at ! each code.bit random.bit)] - (_.coverage [/.result] - (and (|> (/.result /.any (list expected)) - (!expect {try.#Success _})) - (|> (/.result /.any (list)) - (!expect {try.#Failure _}))))) - (~~ (with_template [<query> <check> <random> <code> <equivalence>] - [(do [! random.monad] - [expected <random> - dummy (|> <random> (random.only (|>> (at <equivalence> = expected) not)))] - (all _.and - (_.coverage [<query>] - (|> (/.result <query> (list (<code> expected))) - (!expect (^.multi {try.#Success actual} - (at <equivalence> = expected actual))))) - (_.coverage [<check>] - (and (|> (/.result (<check> expected) (list (<code> expected))) - (!expect {try.#Success []})) - (|> (/.result (<check> expected) (list (<code> dummy))) - (!expect {try.#Failure _})))) - ))] - - [/.any /.this (at ! each code.bit random.bit) function.identity code.equivalence] - [/.bit /.this_bit random.bit code.bit bit.equivalence] - [/.nat /.this_nat random.nat code.nat nat.equivalence] - [/.int /.this_int random.int code.int int.equivalence] - [/.rev /.this_rev random.rev code.rev rev.equivalence] - [/.frac /.this_frac random.safe_frac code.frac frac.equivalence] - [/.text /.this_text (random.unicode 1) code.text text.equivalence] - [/.local /.this_local ..local code.local text.equivalence] - [/.global /.this_global ..global code.symbol symbol.equivalence] - [/.symbol /.this_symbol ..any_symbol code.symbol symbol.equivalence] - )) - (~~ (with_template [<query> <code>] - [(do [! random.monad] - [expected_left random.nat - expected_right random.int] - (_.coverage [<query>] - (|> (/.result (<query> (<>.and /.nat /.int)) - (list (<code> (list (code.nat expected_left) - (code.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)))))))] - - [/.form code.form] - [/.variant code.variant] - [/.tuple code.tuple] - )) - (do [! random.monad] - [expected_local random.nat - expected_global random.int] - (_.coverage [/.locally] - (|> (/.result (<>.and (/.locally (list (code.nat expected_local)) /.nat) - /.int) - (list (code.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 code.bit random.bit)] - (_.coverage [/.end?] - (|> (/.result (do <>.monad - [pre /.end? - _ /.any - post /.end?] - (in (and (not pre) - post))) - (list dummy)) - (!expect (^.multi {try.#Success verdict} - verdict))))) - (do [! random.monad] - [dummy (at ! each code.bit random.bit)] - (_.coverage [/.end] - (and (|> (/.result /.end (list)) - (!expect {try.#Success []})) - (|> (/.result /.end (list dummy)) - (!expect {try.#Failure _}))))) - (do [! random.monad] - [expected (at ! each code.bit random.bit)] - (_.coverage [/.next] - (|> (/.result (do <>.monad - [pre /.next - post /.any] - (in (and (same? expected pre) - (same? pre post)))) - (list expected)) - (!expect {try.#Success _})))) - (do [! random.monad] - [expected (at ! each code.bit random.bit)] - (_.coverage [/.not] - (and (|> (/.result (/.not /.nat) (list expected)) - (!expect (^.multi {try.#Success actual} - (same? expected actual)))) - (|> (/.result (/.not /.bit) (list expected)) - (!expect {try.#Failure _}))))) - )))) diff --git a/stdlib/source/test/lux/control/parser/type.lux b/stdlib/source/test/lux/control/parser/type.lux deleted file mode 100644 index 11f7b7796..000000000 --- a/stdlib/source/test/lux/control/parser/type.lux +++ /dev/null @@ -1,323 +0,0 @@ -(.require - [library - [lux (.except) - ["_" test (.only Test)] - ["[0]" type (.use "[1]#[0]" equivalence)] - [abstract - [monad (.only do)]] - [control - ["[0]" try] - ["[0]" exception]] - [data - [text - ["%" \\format (.only format)]] - [collection - ["[0]" list]]] - [macro - ["^" pattern]] - [math - ["[0]" random (.only Random)] - [number - ["n" nat]]] - [meta - ["[0]" symbol (.use "[1]#[0]" equivalence)]]]] - [\\library - ["[0]" / (.only) - ["/[1]" //]]]) - -(def !expect - (template (_ <pattern> <value>) - [(case <value> - <pattern> - true - - _ - false)])) - -(def primitive - (Random Type) - (|> (random.alpha_numeric 1) - (at random.monad each (function (_ name) - {.#Primitive name (list)})))) - -(def test|matches - Test - (<| (_.for [/.types_do_not_match]) - (do [! random.monad] - [expected ..primitive - dummy (random.only (|>> (type#= expected) not) - ..primitive)]) - (all _.and - (_.coverage [/.exactly] - (and (|> (/.result (/.exactly expected) expected) - (!expect {try.#Success []})) - (|> (/.result (/.exactly expected) dummy) - (!expect (^.multi {try.#Failure error} - (exception.match? /.types_do_not_match error)))))) - (_.coverage [/.sub] - (and (|> (/.result (/.sub expected) expected) - (!expect {try.#Success []})) - (|> (/.result (/.sub Any) expected) - (!expect {try.#Success []})) - (|> (/.result (/.sub expected) Nothing) - (!expect {try.#Success []})) - (|> (/.result (/.sub expected) dummy) - (!expect (^.multi {try.#Failure error} - (exception.match? /.types_do_not_match error)))))) - (_.coverage [/.super] - (and (|> (/.result (/.super expected) expected) - (!expect {try.#Success []})) - (|> (/.result (/.super expected) Any) - (!expect {try.#Success []})) - (|> (/.result (/.super Nothing) expected) - (!expect {try.#Success []})) - (|> (/.result (/.super expected) dummy) - (!expect (^.multi {try.#Failure error} - (exception.match? /.types_do_not_match error)))))) - ))) - -(def test|aggregate - Test - (do [! random.monad] - [expected_left ..primitive - expected_middle ..primitive - expected_right ..primitive] - (`` (all _.and - (~~ (with_template [<parser> <exception> <good_constructor> <bad_constructor>] - [(_.coverage [<parser> <exception>] - (and (|> (/.result (<parser> (all //.and /.any /.any /.any)) - (<good_constructor> (list expected_left expected_middle expected_right))) - (!expect (^.multi {try.#Success [actual_left actual_middle actual_right]} - (and (type#= expected_left actual_left) - (type#= expected_middle actual_middle) - (type#= expected_right actual_right))))) - (|> (/.result (<parser> (all //.and /.any /.any /.any)) - (<bad_constructor> (list expected_left expected_middle expected_right))) - (!expect (^.multi {try.#Failure error} - (exception.match? <exception> error))))))] - - [/.variant /.not_variant type.variant type.tuple] - [/.tuple /.not_tuple type.tuple type.variant] - )) - - (_.coverage [/.function /.not_function] - (and (|> (/.result (/.function (all //.and /.any /.any) /.any) - (type.function (list expected_left expected_middle) expected_right)) - (!expect (^.multi {try.#Success [[actual_left actual_middle] actual_right]} - (and (type#= expected_left actual_left) - (type#= expected_middle actual_middle) - (type#= expected_right actual_right))))) - (|> (/.result (/.function (all //.and /.any /.any) /.any) - (type.variant (list expected_left expected_middle expected_right))) - (!expect (^.multi {try.#Failure error} - (exception.match? /.not_function error)))))) - (_.coverage [/.applied /.not_application] - (and (|> (/.result (/.applied (all //.and /.any /.any /.any)) - (type.application (list expected_middle expected_right) expected_left)) - (!expect (^.multi {try.#Success [actual_left actual_middle actual_right]} - (and (type#= expected_left actual_left) - (type#= expected_middle actual_middle) - (type#= expected_right actual_right))))) - (|> (/.result (/.applied (all //.and /.any /.any /.any)) - (type.variant (list expected_left expected_middle expected_right))) - (!expect (^.multi {try.#Failure error} - (exception.match? /.not_application error)))))) - )))) - -(def test|parameter - Test - (do random.monad - [quantification ..primitive - argument ..primitive - not_parameter ..primitive - parameter random.nat] - (all _.and - (_.coverage [/.not_parameter] - (|> (/.result /.parameter not_parameter) - (!expect (^.multi {try.#Failure error} - (exception.match? /.not_parameter error))))) - (_.coverage [/.unknown_parameter] - (|> (/.result /.parameter {.#Parameter parameter}) - (!expect (^.multi {try.#Failure error} - (exception.match? /.unknown_parameter error))))) - (_.coverage [/.with_extension] - (|> (/.result (<| (/.with_extension quantification) - (/.with_extension argument) - /.any) - not_parameter) - (!expect (^.multi {try.#Success [quantification::binding argument::binding actual]} - (same? not_parameter actual))))) - (_.coverage [/.parameter] - (|> (/.result (<| (/.with_extension quantification) - (/.with_extension argument) - /.parameter) - {.#Parameter 0}) - (!expect {try.#Success [quantification::binding argument::binding _]}))) - (_.coverage [/.argument] - (let [argument? (is (-> Nat Nat Bit) - (function (_ @ expected) - (|> (/.result (<| (/.with_extension quantification) - (/.with_extension argument) - (/.with_extension quantification) - (/.with_extension argument) - (do //.monad - [env /.env - _ /.any] - (in (/.argument env @)))) - not_parameter) - (!expect (^.multi {try.#Success [_ _ _ _ actual]} - (n.= expected actual))))))] - (and (argument? 0 2) - (argument? 1 3) - (argument? 2 0)))) - (_.coverage [/.wrong_parameter] - (|> (/.result (<| (/.with_extension quantification) - (/.with_extension argument) - (/.this_parameter 1)) - {.#Parameter 0}) - (!expect (^.multi {try.#Failure error} - (exception.match? /.wrong_parameter error))))) - (_.coverage [/.this_parameter] - (|> (/.result (<| (/.with_extension quantification) - (/.with_extension argument) - (/.this_parameter 0)) - {.#Parameter 0}) - (!expect {try.#Success [quantification::binding argument::binding _]}))) - ))) - -(def test|polymorphic - Test - (do [! random.monad] - [not_polymorphic ..primitive - expected_inputs (at ! each (|>> (n.% 10) ++) random.nat)] - (all _.and - (_.coverage [/.not_polymorphic] - (and (|> (/.result (/.polymorphic /.any) - not_polymorphic) - (!expect (^.multi {try.#Failure error} - (exception.match? /.not_polymorphic error)))) - (|> (/.result (/.polymorphic /.any) - (type.univ_q 0 not_polymorphic)) - (!expect (^.multi {try.#Failure error} - (exception.match? /.not_polymorphic error)))))) - (_.coverage [/.polymorphic] - (|> (/.result (/.polymorphic /.any) - (type.univ_q expected_inputs not_polymorphic)) - (!expect (^.multi {try.#Success [g!poly actual_inputs bodyT]} - (and (n.= expected_inputs (list.size actual_inputs)) - (same? not_polymorphic bodyT)))))) - ))) - -(def test|recursive - Test - (do random.monad - [expected ..primitive] - (all _.and - (_.coverage [/.recursive] - (|> (.type_literal (Rec @ expected)) - (/.result (/.recursive /.any)) - (!expect (^.multi {try.#Success [@self actual]} - (type#= expected actual))))) - (_.coverage [/.recursive_self] - (|> (.type_literal (Rec @ @)) - (/.result (/.recursive /.recursive_self)) - (!expect (^.multi {try.#Success [@expected @actual]} - (same? @expected @actual))))) - (_.coverage [/.recursive_call] - (|> (.type_literal (All (self input) (self input))) - (/.result (/.polymorphic /.recursive_call)) - (!expect {try.#Success [@self inputs ???]}))) - (_.coverage [/.not_recursive] - (and (|> expected - (/.result (/.recursive /.any)) - (!expect (^.multi {try.#Failure error} - (exception.match? /.not_recursive error)))) - (|> expected - (/.result /.recursive_self) - (!expect (^.multi {try.#Failure error} - (exception.match? /.not_recursive error)))))) - ))) - -(def .public test - Test - (<| (_.covering /._) - (_.for [/.Parser]) - (all _.and - (do [! random.monad] - [expected ..primitive] - (_.coverage [/.result /.any] - (|> (/.result /.any expected) - (!expect (^.multi {try.#Success actual} - (type#= expected actual)))))) - (do [! random.monad] - [expected ..primitive] - (_.coverage [/.next /.unconsumed_input] - (and (|> (/.result (do //.monad - [actual /.next - _ /.any] - (in actual)) - expected) - (!expect (^.multi {try.#Success actual} - (type#= expected actual)))) - (|> (/.result /.next expected) - (!expect (^.multi {try.#Failure error} - (exception.match? /.unconsumed_input error))))))) - (do [! random.monad] - [expected ..primitive] - (_.coverage [/.empty_input] - (`` (and (~~ (with_template [<parser>] - [(|> (/.result (do //.monad - [_ /.any] - <parser>) - expected) - (!expect (^.multi {try.#Failure error} - (exception.match? /.empty_input error))))] - - [/.any] - [/.next] - )))))) - (do [! random.monad] - [expected ..primitive] - (_.coverage [/.Env /.env /.fresh] - (|> (/.result (do //.monad - [env /.env - _ /.any] - (in env)) - expected) - (!expect (^.multi {try.#Success environment} - (same? /.fresh environment)))))) - (do [! random.monad] - [expected ..primitive - dummy (random.only (|>> (type#= expected) not) - ..primitive)] - (_.coverage [/.local] - (|> (/.result (do //.monad - [_ /.any] - (/.local (list expected) - /.any)) - dummy) - (!expect (^.multi {try.#Success actual} - (type#= expected actual)))))) - (do [! random.monad] - [expected random.nat] - (_.coverage [/.existential /.not_existential] - (|> (/.result /.existential - {.#Ex expected}) - (!expect (^.multi {try.#Success actual} - (n.= expected actual)))))) - (do [! random.monad] - [expected_name (random.and (random.alpha_numeric 1) - (random.alpha_numeric 1)) - expected_type ..primitive] - (_.coverage [/.named /.not_named] - (|> (/.result /.named - {.#Named expected_name expected_type}) - (!expect (^.multi {try.#Success [actual_name actual_type]} - (and (symbol#= expected_name actual_name) - (type#= expected_type actual_type))))))) - ..test|aggregate - ..test|matches - ..test|parameter - ..test|polymorphic - ..test|recursive - ))) diff --git a/stdlib/source/test/lux/control/remember.lux b/stdlib/source/test/lux/control/remember.lux index 0ddedd7bd..44216d17d 100644 --- a/stdlib/source/test/lux/control/remember.lux +++ b/stdlib/source/test/lux/control/remember.lux @@ -8,9 +8,7 @@ [control ["[0]" io] ["[0]" try (.only Try)] - ["[0]" exception] - [parser - ["<[0]>" code]]] + ["[0]" exception]] [data ["[0]" product] ["[0]" text (.only) @@ -23,8 +21,9 @@ ["[0]" instant] ["[0]" duration]] ["[0]" macro (.only) - ["[0]" code] - ["[0]" syntax (.only syntax)]]]] + ["[0]" syntax (.only syntax)] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/data/text.lux b/stdlib/source/test/lux/data/text.lux index 8a71ca938..0f7e49f03 100644 --- a/stdlib/source/test/lux/data/text.lux +++ b/stdlib/source/test/lux/data/text.lux @@ -14,13 +14,12 @@ [functor ["$[0]" contravariant]]]] [control + ["<>" parser] ["[0]" pipe] ["[0]" maybe] ["[0]" try (.only Try)] ["[0]" exception (.only Exception)] - ["[0]" function] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" function]] [data ["[0]" bit] [collection @@ -37,7 +36,8 @@ ["[1]/[0]" block]]]] [macro ["^" pattern] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] ["[0]" modulus] diff --git a/stdlib/source/test/lux/data/text/escape.lux b/stdlib/source/test/lux/data/text/escape.lux index b2536f305..86e2a645a 100644 --- a/stdlib/source/test/lux/data/text/escape.lux +++ b/stdlib/source/test/lux/data/text/escape.lux @@ -8,9 +8,7 @@ [monad (.only do)]] [control ["[0]" try] - ["[0]" exception] - [parser - ["<[0]>" code]]] + ["[0]" exception]] [data ["[0]" bit (.use "[1]#[0]" equivalence)] ["[0]" text (.only Char) (.use "[1]#[0]" equivalence) @@ -19,8 +17,9 @@ ["[0]" set (.only Set)]]] [macro [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)] [number (.only hex) diff --git a/stdlib/source/test/lux/data/text/regex.lux b/stdlib/source/test/lux/data/text/regex.lux index 08403a42d..5988210cd 100644 --- a/stdlib/source/test/lux/data/text/regex.lux +++ b/stdlib/source/test/lux/data/text/regex.lux @@ -6,16 +6,15 @@ [monad (.only do)]] [control ["[0]" pipe] - ["[0]" try] - [parser - ["<[0]>" code]]] + ["[0]" try]] [data ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format (.only format)] ["<[1]>" \\parser (.only Parser)]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math [number (.only hex)] ["[0]" random]]]] diff --git a/stdlib/source/test/lux/debug.lux b/stdlib/source/test/lux/debug.lux index a789cdaf6..978f42916 100644 --- a/stdlib/source/test/lux/debug.lux +++ b/stdlib/source/test/lux/debug.lux @@ -7,9 +7,7 @@ [monad (.only do)]] [control ["[0]" try (.use "[1]#[0]" functor)] - ["[0]" exception] - [parser - ["<[0]>" code]]] + ["[0]" exception]] [data ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format (.only format)]] @@ -20,7 +18,8 @@ [xml (.only XML)]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)] [number diff --git a/stdlib/source/test/lux/documentation.lux b/stdlib/source/test/lux/documentation.lux index 001e79cfc..8054dbbcc 100644 --- a/stdlib/source/test/lux/documentation.lux +++ b/stdlib/source/test/lux/documentation.lux @@ -5,9 +5,7 @@ ["[0]" meta] [control ["[0]" try] - ["[0]" exception] - [parser - ["<[0]>" code]]] + ["[0]" exception]] [data ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format]] @@ -16,7 +14,8 @@ ["[0]" macro (.only) [syntax (.only syntax)] ["[0]" template] - ["[0]" code]]]] + ["[0]" code (.only) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]]) diff --git a/stdlib/source/test/lux/extension.lux b/stdlib/source/test/lux/extension.lux index c61e11805..e23bd23ea 100644 --- a/stdlib/source/test/lux/extension.lux +++ b/stdlib/source/test/lux/extension.lux @@ -19,9 +19,8 @@ [abstract ["[0]" monad (.only do)]] [control - ["[0]" try (.use "[1]#[0]" functor)] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" try (.use "[1]#[0]" functor)]] [data ["[0]" product] ["[0]" binary (.only) @@ -32,7 +31,9 @@ ["[0]" sequence] ["[0]" list (.use "[1]#[0]" functor)]]] [macro - ["[0]" template]] + ["[0]" template] + ["[0]" code + ["<[1]>" \\parser]]] [math ["[0]" random] [number diff --git a/stdlib/source/test/lux/ffi.jvm.lux b/stdlib/source/test/lux/ffi.jvm.lux index 3c6ded17e..f22bb70c1 100644 --- a/stdlib/source/test/lux/ffi.jvm.lux +++ b/stdlib/source/test/lux/ffi.jvm.lux @@ -12,9 +12,7 @@ ["[0]" io] ["[0]" pipe] ["[0]" try (.use "[1]#[0]" functor)] - ["[0]" exception] - [parser - ["<[0]>" code]]] + ["[0]" exception]] [data ["[0]" bit (.use "[1]#[0]" equivalence)] ["[0]" text (.use "[1]#[0]" equivalence) @@ -23,8 +21,9 @@ ["[0]" array (.only Array)]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number (.only hex) diff --git a/stdlib/source/test/lux/macro.lux b/stdlib/source/test/lux/macro.lux index 9368e2a0f..3f6e3fe92 100644 --- a/stdlib/source/test/lux/macro.lux +++ b/stdlib/source/test/lux/macro.lux @@ -6,9 +6,7 @@ [abstract [monad (.only do)]] [control - ["[0]" try (.use "[1]#[0]" functor)] - [parser - ["<[0]>" code]]] + ["[0]" try (.use "[1]#[0]" functor)]] [data ["[0]" bit (.use "[1]#[0]" equivalence)] ["[0]" text (.only) @@ -27,8 +25,9 @@ [\\library ["[0]" / (.only) [syntax (.only syntax)] - ["[0]" code (.use "[1]#[0]" equivalence)] - ["[0]" template]]] + ["[0]" template] + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]]] ["[0]" / ["[1][0]" code] ["[1][0]" local] diff --git a/stdlib/source/test/lux/macro/code.lux b/stdlib/source/test/lux/macro/code.lux index 172aeb2ee..a566b030d 100644 --- a/stdlib/source/test/lux/macro/code.lux +++ b/stdlib/source/test/lux/macro/code.lux @@ -1,32 +1,174 @@ (.require [library - [lux (.except) + [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 - ["n" nat]]] + ["[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 (_ <pattern> <value>) + [(case <value> + <pattern> + 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 [<query> <check> <random> <code> <equivalence>] + [(do [! random.monad] + [expected <random> + dummy (|> <random> (random.only (|>> (at <equivalence> = expected) not)))] + (all _.and + (_.coverage [<query>] + (|> (\\parser.result <query> (list (<code> expected))) + (!expect (^.multi {try.#Success actual} + (at <equivalence> = expected actual))))) + (_.coverage [<check>] + (and (|> (\\parser.result (<check> expected) (list (<code> expected))) + (!expect {try.#Success []})) + (|> (\\parser.result (<check> expected) (list (<code> 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 [<query> <code>] + [(do [! random.monad] + [expected_left random.nat + expected_right random.int] + (_.coverage [<query>] + (|> (\\parser.result (<query> (<>.and \\parser.nat \\parser.int)) + (list (<code> (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)) @@ -38,7 +180,7 @@ (def (random_sequence random) (All (_ a) (-> (Random a) (Random (List a)))) (do [! random.monad] - [size (|> random.nat (at ! each (n.% 3)))] + [size (|> random.nat (at ! each (nat.% 3)))] (random.list size random))) (def .public random @@ -171,4 +313,6 @@ (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 708741dfe..b86a299b8 100644 --- a/stdlib/source/test/lux/macro/local.lux +++ b/stdlib/source/test/lux/macro/local.lux @@ -6,10 +6,9 @@ [abstract [monad (.only do)]] [control + ["<>" parser] ["[0]" try] - ["[0]" exception] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" exception]] [data [text ["%" \\format]] @@ -19,7 +18,8 @@ ["[0]" plist]]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)] [number diff --git a/stdlib/source/test/lux/macro/syntax.lux b/stdlib/source/test/lux/macro/syntax.lux index f39809d9b..c973ed03c 100644 --- a/stdlib/source/test/lux/macro/syntax.lux +++ b/stdlib/source/test/lux/macro/syntax.lux @@ -4,15 +4,15 @@ ["_" test (.only Test)] [abstract [monad (.only do)]] - [control - [parser - ["<[0]>" code]]] [math ["[0]" random] [number ["n" nat]]]]] [\\library - ["[0]" /]] + ["[0]" / (.only) + [// + ["[0]" code + ["<[1]>" \\parser]]]]] ["[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 b671b807e..b8e3aa34b 100644 --- a/stdlib/source/test/lux/macro/syntax/check.lux +++ b/stdlib/source/test/lux/macro/syntax/check.lux @@ -7,13 +7,13 @@ [\\specification ["$[0]" equivalence]]] [control - ["[0]" try] - ["<>" parser (.only) - ["<[0]>" code]]] + ["<>" parser] + ["[0]" try]] [math ["[0]" random (.only Random)]] [macro - ["[0]" code (.use "[1]#[0]" equivalence)]]]] + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]]]] [\\library ["[0]" /]] ["$[0]" /// diff --git a/stdlib/source/test/lux/macro/syntax/declaration.lux b/stdlib/source/test/lux/macro/syntax/declaration.lux index 9a23d3051..b6c571170 100644 --- a/stdlib/source/test/lux/macro/syntax/declaration.lux +++ b/stdlib/source/test/lux/macro/syntax/declaration.lux @@ -7,15 +7,16 @@ [\\specification ["$[0]" equivalence]]] [control - ["[0]" try] - [parser - ["<[0]>" code]]] + ["[0]" try]] [math ["[0]" random (.only Random)] [number ["n" nat]]]]] [\\library - ["[0]" /]]) + ["[0]" / (.only) + [/// + ["[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 8238856c9..eab4879a0 100644 --- a/stdlib/source/test/lux/macro/syntax/definition.lux +++ b/stdlib/source/test/lux/macro/syntax/definition.lux @@ -7,12 +7,12 @@ [\\specification ["$[0]" equivalence]]] [control + ["<>" parser] ["[0]" try] - ["[0]" exception] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" exception]] [macro - ["[0]" code (.use "[1]#[0]" equivalence)]] + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)]] [meta diff --git a/stdlib/source/test/lux/macro/syntax/export.lux b/stdlib/source/test/lux/macro/syntax/export.lux index 5d2a0d23a..3ef76a0bb 100644 --- a/stdlib/source/test/lux/macro/syntax/export.lux +++ b/stdlib/source/test/lux/macro/syntax/export.lux @@ -6,11 +6,10 @@ [monad (.only do)]] [control ["[0]" maybe] - ["[0]" try (.use "[1]#[0]" functor)] - [parser - ["<[0]>" code]]] + ["[0]" try (.use "[1]#[0]" functor)]] [macro - ["[0]" code (.use "[1]#[0]" equivalence)]] + ["[0]" code (.use "[1]#[0]" equivalence) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)] [number diff --git a/stdlib/source/test/lux/macro/syntax/input.lux b/stdlib/source/test/lux/macro/syntax/input.lux index 9a865ff13..7768f7c6b 100644 --- a/stdlib/source/test/lux/macro/syntax/input.lux +++ b/stdlib/source/test/lux/macro/syntax/input.lux @@ -7,9 +7,7 @@ [\\specification ["$[0]" equivalence]]] [control - ["[0]" try] - [parser - ["<[0]>" code]]] + ["[0]" try]] [data [collection ["[0]" list]]] @@ -18,7 +16,10 @@ [number ["n" nat]]]]] [\\library - ["[0]" /]] + ["[0]" / (.only) + [/// + ["[0]" code + ["<[1]>" \\parser]]]]] ["$[0]" /// ["[1][0]" code]]) diff --git a/stdlib/source/test/lux/macro/syntax/type/variable.lux b/stdlib/source/test/lux/macro/syntax/type/variable.lux index f242a972a..1970a6ef8 100644 --- a/stdlib/source/test/lux/macro/syntax/type/variable.lux +++ b/stdlib/source/test/lux/macro/syntax/type/variable.lux @@ -7,13 +7,14 @@ [\\specification ["$[0]" equivalence]]] [control - ["[0]" try (.use "[1]#[0]" functor)] - [parser - ["<[0]>" code]]] + ["[0]" try (.use "[1]#[0]" functor)]] [math ["[0]" random (.only Random)]]]] [\\library - ["[0]" /]]) + ["[0]" / (.only) + [//// + ["[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 2b8733643..4c48e5561 100644 --- a/stdlib/source/test/lux/macro/template.lux +++ b/stdlib/source/test/lux/macro/template.lux @@ -6,15 +6,14 @@ [monad (.only do)]] [control ["[0]" try] - ["[0]" exception] - [parser - ["<[0]>" code]]] + ["[0]" exception]] [data [collection ["[0]" list]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random)] [number diff --git a/stdlib/source/test/lux/meta/configuration.lux b/stdlib/source/test/lux/meta/configuration.lux index c6c78c549..e1a546d82 100644 --- a/stdlib/source/test/lux/meta/configuration.lux +++ b/stdlib/source/test/lux/meta/configuration.lux @@ -9,10 +9,9 @@ ["$[0]" equivalence] ["$[0]" monoid]]] [control + ["<>" parser] ["[0]" try (.use "[1]#[0]" functor)] - ["[0]" exception] - ["<>" parser (.only) - ["<[0]>" code]]] + ["[0]" exception]] [data ["[0]" text (.only) ["<[1]>" \\parser]] @@ -20,7 +19,8 @@ ["[0]" list]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)]]]] [\\library diff --git a/stdlib/source/test/lux/meta/version.lux b/stdlib/source/test/lux/meta/version.lux index 360cbaa5f..ff70f25a0 100644 --- a/stdlib/source/test/lux/meta/version.lux +++ b/stdlib/source/test/lux/meta/version.lux @@ -8,14 +8,13 @@ [monad (.only do)]] [control ["[0]" try] - ["[0]" exception] - [parser - ["<[0]>" code]]] + ["[0]" exception]] [data ["[0]" text]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random] [number diff --git a/stdlib/source/test/lux/program.lux b/stdlib/source/test/lux/program.lux index fb87397ee..6b462da5e 100644 --- a/stdlib/source/test/lux/program.lux +++ b/stdlib/source/test/lux/program.lux @@ -8,14 +8,15 @@ ["[0]" io] ["[0]" try] ["<>" parser (.only) - ["<[0]>" code] ["<[0]>" cli]]] [data ["[0]" text] [collection ["[0]" list]]] [macro - [syntax (.only syntax)]] + [syntax (.only syntax)] + ["[0]" code + ["<[1]>" \\parser]]] [math ["[0]" random]]]] [\\library diff --git a/stdlib/source/test/lux/type.lux b/stdlib/source/test/lux/type.lux index 436dc4e85..9f753b1d0 100644 --- a/stdlib/source/test/lux/type.lux +++ b/stdlib/source/test/lux/type.lux @@ -7,11 +7,15 @@ [\\specification ["$[0]" equivalence]]] [control + ["<>" parser] ["[0]" pipe] - ["[0]" maybe]] + ["[0]" maybe] + ["[0]" try] + ["[0]" exception]] [data ["[0]" bit (.use "[1]#[0]" equivalence)] - ["[0]" text (.use "[1]#[0]" equivalence)] + ["[0]" text (.use "[1]#[0]" equivalence) + ["%" \\format (.only format)]] [collection ["[0]" list] ["[0]" array]]] @@ -21,7 +25,10 @@ [math ["[0]" random (.only Random) (.use "[1]#[0]" monad)] [number - ["n" nat]]]]] + ["n" nat]]] + [meta + ["[0]" symbol (.use "[1]#[0]" equivalence)]]]] + ["[0]" \\parser] [\\library ["[0]" / (.use "[1]#[0]" equivalence)]] ["[0]" / @@ -35,6 +42,303 @@ ["[1][0]" unit] ["[1][0]" variance]]) +(def !expect + (template (_ <pattern> <value>) + [(case <value> + <pattern> + true + + _ + false)])) + +(def primitive + (Random Type) + (|> (random.alpha_numeric 1) + (at random.monad each (function (_ name) + {.#Primitive name (list)})))) + +(def test|matches + Test + (<| (_.for [\\parser.types_do_not_match]) + (do [! random.monad] + [expected ..primitive + dummy (random.only (|>> (/#= expected) not) + ..primitive)]) + (all _.and + (_.coverage [\\parser.exactly] + (and (|> (\\parser.result (\\parser.exactly expected) expected) + (!expect {try.#Success []})) + (|> (\\parser.result (\\parser.exactly expected) dummy) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.types_do_not_match error)))))) + (_.coverage [\\parser.sub] + (and (|> (\\parser.result (\\parser.sub expected) expected) + (!expect {try.#Success []})) + (|> (\\parser.result (\\parser.sub Any) expected) + (!expect {try.#Success []})) + (|> (\\parser.result (\\parser.sub expected) Nothing) + (!expect {try.#Success []})) + (|> (\\parser.result (\\parser.sub expected) dummy) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.types_do_not_match error)))))) + (_.coverage [\\parser.super] + (and (|> (\\parser.result (\\parser.super expected) expected) + (!expect {try.#Success []})) + (|> (\\parser.result (\\parser.super expected) Any) + (!expect {try.#Success []})) + (|> (\\parser.result (\\parser.super Nothing) expected) + (!expect {try.#Success []})) + (|> (\\parser.result (\\parser.super expected) dummy) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.types_do_not_match error)))))) + ))) + +(def test|aggregate + Test + (do [! random.monad] + [expected_left ..primitive + expected_middle ..primitive + expected_right ..primitive] + (`` (all _.and + (~~ (with_template [<parser> <exception> <good_constructor> <bad_constructor>] + [(_.coverage [<parser> <exception>] + (and (|> (\\parser.result (<parser> (all <>.and \\parser.any \\parser.any \\parser.any)) + (<good_constructor> (list expected_left expected_middle expected_right))) + (!expect (^.multi {try.#Success [actual_left actual_middle actual_right]} + (and (/#= expected_left actual_left) + (/#= expected_middle actual_middle) + (/#= expected_right actual_right))))) + (|> (\\parser.result (<parser> (all <>.and \\parser.any \\parser.any \\parser.any)) + (<bad_constructor> (list expected_left expected_middle expected_right))) + (!expect (^.multi {try.#Failure error} + (exception.match? <exception> error))))))] + + [\\parser.variant \\parser.not_variant /.variant /.tuple] + [\\parser.tuple \\parser.not_tuple /.tuple /.variant] + )) + + (_.coverage [\\parser.function \\parser.not_function] + (and (|> (\\parser.result (\\parser.function (all <>.and \\parser.any \\parser.any) \\parser.any) + (/.function (list expected_left expected_middle) expected_right)) + (!expect (^.multi {try.#Success [[actual_left actual_middle] actual_right]} + (and (/#= expected_left actual_left) + (/#= expected_middle actual_middle) + (/#= expected_right actual_right))))) + (|> (\\parser.result (\\parser.function (all <>.and \\parser.any \\parser.any) \\parser.any) + (/.variant (list expected_left expected_middle expected_right))) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.not_function error)))))) + (_.coverage [\\parser.applied \\parser.not_application] + (and (|> (\\parser.result (\\parser.applied (all <>.and \\parser.any \\parser.any \\parser.any)) + (/.application (list expected_middle expected_right) expected_left)) + (!expect (^.multi {try.#Success [actual_left actual_middle actual_right]} + (and (/#= expected_left actual_left) + (/#= expected_middle actual_middle) + (/#= expected_right actual_right))))) + (|> (\\parser.result (\\parser.applied (all <>.and \\parser.any \\parser.any \\parser.any)) + (/.variant (list expected_left expected_middle expected_right))) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.not_application error)))))) + )))) + +(def test|parameter + Test + (do random.monad + [quantification ..primitive + argument ..primitive + not_parameter ..primitive + parameter random.nat] + (all _.and + (_.coverage [\\parser.not_parameter] + (|> (\\parser.result \\parser.parameter not_parameter) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.not_parameter error))))) + (_.coverage [\\parser.unknown_parameter] + (|> (\\parser.result \\parser.parameter {.#Parameter parameter}) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.unknown_parameter error))))) + (_.coverage [\\parser.with_extension] + (|> (\\parser.result (<| (\\parser.with_extension quantification) + (\\parser.with_extension argument) + \\parser.any) + not_parameter) + (!expect (^.multi {try.#Success [quantification::binding argument::binding actual]} + (same? not_parameter actual))))) + (_.coverage [\\parser.parameter] + (|> (\\parser.result (<| (\\parser.with_extension quantification) + (\\parser.with_extension argument) + \\parser.parameter) + {.#Parameter 0}) + (!expect {try.#Success [quantification::binding argument::binding _]}))) + (_.coverage [\\parser.argument] + (let [argument? (is (-> Nat Nat Bit) + (function (_ @ expected) + (|> (\\parser.result (<| (\\parser.with_extension quantification) + (\\parser.with_extension argument) + (\\parser.with_extension quantification) + (\\parser.with_extension argument) + (do <>.monad + [env \\parser.env + _ \\parser.any] + (in (\\parser.argument env @)))) + not_parameter) + (!expect (^.multi {try.#Success [_ _ _ _ actual]} + (n.= expected actual))))))] + (and (argument? 0 2) + (argument? 1 3) + (argument? 2 0)))) + (_.coverage [\\parser.wrong_parameter] + (|> (\\parser.result (<| (\\parser.with_extension quantification) + (\\parser.with_extension argument) + (\\parser.this_parameter 1)) + {.#Parameter 0}) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.wrong_parameter error))))) + (_.coverage [\\parser.this_parameter] + (|> (\\parser.result (<| (\\parser.with_extension quantification) + (\\parser.with_extension argument) + (\\parser.this_parameter 0)) + {.#Parameter 0}) + (!expect {try.#Success [quantification::binding argument::binding _]}))) + ))) + +(def test|polymorphic + Test + (do [! random.monad] + [not_polymorphic ..primitive + expected_inputs (at ! each (|>> (n.% 10) ++) random.nat)] + (all _.and + (_.coverage [\\parser.not_polymorphic] + (and (|> (\\parser.result (\\parser.polymorphic \\parser.any) + not_polymorphic) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.not_polymorphic error)))) + (|> (\\parser.result (\\parser.polymorphic \\parser.any) + (/.univ_q 0 not_polymorphic)) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.not_polymorphic error)))))) + (_.coverage [\\parser.polymorphic] + (|> (\\parser.result (\\parser.polymorphic \\parser.any) + (/.univ_q expected_inputs not_polymorphic)) + (!expect (^.multi {try.#Success [g!poly actual_inputs bodyT]} + (and (n.= expected_inputs (list.size actual_inputs)) + (same? not_polymorphic bodyT)))))) + ))) + +(def test|recursive + Test + (do random.monad + [expected ..primitive] + (all _.and + (_.coverage [\\parser.recursive] + (|> (.type_literal (Rec @ expected)) + (\\parser.result (\\parser.recursive \\parser.any)) + (!expect (^.multi {try.#Success [@self actual]} + (/#= expected actual))))) + (_.coverage [\\parser.recursive_self] + (|> (.type_literal (Rec @ @)) + (\\parser.result (\\parser.recursive \\parser.recursive_self)) + (!expect (^.multi {try.#Success [@expected @actual]} + (same? @expected @actual))))) + (_.coverage [\\parser.recursive_call] + (|> (.type_literal (All (self input) (self input))) + (\\parser.result (\\parser.polymorphic \\parser.recursive_call)) + (!expect {try.#Success [@self inputs ???]}))) + (_.coverage [\\parser.not_recursive] + (and (|> expected + (\\parser.result (\\parser.recursive \\parser.any)) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.not_recursive error)))) + (|> expected + (\\parser.result \\parser.recursive_self) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.not_recursive error)))))) + ))) + +(def \\parser + Test + (<| (_.covering \\parser._) + (_.for [\\parser.Parser]) + (all _.and + (do [! random.monad] + [expected ..primitive] + (_.coverage [\\parser.result \\parser.any] + (|> (\\parser.result \\parser.any expected) + (!expect (^.multi {try.#Success actual} + (/#= expected actual)))))) + (do [! random.monad] + [expected ..primitive] + (_.coverage [\\parser.next \\parser.unconsumed_input] + (and (|> (\\parser.result (do <>.monad + [actual \\parser.next + _ \\parser.any] + (in actual)) + expected) + (!expect (^.multi {try.#Success actual} + (/#= expected actual)))) + (|> (\\parser.result \\parser.next expected) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.unconsumed_input error))))))) + (do [! random.monad] + [expected ..primitive] + (_.coverage [\\parser.empty_input] + (`` (and (~~ (with_template [<parser>] + [(|> (\\parser.result (do <>.monad + [_ \\parser.any] + <parser>) + expected) + (!expect (^.multi {try.#Failure error} + (exception.match? \\parser.empty_input error))))] + + [\\parser.any] + [\\parser.next] + )))))) + (do [! random.monad] + [expected ..primitive] + (_.coverage [\\parser.Env \\parser.env \\parser.fresh] + (|> (\\parser.result (do <>.monad + [env \\parser.env + _ \\parser.any] + (in env)) + expected) + (!expect (^.multi {try.#Success environment} + (same? \\parser.fresh environment)))))) + (do [! random.monad] + [expected ..primitive + dummy (random.only (|>> (/#= expected) not) + ..primitive)] + (_.coverage [\\parser.local] + (|> (\\parser.result (do <>.monad + [_ \\parser.any] + (\\parser.local (list expected) + \\parser.any)) + dummy) + (!expect (^.multi {try.#Success actual} + (/#= expected actual)))))) + (do [! random.monad] + [expected random.nat] + (_.coverage [\\parser.existential \\parser.not_existential] + (|> (\\parser.result \\parser.existential + {.#Ex expected}) + (!expect (^.multi {try.#Success actual} + (n.= expected actual)))))) + (do [! random.monad] + [expected_name (random.and (random.alpha_numeric 1) + (random.alpha_numeric 1)) + expected_type ..primitive] + (_.coverage [\\parser.named \\parser.not_named] + (|> (\\parser.result \\parser.named + {.#Named expected_name expected_type}) + (!expect (^.multi {try.#Success [actual_name actual_type]} + (and (symbol#= expected_name actual_name) + (/#= expected_type actual_type))))))) + ..test|aggregate + ..test|matches + ..test|parameter + ..test|polymorphic + ..test|recursive + ))) + (def short (Random Text) (do [! random.monad] @@ -249,6 +553,8 @@ (text#= (/.format left) (/.format right)))) )) + ..\\parser + /primitive.test /check.test /dynamic.test diff --git a/stdlib/source/test/lux/type/primitive.lux b/stdlib/source/test/lux/type/primitive.lux index 619b2b3f9..7b4500c00 100644 --- a/stdlib/source/test/lux/type/primitive.lux +++ b/stdlib/source/test/lux/type/primitive.lux @@ -7,15 +7,14 @@ [monad (.only do)]] [control ["[0]" try] - ["[0]" exception] - [parser - ["<[0]>" code]]] + ["[0]" exception]] [data ["[0]" text (.use "[1]#[0]" equivalence)]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code] - ["[0]" template]] + ["[0]" template] + ["[0]" code (.only) + ["<[1]>" \\parser]]] ["[0]" math (.only) ["[0]" random] [number diff --git a/stdlib/source/test/lux/type/resource.lux b/stdlib/source/test/lux/type/resource.lux index f8e44bcb4..a23f1cacf 100644 --- a/stdlib/source/test/lux/type/resource.lux +++ b/stdlib/source/test/lux/type/resource.lux @@ -11,16 +11,15 @@ ["[0]" try] ["[0]" exception (.only Exception)] [concurrency - ["[0]" async (.only Async)]] - [parser - ["<[0]>" code]]] + ["[0]" async (.only Async)]]] [data ["[0]" identity (.only Identity)] ["[0]" text (.use "[1]#[0]" equivalence) ["%" \\format (.only format)]]] ["[0]" macro (.only) [syntax (.only syntax)] - ["[0]" code]] + ["[0]" code (.only) + ["<[1]>" \\parser]]] [math ["[0]" random]]]] [\\library |