diff options
Diffstat (limited to '')
44 files changed, 110 insertions, 82 deletions
diff --git a/stdlib/source/lux/data/bit.lux b/stdlib/source/lux/data/bit.lux index 72cfc096e..8c1b1d1b3 100644 --- a/stdlib/source/lux/data/bit.lux +++ b/stdlib/source/lux/data/bit.lux @@ -1,27 +1,34 @@ (.module: [lux #* - [control + [abstract [monoid (#+ Monoid)] [equivalence (#+ Equivalence)] hash [codec (#+ Codec)]] - function]) + ["." function]]) -(structure: #export equivalence (Equivalence Bit) +(structure: #export equivalence + (Equivalence Bit) + (def: (= x y) (if x y (not y)))) -(structure: #export hash (Hash Bit) +(structure: #export hash + (Hash Bit) + (def: &equivalence ..equivalence) + (def: (hash value) (case value #1 1 #0 0))) (template [<name> <identity> <op>] - [(structure: #export <name> (Monoid Bit) + [(structure: #export <name> + (Monoid Bit) + (def: identity <identity>) (def: (compose x y) (<op> x y)))] @@ -45,4 +52,4 @@ {#.doc (doc "Generates the complement of a predicate." "That is a predicate that returns the oposite of the original predicate.")} (All [a] (-> (-> a Bit) (-> a Bit))) - (compose not)) + (function.compose not)) diff --git a/stdlib/source/lux/data/collection/array.lux b/stdlib/source/lux/data/collection/array.lux index 55e0ceb2b..946b6a3b4 100644 --- a/stdlib/source/lux/data/collection/array.lux +++ b/stdlib/source/lux/data/collection/array.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [monoid (#+ Monoid)] [functor (#+ Functor)] [equivalence (#+ Equivalence)] diff --git a/stdlib/source/lux/data/collection/bits.lux b/stdlib/source/lux/data/collection/bits.lux index 95732fe15..0e5f7a16e 100644 --- a/stdlib/source/lux/data/collection/bits.lux +++ b/stdlib/source/lux/data/collection/bits.lux @@ -1,7 +1,8 @@ (.module: [lux (#- not and or) + [abstract + [equivalence (#+ Equivalence)]] [control - [equivalence (#+ Equivalence)] pipe] [data ["." maybe] diff --git a/stdlib/source/lux/data/collection/dictionary.lux b/stdlib/source/lux/data/collection/dictionary.lux index a9c53ea18..3580b0ddd 100644 --- a/stdlib/source/lux/data/collection/dictionary.lux +++ b/stdlib/source/lux/data/collection/dictionary.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [hash (#+ Hash)] [equivalence (#+ Equivalence)] [functor (#+ Functor)]] diff --git a/stdlib/source/lux/data/collection/dictionary/ordered.lux b/stdlib/source/lux/data/collection/dictionary/ordered.lux index 5bd957364..58026984f 100644 --- a/stdlib/source/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/lux/data/collection/dictionary/ordered.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [monad (#+ Monad do)] equivalence [order (#+ Order)]] diff --git a/stdlib/source/lux/data/collection/list.lux b/stdlib/source/lux/data/collection/list.lux index b2da3337b..bf4661ad4 100644 --- a/stdlib/source/lux/data/collection/list.lux +++ b/stdlib/source/lux/data/collection/list.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [monoid (#+ Monoid)] ["." functor (#+ Functor)] [apply (#+ Apply)] diff --git a/stdlib/source/lux/data/collection/queue.lux b/stdlib/source/lux/data/collection/queue.lux index 699440648..026190f2b 100644 --- a/stdlib/source/lux/data/collection/queue.lux +++ b/stdlib/source/lux/data/collection/queue.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [equivalence (#+ Equivalence)] [functor (#+ Functor)]] [data diff --git a/stdlib/source/lux/data/collection/queue/priority.lux b/stdlib/source/lux/data/collection/queue/priority.lux index 1e7d40022..34a87e51d 100644 --- a/stdlib/source/lux/data/collection/queue/priority.lux +++ b/stdlib/source/lux/data/collection/queue/priority.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [equivalence (#+ Equivalence)] [monad (#+ do Monad)]] [data diff --git a/stdlib/source/lux/data/collection/row.lux b/stdlib/source/lux/data/collection/row.lux index d56da4b79..2dc45312f 100644 --- a/stdlib/source/lux/data/collection/row.lux +++ b/stdlib/source/lux/data/collection/row.lux @@ -1,14 +1,15 @@ (.module: [lux #* - [control + [abstract [functor (#+ Functor)] [apply (#+ Apply)] - [monad (#+ do Monad)] + [monad (#+ Monad do)] [equivalence (#+ Equivalence)] - monoid - fold - ["p" parser] + [monoid (#+ Monoid)] + [fold (#+ Fold)] [predicate (#+ Predicate)]] + [control + ["p" parser]] [data ["." maybe] ["." product] @@ -338,7 +339,7 @@ (syntax: #export (row {elems (p.some s.any)}) {#.doc (doc "Row literals." (row +10 +20 +30 +40))} - (wrap (list (` (from-list (list (~+ elems))))))) + (wrap (list (` (..from-list (list (~+ elems))))))) (structure: #export (node-equivalence Equivalence<a>) (All [a] (-> (Equivalence a) (Equivalence (Node a)))) (def: (= v1 v2) diff --git a/stdlib/source/lux/data/collection/sequence.lux b/stdlib/source/lux/data/collection/sequence.lux index 720515c2d..07735cc26 100644 --- a/stdlib/source/lux/data/collection/sequence.lux +++ b/stdlib/source/lux/data/collection/sequence.lux @@ -1,9 +1,10 @@ (.module: [lux #* - [control + [abstract [functor (#+ Functor)] - [comonad (#+ CoMonad)] - ["." continuation (#+ pending Cont)] + [comonad (#+ CoMonad)]] + [control + ["." continuation (#+ Cont pending)] ["p" parser]] [macro (#+ with-gensyms) ["." code] diff --git a/stdlib/source/lux/data/collection/set.lux b/stdlib/source/lux/data/collection/set.lux index 5ab374b84..4c764b818 100644 --- a/stdlib/source/lux/data/collection/set.lux +++ b/stdlib/source/lux/data/collection/set.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [equivalence (#+ Equivalence)] [predicate (#+ Predicate)] [monoid (#+ Monoid)] diff --git a/stdlib/source/lux/data/collection/set/multi.lux b/stdlib/source/lux/data/collection/set/multi.lux index 012224e31..c11d4c558 100644 --- a/stdlib/source/lux/data/collection/set/multi.lux +++ b/stdlib/source/lux/data/collection/set/multi.lux @@ -1,7 +1,7 @@ ## https://en.wikipedia.org/wiki/Multiset (.module: [lux #* - [control + [abstract [equivalence (#+ Equivalence)] [hash (#+ Hash)]] ["." function] diff --git a/stdlib/source/lux/data/collection/set/ordered.lux b/stdlib/source/lux/data/collection/set/ordered.lux index 4d607ce15..4f814c1ea 100644 --- a/stdlib/source/lux/data/collection/set/ordered.lux +++ b/stdlib/source/lux/data/collection/set/ordered.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [equivalence (#+ Equivalence)] [order (#+ Order)]] [data diff --git a/stdlib/source/lux/data/collection/stack.lux b/stdlib/source/lux/data/collection/stack.lux index d3a937cb4..089398ca5 100644 --- a/stdlib/source/lux/data/collection/stack.lux +++ b/stdlib/source/lux/data/collection/stack.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [equivalence (#+ Equivalence)] [functor (#+ Functor)]] [data diff --git a/stdlib/source/lux/data/collection/tree/finger.lux b/stdlib/source/lux/data/collection/tree/finger.lux index e3aed3b0d..f35129dff 100644 --- a/stdlib/source/lux/data/collection/tree/finger.lux +++ b/stdlib/source/lux/data/collection/tree/finger.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract ["m" monoid] [predicate (#+ Predicate)]] [data diff --git a/stdlib/source/lux/data/collection/tree/rose.lux b/stdlib/source/lux/data/collection/tree/rose.lux index 97cb840fb..ad64b72ed 100644 --- a/stdlib/source/lux/data/collection/tree/rose.lux +++ b/stdlib/source/lux/data/collection/tree/rose.lux @@ -1,11 +1,12 @@ (.module: [lux #* - [control + [abstract functor [monad (#+ do Monad)] equivalence - ["p" parser] fold] + [control + ["p" parser]] [data [collection ["." list ("#@." monad fold)]]] diff --git a/stdlib/source/lux/data/collection/tree/rose/zipper.lux b/stdlib/source/lux/data/collection/tree/rose/zipper.lux index 1a8ed4d5c..bac8961e3 100644 --- a/stdlib/source/lux/data/collection/tree/rose/zipper.lux +++ b/stdlib/source/lux/data/collection/tree/rose/zipper.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract functor comonad [equivalence (#+ Equivalence)]] diff --git a/stdlib/source/lux/data/color.lux b/stdlib/source/lux/data/color.lux index bd02c4087..60b87ab61 100644 --- a/stdlib/source/lux/data/color.lux +++ b/stdlib/source/lux/data/color.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [equivalence (#+ Equivalence)]] [data [number diff --git a/stdlib/source/lux/data/env.lux b/stdlib/source/lux/data/env.lux index 2c8d01fcd..7e4265e6a 100644 --- a/stdlib/source/lux/data/env.lux +++ b/stdlib/source/lux/data/env.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [functor (#+ Functor)] comonad]]) diff --git a/stdlib/source/lux/data/error.lux b/stdlib/source/lux/data/error.lux index 3e7369ed3..c730ee5a5 100644 --- a/stdlib/source/lux/data/error.lux +++ b/stdlib/source/lux/data/error.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract ["." functor (#+ Functor)] [apply (#+ Apply)] ["." monad (#+ Monad do)] @@ -10,7 +10,9 @@ (#Failure Text) (#Success a)) -(structure: #export functor (Functor Error) +(structure: #export functor + (Functor Error) + (def: (map f ma) (case ma (#Failure msg) @@ -19,7 +21,9 @@ (#Success datum) (#Success (f datum))))) -(structure: #export apply (Apply Error) +(structure: #export apply + (Apply Error) + (def: &functor ..functor) (def: (apply ff fa) @@ -36,7 +40,9 @@ (#Failure msg)) )) -(structure: #export monad (Monad Error) +(structure: #export monad + (Monad Error) + (def: &functor ..functor) (def: (wrap a) @@ -74,6 +80,7 @@ (structure: #export (equivalence (^open ",@.")) (All [a] (-> (Equivalence a) (Equivalence (Error a)))) + (def: (= reference sample) (case [reference sample] [(#Success reference) (#Success sample)] diff --git a/stdlib/source/lux/data/format/binary.lux b/stdlib/source/lux/data/format/binary.lux index b794fe029..771d9f693 100644 --- a/stdlib/source/lux/data/format/binary.lux +++ b/stdlib/source/lux/data/format/binary.lux @@ -1,12 +1,13 @@ (.module: [lux (#- and or nat int rev list type) - [control + [abstract [monoid (#+ Monoid)] ["." fold] - [monad (#+ do Monad)] - ["." parser (#+ Parser) ("#;." functor)] - ["ex" exception (#+ exception:)] + [monad (#+ Monad do)] [equivalence (#+ Equivalence)]] + [control + ["." parser (#+ Parser) ("#;." functor)] + ["ex" exception (#+ exception:)]] [data ["." error (#+ Error)] [number diff --git a/stdlib/source/lux/data/format/context.lux b/stdlib/source/lux/data/format/context.lux index a89675393..6ef06085f 100644 --- a/stdlib/source/lux/data/format/context.lux +++ b/stdlib/source/lux/data/format/context.lux @@ -1,9 +1,10 @@ (.module: [lux #* + [abstract + [monad (#+ do)]] [control [parser (#+ Parser)] - ["ex" exception (#+ exception:)] - [monad (#+ do)]] + ["ex" exception (#+ exception:)]] [data ["." error (#+ Error)] ["." text diff --git a/stdlib/source/lux/data/format/json.lux b/stdlib/source/lux/data/format/json.lux index b03cb5ae9..34fcf4dfb 100644 --- a/stdlib/source/lux/data/format/json.lux +++ b/stdlib/source/lux/data/format/json.lux @@ -1,11 +1,12 @@ (.module: {#.doc (.doc "Functionality for reading and writing values in the JSON format." "For more information, please see: http://www.json.org/")} [lux #* - [control - pipe + [abstract ["." monad (#+ Monad do)] [equivalence (#+ Equivalence)] - codec + codec] + [control + pipe ["p" parser (#+ Parser) ("#@." monad)] ["ex" exception (#+ exception:)]] [data diff --git a/stdlib/source/lux/data/format/xml.lux b/stdlib/source/lux/data/format/xml.lux index 85081f86c..6cd469e04 100644 --- a/stdlib/source/lux/data/format/xml.lux +++ b/stdlib/source/lux/data/format/xml.lux @@ -1,9 +1,10 @@ (.module: {#.doc "Functionality for reading, generating and processing values in the XML format."} [lux #* - [control + [abstract monad [equivalence (#+ Equivalence)] - codec + codec] + [control ["p" parser ("#;." monad)] ["ex" exception (#+ exception:)]] [data diff --git a/stdlib/source/lux/data/identity.lux b/stdlib/source/lux/data/identity.lux index 7793bd7f5..ff464a6f8 100644 --- a/stdlib/source/lux/data/identity.lux +++ b/stdlib/source/lux/data/identity.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [functor (#+ Functor)] [apply (#+ Apply)] [monad (#+ Monad)] diff --git a/stdlib/source/lux/data/lazy.lux b/stdlib/source/lux/data/lazy.lux index dc889675a..82cd8ec51 100644 --- a/stdlib/source/lux/data/lazy.lux +++ b/stdlib/source/lux/data/lazy.lux @@ -1,11 +1,12 @@ (.module: [lux #* ["." io] - [control + [abstract [functor (#+ Functor)] [apply (#+ Apply)] [monad (#+ Monad do)] - [equivalence (#+ Equivalence)] + [equivalence (#+ Equivalence)]] + [control [concurrency ["." atom]]] [macro (#+ with-gensyms) diff --git a/stdlib/source/lux/data/maybe.lux b/stdlib/source/lux/data/maybe.lux index e00b89234..b96e014b3 100644 --- a/stdlib/source/lux/data/maybe.lux +++ b/stdlib/source/lux/data/maybe.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [monoid (#+ Monoid)] ["." functor (#+ Functor)] [apply (#+ Apply)] diff --git a/stdlib/source/lux/data/name.lux b/stdlib/source/lux/data/name.lux index 286071169..59e004ea7 100644 --- a/stdlib/source/lux/data/name.lux +++ b/stdlib/source/lux/data/name.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [equivalence (#+ Equivalence)] [codec (#+ Codec)] hash] diff --git a/stdlib/source/lux/data/number.lux b/stdlib/source/lux/data/number.lux index e6b169fc4..0577258ca 100644 --- a/stdlib/source/lux/data/number.lux +++ b/stdlib/source/lux/data/number.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [codec (#+ Codec)]] [data ["." error (#+ Error)] diff --git a/stdlib/source/lux/data/number/complex.lux b/stdlib/source/lux/data/number/complex.lux index d8334d104..6c057ffb1 100644 --- a/stdlib/source/lux/data/number/complex.lux +++ b/stdlib/source/lux/data/number/complex.lux @@ -1,11 +1,12 @@ (.module: {#.doc "Complex arithmetic."} [lux #* ["." math] - [control + [abstract [equivalence (#+ Equivalence)] number codec - ["M" monad (#+ Monad do)] + ["M" monad (#+ Monad do)]] + [control ["p" parser]] [data ["." maybe] diff --git a/stdlib/source/lux/data/number/frac.lux b/stdlib/source/lux/data/number/frac.lux index f49f73039..790aee05b 100644 --- a/stdlib/source/lux/data/number/frac.lux +++ b/stdlib/source/lux/data/number/frac.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [hash (#+ Hash)] [number (#+ Number)] [monoid (#+ Monoid)] diff --git a/stdlib/source/lux/data/number/i64.lux b/stdlib/source/lux/data/number/i64.lux index ffce20b4c..dbc58b004 100644 --- a/stdlib/source/lux/data/number/i64.lux +++ b/stdlib/source/lux/data/number/i64.lux @@ -1,6 +1,6 @@ (.module: [lux (#- and or not) - [control + [abstract [monoid (#+ Monoid)]]]) (def: #export bits-per-byte 8) diff --git a/stdlib/source/lux/data/number/int.lux b/stdlib/source/lux/data/number/int.lux index f94049296..22b7aff23 100644 --- a/stdlib/source/lux/data/number/int.lux +++ b/stdlib/source/lux/data/number/int.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [hash (#+ Hash)] [number (#+ Number)] [enum (#+ Enum)] diff --git a/stdlib/source/lux/data/number/nat.lux b/stdlib/source/lux/data/number/nat.lux index c1f0ca420..5ca294df5 100644 --- a/stdlib/source/lux/data/number/nat.lux +++ b/stdlib/source/lux/data/number/nat.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [hash (#+ Hash)] [number (#+ Number)] [enum (#+ Enum)] diff --git a/stdlib/source/lux/data/number/ratio.lux b/stdlib/source/lux/data/number/ratio.lux index 49ce1f194..a501f9a1b 100644 --- a/stdlib/source/lux/data/number/ratio.lux +++ b/stdlib/source/lux/data/number/ratio.lux @@ -1,12 +1,13 @@ (.module: {#.doc "Rational numbers."} [lux #* - [control + [abstract [equivalence (#+ Equivalence)] [order (#+ Order)] [monoid (#+ Monoid)] - number - codec - monad + [number (#+ Number)] + [codec (#+ Codec)] + [monad (#+ do)]] + [control ["p" parser]] [data ["." error] diff --git a/stdlib/source/lux/data/number/rev.lux b/stdlib/source/lux/data/number/rev.lux index bbb34c570..4738a72a0 100644 --- a/stdlib/source/lux/data/number/rev.lux +++ b/stdlib/source/lux/data/number/rev.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [hash (#+ Hash)] [number (#+ Number)] [enum (#+ Enum)] diff --git a/stdlib/source/lux/data/store.lux b/stdlib/source/lux/data/store.lux index 69ad7d734..36cc3e67d 100644 --- a/stdlib/source/lux/data/store.lux +++ b/stdlib/source/lux/data/store.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [functor (#+ Functor)] comonad] [type diff --git a/stdlib/source/lux/data/text.lux b/stdlib/source/lux/data/text.lux index 384d4e860..bf40c3ef7 100644 --- a/stdlib/source/lux/data/text.lux +++ b/stdlib/source/lux/data/text.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [monoid (#+ Monoid)] [equivalence (#+ Equivalence)] [order (#+ Order)] @@ -25,18 +25,18 @@ (-> Char Text) (|>> (:coerce Int) "lux int char")) -(template [<name> <code>] +(template [<code> <name>] [(def: #export <name> (from-code <code>))] - [null 0] - [alarm 7] - [back-space 8] - [tab 9] - [new-line 10] - [vertical-tab 11] - [form-feed 12] - [carriage-return 13] - [double-quote 34] + [00 null] + [07 alarm] + [08 back-space] + [09 tab] + [10 new-line] + [11 vertical-tab] + [12 form-feed] + [13 carriage-return] + [34 double-quote] ) (def: #export (size x) diff --git a/stdlib/source/lux/data/text/encoding.lux b/stdlib/source/lux/data/text/encoding.lux index 8f59bd530..b4372471c 100644 --- a/stdlib/source/lux/data/text/encoding.lux +++ b/stdlib/source/lux/data/text/encoding.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract [codec (#+ Codec)]] [data ["." error (#+ Error)]] diff --git a/stdlib/source/lux/data/text/format.lux b/stdlib/source/lux/data/text/format.lux index 0becf8633..a204e567b 100644 --- a/stdlib/source/lux/data/text/format.lux +++ b/stdlib/source/lux/data/text/format.lux @@ -1,7 +1,8 @@ (.module: [lux #* + [abstract + [monad (#+ do)]] [control - [monad (#+ do)] ["p" parser]] [data ["." bit] diff --git a/stdlib/source/lux/data/text/lexer.lux b/stdlib/source/lux/data/text/lexer.lux index e5f19edf6..531d2ae64 100644 --- a/stdlib/source/lux/data/text/lexer.lux +++ b/stdlib/source/lux/data/text/lexer.lux @@ -1,7 +1,8 @@ (.module: [lux (#- or and not) + [abstract + [monad (#+ do Monad)]] [control - [monad (#+ do Monad)] ["p" parser] ["ex" exception (#+ exception:)]] [data diff --git a/stdlib/source/lux/data/text/regex.lux b/stdlib/source/lux/data/text/regex.lux index b94dbb73a..5e867b9b6 100644 --- a/stdlib/source/lux/data/text/regex.lux +++ b/stdlib/source/lux/data/text/regex.lux @@ -1,7 +1,8 @@ (.module: [lux #* + [abstract + monad] [control - monad ["p" parser ("#@." monad)]] [data ["." product] diff --git a/stdlib/source/lux/data/text/unicode.lux b/stdlib/source/lux/data/text/unicode.lux index 11a98b358..a6fd13ebc 100644 --- a/stdlib/source/lux/data/text/unicode.lux +++ b/stdlib/source/lux/data/text/unicode.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract ["." interval (#+ Interval)] [monoid (#+ Monoid)]] [data diff --git a/stdlib/source/lux/data/trace.lux b/stdlib/source/lux/data/trace.lux index 055d1758c..94e02ea6b 100644 --- a/stdlib/source/lux/data/trace.lux +++ b/stdlib/source/lux/data/trace.lux @@ -1,6 +1,6 @@ (.module: [lux #* - [control + [abstract ["." monoid (#+ Monoid)] [functor (#+ Functor)] comonad] |