diff options
Diffstat (limited to '')
225 files changed, 1945 insertions, 2213 deletions
diff --git a/stdlib/source/library/lux.lux b/stdlib/source/library/lux.lux index f9be2bf36..6554978c9 100644 --- a/stdlib/source/library/lux.lux +++ b/stdlib/source/library/lux.lux @@ -2109,8 +2109,8 @@ "... By specifying a pattern (with holes), and the input data to fill those holes, repeats the pattern as many times as necessary." __paragraph "(template [<name> <diff>]" ..\n " " "[(def: .public <name> (-> Int Int) (+ <diff>))]" __paragraph - " " "[inc +1]" ..\n - " " "[dec -1]"))]) + " " "[++ +1]" ..\n + " " "[-- -1]"))]) ({(#Item [[_ (#Tuple bindings)] (#Item [[_ (#Tuple templates)] data])]) ({[(#Some bindings') (#Some data')] (let' [apply ("lux type check" (-> Replacement_Environment ($' List Code)) @@ -4460,16 +4460,16 @@ (All [a] (-> (List a) (List [Nat a]))) (enumeration' 0 xs)) -(macro: .public (get@ tokens) +(macro: .public (value@ tokens) {#.doc (text$ ($_ "lux text concat" "... Accesses the value of a record at a given tag." ..\n - "(get@ #field my_record)" + "(value@ #field my_record)" __paragraph "... Can also work with multiple levels of nesting:" ..\n - "(get@ [#foo #bar #baz] my_record)" + "(value@ [#foo #bar #baz] my_record)" __paragraph "... And, if only the slot/path is given, generates an accessor function:" ..\n - "(let [getter (get@ [#foo #bar #baz])]" ..\n + "(let [getter (value@ [#foo #bar #baz])]" ..\n " (getter my_record))"))} (case tokens (^ (list [_ (#Tag slot')] record)) @@ -4491,12 +4491,12 @@ (in_meta (list (` ({(~ pattern) (~ g!output)} (~ record)))))) _ - (failure "get@ can only use records."))) + (failure "value@ can only use records."))) (^ (list [_ (#Tuple slots)] record)) (in_meta (list (list\fold (: (-> Code Code Code) (function (_ slot inner) - (` (..get@ (~ slot) (~ inner))))) + (` (..value@ (~ slot) (~ inner))))) record slots))) @@ -4504,10 +4504,10 @@ (do meta_monad [g!_ (..identifier "_") g!record (..identifier "record")] - (in (list (` (function ((~ g!_) (~ g!record)) (..get@ (~ selector) (~ g!record))))))) + (in (list (` (function ((~ g!_) (~ g!record)) (..value@ (~ selector) (~ g!record))))))) _ - (failure "Wrong syntax for get@"))) + (failure "Wrong syntax for value@"))) (def: (open_declaration alias tags my_tag_index [module short] source type) (-> Text (List Name) Nat Name Code Type (Meta (List Code))) @@ -4774,17 +4774,17 @@ _ (failure "Wrong syntax for \"))) -(macro: .public (set@ tokens) +(macro: .public (with@ tokens) {#.doc (text$ ($_ "lux text concat" "... Sets the value of a record at a given tag." ..\n - "(set@ #name ''Lux'' lang)" + "(with@ #name ''Lux'' lang)" __paragraph "... Can also work with multiple levels of nesting:" ..\n - "(set@ [#foo #bar #baz] value my_record)" + "(with@ [#foo #bar #baz] value my_record)" __paragraph "... And, if only the slot/path and (optionally) the value are given, generates a mutator function:" ..\n - "(let [setter (set@ [#foo #bar #baz] value)] (setter my_record))" ..\n - "(let [setter (set@ [#foo #bar #baz])] (setter value my_record))"))} + "(let [setter (with@ [#foo #bar #baz] value)] (setter my_record))" ..\n + "(let [setter (with@ [#foo #bar #baz])] (setter value my_record))"))} (case tokens (^ (list [_ (#Tag slot')] value record)) (do meta_monad @@ -4816,12 +4816,12 @@ (in_meta (list (` ({(~ pattern) (~ output)} (~ record))))))) _ - (failure "set@ can only use records."))) + (failure "with@ can only use records."))) (^ (list [_ (#Tuple slots)] value record)) (case slots #End - (failure "Wrong syntax for set@") + (failure "Wrong syntax for with@") _ (do meta_monad @@ -4832,12 +4832,12 @@ .let [pairs (zipped/2 slots bindings) update_expr (list\fold (: (-> [Code Code] Code Code) (function (_ [s b] v) - (` (..set@ (~ s) (~ v) (~ b))))) + (` (..with@ (~ s) (~ v) (~ b))))) value (list\reverse pairs)) [_ accesses'] (list\fold (: (-> [Code Code] [Code (List (List Code))] [Code (List (List Code))]) (function (_ [new_slot new_binding] [old_record accesses']) - [(` (get@ (~ new_slot) (~ new_binding))) + [(` (value@ (~ new_slot) (~ new_binding))) (#Item (list new_binding old_record) accesses')])) [record (: (List (List Code)) #End)] pairs) @@ -4850,7 +4850,7 @@ [g!_ (..identifier "_") g!record (..identifier "record")] (in (list (` (function ((~ g!_) (~ g!record)) - (..set@ (~ selector) (~ value) (~ g!record))))))) + (..with@ (~ selector) (~ value) (~ g!record))))))) (^ (list selector)) (do meta_monad @@ -4858,22 +4858,22 @@ g!value (..identifier "value") g!record (..identifier "record")] (in (list (` (function ((~ g!_) (~ g!value) (~ g!record)) - (..set@ (~ selector) (~ g!value) (~ g!record))))))) + (..with@ (~ selector) (~ g!value) (~ g!record))))))) _ - (failure "Wrong syntax for set@"))) + (failure "Wrong syntax for with@"))) -(macro: .public (update@ tokens) +(macro: .public (revised@ tokens) {#.doc (text$ ($_ "lux text concat" "... Modifies the value of a record at a given tag, based on some function." ..\n - "(update@ #age inc person)" + "(revised@ #age ++ person)" __paragraph "... Can also work with multiple levels of nesting:" ..\n - "(update@ [#foo #bar #baz] func my_record)" + "(revised@ [#foo #bar #baz] func my_record)" __paragraph "... And, if only the slot/path and (optionally) the value are given, generates a mutator function:" ..\n - "(let [updater (update@ [#foo #bar #baz] func)] (updater my_record))" ..\n - "(let [updater (update@ [#foo #bar #baz])] (updater func my_record))"))} + "(let [updater (revised@ [#foo #bar #baz] func)] (updater my_record))" ..\n + "(let [updater (revised@ [#foo #bar #baz])] (updater func my_record))"))} (case tokens (^ (list [_ (#Tag slot')] fun record)) (do meta_monad @@ -4905,27 +4905,27 @@ (in_meta (list (` ({(~ pattern) (~ output)} (~ record))))))) _ - (failure "update@ can only use records."))) + (failure "revised@ can only use records."))) (^ (list [_ (#Tuple slots)] fun record)) (case slots #End - (failure "Wrong syntax for update@") + (failure "Wrong syntax for revised@") _ (do meta_monad [g!record (..identifier "record") g!temp (..identifier "temp")] (in (list (` (let [(~ g!record) (~ record) - (~ g!temp) (get@ [(~+ slots)] (~ g!record))] - (set@ [(~+ slots)] ((~ fun) (~ g!temp)) (~ g!record)))))))) + (~ g!temp) (value@ [(~+ slots)] (~ g!record))] + (with@ [(~+ slots)] ((~ fun) (~ g!temp)) (~ g!record)))))))) (^ (list selector fun)) (do meta_monad [g!_ (..identifier "_") g!record (..identifier "record")] (in (list (` (function ((~ g!_) (~ g!record)) - (..update@ (~ selector) (~ fun) (~ g!record))))))) + (..revised@ (~ selector) (~ fun) (~ g!record))))))) (^ (list selector)) (do meta_monad @@ -4933,10 +4933,10 @@ g!fun (..identifier "fun") g!record (..identifier "record")] (in (list (` (function ((~ g!_) (~ g!fun) (~ g!record)) - (..update@ (~ selector) (~ g!fun) (~ g!record))))))) + (..revised@ (~ selector) (~ g!fun) (~ g!record))))))) _ - (failure "Wrong syntax for update@"))) + (failure "Wrong syntax for revised@"))) (macro: .public (^template tokens) {#.doc (text$ ($_ "lux text concat" @@ -5047,8 +5047,8 @@ (All [s] (-> (I64 s) (I64 s))) (|>> (<extension> 1)))] - [inc "lux i64 +" "Increment function."] - [dec "lux i64 -" "Decrement function."] + [++ "lux i64 +" "Increment function."] + [-- "lux i64 -" "Decrement function."] ) (def: tag\encode @@ -5107,9 +5107,9 @@ (let [[group_location' parts_text] (list\fold (function (_ part [last_location text_accum]) (let [[part_location part_text] (example_documentation last_location baseline part)] [part_location (text\compose text_accum part_text)])) - [(update@ #column inc group_location) ""] + [(revised@ #column ++ group_location) ""] (<prep> parts))] - [(update@ #column inc group_location') + [(revised@ #column ++ group_location') ($_ text\compose (location_padding baseline prev_location group_location) <open> parts_text @@ -5134,7 +5134,7 @@ (#Documentation_Example example) (let [baseline (baseline_column example) [location _] example - [_ text] (..example_documentation (set@ #.column baseline location) baseline example)] + [_ text] (..example_documentation (with@ #.column baseline location) baseline example)] (text\compose text __paragraph)))) (macro: .public (example tokens) @@ -5147,7 +5147,7 @@ " (loop [count +0" ..\n " x init]" ..\n " (if (< +10 count)" ..\n - " (recur (inc count) (f x))" ..\n + " (recur (++ count) (f x))" ..\n " x)))"))} (in_meta (list (` [(~ location_code) (#.Text (~ (|> tokens @@ -5206,7 +5206,7 @@ (loop [count +0 x init] (if (< +10 count) - (recur (inc count) (f x)) + (recur (++ count) (f x)) x)) "Loops can also be given custom names." @@ -5214,7 +5214,7 @@ [count +0 x init] (if (< +10 count) - (my_loop (inc count) (f x)) + (my_loop (++ count) (f x)) x)))} (let [?params (case tokens (^ (list name [_ (#Tuple bindings)] body)) @@ -5665,7 +5665,7 @@ (macro: .public (^|> tokens) {#.doc (example "Pipes the value being pattern-matched against prior to binding it to a variable." (case input - (^|> value [inc (% 10) (max 1)]) + (^|> value [++ (% 10) (max 1)]) (foo value)))} (case tokens (^ (list& [_meta (#Form (list [_ (#Identifier ["" name])] [_ (#Tuple steps)]))] body branches)) @@ -5696,7 +5696,7 @@ {#.doc "The location of the current expression being analyzed."} (Meta Location) (function (_ compiler) - (#Right [compiler (get@ #location compiler)]))) + (#Right [compiler (value@ #location compiler)]))) (macro: .public (undefined tokens) {#.doc (example "Meant to be used as a stand-in for functions with undefined implementations." @@ -5845,7 +5845,7 @@ (def: target (Meta Text) (function (_ compiler) - (#Right [compiler (get@ [#info #target] compiler)]))) + (#Right [compiler (value@ [#info #target] compiler)]))) (def: (platform_name choice) (-> Code (Meta Text)) diff --git a/stdlib/source/library/lux/abstract/apply.lux b/stdlib/source/library/lux/abstract/apply.lux index 7b57f5671..0b80263e8 100644 --- a/stdlib/source/library/lux/abstract/apply.lux +++ b/stdlib/source/library/lux/abstract/apply.lux @@ -19,7 +19,8 @@ (Apply (All [a] (F (G a)))))) (def: &functor - (functor.composite (get@ #&functor f_apply) (get@ #&functor g_apply))) + (functor.composite (value@ #&functor f_apply) + (value@ #&functor g_apply))) (def: (apply fgf fgx) ... TODO: Switch from this version to the one below (in comments) ASAP. diff --git a/stdlib/source/library/lux/abstract/interval.lux b/stdlib/source/library/lux/abstract/interval.lux index cea44c57b..4c6060d4d 100644 --- a/stdlib/source/library/lux/abstract/interval.lux +++ b/stdlib/source/library/lux/abstract/interval.lux @@ -25,7 +25,6 @@ (def: top top))) (def: .public (singleton enum elem) - {#.doc (example "An interval where both top and bottom are the same value.")} (All [a] (-> (Enum a) a (Interval a))) (implementation (def: &enum enum) @@ -76,21 +75,21 @@ (implementation: .public (union left right) (All [a] (-> (Interval a) (Interval a) (Interval a))) - (def: &enum (get@ #&enum right)) + (def: &enum (value@ #&enum right)) (def: bottom (order.min (\ right &order) (\ left bottom) (\ right bottom))) (def: top (order.max (\ right &order) (\ left top) (\ right top)))) (implementation: .public (intersection left right) (All [a] (-> (Interval a) (Interval a) (Interval a))) - (def: &enum (get@ #&enum right)) + (def: &enum (value@ #&enum right)) (def: bottom (order.max (\ right &order) (\ left bottom) (\ right bottom))) (def: top (order.min (\ right &order) (\ left top) (\ right top)))) (implementation: .public (complement interval) (All [a] (-> (Interval a) (Interval a))) - (def: &enum (get@ #&enum interval)) + (def: &enum (value@ #&enum interval)) (def: bottom (\ interval succ (\ interval top))) (def: top (\ interval pred (\ interval bottom)))) diff --git a/stdlib/source/library/lux/abstract/monad.lux b/stdlib/source/library/lux/abstract/monad.lux index 6ba4f74aa..2d81c09e7 100644 --- a/stdlib/source/library/lux/abstract/monad.lux +++ b/stdlib/source/library/lux/abstract/monad.lux @@ -25,7 +25,7 @@ counter (#.Item _ xs') - (recur (inc counter) xs')))) + (recur (++ counter) xs')))) (def: (reversed xs) (All [a] @@ -105,17 +105,17 @@ #.None (#.Left "Wrong syntax for 'do'"))) -(def: .public (bind monad f) +(def: .public (then monad f) (All [! a b] (-> (Monad !) (-> a (! b)) (-> (! a) (! b)))) (|>> (\ monad map f) (\ monad join))) -(def: .public (seq monad) - (All [M a] - (-> (Monad M) (List (M a)) - (M (List a)))) +(def: .public (all monad) + (All [! a] + (-> (Monad !) (List (! a)) + (! (List a)))) (let [(^open "!\.") monad] (function (recur xs) (case xs diff --git a/stdlib/source/library/lux/abstract/monad/indexed.lux b/stdlib/source/library/lux/abstract/monad/indexed.lux index 9f64ec76d..b43ac87e8 100644 --- a/stdlib/source/library/lux/abstract/monad/indexed.lux +++ b/stdlib/source/library/lux/abstract/monad/indexed.lux @@ -21,7 +21,7 @@ (-> (-> vi (m it io vo)) (m ii it vi) (m ii io vo))) - bind)) + then)) (type: Binding [Code Code]) @@ -32,7 +32,7 @@ (type: Context (#Macro Name Code) - (#Bind Binding)) + (#Binding Binding)) (def: global_identifier (Parser Name) @@ -62,7 +62,7 @@ (syntax: .public (do [[?name monad] ..named_monad context (<code>.tuple (<>.some context)) expression <code>.any]) - (macro.with_identifiers [g!_ g!bind] + (macro.with_identifiers [g!_ g!then] (let [body (list\fold (function (_ context next) (case context (#Macro macro parameter) @@ -70,8 +70,8 @@ (~ parameter) (~ next))) - (#Bind [binding value]) - (` ((~ g!bind) + (#Binding [binding value]) + (` ((~ g!then) (.function ((~ g!_) (~ binding)) (~ next)) (~ value))))) @@ -82,10 +82,10 @@ (let [name (code.local_identifier name)] (` (let [(~ name) (~ monad) {#..in (~' in) - #..bind (~ g!bind)} (~ name)] + #..then (~ g!then)} (~ name)] (~ body)))) #.None (` (let [{#..in (~' in) - #..bind (~ g!bind)} (~ monad)] + #..then (~ g!then)} (~ monad)] (~ body))))))))) diff --git a/stdlib/source/library/lux/abstract/monoid.lux b/stdlib/source/library/lux/abstract/monoid.lux index 53c3288c6..fac4862ae 100644 --- a/stdlib/source/library/lux/abstract/monoid.lux +++ b/stdlib/source/library/lux/abstract/monoid.lux @@ -3,8 +3,6 @@ [lux #*]]) (interface: .public (Monoid a) - {#.doc (example "A way to compose values." - "Includes an identity value which does not alter any other value when combined with.")} (: a identity) (: (-> a a a) diff --git a/stdlib/source/library/lux/control/concatenative.lux b/stdlib/source/library/lux/control/concatenative.lux index 03ae8afe6..93a99ceb2 100644 --- a/stdlib/source/library/lux/control/concatenative.lux +++ b/stdlib/source/library/lux/control/concatenative.lux @@ -78,20 +78,20 @@ (code.replaced (code.local_identifier from) to pre)) aliased aliases))] - (case [(|> inputs (get@ #bottom) (maybe\map (|>> code.nat (~) #.Parameter (`)))) - (|> outputs (get@ #bottom) (maybe\map (|>> code.nat (~) #.Parameter (`))))] + (case [(|> inputs (value@ #bottom) (maybe\map (|>> code.nat (~) #.Parameter (`)))) + (|> outputs (value@ #bottom) (maybe\map (|>> code.nat (~) #.Parameter (`))))] [(#.Some bottomI) (#.Some bottomO)] (monad.do meta.monad - [inputC (singleton (macro.full_expansion (stack_fold (get@ #top inputs) bottomI))) - outputC (singleton (macro.full_expansion (stack_fold (get@ #top outputs) bottomO)))] + [inputC (singleton (macro.full_expansion (stack_fold (value@ #top inputs) bottomI))) + outputC (singleton (macro.full_expansion (stack_fold (value@ #top outputs) bottomO)))] (in (list (` (-> (~ (de_alias inputC)) (~ (de_alias outputC))))))) [?bottomI ?bottomO] (with_identifiers [g!stack] (monad.do meta.monad - [inputC (singleton (macro.full_expansion (stack_fold (get@ #top inputs) (maybe.else g!stack ?bottomI)))) - outputC (singleton (macro.full_expansion (stack_fold (get@ #top outputs) (maybe.else g!stack ?bottomO))))] + [inputC (singleton (macro.full_expansion (stack_fold (value@ #top inputs) (maybe.else g!stack ?bottomI)))) + outputC (singleton (macro.full_expansion (stack_fold (value@ #top outputs) (maybe.else g!stack ?bottomO))))] (in (list (` (All [(~ g!stack)] (-> (~ (de_alias inputC)) (~ (de_alias outputC)))))))))))) @@ -130,7 +130,7 @@ (syntax: .public (apply [arity (<>.only (n.> 0) <code>.nat)]) (with_identifiers [g! g!func g!stack g!output] (monad.do {! meta.monad} - [g!inputs (|> (macro.identifier "input") (list.repeated arity) (monad.seq !))] + [g!inputs (|> (macro.identifier "input") (list.repeated arity) (monad.all !))] (in (list (` (: (All [(~+ g!inputs) (~ g!output)] (-> (-> (~+ g!inputs) (~ g!output)) (=> [(~+ g!inputs)] [(~ g!output)]))) diff --git a/stdlib/source/library/lux/control/concurrency/actor.lux b/stdlib/source/library/lux/control/concurrency/actor.lux index e51be0b98..20ab00c06 100644 --- a/stdlib/source/library/lux/control/concurrency/actor.lux +++ b/stdlib/source/library/lux/control/concurrency/actor.lux @@ -90,13 +90,13 @@ (:abstraction {#obituary (async.async []) #mailbox (atom (async.async []))})) process (loop [state (on_init init) - [|mailbox| _] (io.run! (atom.read! (get@ #mailbox (:representation self))))] + [|mailbox| _] (io.run! (atom.read! (value@ #mailbox (:representation self))))] (do {! async.monad} [[head tail] |mailbox| ?state' (on_mail head state self)] (case ?state' (#try.Failure error) - (let [[_ resolve] (get@ #obituary (:representation self))] + (let [[_ resolve] (value@ #obituary (:representation self))] (exec (io.run! (do io.monad [pending (..pending tail)] @@ -109,7 +109,7 @@ (def: .public (alive? actor) (All [s] (-> (Actor s) (IO Bit))) - (let [[obituary _] (get@ #obituary (:representation actor))] + (let [[obituary _] (value@ #obituary (:representation actor))] (|> obituary async.value (\ io.functor map @@ -121,13 +121,13 @@ (def: .public (obituary' actor) (All [s] (-> (Actor s) (IO (Maybe (Obituary s))))) - (let [[obituary _] (get@ #obituary (:representation actor))] + (let [[obituary _] (value@ #obituary (:representation actor))] (async.value obituary))) (def: .public obituary (All [s] (-> (Actor s) (Async (Obituary s)))) (|>> :representation - (get@ #obituary) + (value@ #obituary) product.left)) (def: .public (mail! mail actor) @@ -137,7 +137,7 @@ (if alive? (let [entry [mail (async.async [])]] (do ! - [|mailbox|&resolve (atom.read! (get@ #mailbox (:representation actor)))] + [|mailbox|&resolve (atom.read! (value@ #mailbox (:representation actor)))] (loop [[|mailbox| resolve] |mailbox|&resolve] (do ! [|mailbox| (async.value |mailbox|)] @@ -147,7 +147,7 @@ [resolved? (resolve entry)] (if resolved? (do ! - [_ (atom.write! (product.right entry) (get@ #mailbox (:representation actor)))] + [_ (atom.write! (product.right entry) (value@ #mailbox (:representation actor)))] (in (#try.Success []))) (recur |mailbox|&resolve))) @@ -323,27 +323,27 @@ (with_identifiers [g!_ g!return] (do meta.monad [actor_scope abstract.current - .let [g!type (code.local_identifier (get@ #abstract.name actor_scope)) - g!message (code.local_identifier (get@ #name signature)) - g!actor_vars (get@ #abstract.type_vars actor_scope) - g!all_vars (|> signature (get@ #vars) (list\map code.local_identifier) (list\compose g!actor_vars)) - g!inputsC (|> signature (get@ #inputs) (list\map product.left)) - g!inputsT (|> signature (get@ #inputs) (list\map product.right)) - g!state (|> signature (get@ #state) code.local_identifier) - g!self (|> signature (get@ #self) code.local_identifier)]] + .let [g!type (code.local_identifier (value@ #abstract.name actor_scope)) + g!message (code.local_identifier (value@ #name signature)) + g!actor_vars (value@ #abstract.type_vars actor_scope) + g!all_vars (|> signature (value@ #vars) (list\map code.local_identifier) (list\compose g!actor_vars)) + g!inputsC (|> signature (value@ #inputs) (list\map product.left)) + g!inputsT (|> signature (value@ #inputs) (list\map product.right)) + g!state (|> signature (value@ #state) code.local_identifier) + g!self (|> signature (value@ #self) code.local_identifier)]] (in (list (` (def: (~ export_policy) ((~ g!message) (~+ g!inputsC)) (~ (|annotations|.format annotations)) (All [(~+ g!all_vars)] (-> (~+ g!inputsT) - (..Message (~ (get@ #abstract.abstraction actor_scope)) + (..Message (~ (value@ #abstract.abstraction actor_scope)) (~ output_type)))) (function ((~ g!_) (~ g!state) (~ g!self)) - (let [(~ g!state) (:as (~ (get@ #abstract.representation actor_scope)) + (let [(~ g!state) (:as (~ (value@ #abstract.representation actor_scope)) (~ g!state))] (|> (~ body) - (: ((~! async.Async) ((~! try.Try) [(~ (get@ #abstract.representation actor_scope)) + (: ((~! async.Async) ((~! try.Try) [(~ (value@ #abstract.representation actor_scope)) (~ output_type)]))) - (:as ((~! async.Async) ((~! try.Try) [(~ (get@ #abstract.abstraction actor_scope)) + (:as ((~! async.Async) ((~! try.Try) [(~ (value@ #abstract.abstraction actor_scope)) (~ output_type)])))))))) ))))) diff --git a/stdlib/source/library/lux/control/concurrency/async.lux b/stdlib/source/library/lux/control/concurrency/async.lux index 3dcb864b6..58fbb4ea6 100644 --- a/stdlib/source/library/lux/control/concurrency/async.lux +++ b/stdlib/source/library/lux/control/concurrency/async.lux @@ -25,8 +25,8 @@ (type: .public (Resolver a) (-> a (IO Bit))) + ... Sets an async's value if it has not been done yet. (def: (resolver async) - {#.doc "Sets an async's value if it has not been done yet."} (All [a] (-> (Async a) (Resolver a))) (function (resolve value) (let [async (:representation async)] @@ -181,14 +181,15 @@ (All [a] (-> (IO a) (Async a))) (..schedule! 0)) -(def: .public (delayed milli_seconds value) +(def: .public (after milli_seconds value) (All [a] (-> Nat a (Async a))) (..schedule! milli_seconds (io value))) (def: .public (delay milli_seconds) (-> Nat (Async Any)) - (..delayed milli_seconds [])) + (..after milli_seconds [])) -(def: .public (time_out milli_seconds async) +(def: .public (within milli_seconds async) (All [a] (-> Nat (Async a) (Async (Maybe a)))) - (..or (..delay milli_seconds) async)) + (..or (..delay milli_seconds) + async)) diff --git a/stdlib/source/library/lux/control/concurrency/frp.lux b/stdlib/source/library/lux/control/concurrency/frp.lux index e14fb6505..cb3645138 100644 --- a/stdlib/source/library/lux/control/concurrency/frp.lux +++ b/stdlib/source/library/lux/control/concurrency/frp.lux @@ -189,7 +189,7 @@ (#.Some [value ..empty])) async)) -(def: .public (fold f init channel) +(def: .public (aggregate f init channel) (All [a b] (-> (-> b a (Async a)) a (Channel b) (Async a))) @@ -202,9 +202,9 @@ (#.Some [head tail]) (do ! [init' (f head init)] - (fold f init' tail))))) + (aggregate f init' tail))))) -(def: .public (folds f init channel) +(def: .public (aggregates f init channel) (All [a b] (-> (-> b a (Async a)) a (Channel b) (Channel a))) @@ -217,7 +217,7 @@ (#.Some [head tail]) (do ! [init' (f head init)] - (in (#.Some [init (folds f init' tail)])))))) + (in (#.Some [init (aggregates f init' tail)])))))) (def: .public (poll milli_seconds action) (All [a] diff --git a/stdlib/source/library/lux/control/concurrency/semaphore.lux b/stdlib/source/library/lux/control/concurrency/semaphore.lux index c266617a5..e2cdb2aca 100644 --- a/stdlib/source/library/lux/control/concurrency/semaphore.lux +++ b/stdlib/source/library/lux/control/concurrency/semaphore.lux @@ -52,12 +52,12 @@ (async.async []))] (exec (io.run! - (with_expansions [<had_open_position?> (as_is (get@ #open_positions) (i.> -1))] + (with_expansions [<had_open_position?> (as_is (value@ #open_positions) (i.> -1))] (do io.monad - [[_ state'] (atom.update! (|>> (update@ #open_positions dec) + [[_ state'] (atom.update! (|>> (revised@ #open_positions --) (if> [<had_open_position?>] [] - [(update@ #waiting_list (queue.end sink))])) + [(revised@ #waiting_list (queue.end sink))])) semaphore)] (with_expansions [<go_ahead> (sink []) <get_in_line> (in false)] @@ -76,23 +76,23 @@ (async.future (do {! io.monad} [[pre post] (atom.update! (function (_ state) - (if (i.= (.int (get@ #max_positions state)) - (get@ #open_positions state)) + (if (i.= (.int (value@ #max_positions state)) + (value@ #open_positions state)) state (|> state - (update@ #open_positions inc) - (update@ #waiting_list queue.next)))) + (revised@ #open_positions ++) + (revised@ #waiting_list queue.next)))) semaphore)] (if (same? pre post) - (in (exception.except ..semaphore_is_maxed_out [(get@ #max_positions pre)])) + (in (exception.except ..semaphore_is_maxed_out [(value@ #max_positions pre)])) (do ! - [_ (case (queue.front (get@ #waiting_list pre)) + [_ (case (queue.front (value@ #waiting_list pre)) #.None (in true) (#.Some sink) (sink []))] - (in (#try.Success (get@ #open_positions post))))))))) + (in (#try.Success (value@ #open_positions post))))))))) ) (abstract: .public Mutex @@ -148,23 +148,23 @@ (if (n.< times step) (do async.monad [outcome (..signal! turnstile)] - (recur (inc step))) + (recur (++ step))) (\ async.monad in [])))) (template [<phase> <update> <goal> <turnstile>] [(def: (<phase> (^:representation barrier)) (-> Barrier (Async Any)) (do async.monad - [.let [limit (refinement.value (get@ #limit barrier)) + [.let [limit (refinement.value (value@ #limit barrier)) goal <goal> - [_ count] (io.run! (atom.update! <update> (get@ #count barrier))) + [_ count] (io.run! (atom.update! <update> (value@ #count barrier))) reached? (n.= goal count)]] (if reached? - (..un_block! (dec limit) (get@ <turnstile> barrier)) - (..wait! (get@ <turnstile> barrier)))))] + (..un_block! (-- limit) (value@ <turnstile> barrier)) + (..wait! (value@ <turnstile> barrier)))))] - [start! inc limit #start_turnstile] - [end! dec 0 #end_turnstile] + [start! ++ limit #start_turnstile] + [end! -- 0 #end_turnstile] ) (def: .public (block! barrier) diff --git a/stdlib/source/library/lux/control/concurrency/thread.lux b/stdlib/source/library/lux/control/concurrency/thread.lux index e067d1ac5..1011da5bb 100644 --- a/stdlib/source/library/lux/control/concurrency/thread.lux +++ b/stdlib/source/library/lux/control/concurrency/thread.lux @@ -143,8 +143,8 @@ (as_is (exception: .public cannot_continue_running_threads) ... https://en.wikipedia.org/wiki/Event_loop + ... Starts the event-loop. (def: .public run! - {#.doc (example "Starts the event-loop.")} (IO Any) (loop [_ []] (do {! io.monad} @@ -158,14 +158,14 @@ (do ! [now (\ ! map (|>> instant.millis .nat) instant.now) .let [[ready pending] (list.partition (function (_ thread) - (|> (get@ #creation thread) - (n.+ (get@ #delay thread)) + (|> (value@ #creation thread) + (n.+ (value@ #delay thread)) (n.<= now))) threads)] swapped? (atom.compare_and_swap! threads pending ..runner)] (if swapped? (do ! - [_ (monad.map ! (|>> (get@ #action) ..execute! io.io) ready)] + [_ (monad.map ! (|>> (value@ #action) ..execute! io.io) ready)] (recur [])) (panic! (exception.error ..cannot_continue_running_threads [])))) )))) diff --git a/stdlib/source/library/lux/control/exception.lux b/stdlib/source/library/lux/control/exception.lux index f89611e19..d957188ea 100644 --- a/stdlib/source/library/lux/control/exception.lux +++ b/stdlib/source/library/lux/control/exception.lux @@ -1,5 +1,4 @@ (.module: - {#.doc "Pure-Lux exception-handling functionality."} [library [lux #* ["." macro] @@ -33,7 +32,7 @@ (def: .public (match? exception error) (All [e] (-> (Exception e) Text Bit)) - (text.starts_with? (get@ #label exception) error)) + (text.starts_with? (value@ #label exception) error)) (def: .public (when exception then try) (All [e a] @@ -44,7 +43,7 @@ (#//.Success output) (#//.Failure error) - (let [reference (get@ #label exception)] + (let [reference (value@ #label exception)] (if (text.starts_with? reference error) (#//.Success (|> error (text.clip' (text.size reference)) @@ -64,7 +63,7 @@ (def: .public (error exception message) (All [e] (-> (Exception e) e Text)) - ((get@ #..constructor exception) message)) + ((value@ #..constructor exception) message)) (def: .public (except exception message) (All [e a] (-> (Exception e) e (Try a))) @@ -91,9 +90,6 @@ ))) (syntax: .public (exception: [[export_policy t_vars [name inputs] body] ..exception]) - {#.doc (example - "" - )} (macro.with_identifiers [g!descriptor] (do meta.monad [current_module meta.current_module_name @@ -102,10 +98,10 @@ (in (list (` (def: (~ export_policy) (~ g!self) (All [(~+ (list\map |type_variable|.format t_vars))] - (..Exception [(~+ (list\map (get@ #|input|.type) inputs))])) + (..Exception [(~+ (list\map (value@ #|input|.type) inputs))])) (let [(~ g!descriptor) (~ (code.text descriptor))] {#..label (~ g!descriptor) - #..constructor (function ((~ g!self) [(~+ (list\map (get@ #|input|.binding) inputs))]) + #..constructor (function ((~ g!self) [(~+ (list\map (value@ #|input|.binding) inputs))]) ((~! text\compose) (~ g!descriptor) (~ (maybe.else (' "") body))))})))))))) @@ -119,14 +115,14 @@ on_new_line (|> " " (list.repeated (n.+ (text.size header_separator) largest_header_size)) - text.joined + text.together (text\compose text.new_line)) on_entry (: (-> [Text Text] Text) (function (_ [header message]) (let [padding (|> " " (list.repeated (n.- (text.size header) largest_header_size)) - text.joined)] + text.together)] (|> message (text.replaced text.new_line on_new_line) ($_ text\compose padding header header_separator)))))] @@ -150,7 +146,7 @@ (-> (-> a Text) (List a) Text)) (|> entries (list\fold (function (_ entry [index next]) - [(inc index) + [(++ index) (#.Item [(n\encode index) (format entry)] next)]) [0 #.End]) @@ -160,7 +156,7 @@ (def: separator (let [gap ($_ "lux text concat" text.new_line text.new_line) - horizontal_line (|> "-" (list.repeated 64) text.joined)] + horizontal_line (|> "-" (list.repeated 64) text.together)] ($_ "lux text concat" gap horizontal_line diff --git a/stdlib/source/library/lux/control/function.lux b/stdlib/source/library/lux/control/function.lux index 865ea6930..11cc82e62 100644 --- a/stdlib/source/library/lux/control/function.lux +++ b/stdlib/source/library/lux/control/function.lux @@ -22,7 +22,7 @@ (-> (-> a b c) (-> b a c))) (function (_ x y) (f y x))) -(def: .public (apply input function) +(def: .public (on input function) (All [i o] (-> i (-> i o) o)) (function input)) diff --git a/stdlib/source/library/lux/control/function/contract.lux b/stdlib/source/library/lux/control/function/contract.lux index 0fb706a14..b568a7068 100644 --- a/stdlib/source/library/lux/control/function/contract.lux +++ b/stdlib/source/library/lux/control/function/contract.lux @@ -16,7 +16,7 @@ ["i" int]]]]]) (template [<name>] - [(exception: (<name> {condition Code}) + [(exception: .public (<name> {condition Code}) (exception.report ["Condition" (%.code condition)]))] @@ -32,11 +32,6 @@ (syntax: .public (pre [test <code>.any expr <code>.any]) - {#.doc (example "Pre-conditions." - "Given a test and an expression to run, only runs the expression if the test passes." - "Otherwise, an error is raised." - (pre (i.= +4 (i.+ +2 +2)) - (foo +123 +456 +789)))} (in (list (` (exec ((~! ..assert!) (~ (code.text (exception.error ..pre_condition_failed test))) (~ test)) @@ -44,12 +39,6 @@ (syntax: .public (post [test <code>.any expr <code>.any]) - {#.doc (example "Post-conditions." - "Given a predicate and an expression to run, evaluates the expression and then tests the output with the predicate." - "If the predicate returns #1, returns the value of the expression." - "Otherwise, an error is raised." - (post i.even? - (i.+ +2 +2)))} (with_identifiers [g!output] (in (list (` (let [(~ g!output) (~ expr)] (exec diff --git a/stdlib/source/library/lux/control/function/memo.lux b/stdlib/source/library/lux/control/function/memo.lux index ee20672b1..4d89e9778 100644 --- a/stdlib/source/library/lux/control/function/memo.lux +++ b/stdlib/source/library/lux/control/function/memo.lux @@ -36,7 +36,6 @@ (Recursive i (State (Dictionary i o) o))) (def: .public (open memo) - {#.doc (example "Memoization where the memoized results can be re-used accross invocations.")} (All [i o] (:let [Memory (Dictionary i o)] (-> (Memo i o) (-> [Memory i] [Memory o])))) @@ -45,8 +44,6 @@ (|> input memo (state.result memory))))) (def: .public (closed hash memo) - {#.doc (example "Memoization confined to a single invocation to the function (not counting any subsequent recursive invocations)." - "Memoized results will be re-used during recursive invocations, but cannot be accessed after the main invocation has ended.")} (All [i o] (-> (Hash i) (Memo i o) (-> i o))) (let [memo (//.mixin (//.with ..memoization (//.of_recursive memo))) @@ -54,8 +51,6 @@ (|>> memo (state.result empty) product.right))) (def: .public (none hash memo) - {#.doc (example "No memoization at all." - "This is useful as a test control when measuring the effect of using memoization.")} (All [i o] (-> (Hash i) (Memo i o) (-> i o))) (let [memo (//.mixin (//.of_recursive memo)) diff --git a/stdlib/source/library/lux/control/function/mixin.lux b/stdlib/source/library/lux/control/function/mixin.lux index cdaa35a6c..98009b21d 100644 --- a/stdlib/source/library/lux/control/function/mixin.lux +++ b/stdlib/source/library/lux/control/function/mixin.lux @@ -10,23 +10,19 @@ [monad (#+ Monad do)]]]]) (type: .public (Mixin i o) - {#.doc (example "A function which can be mixed with others to inherit their behavior.")} (-> (-> i o) (-> i o) (-> i o))) (def: .public (mixin f) - {#.doc (example "Given a mixin, produces a normal function.")} (All [i o] (-> (Mixin i o) (-> i o))) (function (mix input) ((f mix mix) input))) (def: .public nothing - {#.doc (example "A mixin that does nothing and just delegates work to the next mixin.")} Mixin (function (_ delegate recur) delegate)) (def: .public (with parent child) - {#.doc (example "Produces a new mixin, where the behavior of the child can make use of the behavior of the parent.")} (All [i o] (-> (Mixin i o) (Mixin i o) (Mixin i o))) (function (_ delegate recur) (parent (child delegate recur) recur))) @@ -38,7 +34,6 @@ (def: compose ..with)) (def: .public (advice when then) - {#.doc (example "Only apply then mixin when the input meets some criterion.")} (All [i o] (-> (Predicate i) (Mixin i o) (Mixin i o))) (function (_ delegate recur input) (if (when input) @@ -46,7 +41,6 @@ (delegate input)))) (def: .public (before monad action) - {#.doc (example "Executes an action before doing the main work.")} (All [! i o] (-> (Monad !) (-> i (! Any)) (Mixin i (! o)))) (function (_ delegate recur input) (do monad @@ -54,7 +48,6 @@ (delegate input)))) (def: .public (after monad action) - {#.doc (example "Executes an action after doing the main work.")} (All [! i o] (-> (Monad !) (-> i o (! Any)) (Mixin i (! o)))) (function (_ delegate recur input) (do monad @@ -63,11 +56,9 @@ (in output)))) (type: .public (Recursive i o) - {#.doc (example "An indirectly recursive function.")} (-> (-> i o) (-> i o))) (def: .public (of_recursive recursive) - {#.doc (example "Transform an indirectly recursive function into a mixin.")} (All [i o] (-> (Recursive i o) (Mixin i o))) (function (_ delegate recur) (recursive recur))) diff --git a/stdlib/source/library/lux/control/function/mutual.lux b/stdlib/source/library/lux/control/function/mutual.lux index fd36ac10b..dd647ce41 100644 --- a/stdlib/source/library/lux/control/function/mutual.lux +++ b/stdlib/source/library/lux/control/function/mutual.lux @@ -1,5 +1,4 @@ (.module: - {#.doc (.example "Macros for implementing mutually-recursive functions.")} [library [lux (#- Definition let def:) ["." meta] @@ -42,8 +41,8 @@ (-> (List Code) Code [Code Mutual] Code) (` (function ((~ g!name) (~ g!context)) (.let [[(~+ context)] (~ g!context)] - (function (~ (declaration.format (get@ #declaration mutual))) - (~ (get@ #body mutual))))))) + (function (~ (declaration.format (value@ #declaration mutual))) + (~ (value@ #body mutual))))))) (.def: (macro g!context g!self) (-> Code Code Macro) @@ -54,29 +53,15 @@ (syntax: .public (let [functions (<code>.tuple (<>.some ..mutual)) body <code>.any]) - {#.doc (example "Locally-defined mutually-recursive functions." - (let [(even? number) - (-> Nat Bit) - (case number - 0 true - _ (odd? (dec number))) - - (odd? number) - (-> Nat Bit) - (case number - 0 false - _ (even? (dec number)))] - (and (even? 4) - (odd? 5))))} (case functions #.End (in (list body)) (#.Item mutual #.End) - (.let [g!name (|> mutual (get@ [#declaration #declaration.name]) code.local_identifier)] - (in (list (` (.let [(~ g!name) (: (~ (get@ #type mutual)) - (function (~ (declaration.format (get@ #declaration mutual))) - (~ (get@ #body mutual))))] + (.let [g!name (|> mutual (value@ [#declaration #declaration.name]) code.local_identifier)] + (in (list (` (.let [(~ g!name) (: (~ (value@ #type mutual)) + (function (~ (declaration.format (value@ #declaration mutual))) + (~ (value@ #body mutual))))] (~ body)))))) _ @@ -89,12 +74,12 @@ (list.zipped/2 hidden_names functions)) context_types (list\map (function (_ mutual) - (` (-> (~ g!context) (~ (get@ #type mutual))))) + (` (-> (~ g!context) (~ (value@ #type mutual))))) functions) - user_names (list\map (|>> (get@ [#declaration #declaration.name]) code.local_identifier) + user_names (list\map (|>> (value@ [#declaration #declaration.name]) code.local_identifier) functions)] g!pop (local.push (list\map (function (_ [g!name mutual]) - [[here_name (get@ [#declaration #declaration.name] mutual)] + [[here_name (value@ [#declaration #declaration.name] mutual)] (..macro g!context g!name)]) (list.zipped/2 hidden_names functions)))] @@ -119,19 +104,6 @@ (<>.and (<>\in (` .private)) ..mutual)))) (syntax: .public (def: [functions (<>.many ..definition)]) - {#.doc (example "Globally-defined mutually-recursive functions." - (def: - [.public (even? number) - (-> Nat Bit) - (case number - 0 true - _ (odd? (dec number)))] - - [.public (odd? number) - (-> Nat Bit) - (case number - 0 false - _ (even? (dec number)))]))} (case functions #.End (in (list)) @@ -151,19 +123,19 @@ functions) .let [definitions (list\map (..mutual_definition hidden_names g!context) (list.zipped/2 hidden_names - (list\map (get@ #mutual) functions))) + (list\map (value@ #mutual) functions))) context_types (list\map (function (_ mutual) - (` (-> (~ g!context) (~ (get@ [#mutual #type] mutual))))) + (` (-> (~ g!context) (~ (value@ [#mutual #type] mutual))))) functions) - user_names (list\map (|>> (get@ [#mutual #declaration #declaration.name]) code.local_identifier) + user_names (list\map (|>> (value@ [#mutual #declaration #declaration.name]) code.local_identifier) functions)] g!pop (local.push (list\map (function (_ [g!name mutual]) - [[here_name (get@ [#mutual #declaration #declaration.name] mutual)] + [[here_name (value@ [#mutual #declaration #declaration.name] mutual)] (..macro g!context g!name)]) (list.zipped/2 hidden_names functions)))] (in (list& (` (.def: (~ g!context) - [(~+ (list\map (get@ [#mutual #type]) functions))] + [(~+ (list\map (value@ [#mutual #type]) functions))] (.let [(~ g!context) (: (Rec (~ g!context) [(~+ context_types)]) [(~+ definitions)]) @@ -173,11 +145,11 @@ user_names))]))) g!pop (list\map (function (_ mutual) - (.let [g!name (|> mutual (get@ [#mutual #declaration #declaration.name]) code.local_identifier)] + (.let [g!name (|> mutual (value@ [#mutual #declaration #declaration.name]) code.local_identifier)] (` (.def: - (~ (get@ #export_policy mutual)) + (~ (value@ #export_policy mutual)) (~ g!name) - (~ (get@ [#mutual #type] mutual)) + (~ (value@ [#mutual #type] mutual)) (.let [[(~+ user_names)] (~ g!context)] (~ g!name)))))) functions))))))) diff --git a/stdlib/source/library/lux/control/io.lux b/stdlib/source/library/lux/control/io.lux index 1b3b58f7b..125ebfb67 100644 --- a/stdlib/source/library/lux/control/io.lux +++ b/stdlib/source/library/lux/control/io.lux @@ -1,5 +1,4 @@ (.module: - {#.doc "A method for abstracting I/O and effectful computations to make it safe while writing pure functional code."} [library [lux #* [abstract diff --git a/stdlib/source/library/lux/control/maybe.lux b/stdlib/source/library/lux/control/maybe.lux index 74b5f06d2..7dcf84574 100644 --- a/stdlib/source/library/lux/control/maybe.lux +++ b/stdlib/source/library/lux/control/maybe.lux @@ -97,7 +97,8 @@ (All [M] (-> (Monad M) (Monad (All [a] (M (Maybe a)))))) (def: &functor - (functor.composite (get@ #monad.&functor monad) ..functor)) + (functor.composite (value@ #monad.&functor monad) + ..functor)) (def: in (|>> (\ ..monad in) (\ monad in))) diff --git a/stdlib/source/library/lux/control/parser.lux b/stdlib/source/library/lux/control/parser.lux index f4e304045..6d3246295 100644 --- a/stdlib/source/library/lux/control/parser.lux +++ b/stdlib/source/library/lux/control/parser.lux @@ -17,7 +17,6 @@ ["n" nat]]]]]) (type: .public (Parser s a) - {#.doc "A generic parser."} (-> s (Try [s a]))) (implementation: .public functor @@ -70,7 +69,6 @@ (ma input'))))) (def: .public (assertion message test) - {#.doc "Fails with the given message if the test is #0."} (All [s] (-> Text Bit (Parser s Any))) (function (_ input) (if test @@ -78,7 +76,6 @@ (#try.Failure message)))) (def: .public (maybe parser) - {#.doc "Optionality combinator."} (All [s a] (-> (Parser s a) (Parser s (Maybe a)))) (function (_ input) @@ -90,15 +87,11 @@ (#try.Success [input' (#.Some x)])))) (def: .public (result parser input) - {#.doc (example "Executes the parser on the input." - "Does not verify that all of the input has been consumed by the parser." - "Returns both the parser's output, and a value that represents the remaining input.")} (All [s a] (-> (Parser s a) s (Try [s a]))) (parser input)) (def: .public (and first second) - {#.doc "Sequencing combinator."} (All [s a b] (-> (Parser s a) (Parser s b) (Parser s [a b]))) (do {! ..monad} @@ -106,7 +99,6 @@ (\ ! map (|>> [head]) second))) (def: .public (or left right) - {#.doc "Heterogeneous alternative combinator."} (All [s a b] (-> (Parser s a) (Parser s b) (Parser s (Or a b)))) (function (_ tokens) @@ -123,7 +115,6 @@ (#try.Failure error))))) (def: .public (either this that) - {#.doc "Homogeneous alternative combinator."} (All [s a] (-> (Parser s a) (Parser s a) (Parser s a))) (function (_ tokens) @@ -135,7 +126,6 @@ output))) (def: .public (some parser) - {#.doc "0-or-more combinator."} (All [s a] (-> (Parser s a) (Parser s (List a)))) (function (_ input) @@ -149,7 +139,6 @@ input')))) (def: .public (many parser) - {#.doc "1-or-more combinator."} (All [s a] (-> (Parser s a) (Parser s (List a)))) (|> (..some parser) @@ -157,25 +146,22 @@ (\ ..monad map (|>> #.Item)))) (def: .public (exactly amount parser) - {#.doc "Parse exactly N times."} (All [s a] (-> Nat (Parser s a) (Parser s (List a)))) (case amount 0 (\ ..monad in (list)) _ (do {! ..monad} [x parser] (|> parser - (exactly (dec amount)) + (exactly (-- amount)) (\ ! map (|>> (#.Item x))))))) (def: .public (at_least amount parser) - {#.doc "Parse at least N times."} (All [s a] (-> Nat (Parser s a) (Parser s (List a)))) (do {! ..monad} [minimum (..exactly amount parser)] (\ ! map (list\compose minimum) (..some parser)))) (def: .public (at_most amount parser) - {#.doc "Parse at most N times."} (All [s a] (-> Nat (Parser s a) (Parser s (List a)))) (case amount 0 (\ ..monad in (list)) @@ -186,7 +172,7 @@ (#try.Success [input' x]) (..result (\ ..monad map (|>> (#.Item x)) - (at_most (dec amount) parser)) + (at_most (-- amount) parser)) input'))))) (def: .public (between minimum additional parser) @@ -199,7 +185,6 @@ (..at_most additional parser))))) (def: .public (separated_by separator parser) - {#.doc "Parses instances of 'parser' that are separated by instances of 'separator'."} (All [s a b] (-> (Parser s b) (Parser s a) (Parser s (List a)))) (do {! ..monad} [?x (..maybe parser)] @@ -214,7 +199,6 @@ (\ ! map (|>> (list\map product.right) (#.Item x))))))) (def: .public (not parser) - {#.doc (example "Only succeeds when the underlying parser fails.")} (All [s a] (-> (Parser s a) (Parser s Any))) (function (_ input) (case (parser input) @@ -225,13 +209,11 @@ (#try.Failure "Expected to fail; yet succeeded.")))) (def: .public (failure message) - {#.doc (example "Always fail with this 'message'.")} (All [s a] (-> Text (Parser s a))) (function (_ input) (#try.Failure message))) (def: .public (lifted operation) - {#.doc (example "Lift a potentially failed computation into a parser.")} (All [s a] (-> (Try a) (Parser s a))) (function (_ input) (case operation @@ -242,7 +224,6 @@ (#try.Failure error)))) (def: .public (else value parser) - {#.doc "If the given parser fails, returns the default value."} (All [s a] (-> a (Parser s a) (Parser s a))) (function (_ input) (case (parser input) @@ -253,26 +234,22 @@ (#try.Success [input' output])))) (def: .public remaining - {#.doc (example "Yield the remaining input (without consuming it).")} (All [s] (Parser s s)) (function (_ inputs) (#try.Success [inputs inputs]))) (def: .public (rec parser) - {#.doc "Combinator for recursive parsers."} (All [s a] (-> (-> (Parser s a) (Parser s a)) (Parser s a))) (function (_ inputs) (..result (parser (rec parser)) inputs))) (def: .public (after param subject) - {#.doc (example "Run the parser after another one (whose output is ignored).")} (All [s _ a] (-> (Parser s _) (Parser s a) (Parser s a))) (do ..monad [_ param] subject)) (def: .public (before param subject) - {#.doc (example "Run the parser before another one (whose output is ignored).")} (All [s _ a] (-> (Parser s _) (Parser s a) (Parser s a))) (do ..monad [output subject @@ -280,7 +257,6 @@ (in output))) (def: .public (only test parser) - {#.doc (example "Only succeed when the parser's output passes a test.")} (All [s a] (-> (-> a Bit) (Parser s a) (Parser s a))) (do ..monad [output parser @@ -288,7 +264,6 @@ (in output))) (def: .public (parses? parser) - {#.doc (example "Ignore a parser's output and just verify that it succeeds.")} (All [s a] (-> (Parser s a) (Parser s Bit))) (function (_ input) (case (parser input) @@ -299,7 +274,6 @@ (#try.Success [input' true])))) (def: .public (parses parser) - {#.doc (example "Ignore a parser's output and just execute it.")} (All [s a] (-> (Parser s a) (Parser s Any))) (function (_ input) (case (parser input) @@ -310,8 +284,6 @@ (#try.Success [input' []])))) (def: .public (speculative parser) - {#.doc (example "Executes a parser, without actually consuming the input." - "That way, the same input can be consumed again by another parser.")} (All [s a] (-> (Parser s a) (Parser s a))) (function (_ input) (case (parser input) @@ -322,7 +294,6 @@ output))) (def: .public (codec codec parser) - {#.doc (example "Decode the output of a parser using a codec.")} (All [s a z] (-> (Codec a z) (Parser s a) (Parser s z))) (function (_ input) (case (parser input) diff --git a/stdlib/source/library/lux/control/parser/analysis.lux b/stdlib/source/library/lux/control/parser/analysis.lux index fb32f4608..42bffc310 100644 --- a/stdlib/source/library/lux/control/parser/analysis.lux +++ b/stdlib/source/library/lux/control/parser/analysis.lux @@ -48,11 +48,9 @@ ["Input" (exception.listing /.%analysis input)])) (type: .public Parser - {#.doc (example "A parser for Lux code analysis nodes.")} (//.Parser (List Analysis))) (def: .public (result parser input) - {#.doc (example "Executes a parser and makes sure no inputs go unconsumed.")} (All [a] (-> (Parser a) (List Analysis) (Try a))) (case (parser input) (#try.Failure error) @@ -65,7 +63,6 @@ (exception.except ..unconsumed_input unconsumed))) (def: .public any - {#.doc (example "Matches any value, without discrimination.")} (Parser Analysis) (function (_ input) (case input @@ -76,7 +73,6 @@ (#try.Success [tail head])))) (def: .public end! - {#.doc "Ensures there are no more inputs."} (Parser Any) (function (_ tokens) (case tokens @@ -85,7 +81,6 @@ (remaining_inputs tokens)))))) (def: .public end? - {#.doc "Checks whether there are no more inputs."} (Parser Bit) (function (_ tokens) (#try.Success [tokens (case tokens @@ -94,7 +89,6 @@ (template [<query> <assertion> <tag> <type> <eq>] [(`` (as_is (def: .public <query> - {#.doc (example (~~ (template.text ["Queries for a " <query> " value."])))} (Parser <type>) (function (_ input) (case input @@ -105,7 +99,6 @@ (exception.except ..cannot_parse input)))) (def: .public (<assertion> expected) - {#.doc (example (~~ (template.text ["Assert a specific " <query> " value."])))} (-> <type> (Parser Any)) (function (_ input) (case input @@ -129,7 +122,6 @@ ) (def: .public (tuple parser) - {#.doc (example "Parses only within the context of a tuple's contents.")} (All [a] (-> (Parser a) (Parser a))) (function (_ input) (case input diff --git a/stdlib/source/library/lux/control/parser/binary.lux b/stdlib/source/library/lux/control/parser/binary.lux index d2d195888..ec251b304 100644 --- a/stdlib/source/library/lux/control/parser/binary.lux +++ b/stdlib/source/library/lux/control/parser/binary.lux @@ -27,11 +27,9 @@ ["." // ("#\." monad)]) (type: .public Offset - {#.doc (example "An offset for reading within binary data.")} Nat) (type: .public Parser - {#.doc (example "A parser for raw binary data.")} (//.Parser [Offset Binary])) (exception: .public (binary_was_not_fully_read {binary_length Nat} {bytes_read Nat}) @@ -40,7 +38,6 @@ ["Bytes read" (%.nat bytes_read)])) (def: .public (result parser input) - {#.doc (example "Runs a parser and checks that all the binary data was read by it.")} (All [a] (-> (Parser a) Binary (Try a))) (case (parser [0 input]) (#try.Failure msg) @@ -53,25 +50,21 @@ (exception.except ..binary_was_not_fully_read [length end]))))) (def: .public end? - {#.doc (example "Checks whether there is no more data to read.")} (Parser Bit) (function (_ (^@ input [offset data])) (#try.Success [input (n.= offset (/.size data))]))) (def: .public offset - {#.doc (example "The current offset (i.e. how much data has been read).")} (Parser Offset) (function (_ (^@ input [offset data])) (#try.Success [input offset]))) (def: .public remaining - {#.doc (example "How much of the data remains to be read.")} (Parser Nat) (function (_ (^@ input [offset data])) (#try.Success [input (n.- offset (/.size data))]))) (type: .public Size - {#.doc (example "The size of a chunk of data within a binary array.")} Nat) (def: .public size/8 Size 1) @@ -129,14 +122,12 @@ [1 #.Right right]])) (def: .public (rec body) - {#.doc (example "Tie the knot for a recursive parser.")} (All [a] (-> (-> (Parser a) (Parser a)) (Parser a))) (function (_ input) (let [parser (body (rec body))] (parser input)))) (def: .public any - {#.doc (example "Does no parsing, and just returns a dummy value.")} (Parser Any) (//\in [])) @@ -156,7 +147,6 @@ _ (//.lifted (exception.except ..not_a_bit [value]))))) (def: .public (segment size) - {#.doc (example "Parses a chunk of data of a given size.")} (-> Nat (Parser Binary)) (function (_ [offset binary]) (case size @@ -167,7 +157,6 @@ (template [<size> <name> <bits>] [(`` (def: .public <name> - {#.doc (example (~~ (template.text ["Parses a block of data prefixed with a size that is " <size> " bytes long."])))} (Parser Binary) (do //.monad [size (//\map .nat <bits>)] @@ -181,7 +170,6 @@ (template [<size> <name> <binary>] [(`` (def: .public <name> - {#.doc (example (~~ (template.text ["Parses a block of (UTF-8 encoded) text prefixed with a size that is " <size> " bytes long."])))} (Parser Text) (do //.monad [utf8 <binary>] @@ -197,7 +185,6 @@ (template [<size> <name> <bits>] [(def: .public (<name> valueP) - {#.doc (example (~~ (template.text ["Parses a row of values prefixed with a size that is " <size> " bytes long."])))} (All [v] (-> (Parser v) (Parser (Row v)))) (do //.monad [amount (: (Parser Nat) @@ -212,8 +199,8 @@ (if (n.< amount index) (do //.monad [value valueP] - (recur (.inc index) - (row.add value output))) + (recur (.++ index) + (row.suffix value output))) (//\in output)))))] [08 row/8 ..bits/8] @@ -227,7 +214,6 @@ (..or ..any)) (def: .public (list value) - {#.doc (example "Parses an arbitrarily long list of values.")} (All [a] (-> (Parser a) (Parser (List a)))) (..rec (|>> (//.and value) diff --git a/stdlib/source/library/lux/control/parser/cli.lux b/stdlib/source/library/lux/control/parser/cli.lux index 3dd50a349..d9b4928ab 100644 --- a/stdlib/source/library/lux/control/parser/cli.lux +++ b/stdlib/source/library/lux/control/parser/cli.lux @@ -11,11 +11,9 @@ ["." //]) (type: .public (Parser a) - {#.doc "A command-line interface parser."} (//.Parser (List Text) a)) (def: .public (result parser inputs) - {#.doc (example "Executes the parser and verifies that all inputs are processed.")} (All [a] (-> (Parser a) (List Text) (Try a))) (case (//.result parser inputs) (#try.Success [remaining output]) @@ -30,7 +28,6 @@ (#try.Failure try))) (def: .public any - {#.doc "Just returns the next input without applying any logic."} (Parser Text) (function (_ inputs) (case inputs @@ -41,7 +38,6 @@ (#try.Failure "Cannot parse empty arguments.")))) (def: .public (parse parser) - {#.doc "Parses the next input with a parsing function."} (All [a] (-> (-> Text (Try a)) (Parser a))) (function (_ inputs) (do try.monad @@ -50,7 +46,6 @@ (in [remaining output])))) (def: .public (this reference) - {#.doc "Checks that a token is in the inputs."} (-> Text (Parser Any)) (function (_ inputs) (do try.monad @@ -60,7 +55,6 @@ (#try.Failure (format "Missing token: '" reference "'")))))) (def: .public (somewhere cli) - {#.doc "Given a parser, tries to parse it somewhere in the inputs (i.e. not necessarily parsing the immediate inputs)."} (All [a] (-> (Parser a) (Parser a))) (function (_ inputs) (loop [immediate inputs] @@ -80,7 +74,6 @@ output]))))))) (def: .public end - {#.doc "Ensures there are no more inputs."} (Parser Any) (function (_ inputs) (case inputs @@ -88,14 +81,12 @@ _ (#try.Failure (format "Unknown parameters: " (text.interposed " " inputs)))))) (def: .public (named name value) - {#.doc (example "Parses a named parameter and yields its value.")} (All [a] (-> Text (Parser a) (Parser a))) (|> value (//.after (..this name)) ..somewhere)) (def: .public (parameter [short long] value) - {#.doc (example "Parses a parameter that can have either a short or a long name.")} (All [a] (-> [Text Text] (Parser a) (Parser a))) (|> value (//.after (//.either (..this short) (..this long))) diff --git a/stdlib/source/library/lux/control/parser/code.lux b/stdlib/source/library/lux/control/parser/code.lux index 93a2f65d9..1a3bbc5a7 100644 --- a/stdlib/source/library/lux/control/parser/code.lux +++ b/stdlib/source/library/lux/control/parser/code.lux @@ -28,7 +28,6 @@ (#.Item [[x y] pairs']) (list& x y (un_paired pairs')))) (type: .public Parser - {#.doc "A Lux code parser."} (//.Parser (List Code))) (def: remaining_inputs @@ -38,7 +37,6 @@ ($_ text\compose text.new_line "Remaining input: "))) (def: .public any - {#.doc "Yields the next input without applying any logic."} (Parser Code) (function (_ tokens) (case tokens @@ -51,7 +49,6 @@ (template [<query> <check> <type> <tag> <eq> <desc>] [(with_expansions [<failure> (as_is (#try.Failure ($_ text\compose "Cannot parse " <desc> (remaining_inputs tokens))))] (def: .public <query> - {#.doc (code.text ($_ text\compose "Parses the next " <desc> " input."))} (Parser <type>) (function (_ tokens) (case tokens @@ -62,7 +59,6 @@ <failure>))) (def: .public (<check> expected) - {#.doc (code.text ($_ text\compose "Checks for a specific " <desc> " input."))} (-> <type> (Parser Any)) (function (_ tokens) (case tokens @@ -85,7 +81,6 @@ ) (def: .public (this! code) - {#.doc "Ensures the given Code is the next input."} (-> Code (Parser Any)) (function (_ tokens) (case tokens @@ -101,7 +96,6 @@ (template [<query> <check> <tag> <eq> <desc>] [(with_expansions [<failure> (as_is (#try.Failure ($_ text\compose "Cannot parse " <desc> (remaining_inputs tokens))))] (def: .public <query> - {#.doc (code.text ($_ text\compose "Parse a local " <desc> " (a " <desc> " that has no module prefix)."))} (Parser Text) (function (_ tokens) (case tokens @@ -112,7 +106,6 @@ <failure>))) (def: .public (<check> expected) - {#.doc (code.text ($_ text\compose "Checks for a specific local " <desc> " (a " <desc> " that has no module prefix)."))} (-> Text (Parser Any)) (function (_ tokens) (case tokens @@ -130,7 +123,6 @@ (template [<name> <tag> <desc>] [(def: .public (<name> p) - {#.doc (code.text ($_ text\compose "Parses the contents of a " <desc> "."))} (All [a] (-> (Parser a) (Parser a))) (function (_ tokens) @@ -148,7 +140,6 @@ ) (def: .public (record p) - {#.doc "Parses the contents of a record."} (All [a] (-> (Parser a) (Parser a))) (function (_ tokens) @@ -162,7 +153,6 @@ (#try.Failure ($_ text\compose "Cannot parse record" (remaining_inputs tokens)))))) (def: .public end! - {#.doc "Verifies there are no more inputs."} (Parser Any) (function (_ tokens) (case tokens @@ -170,7 +160,6 @@ _ (#try.Failure ($_ text\compose "Expected list of tokens to be empty!" (remaining_inputs tokens)))))) (def: .public end? - {#.doc "Checks whether there are no more inputs."} (Parser Bit) (function (_ tokens) (#try.Success [tokens (case tokens @@ -178,7 +167,6 @@ _ false)]))) (def: .public (result parser inputs) - {#.doc (example "Executes a parser against a stream of code, and verifies all the inputs are consumed.")} (All [a] (-> (Parser a) (List Code) (Try a))) (case (parser inputs) (#try.Failure error) @@ -196,7 +184,6 @@ (text\compose "Unconsumed inputs: ")))))) (def: .public (local inputs parser) - {#.doc "Runs parser against the given list of inputs."} (All [a] (-> (List Code) (Parser a) (Parser a))) (function (_ real) (do try.monad diff --git a/stdlib/source/library/lux/control/parser/environment.lux b/stdlib/source/library/lux/control/parser/environment.lux index e12febdf3..f084a838d 100644 --- a/stdlib/source/library/lux/control/parser/environment.lux +++ b/stdlib/source/library/lux/control/parser/environment.lux @@ -13,11 +13,9 @@ ["." //]) (type: .public Property - {#.doc (example "A property in the environment.")} Text) (type: .public Environment - {#.doc (example "An abstraction for environment variables of a program.")} (Dictionary Property Text)) (exception: .public (unknown_property {property Property}) @@ -25,11 +23,9 @@ ["Property" (%.text property)])) (type: .public (Parser a) - {#.doc (example "A parser of environment variables of a program.")} (//.Parser Environment a)) (def: .public empty - {#.doc (example "An empty environment.")} Environment (dictionary.empty text.hash)) @@ -44,7 +40,5 @@ (exception.except ..unknown_property [name])))) (def: .public (result parser environment) - {#.doc (example "Executes a parser against the given environment variables." - "Does not check whether all environment variables were parsed, since they're usually an open set.")} (All [a] (-> (Parser a) Environment (Try a))) (\ try.monad map product.right (parser environment))) diff --git a/stdlib/source/library/lux/control/parser/json.lux b/stdlib/source/library/lux/control/parser/json.lux index 51c3cc2bf..65569ff9e 100644 --- a/stdlib/source/library/lux/control/parser/json.lux +++ b/stdlib/source/library/lux/control/parser/json.lux @@ -159,7 +159,7 @@ dictionary.entries (list\map (function (_ [key value]) (list (#/.String key) value))) - list.joined + list.together (//.result parser)) (#try.Failure error) (//.failure error) diff --git a/stdlib/source/library/lux/control/parser/text.lux b/stdlib/source/library/lux/control/parser/text.lux index fb2c59128..46ed6e987 100644 --- a/stdlib/source/library/lux/control/parser/text.lux +++ b/stdlib/source/library/lux/control/parser/text.lux @@ -302,7 +302,7 @@ [(def: .public (<name> parser) {#.doc (code.text ($_ /\compose "Yields " <doc_modifier> " characters as a single continuous text (as a slice)."))} (-> (Parser Text) (Parser Text)) - (|> parser <base> (\ //.monad map /.joined)))] + (|> parser <base> (\ //.monad map /.together)))] [some //.some "some"] [many //.many "many"] @@ -324,7 +324,7 @@ (-> Nat (Parser Text) (Parser Text)) (|> parser (<base> amount) - (\ //.monad map /.joined)))] + (\ //.monad map /.together)))] [exactly //.exactly "exactly"] [at_most //.at_most "at most"] @@ -347,7 +347,7 @@ (-> Nat Nat (Parser Text) (Parser Text)) (|> parser (//.between minimum additional) - (\ //.monad map /.joined))) + (\ //.monad map /.together))) (def: .public (between! minimum additional parser) (-> Nat Nat (Parser Slice) (Parser Slice)) diff --git a/stdlib/source/library/lux/control/parser/type.lux b/stdlib/source/library/lux/control/parser/type.lux index 8016080b5..e6ea2b3dd 100644 --- a/stdlib/source/library/lux/control/parser/type.lux +++ b/stdlib/source/library/lux/control/parser/type.lux @@ -197,19 +197,19 @@ all_varsL (: (List Code) (list))] (if (n.< num_args current_arg) (if (n.= 0 current_arg) - (let [varL (label (inc funcI))] - (recur (inc current_arg) + (let [varL (label (++ funcI))] + (recur (++ current_arg) (|> env' (dictionary.has funcI [headT funcL]) - (dictionary.has (inc funcI) [(#.Parameter (inc funcI)) varL])) + (dictionary.has (++ funcI) [(#.Parameter (++ funcI)) varL])) (#.Item varL all_varsL))) (let [partialI (|> current_arg (n.* 2) (n.+ funcI)) - partial_varI (inc partialI) + partial_varI (++ partialI) partial_varL (label partial_varI) partialC (` ((~ funcL) (~+ (|> (list.indices num_args) - (list\map (|>> (n.* 2) inc (n.+ funcI) label)) + (list\map (|>> (n.* 2) ++ (n.+ funcI) label)) list.reversed))))] - (recur (inc current_arg) + (recur (++ current_arg) (|> env' (dictionary.has partialI [.Nothing partialC]) (dictionary.has partial_varI [(#.Parameter partial_varI) partial_varL])) @@ -265,7 +265,7 @@ (let [env_level (n./ 2 (dictionary.size env)) parameter_level (n./ 2 idx) parameter_idx (n.% 2 idx)] - (|> env_level dec (n.- parameter_level) (n.* 2) (n.+ parameter_idx)))) + (|> env_level -- (n.- parameter_level) (n.* 2) (n.+ parameter_idx)))) (def: .public parameter (Parser Code) diff --git a/stdlib/source/library/lux/control/pipe.lux b/stdlib/source/library/lux/control/pipe.lux index 66d3f2a06..b194d6749 100644 --- a/stdlib/source/library/lux/control/pipe.lux +++ b/stdlib/source/library/lux/control/pipe.lux @@ -27,21 +27,11 @@ (syntax: .public (new> [start <code>.any body body^ prev <code>.any]) - {#.doc (example "Ignores the piped argument, and begins a new pipe." - (n.= 1 - (|> 20 - (n.* 3) - (n.+ 4) - (new> 0 [inc]))))} (in (list (` (|> (~ start) (~+ body)))))) (syntax: .public (let> [binding <code>.any body <code>.any prev <code>.any]) - {#.doc (example "Gives a name to the piped-argument, within the given expression." - (n.= 10 - (|> 5 - (let> x (n.+ x x)))))} (in (list (` (let [(~ binding) (~ prev)] (~ body)))))) @@ -55,12 +45,6 @@ else body^ _ _reversed_ branches (<>.some (<>.and body^ body^))]) - {#.doc (example "Branching for pipes." - "Both the tests and the bodies are piped-code, and must be given inside a tuple." - (|> +5 - (cond> [i.even?] [(i.* +2)] - [i.odd?] [(i.* +3)] - [(new> -1 [])])))} (with_identifiers [g!temp] (in (list (` (let [(~ g!temp) (~ prev)] (cond (~+ (do list.monad @@ -73,14 +57,6 @@ then body^ else body^ prev <code>.any]) - {#.doc (example "If-branching." - (same? (if (n.even? sample) - "even" - "odd") - (|> sample - (if> [n.even?] - [(new> "even" [])] - [(new> "odd" [])]))))} (in (list (` (cond> [(~+ test)] [(~+ then)] [(~+ else)] (~ prev)))))) @@ -88,13 +64,6 @@ (syntax: .public (when> [test body^ then body^ prev <code>.any]) - {#.doc (example "Only execute the body when the test passes." - (same? (if (n.even? sample) - (n.* 2 sample) - sample) - (|> sample - (when> [n.even?] - [(n.* 2)]))))} (in (list (` (cond> [(~+ test)] [(~+ then)] [] (~ prev)))))) @@ -102,11 +71,6 @@ (syntax: .public (loop> [test body^ then body^ prev <code>.any]) - {#.doc (example "Loops for pipes." - "Both the testing and calculating steps are pipes and must be given inside tuples." - (|> +1 - (loop> [(i.< +10)] - [inc])))} (with_identifiers [g!temp] (in (list (` (loop [(~ g!temp) (~ prev)] (if (|> (~ g!temp) (~+ test)) @@ -116,13 +80,6 @@ (syntax: .public (do> [monad <code>.any steps (<>.some body^) prev <code>.any]) - {#.doc (example "Monadic pipes." - "Each steps in the monadic computation is a pipe and must be given inside a tuple." - (|> +5 - (do> identity.monad - [(i.* +3)] - [(i.+ +4)] - [inc])))} (with_identifiers [g!temp] (case (list.reversed steps) (^ (list& last_step prev_steps)) @@ -139,11 +96,6 @@ (syntax: .public (exec> [body body^ prev <code>.any]) - {#.doc (example "Non-updating pipes." - "Will generate piped computations, but their results will not be used in the larger scope." - (|> +5 - (exec> [.nat %n log!]) - (i.* +10)))} (with_identifiers [g!temp] (in (list (` (let [(~ g!temp) (~ prev)] (exec (|> (~ g!temp) (~+ body)) @@ -151,13 +103,6 @@ (syntax: .public (tuple> [paths (<>.many body^) prev <code>.any]) - {#.doc (example "Parallel branching for pipes." - "Allows to run multiple pipelines for a value and gives you a tuple of the outputs." - (|> +5 - (tuple> [(i.* +10)] - [dec (i./ +2)] - [Int/encode])) - "Will become: [+50 +2 '+5']")} (with_identifiers [g!temp] (in (list (` (let [(~ g!temp) (~ prev)] [(~+ (list\map (function (_ body) (` (|> (~ g!temp) (~+ body)))) @@ -165,20 +110,6 @@ (syntax: .public (case> [branches (<>.many (<>.and <code>.any <code>.any)) prev <code>.any]) - {#.doc (example "Pattern-matching for pipes." - "The bodies of each branch are NOT pipes; just regular values." - (|> +5 - (case> +0 "zero" - +1 "one" - +2 "two" - +3 "three" - +4 "four" - +5 "five" - +6 "six" - +7 "seven" - +8 "eight" - +9 "nine" - _ "???")))} (in (list (` (case (~ prev) (~+ (list\join (list\map (function (_ [pattern body]) (list pattern body)) branches)))))))) diff --git a/stdlib/source/library/lux/control/reader.lux b/stdlib/source/library/lux/control/reader.lux index 09fcd2058..e1ffffd7b 100644 --- a/stdlib/source/library/lux/control/reader.lux +++ b/stdlib/source/library/lux/control/reader.lux @@ -7,21 +7,17 @@ ["." monad (#+ Monad do)]]]]) (type: .public (Reader r a) - {#.doc "Computations that have access to some environmental value."} (-> r a)) (def: .public read - {#.doc "Get the environment."} (All [r] (Reader r r)) (function (_ env) env)) (def: .public (local change proc) - {#.doc "Run computation with a locally-modified environment."} (All [r a] (-> (-> r r) (Reader r a) (Reader r a))) (|>> change proc)) (def: .public (result env proc) - {#.doc "Executes the reader against the given environment."} (All [r a] (-> r (Reader r a) a)) (proc env)) @@ -54,11 +50,10 @@ (mma env env)))) (implementation: .public (with monad) - {#.doc "Monad transformer for Reader."} (All [M] (-> (Monad M) (All [e] (Monad (All [a] (Reader e (M a))))))) (def: &functor - (functor.composite ..functor (get@ #monad.&functor monad))) + (functor.composite ..functor (value@ #monad.&functor monad))) (def: in (|>> (\ monad in) (\ ..monad in))) @@ -70,6 +65,5 @@ (result env eMa))))) (def: .public lifted - {#.doc "Lift monadic values to the Reader wrapper."} (All [M e a] (-> (M a) (Reader e (M a)))) (\ ..monad in)) diff --git a/stdlib/source/library/lux/control/region.lux b/stdlib/source/library/lux/control/region.lux index 191c6a328..9d9f579c0 100644 --- a/stdlib/source/library/lux/control/region.lux +++ b/stdlib/source/library/lux/control/region.lux @@ -19,8 +19,6 @@ (-> r (! (Try Any)))) (type: .public (Region r ! a) - {#.doc (example "A region where resources may be be claimed and where a side-effecting computation may be performed." - "Every resource is paired with a function that knows how to clean/reclaim it, to make sure there are no leaks.")} (-> [r (List (Cleaner r !))] (! [(List (Cleaner r !)) (Try a)]))) @@ -54,7 +52,6 @@ (exception.except ..clean_up_error [error output]))) (def: .public (run! monad computation) - {#.doc (example "Executes a region-based computation, with a side-effect determined by the monad.")} (All [! a] (-> (Monad !) (All [r] (Region r ! a)) (! (Try a)))) @@ -65,7 +62,6 @@ (\ ! map (list\fold clean output))))) (def: .public (acquire! monad cleaner value) - {#.doc (example "Acquire a resource while pairing it a function that knows how to reclaim it.")} (All [! a] (-> (Monad !) (-> a (! (Try Any))) a (All [r] (Region r ! a)))) (function (_ [region cleaners]) @@ -97,7 +93,7 @@ (All [r] (Apply (Region r !))))) (def: &functor - (..functor (get@ #monad.&functor super))) + (..functor (value@ #monad.&functor super))) (def: (apply ff fa) (function (_ [region cleaners]) @@ -122,7 +118,7 @@ (All [r] (Monad (Region r !))))) (def: &functor - (..functor (get@ #monad.&functor super))) + (..functor (value@ #monad.&functor super))) (def: (in value) (function (_ [region cleaners]) @@ -140,7 +136,6 @@ (in [cleaners (#try.Failure error)])))))) (def: .public (failure monad error) - {#.doc (example "Immediately fail with this 'message'.")} (All [! a] (-> (Monad !) Text (All [r] (Region r ! a)))) @@ -148,14 +143,12 @@ (\ monad in [cleaners (#try.Failure error)]))) (def: .public (except monad exception message) - {#.doc (example "Fail by throwing/raising an exception.")} (All [! e a] (-> (Monad !) (Exception e) e (All [r] (Region r ! a)))) (failure monad (exception.error exception message))) (def: .public (lifted monad operation) - {#.doc (example "Lift an effectful computation into a region-based computation.")} (All [! a] (-> (Monad !) (! a) (All [r] (Region r ! a)))) diff --git a/stdlib/source/library/lux/control/remember.lux b/stdlib/source/library/lux/control/remember.lux index 25b595b63..9c6e7a97e 100644 --- a/stdlib/source/library/lux/control/remember.lux +++ b/stdlib/source/library/lux/control/remember.lux @@ -50,13 +50,6 @@ (syntax: .public (remember [deadline ..deadline message <c>.text focus (<>.maybe <c>.any)]) - {#.doc (example "A message with an expiration date." - "Can have an optional piece of code to focus on." - (remember "2022-04-01" - "Do this, that and the other.") - (remember "2022-04-01" - "Improve the performace." - (some (complicated (computation 123)))))} (let [now (io.run! instant.now) today (instant.date now)] (if (date\< deadline today) diff --git a/stdlib/source/library/lux/control/security/capability.lux b/stdlib/source/library/lux/control/security/capability.lux index 3762c6e8f..45b2bd083 100644 --- a/stdlib/source/library/lux/control/security/capability.lux +++ b/stdlib/source/library/lux/control/security/capability.lux @@ -25,8 +25,7 @@ ["|.|" annotations]]]]]) (abstract: .public (Capability brand input output) - {#.doc (example "Represents the capability to perform an operation." - "This operation is assumed to have security implications.")} + {} (-> input output) @@ -37,7 +36,6 @@ (|>> :abstraction)) (def: .public (use capability input) - {#.doc (example "Applies a capability against its required input.")} (All [brand input output] (-> (Capability brand input output) input @@ -50,16 +48,6 @@ |declaration|.parser (<>.maybe |annotations|.parser) (<c>.form ($_ <>.and <c>.local_identifier <c>.any <c>.any))))]) - {#.doc (example "Defines a capability as a unique type, and a constructor for instances." - - (capability: (Can_Duplicate a) - (can_duplicate a [a a])) - - (let [capability (can_duplicate - (function (_ value) - [value value])) - [left right] (..use capability 123)] - (same? left right)))} (do {! meta.monad} [this_module meta.current_module_name .let [[name vars] declaration] @@ -77,7 +65,6 @@ )))) (def: .public (async capability) - {#.doc (example "Converts a synchronous I/O-based capability into an asynchronous capability.")} (All [brand input output] (-> (Capability brand input (IO output)) (Capability brand input (Async output)))) diff --git a/stdlib/source/library/lux/control/security/policy.lux b/stdlib/source/library/lux/control/security/policy.lux index ea47056bd..9e33fa86b 100644 --- a/stdlib/source/library/lux/control/security/policy.lux +++ b/stdlib/source/library/lux/control/security/policy.lux @@ -9,38 +9,32 @@ abstract]]]) (abstract: .public (Policy brand value label) - {#.doc (example "A security policy encoded as the means to 'upgrade' or 'downgrade' in a secure context.")} + {} value (type: .public (Can_Upgrade brand label value) - {#.doc (example "Represents the capacity to 'upgrade' a value.")} (-> value (Policy brand value label))) (type: .public (Can_Downgrade brand label value) - {#.doc (example "Represents the capacity to 'downgrade' a value.")} (-> (Policy brand value label) value)) (type: .public (Privilege brand label) - {#.doc (example "Represents the privilege to both 'upgrade' and 'downgrade' a value.")} {#can_upgrade (Can_Upgrade brand label) #can_downgrade (Can_Downgrade brand label)}) (type: .public (Delegation brand from to) - {#.doc (example "Represents the act of delegating policy capacities.")} (All [value] (-> (Policy brand value from) (Policy brand value to)))) (def: .public (delegation downgrade upgrade) - {#.doc (example "Delegating policy capacities.")} (All [brand from to] (-> (Can_Downgrade brand from) (Can_Upgrade brand to) (Delegation brand from to))) (|>> downgrade upgrade)) (type: .public (Context brand scope label) - {#.doc (example "A computational context with an associated policy privilege.")} (-> (Privilege brand label) (scope label))) @@ -50,27 +44,6 @@ #can_downgrade (|>> :representation)}) (def: .public (with_policy context) - {#.doc (example "Activates a security context with the priviledge to enforce it's policy." - - (type: Password - (Private Text)) - - (interface: (Policy %) - (: (-> Text (Password %)) - password) - (: (-> (Password %) Text) - unsafe)) - - (def: (policy _) - (Ex [%] (-> Any (Policy %))) - (with_policy - (: (Context Privacy Policy) - (function (_ (^open "%::.")) - (implementation - (def: (password value) - (%::can_upgrade value)) - (def: (unsafe password) - (%::can_downgrade password))))))))} (All [brand scope] (Ex [label] (-> (Context brand scope label) @@ -104,9 +77,9 @@ (def: join (|>> :representation))) ) -(template [<brand> <value> <upgrade> <downgrade> <doc>] +(template [<brand> <value> <upgrade> <downgrade>] [(abstract: .public <brand> - {#.doc <doc>} + {} Any @@ -120,10 +93,6 @@ (Can_Downgrade <brand>)) )] - [Privacy Private Can_Conceal Can_Reveal - (example "A security context for privacy." - "Private data is data which cannot be allowed to leak outside of the programmed.")] - [Safety Safe Can_Trust Can_Distrust - (example "A security context for safety." - "Safe data is data coming from outside the program which can be trusted to be properly formatted and lacking injections.")] + [Privacy Private Can_Conceal Can_Reveal] + [Safety Safe Can_Trust Can_Distrust] ) diff --git a/stdlib/source/library/lux/control/state.lux b/stdlib/source/library/lux/control/state.lux index 470751832..109491fee 100644 --- a/stdlib/source/library/lux/control/state.lux +++ b/stdlib/source/library/lux/control/state.lux @@ -7,42 +7,35 @@ [monad (#+ Monad do)]]]]) (type: .public (State s a) - {#.doc "Stateful computations."} (-> s [s a])) (def: .public get - {#.doc "Read the current state."} (All [s] (State s s)) (function (_ state) [state state])) (def: .public (put new_state) - {#.doc "Set the new state."} (All [s] (-> s (State s Any))) (function (_ state) [new_state []])) (def: .public (update change) - {#.doc "Compute the new state."} (All [s] (-> (-> s s) (State s Any))) (function (_ state) [(change state) []])) (def: .public (use user) - {#.doc "Run a function on the current state."} (All [s a] (-> (-> s a) (State s a))) (function (_ state) [state (user state)])) (def: .public (local change action) - {#.doc "Run the computation with a locally-modified state."} (All [s a] (-> (-> s s) (State s a) (State s a))) (function (_ state) (let [[state' output] (action (change state))] [state output]))) (def: .public (result state action) - {#.doc "Run a stateful computation."} (All [s a] (-> s (State s a) [s a])) (action state)) @@ -80,7 +73,6 @@ (ma state'))))) (def: .public (while condition body) - {#.doc (example "A stateful while loop.")} (All [s] (-> (State s Bit) (State s Any) (State s Any))) (do {! ..monad} [execute? condition] @@ -91,7 +83,6 @@ (in [])))) (def: .public (do_while condition body) - {#.doc (example "A stateful do-while loop.")} (All [s] (-> (State s Bit) (State s Any) (State s Any))) (do ..monad [_ body] @@ -118,16 +109,13 @@ (in [state (f a)]))))) (type: .public (+State M s a) - {#.doc "Stateful computations decorated by a monad."} (-> s (M [s a]))) (def: .public (result' state action) - {#.doc "Execute a stateful computation decorated by a monad."} (All [M s a] (-> s (+State M s a) (M [s a]))) (action state)) (implementation: .public (with monad) - {#.doc "A monad transformer to create composite stateful computations."} (All [M s] (-> (Monad M) (Monad (+State M s)))) (def: &functor (with//functor (\ monad &functor))) @@ -143,7 +131,6 @@ (sMa state'))))) (def: .public (lifted monad ma) - {#.doc "Lift monadic values to the +State wrapper."} (All [M s a] (-> (Monad M) (M a) (+State M s a))) (function (_ state) (do monad diff --git a/stdlib/source/library/lux/control/thread.lux b/stdlib/source/library/lux/control/thread.lux index 266c12afc..b70813ec9 100644 --- a/stdlib/source/library/lux/control/thread.lux +++ b/stdlib/source/library/lux/control/thread.lux @@ -15,16 +15,14 @@ abstract]]]) (type: .public (Thread ! a) - {#.doc (example "An imperative process with access to mutable values.")} (-> ! a)) (abstract: .public (Box t v) - {#.doc "A mutable box holding a value."} + {} (Array v) (def: .public (box init) - {#.doc (example "A brand-new box initialized to the given value.")} (All [a] (-> a (All [!] (Thread ! (Box ! a))))) (function (_ !) (|> (array.empty 1) @@ -32,7 +30,6 @@ :abstraction))) (def: .public (read! box) - {#.doc (example "Reads the current value in the box.")} (All [! a] (-> (Box ! a) (Thread ! a))) (function (_ !) (for {@.old @@ -54,21 +51,18 @@ @.scheme ("scheme array read" 0 (:representation box))}))) (def: .public (write! value box) - {#.doc (example "Mutates the value in the box.")} (All [a] (-> a (All [!] (-> (Box ! a) (Thread ! Any))))) (function (_ !) (|> box :representation (array.write! 0 value) :abstraction))) ) (def: .public (result thread) - {#.doc (example "Executes the imperative thread in a self-contained way.")} (All [a] (-> (All [!] (Thread ! a)) a)) (thread [])) (def: .public io - {#.doc (example "Transforms the imperative thread into an I/O computation.")} (All [a] (-> (All [!] (Thread ! a)) (IO a))) @@ -105,7 +99,6 @@ ((ffa !) !)))) (def: .public (update! f box) - {#.doc (example "Update a box's value by applying a function to it.")} (All [a !] (-> (-> a a) (Box ! a) (Thread ! a))) (do ..monad [old (read! box) diff --git a/stdlib/source/library/lux/control/try.lux b/stdlib/source/library/lux/control/try.lux index c7dc9f1d9..05d7d69ea 100644 --- a/stdlib/source/library/lux/control/try.lux +++ b/stdlib/source/library/lux/control/try.lux @@ -10,7 +10,6 @@ ["." location]]]]) (type: .public (Try a) - {#.doc (example "A computation that can fail with an error message.")} (#Failure Text) (#Success a)) @@ -60,12 +59,11 @@ ma))) (implementation: .public (with monad) - {#.doc (example "Enhances a monad with error-handling functionality.")} ... TODO: Replace (All [a] (! (Try a))) with (functor.Then ! Try) (All [!] (-> (Monad !) (Monad (All [a] (! (Try a)))))) (def: &functor - (functor.composite (get@ #monad.&functor monad) ..functor)) + (functor.composite (value@ #monad.&functor monad) ..functor)) (def: in (|>> (\ ..monad in) @@ -82,7 +80,6 @@ Mea)))) (def: .public (lifted monad) - {#.doc (example "Wraps a monadic value with error-handling machinery.")} (All [! a] (-> (Monad !) (-> (! a) (! (Try a))))) (\ monad map (\ ..monad in))) @@ -102,9 +99,6 @@ ))) (def: .public (trusted try) - {#.doc (example "Assumes a Try value succeeded, and yields its value." - "If it didn't, raises the error as a runtime error." - "WARNING: Use with caution.")} (All [a] (-> (Try a) a)) (case try (#Success value) @@ -133,13 +127,6 @@ (name_of ..of_maybe)))))) (macro: .public (else tokens compiler) - {#.doc (example "Allows you to provide a default value that will be used" - "if a (Try x) value turns out to be #Failure." - "Note: the expression for the default value will not be computed if the base computation succeeds." - (= "bar" - (else "foo" (#..Success "bar"))) - (= "foo" - (else "foo" (#..Failure "KABOOM!"))))} (case tokens (^ (list else try)) (#Success [compiler (list (` (case (~ try) diff --git a/stdlib/source/library/lux/control/writer.lux b/stdlib/source/library/lux/control/writer.lux index 18a0fc7e1..194822f60 100644 --- a/stdlib/source/library/lux/control/writer.lux +++ b/stdlib/source/library/lux/control/writer.lux @@ -9,12 +9,10 @@ ["." monad (#+ Monad do)]]]]) (type: .public (Writer log value) - {#.doc "Represents a value with an associated 'log' to record arbitrary information."} {#log log #value value}) (def: .public (write message) - {#.doc "Write a value to the log."} (All [log] (-> log (Writer log Any))) [message []]) @@ -51,11 +49,10 @@ [(\ monoid compose log1 log2) a]))) (implementation: .public (with monoid monad) - {#.doc (example "Enhances a monad with Writer functionality.")} (All [l M] (-> (Monoid l) (Monad M) (Monad (All [a] (M (Writer l a)))))) (def: &functor - (functor.composite (get@ #monad.&functor monad) + (functor.composite (value@ #monad.&functor monad) ..functor)) (def: in @@ -73,7 +70,6 @@ (in [(\ monoid compose l1 l2) a])))) (def: .public (lifted monoid monad) - {#.doc (example "Wraps a monadic value with Writer machinery.")} (All [l M a] (-> (Monoid l) (Monad M) (-> (M a) (M (Writer l a))))) diff --git a/stdlib/source/library/lux/data/binary.lux b/stdlib/source/library/lux/data/binary.lux index cff9714e2..13b9b5a9d 100644 --- a/stdlib/source/library/lux/data/binary.lux +++ b/stdlib/source/library/lux/data/binary.lux @@ -102,8 +102,8 @@ (array.Array (I64 Any))))) (template: (!size binary) - [(for {@.old (ffi.array_length binary) - @.jvm (ffi.array_length binary) + [(for {@.old (ffi.length binary) + @.jvm (ffi.length binary) @.js (|> binary @@ -122,8 +122,8 @@ (array.size binary))]) (template: (!read index binary) - [(for {@.old (..i64 (ffi.array_read index binary)) - @.jvm (..i64 (ffi.array_read index binary)) + [(for {@.old (..i64 (ffi.read! index binary)) + @.jvm (..i64 (ffi.read! index binary)) @.js (|> binary @@ -155,8 +155,8 @@ (:as ..Binary))]) (template: (!write index value binary) - [(for {@.old (ffi.array_write index (..byte value) binary) - @.jvm (ffi.array_write index (..byte value) binary) + [(for {@.old (ffi.write! index (..byte value) binary) + @.jvm (ffi.write! index (..byte value) binary) @.js (!!write .Frac n.frac "js array write" index value binary) @.python (!!write (I64 Any) (:as (I64 Any)) "python array write" index value binary) @@ -190,13 +190,13 @@ ... Default (array.empty size))) -(def: .public (fold f init binary) +(def: .public (aggregate f init binary) (All [a] (-> (-> I64 a a) a Binary a)) (let [size (..!size binary)] (loop [index 0 output init] (if (n.< size index) - (recur (inc index) (f (!read index binary) output)) + (recur (++ index) (f (!read index binary) output)) output)))) (def: .public (read/8! index binary) @@ -307,7 +307,7 @@ (if (n.< limit index) (and (n.= (!read index reference) (!read index sample)) - (recur (inc index))) + (recur (++ index))) true)))))))) (for {@.old (as_is) @@ -341,7 +341,7 @@ (exec (!write (n.+ target_offset index) (!read (n.+ source_offset index) source) target) - (recur (inc index))) + (recur (++ index))) (#try.Success target)))))))) (def: .public (slice offset length binary) diff --git a/stdlib/source/library/lux/data/collection/array.lux b/stdlib/source/library/lux/data/collection/array.lux index 5d306f773..ae6aa7b96 100644 --- a/stdlib/source/library/lux/data/collection/array.lux +++ b/stdlib/source/library/lux/data/collection/array.lux @@ -205,7 +205,7 @@ count (#.Some _) - (inc count))) + (++ count))) 0 (list.indices (size array)))) @@ -239,12 +239,12 @@ (if (n.< arr_size idx) (case (read! idx xs) #.None - (recur (inc idx)) + (recur (++ idx)) (#.Some x) (if (p x) (#.Some x) - (recur (inc idx)))) + (recur (++ idx)))) #.None)))) (def: .public (example+ p xs) @@ -256,12 +256,12 @@ (if (n.< arr_size idx) (case (read! idx xs) #.None - (recur (inc idx)) + (recur (++ idx)) (#.Some x) (if (p idx x) (#.Some [idx x]) - (recur (inc idx)))) + (recur (++ idx)))) #.None)))) (def: .public (clone xs) @@ -281,25 +281,25 @@ (def: .public (of_list xs) (All [a] (-> (List a) (Array a))) (product.right (list\fold (function (_ x [idx arr]) - [(inc idx) (write! idx x arr)]) + [(++ idx) (write! idx x arr)]) [0 (empty (list.size xs))] xs))) (def: underflow Nat - (dec 0)) + (-- 0)) (def: .public (list array) {#.doc (.example "Yields a list with every non-empty item in the array.")} (All [a] (-> (Array a) (List a))) - (loop [idx (dec (size array)) + (loop [idx (-- (size array)) output #.End] (case idx (^ (static ..underflow)) output _ - (recur (dec idx) + (recur (-- idx) (case (read! idx array) (#.Some head) (#.Item head output) @@ -310,14 +310,14 @@ (def: .public (list' default array) {#.doc (.example "Like 'list', but uses the 'default' value when encountering an empty cell in the array.")} (All [a] (-> a (Array a) (List a))) - (loop [idx (dec (size array)) + (loop [idx (-- (size array)) output #.End] (case idx (^ (static ..underflow)) output _ - (recur (dec idx) + (recur (-- idx) (#.Item (maybe.else default (read! idx array)) output))))) @@ -382,10 +382,10 @@ (if (n.< arr_size idx) (case (read! idx xs) #.None - (recur so_far (inc idx)) + (recur so_far (++ idx)) (#.Some value) - (recur (f value so_far) (inc idx))) + (recur (f value so_far) (++ idx))) so_far))))) (template [<name> <init> <op>] @@ -399,10 +399,10 @@ (case (..read! idx array) (#.Some value) (<op> (predicate value) - (recur (inc idx))) + (recur (++ idx))) #.None - (recur (inc idx))) + (recur (++ idx))) <init>)))))] [every? true and] diff --git a/stdlib/source/library/lux/data/collection/bits.lux b/stdlib/source/library/lux/data/collection/bits.lux index e5e85e361..b5059ea8a 100644 --- a/stdlib/source/library/lux/data/collection/bits.lux +++ b/stdlib/source/library/lux/data/collection/bits.lux @@ -66,10 +66,10 @@ [(def: .public (<name> index input) (-> Nat Bits Bits) (let [[chunk_index bit_index] (n./% chunk_size index)] - (loop [size|output (n.max (inc chunk_index) + (loop [size|output (n.max (++ chunk_index) (array.size input)) output ..empty] - (let [idx|output (dec size|output)] + (let [idx|output (-- size|output)] (if (n.> 0 size|output) (case (|> (..chunk idx|output input) (cond> [(new> (n.= chunk_index idx|output) [])] @@ -80,7 +80,7 @@ .nat) 0 ... TODO: Remove 'no_op' once new-luxc is the official compiler. - (let [no_op (recur (dec size|output) output)] + (let [no_op (recur (-- size|output) output)] no_op) chunk @@ -88,7 +88,7 @@ (: Bits (array.empty size|output)) output) (array.write! idx|output (.i64 chunk)) - (recur (dec size|output)))) + (recur (-- size|output)))) output)))))] [one i64.one] @@ -106,7 +106,7 @@ (i64.and (..chunk idx reference)) ("lux i64 =" empty_chunk) .not) - (recur (inc idx))) + (recur (++ idx))) #0)))) (def: .public (not input) @@ -118,10 +118,10 @@ size|output (loop [size|output size|output output ..empty] - (let [idx (dec size|output)] + (let [idx (-- size|output)] (case (|> input (..chunk idx) i64.not .nat) 0 - (recur (dec size|output) output) + (recur (-- size|output) output) chunk (if (n.> 0 size|output) @@ -129,7 +129,7 @@ (: Bits (array.empty size|output)) output) (array.write! idx (.i64 chunk)) - (recur (dec size|output))) + (recur (-- size|output))) output)))))) (template [<name> <op>] @@ -143,20 +143,20 @@ size|output (loop [size|output size|output output ..empty] - (let [idx (dec size|output)] + (let [idx (-- size|output)] (if (n.> 0 size|output) (case (|> (..chunk idx subject) (<op> (..chunk idx param)) .nat) 0 - (recur (dec size|output) output) + (recur (-- size|output) output) chunk (|> (if (same? ..empty output) (: Bits (array.empty size|output)) output) (array.write! idx (.i64 chunk)) - (recur (dec size|output)))) + (recur (-- size|output)))) output)))))] [and i64.and] @@ -175,5 +175,5 @@ (.and ("lux i64 =" (..chunk idx reference) (..chunk idx sample)) - (recur (inc idx))) + (recur (++ idx))) #1))))) diff --git a/stdlib/source/library/lux/data/collection/dictionary.lux b/stdlib/source/library/lux/data/collection/dictionary.lux index fb7aaaa83..6773a3b95 100644 --- a/stdlib/source/library/lux/data/collection/dictionary.lux +++ b/stdlib/source/library/lux/data/collection/dictionary.lux @@ -133,10 +133,10 @@ (def: (array\has idx value old_array) (All [a] (-> Index a (Array a) (Array a))) (let [old_size (array.size old_array)] - (|> (array.empty (inc old_size)) + (|> (array.empty (++ old_size)) (array.copy! idx 0 old_array 0) (array.write! idx value) - (array.copy! (n.- idx old_size) idx old_array (inc idx))))) + (array.copy! (n.- idx old_size) idx old_array (++ idx))))) ... Creates a copy of an array with an index set to a particular value. (def: (array\revised idx value array) @@ -151,10 +151,10 @@ ... Shrinks a copy of the array by removing the space at index. (def: (array\lacks idx array) (All [a] (-> Index (Array a) (Array a))) - (let [new_size (dec (array.size array))] + (let [new_size (-- (array.size array))] (|> (array.empty new_size) (array.copy! idx 0 array 0) - (array.copy! (n.- idx new_size) (inc idx) array idx)))) + (array.copy! (n.- idx new_size) (++ idx) array idx)))) ... Increases the level-shift by the branching-exponent, to explore ... levels further down the tree. @@ -164,7 +164,7 @@ (def: hierarchy_mask Bit_Map - (dec hierarchy_nodes_size)) + (-- hierarchy_nodes_size)) ... Gets the branching-factor sized section of the hash corresponding ... to a particular level, and uses that as an index into the array. @@ -214,7 +214,7 @@ ... associated with it. (def: bit_position_mask (-> Bit_Position Bit_Map) - dec) + --) ... The index on the base array, based on its bit-position. (def: (base_index bit_position bitmap) @@ -240,12 +240,12 @@ #.None [insertion_idx node] (#.Some sub_node) (if (n.= except_idx idx) [insertion_idx node] - [(inc insertion_idx) + [(++ insertion_idx) [(with_bit_position (to_bit_position idx) bitmap) (array.write! insertion_idx (#.Left sub_node) base)]]) ))) [0 [clean_bitmap - (array.empty (dec h_size))]] + (array.empty (-- h_size))]] (list.indices (array.size h_array))))) ... When #Base nodes grow too large, they're promoted to #Hierarchy to @@ -263,7 +263,7 @@ (product.right (list\fold (function (_ hierarchy_idx (^@ default [base_idx h_array])) (if (with_bit_position? (to_bit_position hierarchy_idx) bitmap) - [(inc base_idx) + [(++ base_idx) (case (array.read! base_idx base) (#.Some (#.Left sub_node)) (array.write! hierarchy_idx sub_node h_array) @@ -304,7 +304,7 @@ [_size sub_node] _ - [(inc _size) empty_node])] + [(++ _size) empty_node])] (#Hierarchy _size' (array\revised idx (node\has (level_up level) hash key val key_hash sub_node) hierarchy))) @@ -357,7 +357,7 @@ (if (n.>= ..promotion_threshold base_count) ... If so, promote it to a #Hierarchy node, and add the new ... KV-pair as a singleton node to it. - (#Hierarchy (inc base_count) + (#Hierarchy (++ base_count) (|> base (promotion node\has key_hash level bitmap) (array.write! (level_index level hash) @@ -415,7 +415,7 @@ ... If so, perform it. (#Base (demotion idx [h_size h_array])) ... Otherwise, just clear the space. - (#Hierarchy (dec h_size) (array\lacks' idx h_array))) + (#Hierarchy (-- h_size) (array\lacks' idx h_array))) ... But if the sub_removal yielded a non_empty node, then ... just update the hiearchy branch. (#Hierarchy h_size (array\revised idx sub_node' h_array))))))) @@ -562,7 +562,7 @@ (def: .public key_hash (All [k v] (-> (Dictionary k v) (Hash k))) - (get@ #..hash)) + (value@ #..hash)) (def: .public (empty key_hash) {#.doc (example "An empty dictionary.")} @@ -737,4 +737,4 @@ (All [k] (Functor (Dictionary k))) (def: (map f fa) - (update@ #root (\ ..functor' map f) fa))) + (revised@ #root (\ ..functor' map f) fa))) diff --git a/stdlib/source/library/lux/data/collection/dictionary/ordered.lux b/stdlib/source/library/lux/data/collection/dictionary/ordered.lux index 84e883b1d..567c1f457 100644 --- a/stdlib/source/library/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/library/lux/data/collection/dictionary/ordered.lux @@ -60,60 +60,60 @@ ... TODO: Must improve it as soon as bug is fixed. (def: .public (value key dict) (All [k v] (-> k (Dictionary k v) (Maybe v))) - (let [... (^open "_\.") (get@ #&order dict) + (let [... (^open "_\.") (value@ #&order dict) ] - (loop [node (get@ #root dict)] + (loop [node (value@ #root dict)] (case node #.None #.None (#.Some node) - (let [node_key (get@ #key node)] + (let [node_key (value@ #key node)] (cond (\ dict = node_key key) ... (_\= node_key key) - (#.Some (get@ #value node)) + (#.Some (value@ #value node)) (\ dict < node_key key) ... (_\< node_key key) - (recur (get@ #left node)) + (recur (value@ #left node)) - ... (_\> (get@ #key node) key) - (recur (get@ #right node)))) + ... (_\> (value@ #key node) key) + (recur (value@ #right node)))) )))) ... TODO: Doing inneficient access of Order functions due to compiler bug. ... TODO: Must improve it as soon as bug is fixed. (def: .public (key? dict key) (All [k v] (-> (Dictionary k v) k Bit)) - (let [... (^open "_\.") (get@ #&order dict) + (let [... (^open "_\.") (value@ #&order dict) ] - (loop [node (get@ #root dict)] + (loop [node (value@ #root dict)] (case node #.None #0 (#.Some node) - (let [node_key (get@ #key node)] + (let [node_key (value@ #key node)] (or (\ dict = node_key key) ... (_\= node_key key) (if (\ dict < node_key key) ... (_\< node_key key) - (recur (get@ #left node)) - (recur (get@ #right node))))))))) + (recur (value@ #left node)) + (recur (value@ #right node))))))))) (template [<name> <side>] [(def: .public (<name> dict) {#.doc (example (~~ (template.text ["Yields value under the " <name> "imum key."])))} (All [k v] (-> (Dictionary k v) (Maybe v))) - (case (get@ #root dict) + (case (value@ #root dict) #.None #.None (#.Some node) (loop [node node] - (case (get@ <side> node) + (case (value@ <side> node) #.None - (#.Some (get@ #value node)) + (#.Some (value@ #value node)) (#.Some side) (recur side)))))] @@ -124,14 +124,14 @@ (def: .public (size dict) (All [k v] (-> (Dictionary k v) Nat)) - (loop [node (get@ #root dict)] + (loop [node (value@ #root dict)] (case node #.None 0 (#.Some node) - (inc (n.+ (recur (get@ #left node)) - (recur (get@ #right node))))))) + (++ (n.+ (recur (value@ #left node)) + (recur (value@ #right node))))))) (def: .public empty? (All [k v] (-> (Dictionary k v) Bit)) @@ -140,9 +140,9 @@ (template [<name> <other_color> <self_color> <no_change>] [(def: (<name> self) (All [k v] (-> (Node k v) (Node k v))) - (case (get@ #color self) + (case (value@ #color self) <other_color> - (set@ #color <self_color> self) + (with@ #color <self_color> self) <self_color> <no_change> @@ -154,46 +154,46 @@ (def: (with_left addition center) (All [k v] (-> (Node k v) (Node k v) (Node k v))) - (case (get@ #color center) + (case (value@ #color center) #Red - (red (get@ #key center) - (get@ #value center) + (red (value@ #key center) + (value@ #value center) (#.Some addition) - (get@ #right center)) + (value@ #right center)) #Black (with_expansions - [<default_behavior> (as_is (black (get@ #key center) - (get@ #value center) + [<default_behavior> (as_is (black (value@ #key center) + (value@ #value center) (#.Some addition) - (get@ #right center)))] - (case (get@ #color addition) + (value@ #right center)))] + (case (value@ #color addition) #Red - (case (get@ #left addition) + (case (value@ #left addition) (^multi (#.Some left) - {(get@ #color left) #Red}) - (red (get@ #key addition) - (get@ #value addition) + {(value@ #color left) #Red}) + (red (value@ #key addition) + (value@ #value addition) (#.Some (blackened left)) - (#.Some (black (get@ #key center) - (get@ #value center) - (get@ #right addition) - (get@ #right center)))) + (#.Some (black (value@ #key center) + (value@ #value center) + (value@ #right addition) + (value@ #right center)))) _ - (case (get@ #right addition) + (case (value@ #right addition) (^multi (#.Some right) - {(get@ #color right) #Red}) - (red (get@ #key right) - (get@ #value right) - (#.Some (black (get@ #key addition) - (get@ #value addition) - (get@ #left addition) - (get@ #left right))) - (#.Some (black (get@ #key center) - (get@ #value center) - (get@ #right right) - (get@ #right center)))) + {(value@ #color right) #Red}) + (red (value@ #key right) + (value@ #value right) + (#.Some (black (value@ #key addition) + (value@ #value addition) + (value@ #left addition) + (value@ #left right))) + (#.Some (black (value@ #key center) + (value@ #value center) + (value@ #right right) + (value@ #right center)))) _ <default_behavior>)) @@ -203,46 +203,46 @@ (def: (with_right addition center) (All [k v] (-> (Node k v) (Node k v) (Node k v))) - (case (get@ #color center) + (case (value@ #color center) #Red - (red (get@ #key center) - (get@ #value center) - (get@ #left center) + (red (value@ #key center) + (value@ #value center) + (value@ #left center) (#.Some addition)) #Black (with_expansions - [<default_behavior> (as_is (black (get@ #key center) - (get@ #value center) - (get@ #left center) + [<default_behavior> (as_is (black (value@ #key center) + (value@ #value center) + (value@ #left center) (#.Some addition)))] - (case (get@ #color addition) + (case (value@ #color addition) #Red - (case (get@ #right addition) + (case (value@ #right addition) (^multi (#.Some right) - {(get@ #color right) #Red}) - (red (get@ #key addition) - (get@ #value addition) - (#.Some (black (get@ #key center) - (get@ #value center) - (get@ #left center) - (get@ #left addition))) + {(value@ #color right) #Red}) + (red (value@ #key addition) + (value@ #value addition) + (#.Some (black (value@ #key center) + (value@ #value center) + (value@ #left center) + (value@ #left addition))) (#.Some (blackened right))) _ - (case (get@ #left addition) + (case (value@ #left addition) (^multi (#.Some left) - {(get@ #color left) #Red}) - (red (get@ #key left) - (get@ #value left) - (#.Some (black (get@ #key center) - (get@ #value center) - (get@ #left center) - (get@ #left left))) - (#.Some (black (get@ #key addition) - (get@ #value addition) - (get@ #right left) - (get@ #right addition)))) + {(value@ #color left) #Red}) + (red (value@ #key left) + (value@ #value left) + (#.Some (black (value@ #key center) + (value@ #value center) + (value@ #left center) + (value@ #left left))) + (#.Some (black (value@ #key addition) + (value@ #value addition) + (value@ #right left) + (value@ #right addition)))) _ <default_behavior>)) @@ -252,17 +252,17 @@ (def: .public (has key value dict) (All [k v] (-> k v (Dictionary k v) (Dictionary k v))) - (let [(^open "_\.") (get@ #&order dict) - root' (loop [?root (get@ #root dict)] + (let [(^open "_\.") (value@ #&order dict) + root' (loop [?root (value@ #root dict)] (case ?root #.None (#.Some (red key value #.None #.None)) (#.Some root) - (let [reference (get@ #key root)] + (let [reference (value@ #key root)] (`` (cond (~~ (template [<comp> <tag> <add>] [(<comp> reference key) - (let [side_root (get@ <tag> root) + (let [side_root (value@ <tag> root) outcome (recur side_root)] (if (same? side_root outcome) ?root @@ -270,39 +270,39 @@ root))))] [_\< #left ..with_left] - [(order.> (get@ #&order dict)) #right ..with_right] + [(order.> (value@ #&order dict)) #right ..with_right] )) ... (_\= reference key) - (#.Some (set@ #value value root)) + (#.Some (with@ #value value root)) ))) ))] - (set@ #root root' dict))) + (with@ #root root' dict))) (def: (left_balanced key value ?left ?right) (All [k v] (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?left (^multi (#.Some left) - {(get@ #color left) #Red} - {(get@ #left left) (#.Some left>>left)} - {(get@ #color left>>left) #Red}) - (red (get@ #key left) - (get@ #value left) + {(value@ #color left) #Red} + {(value@ #left left) (#.Some left>>left)} + {(value@ #color left>>left) #Red}) + (red (value@ #key left) + (value@ #value left) (#.Some (blackened left>>left)) - (#.Some (black key value (get@ #right left) ?right))) + (#.Some (black key value (value@ #right left) ?right))) (^multi (#.Some left) - {(get@ #color left) #Red} - {(get@ #right left) (#.Some left>>right)} - {(get@ #color left>>right) #Red}) - (red (get@ #key left>>right) - (get@ #value left>>right) - (#.Some (black (get@ #key left) - (get@ #value left) - (get@ #left left) - (get@ #left left>>right))) + {(value@ #color left) #Red} + {(value@ #right left) (#.Some left>>right)} + {(value@ #color left>>right) #Red}) + (red (value@ #key left>>right) + (value@ #value left>>right) + (#.Some (black (value@ #key left) + (value@ #value left) + (value@ #left left) + (value@ #left left>>right))) (#.Some (black key value - (get@ #right left>>right) + (value@ #right left>>right) ?right))) _ @@ -312,25 +312,25 @@ (All [k v] (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?right (^multi (#.Some right) - {(get@ #color right) #Red} - {(get@ #right right) (#.Some right>>right)} - {(get@ #color right>>right) #Red}) - (red (get@ #key right) - (get@ #value right) - (#.Some (black key value ?left (get@ #left right))) + {(value@ #color right) #Red} + {(value@ #right right) (#.Some right>>right)} + {(value@ #color right>>right) #Red}) + (red (value@ #key right) + (value@ #value right) + (#.Some (black key value ?left (value@ #left right))) (#.Some (blackened right>>right))) (^multi (#.Some right) - {(get@ #color right) #Red} - {(get@ #left right) (#.Some right>>left)} - {(get@ #color right>>left) #Red}) - (red (get@ #key right>>left) - (get@ #value right>>left) - (#.Some (black key value ?left (get@ #left right>>left))) - (#.Some (black (get@ #key right) - (get@ #value right) - (get@ #right right>>left) - (get@ #right right)))) + {(value@ #color right) #Red} + {(value@ #left right) (#.Some right>>left)} + {(value@ #color right>>left) #Red}) + (red (value@ #key right>>left) + (value@ #value right>>left) + (#.Some (black key value ?left (value@ #left right>>left))) + (#.Some (black (value@ #key right) + (value@ #value right) + (value@ #right right>>left) + (value@ #right right)))) _ (black key value ?left ?right))) @@ -339,26 +339,26 @@ (All [k v] (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?left (^multi (#.Some left) - {(get@ #color left) #Red}) + {(value@ #color left) #Red}) (red key value (#.Some (blackened left)) ?right) _ (case ?right (^multi (#.Some right) - {(get@ #color right) #Black}) + {(value@ #color right) #Black}) (right_balanced key value ?left (#.Some (reddened right))) (^multi (#.Some right) - {(get@ #color right) #Red} - {(get@ #left right) (#.Some right>>left)} - {(get@ #color right>>left) #Black}) - (red (get@ #key right>>left) - (get@ #value right>>left) - (#.Some (black key value ?left (get@ #left right>>left))) - (#.Some (right_balanced (get@ #key right) - (get@ #value right) - (get@ #right right>>left) - (\ maybe.functor map reddened (get@ #right right))))) + {(value@ #color right) #Red} + {(value@ #left right) (#.Some right>>left)} + {(value@ #color right>>left) #Black}) + (red (value@ #key right>>left) + (value@ #value right>>left) + (#.Some (black key value ?left (value@ #left right>>left))) + (#.Some (right_balanced (value@ #key right) + (value@ #value right) + (value@ #right right>>left) + (\ maybe.functor map reddened (value@ #right right))))) _ (panic! error_message)) @@ -368,26 +368,26 @@ (All [k v] (-> k v (Maybe (Node k v)) (Maybe (Node k v)) (Node k v))) (case ?right (^multi (#.Some right) - {(get@ #color right) #Red}) + {(value@ #color right) #Red}) (red key value ?left (#.Some (blackened right))) _ (case ?left (^multi (#.Some left) - {(get@ #color left) #Black}) + {(value@ #color left) #Black}) (left_balanced key value (#.Some (reddened left)) ?right) (^multi (#.Some left) - {(get@ #color left) #Red} - {(get@ #right left) (#.Some left>>right)} - {(get@ #color left>>right) #Black}) - (red (get@ #key left>>right) - (get@ #value left>>right) - (#.Some (left_balanced (get@ #key left) - (get@ #value left) - (\ maybe.functor map reddened (get@ #left left)) - (get@ #left left>>right))) - (#.Some (black key value (get@ #right left>>right) ?right))) + {(value@ #color left) #Red} + {(value@ #right left) (#.Some left>>right)} + {(value@ #color left>>right) #Black}) + (red (value@ #key left>>right) + (value@ #value left>>right) + (#.Some (left_balanced (value@ #key left) + (value@ #value left) + (\ maybe.functor map reddened (value@ #left left)) + (value@ #left left>>right))) + (#.Some (black key value (value@ #right left>>right) ?right))) _ (panic! error_message) @@ -403,70 +403,70 @@ ?left [(#.Some left) (#.Some right)] - (case [(get@ #color left) (get@ #color right)] + (case [(value@ #color left) (value@ #color right)] [#Red #Red] (do maybe.monad - [fused (prepended (get@ #right left) (get@ #right right))] - (case (get@ #color fused) + [fused (prepended (value@ #right left) (value@ #right right))] + (case (value@ #color fused) #Red - (in (red (get@ #key fused) - (get@ #value fused) - (#.Some (red (get@ #key left) - (get@ #value left) - (get@ #left left) - (get@ #left fused))) - (#.Some (red (get@ #key right) - (get@ #value right) - (get@ #right fused) - (get@ #right right))))) + (in (red (value@ #key fused) + (value@ #value fused) + (#.Some (red (value@ #key left) + (value@ #value left) + (value@ #left left) + (value@ #left fused))) + (#.Some (red (value@ #key right) + (value@ #value right) + (value@ #right fused) + (value@ #right right))))) #Black - (in (red (get@ #key left) - (get@ #value left) - (get@ #left left) - (#.Some (red (get@ #key right) - (get@ #value right) + (in (red (value@ #key left) + (value@ #value left) + (value@ #left left) + (#.Some (red (value@ #key right) + (value@ #value right) (#.Some fused) - (get@ #right right))))))) + (value@ #right right))))))) [#Red #Black] - (#.Some (red (get@ #key left) - (get@ #value left) - (get@ #left left) - (prepended (get@ #right left) + (#.Some (red (value@ #key left) + (value@ #value left) + (value@ #left left) + (prepended (value@ #right left) ?right))) [#Black #Red] - (#.Some (red (get@ #key right) - (get@ #value right) + (#.Some (red (value@ #key right) + (value@ #value right) (prepended ?left - (get@ #left right)) - (get@ #right right))) + (value@ #left right)) + (value@ #right right))) [#Black #Black] (do maybe.monad - [fused (prepended (get@ #right left) (get@ #left right))] - (case (get@ #color fused) + [fused (prepended (value@ #right left) (value@ #left right))] + (case (value@ #color fused) #Red - (in (red (get@ #key fused) - (get@ #value fused) - (#.Some (black (get@ #key left) - (get@ #value left) - (get@ #left left) - (get@ #left fused))) - (#.Some (black (get@ #key right) - (get@ #value right) - (get@ #right fused) - (get@ #right right))))) + (in (red (value@ #key fused) + (value@ #value fused) + (#.Some (black (value@ #key left) + (value@ #value left) + (value@ #left left) + (value@ #left fused))) + (#.Some (black (value@ #key right) + (value@ #value right) + (value@ #right fused) + (value@ #right right))))) #Black - (in (without_left (get@ #key left) - (get@ #value left) - (get@ #left left) - (#.Some (black (get@ #key right) - (get@ #value right) + (in (without_left (value@ #key left) + (value@ #value left) + (value@ #left left) + (#.Some (black (value@ #key right) + (value@ #value right) (#.Some fused) - (get@ #right right))))) + (value@ #right right))))) )) ) @@ -475,45 +475,45 @@ (def: .public (lacks key dict) (All [k v] (-> k (Dictionary k v) (Dictionary k v))) - (let [(^open "_\.") (get@ #&order dict) - [?root found?] (loop [?root (get@ #root dict)] + (let [(^open "_\.") (value@ #&order dict) + [?root found?] (loop [?root (value@ #root dict)] (case ?root #.None [#.None #0] (#.Some root) - (let [root_key (get@ #key root) - root_val (get@ #value root)] + (let [root_key (value@ #key root) + root_val (value@ #value root)] (if (_\= root_key key) - [(prepended (get@ #left root) - (get@ #right root)) + [(prepended (value@ #left root) + (value@ #right root)) #1] (let [go_left? (_\< root_key key)] (case (recur (if go_left? - (get@ #left root) - (get@ #right root))) + (value@ #left root) + (value@ #right root))) [#.None #0] [#.None #0] [side_outcome _] (if go_left? - (case (get@ #left root) + (case (value@ #left root) (^multi (#.Some left) - {(get@ #color left) #Black}) - [(#.Some (without_left root_key root_val side_outcome (get@ #right root))) + {(value@ #color left) #Black}) + [(#.Some (without_left root_key root_val side_outcome (value@ #right root))) #0] _ - [(#.Some (red root_key root_val side_outcome (get@ #right root))) + [(#.Some (red root_key root_val side_outcome (value@ #right root))) #0]) - (case (get@ #right root) + (case (value@ #right root) (^multi (#.Some right) - {(get@ #color right) #Black}) - [(#.Some (without_right root_key root_val (get@ #left root) side_outcome)) + {(value@ #color right) #Black}) + [(#.Some (without_right root_key root_val (value@ #left root) side_outcome)) #0] _ - [(#.Some (red root_key root_val (get@ #left root) side_outcome)) + [(#.Some (red root_key root_val (value@ #left root) side_outcome)) #0]) ))) )) @@ -521,11 +521,11 @@ (case ?root #.None (if found? - (set@ #root ?root dict) + (with@ #root ?root dict) dict) (#.Some root) - (set@ #root (#.Some (blackened root)) dict) + (with@ #root (#.Some (blackened root)) dict) ))) (def: .public (revised key transform dict) @@ -547,27 +547,27 @@ (template [<name> <type> <output>] [(def: .public (<name> dict) (All [k v] (-> (Dictionary k v) (List <type>))) - (loop [node (get@ #root dict)] + (loop [node (value@ #root dict)] (case node #.None (list) (#.Some node') ($_ list\compose - (recur (get@ #left node')) + (recur (value@ #left node')) (list <output>) - (recur (get@ #right node'))))))] + (recur (value@ #right node'))))))] - [entries [k v] [(get@ #key node') (get@ #value node')]] - [keys k (get@ #key node')] - [values v (get@ #value node')] + [entries [k v] [(value@ #key node') (value@ #value node')]] + [keys k (value@ #key node')] + [values v (value@ #value node')] ) (implementation: .public (equivalence (^open ",\.")) (All [k v] (-> (Equivalence v) (Equivalence (Dictionary k v)))) (def: (= reference sample) - (let [(^open "/\.") (get@ #&order reference)] + (let [(^open "/\.") (value@ #&order reference)] (loop [entriesR (entries reference) entriesS (entries sample)] (case [entriesR entriesS] diff --git a/stdlib/source/library/lux/data/collection/list.lux b/stdlib/source/library/lux/data/collection/list.lux index 8cba7efb2..cb52d478d 100644 --- a/stdlib/source/library/lux/data/collection/list.lux +++ b/stdlib/source/library/lux/data/collection/list.lux @@ -34,14 +34,14 @@ (#.Item x xs') (fold f (f x init) xs')))) -(def: .public (folds f init inputs) +(def: .public (aggregates f init inputs) (All [a b] (-> (-> a b b) b (List a) (List b))) (case inputs #.End (list init) (#.Item [head tail]) - (#.Item [init (folds f (f head init) tail)]))) + (#.Item [init (aggregates f (f head init) tail)]))) (def: .public (reversed xs) (All [a] @@ -100,8 +100,8 @@ <then>) <else>))] - [first (#.Item x (first (dec n) xs')) #.End] - [after (after (dec n) xs') xs] + [first (#.Item x (first (-- n) xs')) #.End] + [after (after (-- n) xs') xs] ) (template [<name> <then> <else>] @@ -130,7 +130,7 @@ [#.End #.End] (#.Item x xs') - (let [[tail rest] (split_at (dec n) xs')] + (let [[tail rest] (split_at (-- n) xs')] [(#.Item x tail) rest])) [#.End xs])) @@ -170,7 +170,7 @@ (-> Nat a (List a))) (case n 0 #.End - _ (#.Item x (repeated (dec n) x)))) + _ (#.Item x (repeated (-- n) x)))) (def: (iterations' f x) (All [a] @@ -263,21 +263,16 @@ (fold (function (_ _ acc) (n.+ 1 acc)) 0 list)) (template [<name> <init> <op>] - [(def: .public (<name> predicate xs) + [(def: .public (<name> predicate items) (All [a] (-> (Predicate a) (List a) Bit)) - (loop [xs xs] - (case xs - #.End - <init> - - (#.Item x xs') - (case (predicate x) - <init> - (recur xs') + (case items + #.End + <init> - output - output))))] + (#.Item head tail) + (<op> (predicate head) + (<name> predicate tail))))] [every? #1 and] [any? #0 or] @@ -292,9 +287,9 @@ #.None (#.Item x xs') - (if (n.= 0 i) - (#.Some x) - (item (dec i) xs')))) + (case i + 0 (#.Some x) + _ (item (-- i) xs')))) (implementation: .public (equivalence Equivalence<a>) (All [a] (-> (Equivalence a) (Equivalence (List a)))) @@ -428,9 +423,9 @@ (def: .public (indices size) {#.doc "Produces all the valid indices for a given size."} (All [a] (-> Nat (List Nat))) - (if (n.= 0 size) - (list) - (|> size dec (enum.range n.enum 0)))) + (case size + 0 (list) + _ (|> size -- (enum.range n.enum 0)))) (def: (identifier$ name) (-> Text Code) @@ -454,9 +449,9 @@ _ (undefined)) output' ("lux text concat" digit output) input' (n./ 10 input)] - (if (n.= 0 input') - output' - (recur input' output'))))) + (case input' + 0 output' + _ (recur input' output'))))) (macro: .public (zipped tokens state) {#.doc (.example "Create list zippers with the specified number of input lists." @@ -475,7 +470,7 @@ type_vars)) (List [(~+ type_vars)])))) vars+lists (|> indices - (map inc) + (map ++) (map (function (_ idx) (let [base (nat\encode idx)] [(identifier$ base) @@ -523,7 +518,7 @@ type_vars)) (List (~ g!return_type))))) vars+lists (|> indices - (map inc) + (map ++) (map (function (_ idx) (let [base (nat\encode idx)] [(identifier$ base) @@ -583,7 +578,7 @@ (#.Some (#.Item x tail))) )) -(def: .public joined +(def: .public together {#.doc (.example "The sequential combination of all the lists.")} (All [a] (-> (List (List a)) (List a))) (\ ..monad join)) @@ -593,7 +588,8 @@ (All [M] (-> (Monad M) (Monad (All [a] (M (List a)))))) (def: &functor - (functor.composite (get@ #monad.&functor monad) ..functor)) + (functor.composite (value@ #monad.&functor monad) + ..functor)) (def: in (|>> (\ ..monad in) (\ monad in))) @@ -604,9 +600,9 @@ ... TODO: Remove this version ASAP and use one below. lla (for {@.old (: ((:parameter 0) (List (List (:parameter 1)))) - (monad.seq ! lMla))} - (monad.seq ! lMla))] - (in (..joined lla))))) + (monad.all ! lMla))} + (monad.all ! lMla))] + (in (..together lla))))) (def: .public (lifted monad) {#.doc (.example "Wraps a monadic value with List machinery.")} @@ -623,7 +619,7 @@ #.End (#.Item x xs') - (#.Item [idx x] (recur (inc idx) xs'))))) + (#.Item [idx x] (recur (++ idx) xs'))))) (macro: .public (when tokens state) {#.doc (.example "Can be used as a guard in (co)monadic be/do expressions." diff --git a/stdlib/source/library/lux/data/collection/queue.lux b/stdlib/source/library/lux/data/collection/queue.lux index 3e017d382..a54543eae 100644 --- a/stdlib/source/library/lux/data/collection/queue.lux +++ b/stdlib/source/library/lux/data/collection/queue.lux @@ -34,7 +34,7 @@ (def: .public front {#.doc (example "Yields the first value in the queue, if any.")} (All [a] (-> (Queue a) (Maybe a))) - (|>> (get@ #front) list.head)) + (|>> (value@ #front) list.head)) (def: .public (size queue) (All [a] (-> (Queue a) Nat)) @@ -44,7 +44,7 @@ (def: .public empty? (All [a] (-> (Queue a) Bit)) - (|>> (get@ #front) list.empty?)) + (|>> (value@ #front) list.empty?)) (def: .public (member? equivalence queue member) (All [a] (-> (Equivalence a) (Queue a) a Bit)) @@ -54,7 +54,7 @@ (def: .public (next queue) (All [a] (-> (Queue a) (Queue a))) - (case (get@ #front queue) + (case (value@ #front queue) ... Empty... (^ (.list)) queue @@ -62,22 +62,22 @@ ... Front has dried up... (^ (.list _)) (|> queue - (set@ #front (list.reversed (get@ #rear queue))) - (set@ #rear (.list))) + (with@ #front (list.reversed (value@ #rear queue))) + (with@ #rear (.list))) ... Consume front! (^ (.list& _ front')) (|> queue - (set@ #front front')))) + (with@ #front front')))) (def: .public (end val queue) (All [a] (-> a (Queue a) (Queue a))) - (case (get@ #front queue) + (case (value@ #front queue) #.End - (set@ #front (.list val) queue) + (with@ #front (.list val) queue) _ - (update@ #rear (|>> (#.Item val)) queue))) + (revised@ #rear (|>> (#.Item val)) queue))) (implementation: .public (equivalence super) (All [a] (-> (Equivalence a) (Equivalence (Queue a)))) @@ -91,5 +91,5 @@ (Functor Queue) (def: (map f fa) - {#front (|> fa (get@ #front) (list\map f)) - #rear (|> fa (get@ #rear) (list\map f))})) + {#front (|> fa (value@ #front) (list\map f)) + #rear (|> fa (value@ #rear) (list\map f))})) diff --git a/stdlib/source/library/lux/data/collection/row.lux b/stdlib/source/library/lux/data/collection/row.lux index 6a4b88587..e77ef1bdf 100644 --- a/stdlib/source/library/lux/data/collection/row.lux +++ b/stdlib/source/library/lux/data/collection/row.lux @@ -17,8 +17,8 @@ ["." maybe] ["." try (#+ Try)] ["." exception (#+ exception:)] - ["p" parser - ["s" code (#+ Parser)]]] + ["<>" parser + ["<.>" code (#+ Parser)]]] [data ["." product] [collection @@ -29,8 +29,8 @@ ["." code]] [math [number - ["." i64] - ["n" nat]]]]]) + ["n" nat] + ["." i64]]]]]) (type: (Node a) (#Base (Array a)) @@ -66,7 +66,7 @@ (def: branch_idx_mask Nat - (dec full_node_size)) + (-- full_node_size)) (def: branch_idx (-> Index Index) @@ -80,7 +80,7 @@ (-> Nat Nat) (if (n.< full_node_size row_size) 0 - (|> (dec row_size) + (|> (-- row_size) (i64.right_shifted branching_exponent) (i64.left_shifted branching_exponent)))) @@ -99,7 +99,7 @@ (def: (with_tail size level tail parent) (All [a] (-> Nat Level (Base a) (Hierarchy a) (Hierarchy a))) - (let [sub_idx (branch_idx (i64.right_shifted level (dec size))) + (let [sub_idx (branch_idx (i64.right_shifted level (-- size))) ... If we're currently on a bottom node sub_node (if (n.= branching_exponent level) ... Just add the tail to it @@ -122,7 +122,7 @@ (def: (expanded_tail val tail) (All [a] (-> a (Base a) (Base a))) (let [tail_size (array.size tail)] - (|> (array.empty (inc tail_size)) + (|> (array.empty (++ tail_size)) (array.copy! tail_size 0 tail 0) (array.write! tail_size val)))) @@ -198,45 +198,45 @@ (def: .public (size row) (All [a] (-> (Row a) Nat)) - (get@ #size row)) + (value@ #size row)) -(def: .public (add val row) +(def: .public (suffix val row) (All [a] (-> a (Row a) (Row a))) ... Check if there is room in the tail. - (let [row_size (get@ #size row)] + (let [row_size (value@ #size row)] (if (|> row_size (n.- (tail_off row_size)) (n.< full_node_size)) ... If so, append to it. (|> row - (update@ #size inc) - (update@ #tail (..expanded_tail val))) + (revised@ #size ++) + (revised@ #tail (..expanded_tail val))) ... Otherwise, push tail into the tree ... -------------------------------------------------------- ... Will the root experience an overflow with this addition? - (|> (if (n.> (i64.left_shifted (get@ #level row) 1) + (|> (if (n.> (i64.left_shifted (value@ #level row) 1) (i64.right_shifted branching_exponent row_size)) ... If so, a brand-new root must be established, that is ... 1-level taller. (|> row - (set@ #root (|> (for {@.old - (: (Hierarchy (:parameter 0)) - (empty_hierarchy []))} - (empty_hierarchy [])) - (array.write! 0 (#Hierarchy (get@ #root row))) - (array.write! 1 (..path (get@ #level row) (get@ #tail row))))) - (update@ #level level_up)) + (with@ #root (|> (for {@.old + (: (Hierarchy (:parameter 0)) + (empty_hierarchy []))} + (empty_hierarchy [])) + (array.write! 0 (#Hierarchy (value@ #root row))) + (array.write! 1 (..path (value@ #level row) (value@ #tail row))))) + (revised@ #level level_up)) ... Otherwise, just push the current tail onto the root. (|> row - (update@ #root (..with_tail row_size (get@ #level row) (get@ #tail row))))) + (revised@ #root (..with_tail row_size (value@ #level row) (value@ #tail row))))) ... Finally, update the size of the row and grow a new ... tail with the new element as it's sole member. - (update@ #size inc) - (set@ #tail (..tail val))) + (revised@ #size ++) + (with@ #tail (..tail val))) ))) (exception: incorrect_row_structure) (exception: .public [a] (index_out_of_bounds {row (Row a)} {index Nat}) - (exception.report ["Size" (\ n.decimal encode (get@ #size row))] + (exception.report ["Size" (\ n.decimal encode (value@ #size row))] ["Index" (\ n.decimal encode index)])) (exception: base_was_not_found) @@ -244,15 +244,15 @@ (def: .public (within_bounds? row idx) {#.doc (example "Determines whether the index is within the bounds of the row.")} (All [a] (-> (Row a) Nat Bit)) - (n.< (get@ #size row) idx)) + (n.< (value@ #size row) idx)) (def: (base_for idx row) (All [a] (-> Index (Row a) (Try (Base a)))) (if (within_bounds? row idx) - (if (n.>= (tail_off (get@ #size row)) idx) - (#try.Success (get@ #tail row)) - (loop [level (get@ #level row) - hierarchy (get@ #root row)] + (if (n.>= (tail_off (value@ #size row)) idx) + (#try.Success (value@ #tail row)) + (loop [level (value@ #level row) + hierarchy (value@ #root row)] (case [(n.> branching_exponent level) (array.read! (branch_idx (i64.right_shifted level idx)) hierarchy)] [#1 (#.Some (#Hierarchy sub))] @@ -281,16 +281,16 @@ (def: .public (has idx val row) (All [a] (-> Nat a (Row a) (Try (Row a)))) - (let [row_size (get@ #size row)] + (let [row_size (value@ #size row)] (if (within_bounds? row idx) (#try.Success (if (n.>= (tail_off row_size) idx) - (update@ #tail (for {@.old - (: (-> (Base (:parameter 0)) (Base (:parameter 0))) - (|>> array.clone (array.write! (branch_idx idx) val)))} - (|>> array.clone (array.write! (branch_idx idx) val))) - row) - (update@ #root (has' (get@ #level row) idx val) - row))) + (revised@ #tail (for {@.old + (: (-> (Base (:parameter 0)) (Base (:parameter 0))) + (|>> array.clone (array.write! (branch_idx idx) val)))} + (|>> array.clone (array.write! (branch_idx idx) val))) + row) + (revised@ #root (has' (value@ #level row) idx val) + row))) (exception.except ..index_out_of_bounds [row idx])))) (def: .public (revised idx f row) @@ -299,9 +299,9 @@ [val (..item idx row)] (..has idx (f val) row))) -(def: .public (pop row) +(def: .public (prefix row) (All [a] (-> (Row a) (Row a))) - (case (get@ #size row) + (case (value@ #size row) 0 empty @@ -310,19 +310,19 @@ row_size (if (|> row_size (n.- (tail_off row_size)) (n.> 1)) - (let [old_tail (get@ #tail row) - new_tail_size (dec (array.size old_tail))] + (let [old_tail (value@ #tail row) + new_tail_size (-- (array.size old_tail))] (|> row - (update@ #size dec) - (set@ #tail (|> (array.empty new_tail_size) - (array.copy! new_tail_size 0 old_tail 0))))) + (revised@ #size --) + (with@ #tail (|> (array.empty new_tail_size) + (array.copy! new_tail_size 0 old_tail 0))))) (maybe.trusted (do maybe.monad [new_tail (base_for (n.- 2 row_size) row) - .let [[level' root'] (let [init_level (get@ #level row)] + .let [[level' root'] (let [init_level (value@ #level row)] (loop [level init_level root (maybe.else (empty_hierarchy []) - (without_tail row_size init_level (get@ #root row)))] + (without_tail row_size init_level (value@ #root row)))] (if (n.> branching_exponent level) (case [(array.read! 1 root) (array.read! 0 root)] [#.None (#.Some (#Hierarchy sub_node))] @@ -335,20 +335,20 @@ [level root]) [level root])))]] (in (|> row - (update@ #size dec) - (set@ #level level') - (set@ #root root') - (set@ #tail new_tail)))))) + (revised@ #size --) + (with@ #level level') + (with@ #root root') + (with@ #tail new_tail)))))) )) (def: .public (list row) (All [a] (-> (Row a) (List a))) - (list\compose (list' (#Hierarchy (get@ #root row))) - (list' (#Base (get@ #tail row))))) + (list\compose (list' (#Hierarchy (value@ #root row))) + (list' (#Base (value@ #tail row))))) (def: .public of_list (All [a] (-> (List a) (Row a))) - (list\fold ..add ..empty)) + (list\fold ..suffix ..empty)) (def: .public (member? a/Equivalence row val) (All [a] (-> (Equivalence a) (Row a) a Bit)) @@ -356,9 +356,9 @@ (def: .public empty? (All [a] (-> (Row a) Bit)) - (|>> (get@ #size) (n.= 0))) + (|>> (value@ #size) (n.= 0))) -(syntax: .public (row [elems (p.some s.any)]) +(syntax: .public (row [elems (<>.some <code>.any)]) {#.doc (example "Row literals." (row 12 34 56 78 90))} (in (.list (` (..of_list (.list (~+ elems))))))) @@ -381,12 +381,12 @@ (All [a] (-> (Equivalence a) (Equivalence (Row a)))) (def: (= v1 v2) - (and (n.= (get@ #size v1) (get@ #size v2)) + (and (n.= (value@ #size v1) (value@ #size v2)) (let [(^open "node\.") (node_equivalence Equivalence<a>)] - (and (node\= (#Base (get@ #tail v1)) - (#Base (get@ #tail v2))) - (node\= (#Hierarchy (get@ #root v1)) - (#Hierarchy (get@ #root v2)))))))) + (and (node\= (#Base (value@ #tail v1)) + (#Base (value@ #tail v2))) + (node\= (#Hierarchy (value@ #root v1)) + (#Hierarchy (value@ #root v2)))))))) (implementation: node_fold (Fold Node) @@ -409,8 +409,8 @@ (fold f (fold f init - (#Hierarchy (get@ #root xs))) - (#Base (get@ #tail xs)))))) + (#Hierarchy (value@ #root xs))) + (#Base (value@ #tail xs)))))) (implementation: .public monoid (All [a] (Monoid (Row a))) @@ -418,7 +418,7 @@ (def: identity ..empty) (def: (compose xs ys) - (list\fold add xs (..list ys)))) + (list\fold suffix xs (..list ys)))) (implementation: node_functor (Functor Node) @@ -435,10 +435,10 @@ (Functor Row) (def: (map f xs) - {#level (get@ #level xs) - #size (get@ #size xs) - #root (|> xs (get@ #root) (array\map (\ node_functor map f))) - #tail (|> xs (get@ #tail) (array\map f))})) + {#level (value@ #level xs) + #size (value@ #size xs) + #root (|> xs (value@ #root) (array\map (\ node_functor map f))) + #tail (|> xs (value@ #tail) (array\map f))})) (implementation: .public apply (Apply Row) @@ -469,7 +469,7 @@ (All [a] (-> (Row a) (Row a))) (|>> ..list list.reversed - (list\fold add ..empty))) + (list\fold suffix ..empty))) (template [<name> <array> <init> <op>] [(def: .public <name> diff --git a/stdlib/source/library/lux/data/collection/sequence.lux b/stdlib/source/library/lux/data/collection/sequence.lux index a7d2cc0b4..42cd682df 100644 --- a/stdlib/source/library/lux/data/collection/sequence.lux +++ b/stdlib/source/library/lux/data/collection/sequence.lux @@ -65,7 +65,7 @@ (let [[head tail] (//.result sequence)] (case idx 0 head - _ (item (dec idx) tail)))) + _ (item (-- idx) tail)))) (template [<taker> <dropper> <pred_type> <pred_test> <pred_step> <post_test>] [(def: .public (<taker> pred xs) @@ -85,7 +85,7 @@ xs)))] [while until (-> a Bit) (pred x) pred |>] - [first after Nat (n.= 0 pred) (dec pred) not] + [first after Nat (n.= 0 pred) (-- pred) not] ) (template [<splitter> <pred_type> <pred_test> <pred_step>] @@ -99,7 +99,7 @@ [(#.Item [x tail]) next]))))] [split_when (-> a Bit) (pred x) pred] - [split_at Nat (n.= 0 pred) (dec pred)] + [split_at Nat (n.= 0 pred) (-- pred)] ) (def: .public (only predicate sequence) diff --git a/stdlib/source/library/lux/data/collection/set/ordered.lux b/stdlib/source/library/lux/data/collection/set/ordered.lux index 6ef570c31..28bbf1876 100644 --- a/stdlib/source/library/lux/data/collection/set/ordered.lux +++ b/stdlib/source/library/lux/data/collection/set/ordered.lux @@ -60,13 +60,13 @@ (All [a] (-> (Set a) (Set a) (Set a))) (|> (..list right) (list.only (..member? left)) - (..of_list (get@ #/.&order (:representation right))))) + (..of_list (value@ #/.&order (:representation right))))) (def: .public (difference param subject) (All [a] (-> (Set a) (Set a) (Set a))) (|> (..list subject) (list.only (|>> (..member? param) not)) - (..of_list (get@ #/.&order (:representation subject))))) + (..of_list (value@ #/.&order (:representation subject))))) (implementation: .public equivalence (All [a] (Equivalence (Set a))) diff --git a/stdlib/source/library/lux/data/collection/tree.lux b/stdlib/source/library/lux/data/collection/tree.lux index 451fc6143..112932a50 100644 --- a/stdlib/source/library/lux/data/collection/tree.lux +++ b/stdlib/source/library/lux/data/collection/tree.lux @@ -25,10 +25,10 @@ {#.doc (example "All the leaf values of the tree, in order.")} (All [a] (-> (Tree a) (List a))) (|> tree - (get@ #children) + (value@ #children) (list\map flat) list\join - (#.Item (get@ #value tree)))) + (#.Item (value@ #value tree)))) (def: .public (leaf value) (All [a] (-> a (Tree a))) @@ -69,22 +69,22 @@ (All [a] (-> (Equivalence a) (Equivalence (Tree a)))) (def: (= tx ty) - (and (\ super = (get@ #value tx) (get@ #value ty)) - (\ (list.equivalence (equivalence super)) = (get@ #children tx) (get@ #children ty))))) + (and (\ super = (value@ #value tx) (value@ #value ty)) + (\ (list.equivalence (equivalence super)) = (value@ #children tx) (value@ #children ty))))) (implementation: .public functor (Functor Tree) (def: (map f fa) - {#value (f (get@ #value fa)) + {#value (f (value@ #value fa)) #children (list\map (map f) - (get@ #children fa))})) + (value@ #children fa))})) (implementation: .public fold (Fold Tree) (def: (fold f init tree) (list\fold (function (_ tree' init') (fold f init' tree')) - (f (get@ #value tree) + (f (value@ #value tree) init) - (get@ #children tree)))) + (value@ #children tree)))) diff --git a/stdlib/source/library/lux/data/collection/tree/finger.lux b/stdlib/source/library/lux/data/collection/tree/finger.lux index 9c2844be7..588cb4e5a 100644 --- a/stdlib/source/library/lux/data/collection/tree/finger.lux +++ b/stdlib/source/library/lux/data/collection/tree/finger.lux @@ -33,7 +33,7 @@ (template [<name> <tag> <output>] [(def: .public <name> (All [@ t v] (-> (Tree @ t v) <output>)) - (|>> :representation (get@ <tag>)))] + (|>> :representation (value@ <tag>)))] [tag #tag t] [root #root (Either v [(Tree @ t v) (Tree @ t v)])] @@ -57,7 +57,7 @@ (def: .public (value tree) (All [@ t v] (-> (Tree @ t v) v)) - (case (get@ #root (:representation tree)) + (case (value@ #root (:representation tree)) (0 #0 value) value @@ -66,9 +66,9 @@ (def: .public (tags tree) (All [@ t v] (-> (Tree @ t v) (List t))) - (case (get@ #root (:representation tree)) + (case (value@ #root (:representation tree)) (0 #0 value) - (list (get@ #tag (:representation tree))) + (list (value@ #tag (:representation tree))) (0 #1 [left right]) (list\compose (tags left) @@ -76,7 +76,7 @@ (def: .public (values tree) (All [@ t v] (-> (Tree @ t v) (List v))) - (case (get@ #root (:representation tree)) + (case (value@ #root (:representation tree)) (0 #0 value) (list value) @@ -99,8 +99,8 @@ (0 #1 [left right]) (let [shifted_tag (tag//compose _tag (..tag left))] (if (predicate shifted_tag) - (recur _tag (get@ #root (:representation left))) - (recur shifted_tag (get@ #root (:representation right)))))))) + (recur _tag (value@ #root (:representation left))) + (recur shifted_tag (value@ #root (:representation right)))))))) #.None))) ) diff --git a/stdlib/source/library/lux/data/collection/tree/zipper.lux b/stdlib/source/library/lux/data/collection/tree/zipper.lux index b6fb27355..6d1709c55 100644 --- a/stdlib/source/library/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/library/lux/data/collection/tree/zipper.lux @@ -50,23 +50,23 @@ (def: .public tree (All [a] (-> (Zipper a) (Tree a))) - (get@ #node)) + (value@ #node)) (def: .public value (All [a] (-> (Zipper a) a)) - (get@ [#node #//.value])) + (value@ [#node #//.value])) (def: .public (set value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (set@ [#node #//.value] value zipper)) + (with@ [#node #//.value] value zipper)) (def: .public (update transform zipper) (All [a] (-> (-> a a) (Zipper a) (Zipper a))) - (update@ [#node #//.value] transform zipper)) + (revised@ [#node #//.value] transform zipper)) (def: children (All [a] (-> (Zipper a) (List (Tree a)))) - (get@ [#node #//.children])) + (value@ [#node #//.children])) (def: .public leaf? (All [a] (-> (Zipper a) Bit)) @@ -78,7 +78,7 @@ (def: .public (start? zipper) (All [a] (-> (Zipper a) Bit)) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None true @@ -92,7 +92,7 @@ #.None (#.Item head tail) - (#.Some {#family (#.Some {#parent (set@ [#node #//.children] (list) zipper) + (#.Some {#family (#.Some {#parent (with@ [#node #//.children] (list) zipper) #lefts #.End #rights tail}) #node head}))) @@ -100,37 +100,37 @@ (def: .public (up zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) (do maybe.monad - [family (get@ #family zipper)] + [family (value@ #family zipper)] (in (let [(^slots [#parent #lefts #rights]) family] (for {@.old - (update@ #node (: (-> (Tree (:parameter 0)) - (Tree (:parameter 0))) - (set@ #//.children (list\compose (list.reversed lefts) - (#.Item (get@ #node zipper) - rights)))) - parent)} - (set@ [#node #//.children] - (list\compose (list.reversed lefts) - (#.Item (get@ #node zipper) - rights)) - parent)))))) + (revised@ #node (: (-> (Tree (:parameter 0)) + (Tree (:parameter 0))) + (with@ #//.children (list\compose (list.reversed lefts) + (#.Item (value@ #node zipper) + rights)))) + parent)} + (with@ [#node #//.children] + (list\compose (list.reversed lefts) + (#.Item (value@ #node zipper) + rights)) + parent)))))) (template [<one> <all> <side> <op_side>] [(def: .public (<one> zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) (#.Some family) - (case (get@ <side> family) + (case (value@ <side> family) (#.Item next side') (#.Some (for {@.old {#family (#.Some (|> family - (set@ <side> side') - (update@ <op_side> (|>> (#.Item (get@ #node zipper)))))) + (with@ <side> side') + (revised@ <op_side> (|>> (#.Item (value@ #node zipper)))))) #node next}} (let [move (: (All [a] (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ side' zipper) - (|>> (set@ <side> side') - (update@ <op_side> (|>> (#.Item (get@ #node zipper)))))))] + (|>> (with@ <side> side') + (revised@ <op_side> (|>> (#.Item (value@ #node zipper)))))))] {#family (#.Some (move side' zipper family)) #node next}))) @@ -142,26 +142,26 @@ (def: .public (<all> zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None #.None (#.Some family) - (case (list.reversed (get@ <side> family)) + (case (list.reversed (value@ <side> family)) #.End #.None (#.Item last prevs) (#.Some (for {@.old {#family (#.Some (|> family - (set@ <side> #.End) - (update@ <op_side> (|>> (#.Item (get@ #node zipper)) - (list\compose prevs))))) + (with@ <side> #.End) + (revised@ <op_side> (|>> (#.Item (value@ #node zipper)) + (list\compose prevs))))) #node last}} (let [move (: (All [a] (-> (List (Tree a)) (Zipper a) (Family Zipper a) (Family Zipper a))) (function (_ prevs zipper) - (|>> (set@ <side> #.End) - (update@ <op_side> (|>> (#.Item (get@ #node zipper)) - (list\compose prevs))))))] + (|>> (with@ <side> #.End) + (revised@ <op_side> (|>> (#.Item (value@ #node zipper)) + (list\compose prevs))))))] {#family (#.Some (move prevs zipper family)) #node last}))))))] @@ -245,44 +245,44 @@ (def: .public (interpose value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (update@ [#node #//.children] - (|>> (//.branch value) list) - zipper)) + (revised@ [#node #//.children] + (|>> (//.branch value) list) + zipper)) (def: .public (adopt value zipper) (All [a] (-> a (Zipper a) (Zipper a))) - (update@ [#node #//.children] - (|>> (#.Item (//.leaf value))) - zipper)) + (revised@ [#node #//.children] + (|>> (#.Item (//.leaf value))) + zipper)) (def: .public (remove zipper) (All [a] (-> (Zipper a) (Maybe (Zipper a)))) (do maybe.monad - [family (get@ #family zipper)] - (case (get@ #lefts family) + [family (value@ #family zipper)] + (case (value@ #lefts family) #.End - (in (set@ [#node #//.children] - (get@ #rights family) - (get@ #parent family))) + (in (with@ [#node #//.children] + (value@ #rights family) + (value@ #parent family))) (#.Item next side) (in (|> zipper - (set@ #family (|> family - (set@ #lefts side) - #.Some)) - (set@ #node next)))))) + (with@ #family (|> family + (with@ #lefts side) + #.Some)) + (with@ #node next)))))) (template [<name> <side>] [(def: .public (<name> value zipper) (All [a] (-> a (Zipper a) (Maybe (Zipper a)))) - (case (get@ #family zipper) + (case (value@ #family zipper) #.None #.None (#.Some family) - (#.Some (set@ #family - (#.Some (update@ <side> (|>> (#.Item (//.leaf value))) family)) - zipper))))] + (#.Some (with@ #family + (#.Some (revised@ <side> (|>> (#.Item (//.leaf value))) family)) + zipper))))] [insert_left #lefts] [insert_right #rights] @@ -304,14 +304,14 @@ (def: &functor ..functor) - (def: out (get@ [#node #//.value])) + (def: out (value@ [#node #//.value])) (def: (split (^slots [#family #node])) (let [tree_splitter (: (All [a] (-> (Tree a) (Tree (Zipper a)))) (function (tree_splitter tree) {#//.value (..zipper tree) #//.children (|> tree - (get@ #//.children) + (value@ #//.children) (list\map tree_splitter))}))] {#family (maybe\map (function (_ (^slots [#parent #lefts #rights])) {#parent (split parent) diff --git a/stdlib/source/library/lux/data/color.lux b/stdlib/source/library/lux/data/color.lux index 19cdb0b66..1cebc0408 100644 --- a/stdlib/source/library/lux/data/color.lux +++ b/stdlib/source/library/lux/data/color.lux @@ -28,7 +28,7 @@ abstract]]]) (def: rgb_limit 256) -(def: top (dec rgb_limit)) +(def: top (-- rgb_limit)) (def: rgb_factor (|> top .int int.frac)) @@ -420,7 +420,7 @@ (let [[hue saturation brightness] (hsb color) spread (..normal spread)] (list\map (function (_ idx) - (of_hsb [(|> idx inc .int int.frac (f.* spread) (f.+ hue) ..normal) + (of_hsb [(|> idx ++ .int int.frac (f.* spread) (f.+ hue) ..normal) saturation brightness])) (list.indices variations))))) @@ -431,7 +431,7 @@ (let [[hue saturation brightness] (hsb color) spread (..normal spread)] (|> (list.indices variations) - (list\map (|>> inc .int int.frac + (list\map (|>> ++ .int int.frac (f.* spread) (f.+ brightness) ..normal diff --git a/stdlib/source/library/lux/data/format/binary.lux b/stdlib/source/library/lux/data/format/binary.lux index e23ade3fb..7a6ccadba 100644 --- a/stdlib/source/library/lux/data/format/binary.lux +++ b/stdlib/source/library/lux/data/format/binary.lux @@ -93,12 +93,12 @@ (^template [<number> <tag> <writer>] [(<tag> caseV) (let [[caseS caseT] (<writer> caseV)] - [(.inc caseS) + [(.++ caseS) (function (_ [offset binary]) (|> binary (binary.write/8! offset <number>) try.trusted - [(.inc offset)] + [(.++ offset)] caseT))])]) ([0 #.Left left] [1 #.Right right]) @@ -243,12 +243,12 @@ (^template [<number> <tag> <writer>] [(<tag> caseV) (let [[caseS caseT] (<writer> caseV)] - [(.inc caseS) + [(.++ caseS) (function (_ [offset binary]) (|> binary (binary.write/8! offset <number>) try.trusted - [(.inc offset)] + [(.++ offset)] caseT))])]) ([0 #.Primitive (..and ..text (..list recur))] [1 #.Sum pair] @@ -278,12 +278,12 @@ (^template [<number> <tag> <writer>] [(<tag> caseV) (let [[caseS caseT] (<writer> caseV)] - [(.inc caseS) + [(.++ caseS) (function (_ [offset binary]) (|> binary (binary.write/8! offset <number>) try.trusted - [(.inc offset)] + [(.++ offset)] caseT))])]) ([0 #.Bit ..bit] [1 #.Nat ..nat] diff --git a/stdlib/source/library/lux/data/format/css.lux b/stdlib/source/library/lux/data/format/css.lux index 7ec9a0d35..8b3a9270c 100644 --- a/stdlib/source/library/lux/data/format/css.lux +++ b/stdlib/source/library/lux/data/format/css.lux @@ -51,19 +51,19 @@ (def: .public (font font) (-> Font (CSS Special)) - (let [with_unicode (case (get@ #/font.unicode_range font) + (let [with_unicode (case (value@ #/font.unicode_range font) (#.Some unicode_range) - (let [unicode_range' (format "U+" (\ nat.hex encode (get@ #/font.start unicode_range)) - "-" (\ nat.hex encode (get@ #/font.end unicode_range)))] + (let [unicode_range' (format "U+" (\ nat.hex encode (value@ #/font.start unicode_range)) + "-" (\ nat.hex encode (value@ #/font.end unicode_range)))] (list ["unicode-range" unicode_range'])) #.None (list))] - (|> (list& ["font-family" (get@ #/font.family font)] - ["src" (format "url(" (get@ #/font.source font) ")")] - ["font-stretch" (|> font (get@ #/font.stretch) (maybe.else /value.normal_stretch) /value.value)] - ["font-style" (|> font (get@ #/font.style) (maybe.else /value.normal_style) /value.value)] - ["font-weight" (|> font (get@ #/font.weight) (maybe.else /value.normal_weight) /value.value)] + (|> (list& ["font-family" (value@ #/font.family font)] + ["src" (format "url(" (value@ #/font.source font) ")")] + ["font-stretch" (|> font (value@ #/font.stretch) (maybe.else /value.normal_stretch) /value.value)] + ["font-style" (|> font (value@ #/font.style) (maybe.else /value.normal_style) /value.value)] + ["font-weight" (|> font (value@ #/font.weight) (maybe.else /value.normal_weight) /value.value)] with_unicode) (list\map (function (_ [property value]) (format property ": " value ";"))) @@ -95,8 +95,8 @@ (:abstraction (format "@keyframes " (/value.value animation) " {" (|> frames (list\map (function (_ frame) - (format (/value.percentage (get@ #when frame)) " {" - (/style.inline (get@ #what frame)) + (format (/value.percentage (value@ #when frame)) " {" + (/style.inline (value@ #what frame)) "}"))) (text.interposed ..css_separator)) "}"))) diff --git a/stdlib/source/library/lux/data/format/css/value.lux b/stdlib/source/library/lux/data/format/css/value.lux index 0c8e8f70f..54de6d97a 100644 --- a/stdlib/source/library/lux/data/format/css/value.lux +++ b/stdlib/source/library/lux/data/format/css/value.lux @@ -988,7 +988,7 @@ (-> Percentage Text) (|>> :representation)) - (def: percentage_limit Nat (.inc 100)) + (def: percentage_limit Nat (.++ 100)) (def: .public (%% value) (-> Nat Percentage) @@ -1131,7 +1131,7 @@ (def: .public (clip rectangle) (-> Rectangle (Value Clip)) (`` (..apply "rect" (list (~~ (template [<side>] - [(:representation (get@ <side> rectangle))] + [(:representation (value@ <side> rectangle))] [#top] [#right] [#bottom] [#left])))))) diff --git a/stdlib/source/library/lux/data/format/tar.lux b/stdlib/source/library/lux/data/format/tar.lux index 7f1346df1..c26a7a751 100644 --- a/stdlib/source/library/lux/data/format/tar.lux +++ b/stdlib/source/library/lux/data/format/tar.lux @@ -44,7 +44,7 @@ max_size) padding (|> "0" (list.repeated padding_size) - text.joined)] + text.together)] (format padding number))) (def: blank " ") @@ -61,12 +61,12 @@ (|> ..octal_size (list.repeated <size>) (list\fold n.* 1) - inc)) + ++)) (exception: .public (<exception> {value Nat}) (exception.report ["Value" (%.nat value)] - ["Maximum" (%.nat (dec <limit>))])) + ["Maximum" (%.nat (-- <limit>))])) (abstract: .public <type> {} @@ -171,7 +171,7 @@ (def: checksum (-> Binary Nat) - (binary.fold n.+ 0)) + (binary.aggregate n.+ 0)) (def: checksum_checksum (|> ..dummy_checksum @@ -216,10 +216,10 @@ (def: ascii? (-> Text Bit) (|>> (\ utf8.codec encode) - (binary.fold (function (_ char verdict) - (.and verdict - (n.<= ..last_ascii char))) - true))) + (binary.aggregate (function (_ char verdict) + (.and verdict + (n.<= ..last_ascii char))) + true))) (exception: .public (not_ascii {text Text}) (exception.report @@ -232,17 +232,17 @@ (-> Binary (Try Binary)) (case (binary.size string) 0 (#try.Success string) - size (loop [end (dec size)] + size (loop [end (-- size)] (case end 0 (#try.Success (\ utf8.codec encode "")) _ (do try.monad [last_char (binary.read/8! end string)] (`` (case (.nat last_char) (^ (char (~~ (static ..null)))) - (recur (dec end)) + (recur (-- end)) _ - (binary.slice 0 (inc end) string)))))))) + (binary.slice 0 (++ end) string)))))))) (template [<type> <representation> <size> <exception> <in> <out> <writer> <parser> <none>] [(abstract: .public <type> @@ -640,11 +640,11 @@ (def: (header_writer header) (Writer Header) (let [checksum (|> header - (set@ #checksum ..dummy_checksum) + (with@ #checksum ..dummy_checksum) (format.result ..header_writer') ..checksum_code)] (|> header - (set@ #checksum checksum) + (with@ #checksum checksum) (format.result ..header_writer') (format.segment ..block_size)))) @@ -664,16 +664,16 @@ (format.segment (..rounded_content_size size)))] (writer [{#path path #mode mode - #user_id (get@ [#user #id] ownership) - #group_id (get@ [#group #id] ownership) + #user_id (value@ [#user #id] ownership) + #group_id (value@ [#group #id] ownership) #size size #modification_time (..modification_time modification_time) #checksum ..dummy_checksum #link_flag link_flag #link_name ..no_path #magic ..ustar - #user_name (get@ [#user #name] ownership) - #group_name (get@ [#group #name] ownership) + #user_name (value@ [#user #name] ownership) + #group_name (value@ [#group #name] ownership) #major_device ..no_device #minor_device ..no_device} content])))) @@ -812,26 +812,26 @@ (-> Link_Flag (Parser File)) (do <>.monad [header ..header_parser - _ (<>.assertion (exception.error ..wrong_link_flag [expected (get@ #link_flag header)]) - (same? expected (get@ #link_flag header))) - .let [size (get@ #size header) + _ (<>.assertion (exception.error ..wrong_link_flag [expected (value@ #link_flag header)]) + (same? expected (value@ #link_flag header))) + .let [size (value@ #size header) rounded_size (..rounded_content_size size)] content (<binary>.segment (..from_big size)) content (<>.lifted (..content content)) _ (<binary>.segment (n.- (..from_big size) rounded_size))] - (in [(get@ #path header) + (in [(value@ #path header) (|> header - (get@ #modification_time) + (value@ #modification_time) ..from_big .int duration.of_millis (duration.up (|> duration.second duration.millis .nat)) instant.absolute) - (get@ #mode header) - {#user {#name (get@ #user_name header) - #id (get@ #user_id header)} - #group {#name (get@ #group_name header) - #id (get@ #group_id header)}} + (value@ #mode header) + {#user {#name (value@ #user_name header) + #id (value@ #user_id header)} + #group {#name (value@ #group_name header) + #id (value@ #group_id header)}} content]))) (def: (file_name_parser expected extractor) @@ -839,9 +839,9 @@ (do <>.monad [header ..header_parser _ (<>.lifted - (exception.assertion ..wrong_link_flag [expected (get@ #link_flag header)] + (exception.assertion ..wrong_link_flag [expected (value@ #link_flag header)] (n.= (..link_flag expected) - (..link_flag (get@ #link_flag header)))))] + (..link_flag (value@ #link_flag header)))))] (in (extractor header)))) (def: entry_parser @@ -851,9 +851,9 @@ (<>.either (..file_parser ..normal) (..file_parser ..old_normal))) (\ <>.monad map (|>> #..Symbolic_Link) - (..file_name_parser ..symbolic_link (get@ #link_name))) + (..file_name_parser ..symbolic_link (value@ #link_name))) (\ <>.monad map (|>> #..Directory) - (..file_name_parser ..directory (get@ #path))) + (..file_name_parser ..directory (value@ #path))) (\ <>.monad map (|>> #..Contiguous) (..file_parser ..contiguous)))) diff --git a/stdlib/source/library/lux/data/format/xml.lux b/stdlib/source/library/lux/data/format/xml.lux index 67722607c..b596734ea 100644 --- a/stdlib/source/library/lux/data/format/xml.lux +++ b/stdlib/source/library/lux/data/format/xml.lux @@ -269,7 +269,7 @@ ($_ text\compose prefix "<" tag attrs ">" (|> xml_children (list\map (|>> (recur (text\compose prefix text.tab)) (text\compose text.new_line))) - text.joined) + text.together) text.new_line prefix "</" tag ">"))))) )))) (def: decode diff --git a/stdlib/source/library/lux/data/product.lux b/stdlib/source/library/lux/data/product.lux index 4173f8133..aba9488bc 100644 --- a/stdlib/source/library/lux/data/product.lux +++ b/stdlib/source/library/lux/data/product.lux @@ -41,7 +41,7 @@ (let [[x y] xy] [y x])) -(def: .public (apply f g) +(def: .public (then f g) {#.doc (example "Apply functions to both sides of a pair.")} (All [a b c d] (-> (-> a c) (-> b d) @@ -49,7 +49,7 @@ (function (_ [x y]) [(f x) (g y)])) -(def: .public (fork f g) +(def: .public (forked f g) {#.doc (example "Yields a pair by applying both functions to a single value.")} (All [a l r] (-> (-> a l) (-> a r) diff --git a/stdlib/source/library/lux/data/store.lux b/stdlib/source/library/lux/data/store.lux index ba795f4d1..a25331cd4 100644 --- a/stdlib/source/library/lux/data/store.lux +++ b/stdlib/source/library/lux/data/store.lux @@ -13,8 +13,8 @@ (def: (extend f wa) (All [s a b] (-> (-> (Store s a) b) (Store s a) (Store s b))) - {#cursor (get@ #cursor wa) - #peek (function (_ s) (f (set@ #cursor s wa)))}) + {#cursor (value@ #cursor wa) + #peek (function (_ s) (f (with@ #cursor s wa)))}) (implementation: .public functor (All [s] (Functor (Store s))) diff --git a/stdlib/source/library/lux/data/sum.lux b/stdlib/source/library/lux/data/sum.lux index 84b19ffc3..f14efa463 100644 --- a/stdlib/source/library/lux/data/sum.lux +++ b/stdlib/source/library/lux/data/sum.lux @@ -28,7 +28,7 @@ (0 #0 l) (fl l) (0 #1 r) (fr r)))) -(def: .public (apply fl fr) +(def: .public (then fl fr) {#.doc (example "Applies functions to both sides of a 2-variant.")} (All [l l' r r'] (-> (-> l l') (-> r r') diff --git a/stdlib/source/library/lux/data/text.lux b/stdlib/source/library/lux/data/text.lux index 2670bdae3..baeade224 100644 --- a/stdlib/source/library/lux/data/text.lux +++ b/stdlib/source/library/lux/data/text.lux @@ -78,7 +78,7 @@ output (#.Some from') - (recur (inc from') output'))))) + (recur (++ from') output'))))) (def: .public (last_index_of part text) (-> Text Text (Maybe Nat)) @@ -284,14 +284,14 @@ (loop [index 0 hash 0] (if (n.< length index) - (recur (inc index) + (recur (++ index) (|> hash (i64.left_shifted 5) (n.- hash) (n.+ ("lux text char" index input)))) hash)))))) -(def: .public joined +(def: .public together (-> (List Text) Text) (let [(^open ".") ..monoid] (|>> list.reversed @@ -300,8 +300,8 @@ (def: .public (interposed separator texts) (-> Text (List Text) Text) (case separator - "" (..joined texts) - _ (|> texts (list.interposed separator) ..joined))) + "" (..together texts) + _ (|> texts (list.interposed separator) ..together))) (def: .public (empty? text) (-> Text Bit) diff --git a/stdlib/source/library/lux/data/text/buffer.lux b/stdlib/source/library/lux/data/text/buffer.lux index 2d8708c58..196227220 100644 --- a/stdlib/source/library/lux/data/text/buffer.lux +++ b/stdlib/source/library/lux/data/text/buffer.lux @@ -67,37 +67,37 @@ ... default row.empty)))) - (def: .public (append chunk buffer) + (def: .public (then chunk buffer) (-> Text Buffer Buffer) (with_expansions [<jvm> (let [[capacity transform] (:representation buffer) - append! (: (-> Text java/lang/StringBuilder java/lang/StringBuilder) - (function (_ chunk builder) - (exec - (java/lang/Appendable::append (:as java/lang/CharSequence chunk) - builder) - builder)))] + then! (: (-> Text java/lang/StringBuilder java/lang/StringBuilder) + (function (_ chunk builder) + (exec + (java/lang/Appendable::append (:as java/lang/CharSequence chunk) + builder) + builder)))] (:abstraction [(n.+ (//.size chunk) capacity) - (|>> transform (append! chunk))]))] + (|>> transform (then! chunk))]))] (for {@.old <jvm> @.jvm <jvm> @.js (let [[capacity transform] (:representation buffer) - append! (: (-> (JS_Array Text) (JS_Array Text)) - (function (_ array) - (exec - (JS_Array::push [chunk] array) - array)))] + then! (: (-> (JS_Array Text) (JS_Array Text)) + (function (_ array) + (exec + (JS_Array::push [chunk] array) + array)))] (:abstraction [(n.+ (//.size chunk) capacity) - (|>> transform append!)])) + (|>> transform then!)])) @.lua (let [[capacity transform] (:representation buffer) - append! (: (-> (array.Array Text) (array.Array Text)) - (function (_ array) - (exec - (table/insert [array chunk]) - array)))] + then! (: (-> (array.Array Text) (array.Array Text)) + (function (_ array) + (exec + (table/insert [array chunk]) + array)))] (:abstraction [(n.+ (//.size chunk) capacity) - (|>> transform append!)]))} + (|>> transform then!)]))} ... default - (|> buffer :representation (row.add chunk) :abstraction)))) + (|> buffer :representation (row.suffix chunk) :abstraction)))) (def: .public size (-> Buffer Nat) diff --git a/stdlib/source/library/lux/data/text/escape.lux b/stdlib/source/library/lux/data/text/escape.lux index f46331176..89205cbff 100644 --- a/stdlib/source/library/lux/data/text/escape.lux +++ b/stdlib/source/library/lux/data/text/escape.lux @@ -84,7 +84,7 @@ (def: (ascii_escaped replacement pre_offset pre_limit previous current) (-> Text Nat Nat Text Text [Text Text Nat]) - (let [post_offset (inc pre_offset) + (let [post_offset (++ pre_offset) post_limit (n.- post_offset pre_limit)] [(format previous ("lux text clip" 0 pre_offset current) @@ -101,7 +101,7 @@ 2 (format "00" code) 3 (format "0" code) _ code)) - post_offset (inc pre_offset) + post_offset (++ pre_offset) post_limit (n.- post_offset pre_limit)] [(format previous ("lux text clip" 0 pre_offset current) @@ -138,13 +138,13 @@ (n.> ..ascii_top char)) (let [[previous' current' limit'] (unicode_escaped char offset limit previous current)] (recur 0 previous' current' limit')) - (recur (inc offset) previous current limit))) + (recur (++ offset) previous current limit))) (format previous current)))) (exception: .public (dangling_escape {text Text}) (exception.report ["In" (%.text text)] - ["At" (%.nat (dec (//.size text)))])) + ["At" (%.nat (-- (//.size text)))])) (exception: .public (invalid_escape {text Text} {offset Nat} {sigil Char}) (exception.report @@ -202,7 +202,7 @@ (if (n.< limit offset) (case ("lux text char" offset current) (^ (static ..sigil_char)) - (let [@sigil (inc offset)] + (let [@sigil (++ offset)] (if (n.< limit @sigil) (case ("lux text char" @sigil current) (^template [<sigil> <un_escaped>] @@ -233,7 +233,7 @@ (exception.except ..dangling_escape [text]))) _ - (recur (inc offset) previous current limit)) + (recur (++ offset) previous current limit)) (#try.Success (case previous "" current _ (format previous current)))))) diff --git a/stdlib/source/library/lux/data/text/format.lux b/stdlib/source/library/lux/data/text/format.lux index 1a274b692..894dd8321 100644 --- a/stdlib/source/library/lux/data/text/format.lux +++ b/stdlib/source/library/lux/data/text/format.lux @@ -121,7 +121,7 @@ (def: .public (list formatter) (All [a] (-> (Format a) (Format (List a)))) (|>> (list\map (|>> formatter (format " "))) - text.joined + text.together (text.enclosed ["(list" ")"]))) (def: .public (maybe format) diff --git a/stdlib/source/library/lux/data/text/regex.lux b/stdlib/source/library/lux/data/text/regex.lux index 4998e9ce9..3b26dac8e 100644 --- a/stdlib/source/library/lux/data/text/regex.lux +++ b/stdlib/source/library/lux/data/text/regex.lux @@ -54,7 +54,7 @@ (def: join_text^ (-> (Parser (List Text)) (Parser Text)) - (\ <>.monad map //.joined)) + (\ <>.monad map //.together)) (def: name_char^ (Parser Text) @@ -300,7 +300,7 @@ [idx (code.identifier ["" _name])] #.None - [(inc idx) (code.identifier ["" (n\encode idx)])]) + [(++ idx) (code.identifier ["" (n\encode idx)])]) access (if (n.> 0 num_captures) (` ((~! product.left) (~ name!))) name!)] diff --git a/stdlib/source/library/lux/data/text/unicode/block.lux b/stdlib/source/library/lux/data/text/unicode/block.lux index deb289a22..95931ff4a 100644 --- a/stdlib/source/library/lux/data/text/unicode/block.lux +++ b/stdlib/source/library/lux/data/text/unicode/block.lux @@ -48,7 +48,7 @@ (template [<name> <slot>] [(def: .public <name> (-> Block Char) - (|>> :representation (get@ <slot>)))] + (|>> :representation (value@ <slot>)))] [start #interval.bottom] [end #interval.top] @@ -56,9 +56,9 @@ (def: .public (size block) (-> Block Nat) - (let [start (get@ #interval.bottom (:representation block)) - end (get@ #interval.top (:representation block))] - (|> end (n.- start) inc))) + (let [start (value@ #interval.bottom (:representation block)) + end (value@ #interval.top (:representation block))] + (|> end (n.- start) ++))) (def: .public (within? block char) (All [a] (-> Block Char Bit)) diff --git a/stdlib/source/library/lux/data/trace.lux b/stdlib/source/library/lux/data/trace.lux index 8917fc89a..4b5da0b54 100644 --- a/stdlib/source/library/lux/data/trace.lux +++ b/stdlib/source/library/lux/data/trace.lux @@ -13,22 +13,22 @@ (implementation: .public functor (All [t] (Functor (Trace t))) (def: (map f fa) - (update@ #trace (compose f) fa))) + (revised@ #trace (compose f) fa))) (implementation: .public comonad (All [t] (CoMonad (Trace t))) (def: &functor ..functor) (def: (out wa) - ((get@ #trace wa) - (get@ [#monoid #monoid.identity] wa))) + ((value@ #trace wa) + (value@ [#monoid #monoid.identity] wa))) (def: (split wa) - (let [monoid (get@ #monoid wa)] + (let [monoid (value@ #monoid wa)] {#monoid monoid #trace (function (_ t1) {#monoid monoid #trace (function (_ t2) - ((get@ #trace wa) + ((value@ #trace wa) (\ monoid compose t1 t2)))})}))) (def: .public (result context tracer) diff --git a/stdlib/source/library/lux/debug.lux b/stdlib/source/library/lux/debug.lux index 8183fb6ff..7a5a9a153 100644 --- a/stdlib/source/library/lux/debug.lux +++ b/stdlib/source/library/lux/debug.lux @@ -126,7 +126,7 @@ (let [member ("lua array read" idx tuple)] (if ("lua object nil?" member) #.End - (#.Item member (recur (inc idx))))))))} + (#.Item member (recur (++ idx))))))))} (as_is)) (def: (tuple_inspection inspection) @@ -461,7 +461,7 @@ [lefts #1 (rightR right)] _ - (recur (inc lefts) (#.Item rightR extraR+) right))) + (recur (++ lefts) (#.Item rightR extraR+) right))) _ (undefined)))] @@ -601,7 +601,7 @@ [location meta.location locals meta.locals .let [environment (|> locals - list.joined + list.together ... The list is reversed to make sure that, when building the dictionary, ... later bindings overshadow earlier ones if they have the same name. list.reversed diff --git a/stdlib/source/library/lux/documentation.lux b/stdlib/source/library/lux/documentation.lux index 8651dbdcc..37147b2f0 100644 --- a/stdlib/source/library/lux/documentation.lux +++ b/stdlib/source/library/lux/documentation.lux @@ -2,6 +2,7 @@ [library [lux (#- Definition Module example type) ["." meta] + ["." type ("#\." equivalence)] [abstract [monad (#+ do)]] [control @@ -18,7 +19,7 @@ ["." set (#+ Set)]] [format ["md" markdown (#+ Markdown Block)]]] - [macro + ["." macro [syntax (#+ syntax:)] ["." code] ["." template]] @@ -74,13 +75,13 @@ (if (n.= old_line new_line) (if (n.< old_column new_column) "" - (text.joined (list.repeated (n.- old_column new_column) " "))) + (text.together (list.repeated (n.- old_column new_column) " "))) (format (if (n.< old_line new_line) "" - (text.joined (list.repeated (n.- old_line new_line) \n))) + (text.together (list.repeated (n.- old_line new_line) \n))) (if (n.< reference_column new_column) "" - (text.joined (list.repeated (n.- reference_column new_column) " ")))))) + (text.together (list.repeated (n.- reference_column new_column) " ")))))) (def: un_paired (All [a] (-> (List [a a]) (List a))) @@ -96,7 +97,7 @@ (^template [<tag> <format>] [[new_location (<tag> value)] (let [documentation (`` (|> value (~~ (template.spliced <format>))))] - [(update@ #.column (n.+ (text.size documentation)) new_location) + [(revised@ #.column (n.+ (text.size documentation)) new_location) (format (padding reference_column old_location new_location) documentation)])]) ([#.Bit [%.bit]] @@ -113,9 +114,9 @@ (let [[group_location' members_documentation] (list\fold (function (_ part [last_location text_accum]) (let [[member_location member_documentation] (code_documentation last_location reference_column part)] [member_location (format text_accum member_documentation)])) - [(update@ #.column inc group_location) ""] + [(revised@ #.column ++ group_location) ""] (<prep> members))] - [(update@ #.column inc group_location') + [(revised@ #.column ++ group_location') (format (padding reference_column old_location group_location) |<| members_documentation |>|)])]) ([syntax.open_form syntax.close_form #.Form |>] @@ -141,7 +142,7 @@ (let [reference_column (..reference_column example) [location _] example] (|> example - (..code_documentation (set@ #.column reference_column location) reference_column) + (..code_documentation (with@ #.column reference_column location) reference_column) product.right)))) (def: type @@ -194,16 +195,26 @@ (syntax: (minimal_definition_documentation [name ..qualified_identifier]) (with_expansions [<\n> (~! text.\n)] - (in (list (` ($_ ((~! md.then)) - ... Name - (<| ((~! md.heading/3)) - (~ (code.text (|> name product.right [""] %.name)))) - ... Type - (<| ((~! md.code)) - ((~! ..type) ("lux in-module" - (~ (code.text (product.left name))) - (.:of (~ (code.identifier name))))))) - ))))) + (macro.with_identifiers [g!type] + (in (list (` ($_ ((~! md.then)) + ... Name + (<| ((~! md.heading/3)) + (~ (code.text (|> name product.right [""] %.name)))) + ... Type + (let [(~ g!type) ("lux in-module" + (~ (code.text (product.left name))) + (.:of (~ (code.identifier name))))] + ((~! md.code) + (if ((~! type\=) .Type (~ g!type)) + (|> (~ (code.identifier name)) + (:as .Type) + ((~! type.anonymous)) + ((~! ..type)) + ((~! %.format) + ((~! ..single_line_comment) ((~! ..type) (~ g!type))) + <\n>)) + ((~! ..type) (~ g!type)))))) + )))))) (syntax: (definition_documentation [name ..qualified_identifier @@ -265,9 +276,9 @@ (def: definitions_documentation (-> (List Definition) (Markdown Block)) (|>> (list.sorted (function (_ left right) - (text\< (get@ #definition right) - (get@ #definition left)))) - (list\map (get@ #documentation)) + (text\< (value@ #definition right) + (value@ #definition left)))) + (list\map (value@ #documentation)) (list\fold md.then md.empty))) (def: expected_separator @@ -326,23 +337,25 @@ (let [(^slots [#expected]) module] ($_ md.then ... Name - (md.heading/1 (get@ #module module)) + (md.heading/1 (value@ #module module)) ... Description - (<| md.paragraph - md.text - (get@ #description module)) + (case (value@ #description module) + "" md.empty + description (<| md.paragraph + md.text + description)) ... Definitions (md.heading/2 "Definitions") (|> module - (get@ #definitions) - (list.only (|>> (get@ #definition) + (value@ #definitions) + (list.only (|>> (value@ #definition) (set.member? expected))) ..definitions_documentation) ... Missing documentation (case (|> module - (get@ #definitions) + (value@ #definitions) (list\fold (function (_ definition missing) - (set.lacks (get@ #definition definition) missing)) + (set.lacks (value@ #definition definition) missing)) expected) set.list) #.End @@ -354,9 +367,9 @@ (..listing missing))) ... Un-expected documentation (case (|> module - (get@ #definitions) - (list.only (|>> (get@ #definition) (set.member? expected) not)) - (list\map (get@ #definition))) + (value@ #definitions) + (list.only (|>> (value@ #definition) (set.member? expected) not)) + (list\map (value@ #definition))) #.End md.empty @@ -369,7 +382,7 @@ (def: .public documentation (-> (List Module) Text) (|>> (list.sorted (function (_ left right) - (text\< (get@ #module right) (get@ #module left)))) + (text\< (value@ #module right) (value@ #module left)))) (list\map ..module_documentation) (list.interposed md.horizontal_rule) (list\fold md.then (: (Markdown Block) md.empty)) diff --git a/stdlib/source/library/lux/ffi.jvm.lux b/stdlib/source/library/lux/ffi.jvm.lux index 52fdef075..d7f3c9544 100644 --- a/stdlib/source/library/lux/ffi.jvm.lux +++ b/stdlib/source/library/lux/ffi.jvm.lux @@ -1403,15 +1403,15 @@ (-> (List (Type Var)) Import_Member_Declaration (List (Type Var))) (case member (#ConstructorDecl [commons _]) - (list\compose class_tvars (get@ #import_member_tvars commons)) + (list\compose class_tvars (value@ #import_member_tvars commons)) (#MethodDecl [commons _]) - (case (get@ #import_member_kind commons) + (case (value@ #import_member_kind commons) #StaticIMK - (get@ #import_member_tvars commons) + (value@ #import_member_tvars commons) _ - (list\compose class_tvars (get@ #import_member_tvars commons))) + (list\compose class_tvars (value@ #import_member_tvars commons))) _ class_tvars)) @@ -1431,7 +1431,7 @@ .let [input_jvm_types (list\map product.right import_member_args) arg_types (list\map (: (-> [Bit (Type Value)] Code) (function (_ [maybe? arg]) - (let [arg_type (value_type (get@ #import_member_mode commons) arg)] + (let [arg_type (value_type (value@ #import_member_mode commons) arg)] (if maybe? (` (Maybe (~ arg_type))) arg_type)))) @@ -1449,7 +1449,7 @@ (dictionary.key? ..boxes unboxed)) return_term - (get@ #import_member_maybe? commons) + (value@ #import_member_maybe? commons) (` (??? (~ return_term))) ... else @@ -1468,7 +1468,7 @@ (-> Import_Member_Declaration Code Code) (case member (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _])) - (if (get@ <tag> commons) + (if (value@ <tag> commons) <term_trans> return_term) @@ -1599,16 +1599,16 @@ (#ConstructorDecl [commons _]) (do meta.monad [.let [classT (type.class full_name (list)) - def_name (code.identifier ["" (..import_name import_format method_prefix (get@ #import_member_alias commons))]) + def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))]) jvm_interop (|> [classT (` ("jvm member invoke constructor" [(~+ (list\map ..var$ class_tvars))] (~ (code.text full_name)) - [(~+ (list\map ..var$ (get@ #import_member_tvars commons)))] - (~+ (|> (jvm_invoke_inputs (get@ #import_member_mode commons) input_jvm_types arg_function_inputs) + [(~+ (list\map ..var$ (value@ #import_member_tvars commons)))] + (~+ (|> (jvm_invoke_inputs (value@ #import_member_mode commons) input_jvm_types arg_function_inputs) (list.zipped/2 input_jvm_types) (list\map ..decorate_input)))))] - (with_automatic_output_conversion (get@ #import_member_mode commons)) + (with_automatic_output_conversion (value@ #import_member_mode commons)) (with_return_maybe member true classT) (with_return_try member) (with_return_io member))]] @@ -1618,7 +1618,7 @@ (#MethodDecl [commons method]) (with_identifiers [g!obj] (do meta.monad - [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (get@ #import_member_alias commons))]) + [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))]) (^slots [#import_member_kind]) commons (^slots [#import_method_name]) method [jvm_op object_ast] (: [Text (List Code)] @@ -1637,18 +1637,18 @@ ["jvm member invoke interface" (list g!obj)] ))) - method_return (get@ #import_method_return method) + method_return (value@ #import_method_return method) callC (: Code (` ((~ (code.text jvm_op)) [(~+ (list\map ..var$ class_tvars))] (~ (code.text full_name)) (~ (code.text import_method_name)) - [(~+ (list\map ..var$ (get@ #import_member_tvars commons)))] + [(~+ (list\map ..var$ (value@ #import_member_tvars commons)))] (~+ (|> object_ast (list\map ..un_quoted) (list.zipped/2 (list (type.class full_name (list)))) - (list\map (with_automatic_input_conversion (get@ #import_member_mode commons))))) - (~+ (|> (jvm_invoke_inputs (get@ #import_member_mode commons) input_jvm_types arg_function_inputs) + (list\map (with_automatic_input_conversion (value@ #import_member_mode commons))))) + (~+ (|> (jvm_invoke_inputs (value@ #import_member_mode commons) input_jvm_types arg_function_inputs) (list.zipped/2 input_jvm_types) (list\map ..decorate_input)))))) jvm_interop (: Code @@ -1656,7 +1656,7 @@ (#.Left method_return) (|> [method_return callC] - (with_automatic_output_conversion (get@ #import_member_mode commons)) + (with_automatic_output_conversion (value@ #import_member_mode commons)) (with_return_maybe member false method_return) (with_return_try member) (with_return_io member)) @@ -1809,7 +1809,7 @@ =members (|> bundles (list\map (function (_ [import_format members]) (list\map (|>> [import_format]) members))) - list.joined + list.together (monad.map ! (member_import$ class_type_vars kind declaration)))] (in (list& (class_import$ declaration) (list\join =members))))) @@ -1933,9 +1933,9 @@ _ <failure>)))) -(syntax: .public (array_length [array <code>.any]) +(syntax: .public (length [array <code>.any]) {#.doc (example "Gives the length of an array." - (array_length my_array))} + (length my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -1967,12 +1967,12 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_length (~ g!array))))))))) + (..length (~ g!array))))))))) -(syntax: .public (array_read [idx <code>.any - array <code>.any]) +(syntax: .public (read! [idx <code>.any + array <code>.any]) {#.doc (example "Loads an element from an array." - (array_read 10 my_array))} + (read! 10 my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -2006,13 +2006,13 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_read (~ idx) (~ g!array))))))))) + (..read! (~ idx) (~ g!array))))))))) -(syntax: .public (array_write [idx <code>.any - value <code>.any - array <code>.any]) +(syntax: .public (write! [idx <code>.any + value <code>.any + array <code>.any]) {#.doc (example "Stores an element into an array." - (array_write 10 my_object my_array))} + (write! 10 my_object my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -2047,7 +2047,7 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_write (~ idx) (~ value) (~ g!array))))))))) + (..write! (~ idx) (~ value) (~ g!array))))))))) (syntax: .public (class_for [type (..type^ (list))]) {#.doc (example "Loads the class as a java.lang.Class object." diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux index 29c286b23..9acf8e055 100644 --- a/stdlib/source/library/lux/ffi.old.lux +++ b/stdlib/source/library/lux/ffi.old.lux @@ -1098,7 +1098,7 @@ .let [arg_decls' (: (List Text) (list\map (|>> product.right (simple_class$ (list))) arg_decls))]] (in (`' ((~ (code.text (format "jvm invokespecial" - ":" (get@ #super_class_name super_class) + ":" (value@ #super_class_name super_class) ":" name ":" (text.interposed "," arg_decls')))) (~' _jvm_this) (~+ args)))))))] @@ -1368,15 +1368,15 @@ (-> (List Type_Parameter) Import_Member_Declaration (List Type_Parameter)) (case member (#ConstructorDecl [commons _]) - (list\compose class_tvars (get@ #import_member_tvars commons)) + (list\compose class_tvars (value@ #import_member_tvars commons)) (#MethodDecl [commons _]) - (case (get@ #import_member_kind commons) + (case (value@ #import_member_kind commons) #StaticIMK - (get@ #import_member_tvars commons) + (value@ #import_member_tvars commons) _ - (list\compose class_tvars (get@ #import_member_tvars commons))) + (list\compose class_tvars (value@ #import_member_tvars commons))) _ class_tvars)) @@ -1398,7 +1398,7 @@ import_member_args)) arg_types (list\map (: (-> [Bit GenericType] Code) (function (_ [maybe? arg]) - (let [arg_type (class_type (get@ #import_member_mode commons) type_params arg)] + (let [arg_type (class_type (value@ #import_member_mode commons) type_params arg)] (if maybe? (` (Maybe (~ arg_type))) arg_type)))) @@ -1412,7 +1412,7 @@ (-> Class_Declaration Import_Member_Declaration Code Code) (case member (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _])) - (if (get@ #import_member_maybe? commons) + (if (value@ #import_member_maybe? commons) (` (??? (~ return_term))) (let [g!temp (` ((~' ~') (~ (code.identifier ["" " Ω "]))))] (` (let [(~ g!temp) (~ return_term)] @@ -1420,8 +1420,8 @@ (~ g!temp)))) (~ g!temp) (panic! (~ (code.text (format "Cannot produce null references from method calls @ " - (get@ #class_name class) - "." (get@ #import_member_alias commons)))))))))) + (value@ #class_name class) + "." (value@ #import_member_alias commons)))))))))) _ return_term)) @@ -1431,7 +1431,7 @@ (-> Import_Member_Declaration Code Code) (case member (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _])) - (if (get@ <tag> commons) + (if (value@ <tag> commons) <term_trans> return_term) @@ -1527,10 +1527,10 @@ (#ConstructorDecl [commons _]) (do meta.monad - [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (get@ #import_member_alias commons))]) + [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))]) jvm_extension (code.text (format "jvm new" ":" full_name ":" (text.interposed "," arg_classes))) jvm_interop (|> (` ((~ jvm_extension) - (~+ (jvm_extension_inputs (get@ #import_member_mode commons) arg_classes arg_function_inputs)))) + (~+ (jvm_extension_inputs (value@ #import_member_mode commons) arg_classes arg_function_inputs)))) (decorate_return_maybe class member) (decorate_return_try member) (decorate_return_io member))]] @@ -1540,7 +1540,7 @@ (#MethodDecl [commons method]) (with_identifiers [g!obj] (do meta.monad - [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (get@ #import_member_alias commons))]) + [.let [def_name (code.identifier ["" (..import_name import_format method_prefix (value@ #import_member_alias commons))]) (^slots [#import_member_kind]) commons (^slots [#import_method_name]) method [jvm_op object_ast] (: [Text (List Code)] @@ -1560,10 +1560,10 @@ (list g!obj)] ))) jvm_extension (code.text (format "jvm " jvm_op ":" full_name ":" import_method_name ":" (text.interposed "," arg_classes))) - jvm_interop (|> [(simple_class$ (list) (get@ #import_method_return method)) + jvm_interop (|> [(simple_class$ (list) (value@ #import_method_return method)) (` ((~ jvm_extension) (~+ (list\map un_quote object_ast)) - (~+ (jvm_extension_inputs (get@ #import_member_mode commons) arg_classes arg_function_inputs))))] - (auto_convert_output (get@ #import_member_mode commons)) + (~+ (jvm_extension_inputs (value@ #import_member_mode commons) arg_classes arg_function_inputs))))] + (auto_convert_output (value@ #import_member_mode commons)) (decorate_return_maybe class member) (decorate_return_try member) (decorate_return_io member))]] @@ -1717,7 +1717,7 @@ =members (|> bundles (list\map (function (_ [import_format members]) (list\map (|>> [import_format]) members))) - list.joined + list.together (monad.map ! (member_import$ (product.right class_decl) kind class_decl)))] (in (list& (class_import$ class_decl) (list\join =members))))) @@ -1741,9 +1741,9 @@ _ (in (list (` ("jvm anewarray" (~ (code.text (generic_type$ type))) (~ size))))))) -(syntax: .public (array_length [array <code>.any]) +(syntax: .public (length [array <code>.any]) {#.doc (example "Gives the length of an array." - (array_length my_array))} + (length my_array))} (in (list (` ("jvm arraylength" (~ array)))))) (def: (type_class_name type) @@ -1768,10 +1768,10 @@ _ (meta.failure (format "Cannot convert to JvmType: " (type.format type)))))) -(syntax: .public (array_read [idx <code>.any - array <code>.any]) +(syntax: .public (read! [idx <code>.any + array <code>.any]) {#.doc (example "Loads an element from an array." - (array_read 10 my_array))} + (read! 10 my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -1796,13 +1796,13 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_read (~ idx) (~ g!array))))))))) + (..read! (~ idx) (~ g!array))))))))) -(syntax: .public (array_write [idx <code>.any - value <code>.any - array <code>.any]) +(syntax: .public (write! [idx <code>.any + value <code>.any + array <code>.any]) {#.doc (example "Stores an element into an array." - (array_write 10 my_object my_array))} + (write! 10 my_object my_array))} (case array [_ (#.Identifier array_name)] (do meta.monad @@ -1827,7 +1827,7 @@ _ (with_identifiers [g!array] (in (list (` (let [(~ g!array) (~ array)] - (..array_write (~ idx) (~ value) (~ g!array))))))))) + (..write! (~ idx) (~ value) (~ g!array))))))))) (syntax: .public (class_for [type (..generic_type^ (list))]) {#.doc (example "Loads the class as a java.lang.Class object." diff --git a/stdlib/source/library/lux/locale/language.lux b/stdlib/source/library/lux/locale/language.lux index 1a7b52201..29ec7c190 100644 --- a/stdlib/source/library/lux/locale/language.lux +++ b/stdlib/source/library/lux/locale/language.lux @@ -21,7 +21,7 @@ (template [<name> <tag>] [(def: .public <name> (-> Language Text) - (|>> :representation (get@ <tag>)))] + (|>> :representation (value@ <tag>)))] [name #name] [code #code] diff --git a/stdlib/source/library/lux/locale/territory.lux b/stdlib/source/library/lux/locale/territory.lux index e0f569100..6309e1a86 100644 --- a/stdlib/source/library/lux/locale/territory.lux +++ b/stdlib/source/library/lux/locale/territory.lux @@ -24,7 +24,7 @@ [(def: .public <name> (-> Territory <type>) (|>> :representation - (get@ <field>)))] + (value@ <field>)))] [name #name Text] [short_code #short Text] @@ -309,6 +309,6 @@ (def: hash (|>> :representation - (get@ #long) + (value@ #long) (\ text.hash hash)))) ) diff --git a/stdlib/source/library/lux/macro/local.lux b/stdlib/source/library/lux/macro/local.lux index 8a10f5f26..8c518b855 100644 --- a/stdlib/source/library/lux/macro/local.lux +++ b/stdlib/source/library/lux/macro/local.lux @@ -34,11 +34,11 @@ (def: (with_module name body) (All [a] (-> Text (-> Module (Try [Module a])) (Meta a))) (function (_ compiler) - (case (|> compiler (get@ #.modules) (plist.value name)) + (case (|> compiler (value@ #.modules) (plist.value name)) (#.Some module) (case (body module) (#try.Success [module' output]) - (#try.Success [(update@ #.modules (plist.has name module') compiler) + (#try.Success [(revised@ #.modules (plist.has name module') compiler) output]) (#try.Failure error) @@ -56,9 +56,9 @@ (plist.has definition_name definition))]] (..with_module module_name (function (_ module) - (case (|> module (get@ #.definitions) (plist.value definition_name)) + (case (|> module (value@ #.definitions) (plist.value definition_name)) #.None - (#try.Success [(update@ #.definitions add_macro! module) + (#try.Success [(revised@ #.definitions add_macro! module) []]) (#.Some _) @@ -72,9 +72,9 @@ (plist.lacks definition_name))]] (..with_module module_name (function (_ module) - (case (|> module (get@ #.definitions) (plist.value definition_name)) + (case (|> module (value@ #.definitions) (plist.value definition_name)) (#.Some _) - (#try.Success [(update@ #.definitions lacks_macro! module) + (#try.Success [(revised@ #.definitions lacks_macro! module) []]) #.None @@ -88,7 +88,7 @@ [_ (monad.map ! ..pop_one macros) _ (..pop_one self) compiler meta.compiler_state] - (in (case (get@ #.expected compiler) + (in (case (value@ #.expected compiler) (#.Some _) (list (' [])) diff --git a/stdlib/source/library/lux/macro/syntax/annotations.lux b/stdlib/source/library/lux/macro/syntax/annotations.lux index 1db17d9b5..5e23ea9d8 100644 --- a/stdlib/source/library/lux/macro/syntax/annotations.lux +++ b/stdlib/source/library/lux/macro/syntax/annotations.lux @@ -31,7 +31,7 @@ (def: .public format (-> Annotations Code) - (let [entry (product.apply code.tag function.identity)] + (let [entry (product.then code.tag function.identity)] (|>> (list\map entry) code.record))) diff --git a/stdlib/source/library/lux/macro/syntax/declaration.lux b/stdlib/source/library/lux/macro/syntax/declaration.lux index c85e74822..1a529d3db 100644 --- a/stdlib/source/library/lux/macro/syntax/declaration.lux +++ b/stdlib/source/library/lux/macro/syntax/declaration.lux @@ -39,8 +39,8 @@ (def: .public (format value) (-> Declaration Code) - (let [g!name (code.local_identifier (get@ #name value))] - (case (get@ #arguments value) + (let [g!name (code.local_identifier (value@ #name value))] + (case (value@ #arguments value) #.End g!name diff --git a/stdlib/source/library/lux/macro/syntax/definition.lux b/stdlib/source/library/lux/macro/syntax/definition.lux index 7ebf281d4..14e907870 100644 --- a/stdlib/source/library/lux/macro/syntax/definition.lux +++ b/stdlib/source/library/lux/macro/syntax/definition.lux @@ -66,9 +66,9 @@ (def: dummy Code - (` {#.module (~ (code.text (get@ #.module location.dummy))) - #.line (~ (code.nat (get@ #.line location.dummy))) - #.column (~ (code.nat (get@ #.column location.dummy)))})) + (` {#.module (~ (code.text (value@ #.module location.dummy))) + #.line (~ (code.nat (value@ #.line location.dummy))) + #.column (~ (code.nat (value@ #.column location.dummy)))})) (def: .public (format (^slots [#name #value #anns #export?])) (-> Definition Code) @@ -133,7 +133,7 @@ (-> Lux (Parser Definition)) (do <>.monad [definition (..parser compiler) - _ (case (get@ #value definition) + _ (case (value@ #value definition) (#.Left _) (in []) diff --git a/stdlib/source/library/lux/macro/syntax/input.lux b/stdlib/source/library/lux/macro/syntax/input.lux index 6754185af..77623fbd7 100644 --- a/stdlib/source/library/lux/macro/syntax/input.lux +++ b/stdlib/source/library/lux/macro/syntax/input.lux @@ -26,8 +26,8 @@ (def: .public (format value) (-> Input Code) (code.record - (list [(get@ #binding value) - (get@ #type value)]))) + (list [(value@ #binding value) + (value@ #type value)]))) (def: .public parser {#.doc "Parser for the common typed-argument syntax used by many macros."} diff --git a/stdlib/source/library/lux/macro/template.lux b/stdlib/source/library/lux/macro/template.lux index 8de4f2501..d378f9409 100644 --- a/stdlib/source/library/lux/macro/template.lux +++ b/stdlib/source/library/lux/macro/template.lux @@ -44,7 +44,7 @@ (do {! meta.monad} [g!locals (|> locals (list\map //.identifier) - (monad.seq !))] + (monad.all !))] (in (list (` (.with_expansions [(~+ (|> (list.zipped/2 locals g!locals) (list\map (function (_ [name identifier]) (list (code.local_identifier name) (as_is identifier)))) @@ -196,14 +196,14 @@ [here_name meta.current_module_name expression? (: (Meta Bit) (function (_ lux) - (#try.Success [lux (case (get@ #.expected lux) + (#try.Success [lux (case (value@ #.expected lux) #.None false (#.Some _) true)]))) g!pop (local.push (list\map (function (_ local) - [[here_name (get@ #name local)] + [[here_name (value@ #name local)] (..macro local)]) locals))] (if expression? diff --git a/stdlib/source/library/lux/math.lux b/stdlib/source/library/lux/math.lux index 7f19f1a85..e088df673 100644 --- a/stdlib/source/library/lux/math.lux +++ b/stdlib/source/library/lux/math.lux @@ -331,7 +331,7 @@ n n] (if (n.<= 1 n) acc - (recur (n.* n acc) (dec n))))) + (recur (n.* n acc) (-- n))))) (def: .public (hypotenuse catA catB) (-> Frac Frac Frac) diff --git a/stdlib/source/library/lux/math/number/complex.lux b/stdlib/source/library/lux/math/number/complex.lux index 1615bf633..d26544c0b 100644 --- a/stdlib/source/library/lux/math/number/complex.lux +++ b/stdlib/source/library/lux/math/number/complex.lux @@ -50,23 +50,23 @@ (..complex +0.0 +0.0)) (def: .public (not_a_number? complex) - (or (f.not_a_number? (get@ #real complex)) - (f.not_a_number? (get@ #imaginary complex)))) + (or (f.not_a_number? (value@ #real complex)) + (f.not_a_number? (value@ #imaginary complex)))) (def: .public (= param input) (-> Complex Complex Bit) - (and (f.= (get@ #real param) - (get@ #real input)) - (f.= (get@ #imaginary param) - (get@ #imaginary input)))) + (and (f.= (value@ #real param) + (value@ #real input)) + (f.= (value@ #imaginary param) + (value@ #imaginary input)))) (template [<name> <op>] [(def: .public (<name> param input) (-> Complex Complex Complex) - {#real (<op> (get@ #real param) - (get@ #real input)) - #imaginary (<op> (get@ #imaginary param) - (get@ #imaginary input))})] + {#real (<op> (value@ #real param) + (value@ #real input)) + #imaginary (<op> (value@ #imaginary param) + (value@ #imaginary input))})] [+ f.+] [- f.-] @@ -80,8 +80,8 @@ (template [<name> <transform>] [(def: .public <name> (-> Complex Complex) - (|>> (update@ #real <transform>) - (update@ #imaginary <transform>)))] + (|>> (revised@ #real <transform>) + (revised@ #imaginary <transform>)))] [opposite f.opposite] [signum f.signum] @@ -89,25 +89,25 @@ (def: .public conjugate (-> Complex Complex) - (update@ #imaginary f.opposite)) + (revised@ #imaginary f.opposite)) (def: .public (*' param input) (-> Frac Complex Complex) {#real (f.* param - (get@ #real input)) + (value@ #real input)) #imaginary (f.* param - (get@ #imaginary input))}) + (value@ #imaginary input))}) (def: .public (* param input) (-> Complex Complex Complex) - {#real (f.- (f.* (get@ #imaginary param) - (get@ #imaginary input)) - (f.* (get@ #real param) - (get@ #real input))) - #imaginary (f.+ (f.* (get@ #real param) - (get@ #imaginary input)) - (f.* (get@ #imaginary param) - (get@ #real input)))}) + {#real (f.- (f.* (value@ #imaginary param) + (value@ #imaginary input)) + (f.* (value@ #real param) + (value@ #real input))) + #imaginary (f.+ (f.* (value@ #real param) + (value@ #imaginary input)) + (f.* (value@ #imaginary param) + (value@ #real input)))}) (def: .public (/ param input) (-> Complex Complex Complex) @@ -116,12 +116,12 @@ (f.abs real)) (let [quot (f./ imaginary real) denom (|> real (f.* quot) (f.+ imaginary))] - {#real (|> (get@ #real input) (f.* quot) (f.+ (get@ #imaginary input)) (f./ denom)) - #imaginary (|> (get@ #imaginary input) (f.* quot) (f.- (get@ #real input)) (f./ denom))}) + {#real (|> (value@ #real input) (f.* quot) (f.+ (value@ #imaginary input)) (f./ denom)) + #imaginary (|> (value@ #imaginary input) (f.* quot) (f.- (value@ #real input)) (f./ denom))}) (let [quot (f./ real imaginary) denom (|> imaginary (f.* quot) (f.+ real))] - {#real (|> (get@ #imaginary input) (f.* quot) (f.+ (get@ #real input)) (f./ denom)) - #imaginary (|> (get@ #imaginary input) (f.- (f.* quot (get@ #real input))) (f./ denom))})))) + {#real (|> (value@ #imaginary input) (f.* quot) (f.+ (value@ #real input)) (f./ denom)) + #imaginary (|> (value@ #imaginary input) (f.- (f.* quot (value@ #real input))) (f./ denom))})))) (def: .public (/' param subject) (-> Frac Complex Complex) @@ -133,8 +133,8 @@ (-> Complex Complex Complex) (let [scaled (/ param input) quotient (|> scaled - (update@ #real math.floor) - (update@ #imaginary math.floor))] + (revised@ #real math.floor) + (revised@ #imaginary math.floor))] (- (* quotient param) input))) @@ -311,8 +311,8 @@ (def: .public (approximately? margin_of_error standard value) (-> Frac Complex Complex Bit) (and (f.approximately? margin_of_error - (get@ #..real standard) - (get@ #..real value)) + (value@ #..real standard) + (value@ #..real value)) (f.approximately? margin_of_error - (get@ #..imaginary standard) - (get@ #..imaginary value)))) + (value@ #..imaginary standard) + (value@ #..imaginary value)))) diff --git a/stdlib/source/library/lux/math/number/frac.lux b/stdlib/source/library/lux/math/number/frac.lux index 9e49975f8..1d92184b8 100644 --- a/stdlib/source/library/lux/math/number/frac.lux +++ b/stdlib/source/library/lux/math/number/frac.lux @@ -288,7 +288,7 @@ exponent_bits (|> (if (..< +0.0 min_gap) (|> (..int exponent) (//int.- (..int min_gap)) - dec) + --) (..int exponent)) (//int.+ (.int ..double_bias)) (//i64.and ..exponent_mask)) @@ -302,7 +302,7 @@ (template [<getter> <size> <offset>] [(def: <getter> (-> (I64 Any) I64) - (let [mask (|> 1 (//i64.left_shifted <size>) dec (//i64.left_shifted <offset>))] + (let [mask (|> 1 (//i64.left_shifted <size>) -- (//i64.left_shifted <offset>))] (|>> (//i64.and mask) (//i64.right_shifted <offset>) .i64)))] [mantissa ..mantissa_size 0] @@ -400,7 +400,7 @@ [whole decimal] (case ("lux text index" 0 "." mantissa) (#.Some split_index) (do ! - [.let [after_offset (inc split_index) + [.let [after_offset (++ split_index) after_length (//nat.- after_offset ("lux text size" mantissa))] decimal (|> mantissa ("lux text clip" after_offset after_length) @@ -410,7 +410,7 @@ #.None (#try.Failure ("lux text concat" <error> representation))) - .let [whole ("lux text clip" 1 (dec ("lux text size" whole)) whole)] + .let [whole ("lux text clip" 1 (-- ("lux text size" whole)) whole)] mantissa (\ <nat> decode (case decimal 0 whole _ ("lux text concat" whole (\ <nat> encode decimal)))) diff --git a/stdlib/source/library/lux/math/number/i64.lux b/stdlib/source/library/lux/math/number/i64.lux index fd0c5545b..42c08e00a 100644 --- a/stdlib/source/library/lux/math/number/i64.lux +++ b/stdlib/source/library/lux/math/number/i64.lux @@ -48,12 +48,12 @@ (def: .public sign {#.doc (example "A mask for the sign bit of ints.")} Mask - (..bit (dec ..width))) + (..bit (-- ..width))) (def: .public not {#.doc "Bitwise negation."} (All [s] (-> (I64 s) (I64 s))) - (..xor (.i64 (dec 0)))) + (..xor (.i64 (-- 0)))) (def: .public false Mask @@ -70,7 +70,7 @@ 0 ..false bits (case (n.% ..width bits) 0 ..true - bits (|> 1 .i64 (..left_shifted (n.% ..width bits)) .dec)))) + bits (|> 1 .i64 (..left_shifted (n.% ..width bits)) .--)))) (def: (with_shift shift value) (-> Nat Nat Nat) @@ -161,7 +161,7 @@ (loop [iterations 1 output char] (if (n.< times iterations) - (recur (inc iterations) + (recur (++ iterations) ("lux text concat" char output)) output)))) pattern (repetitions (n./ (n.+ size size) ..width) @@ -206,8 +206,8 @@ (if (.and (n.> 0 width) (n.< ..width width)) (let [sign_shift (n.- width ..width) - sign (..bit (dec width)) - mantissa (..mask (dec width)) + sign (..bit (-- width)) + mantissa (..mask (-- width)) co_mantissa (..xor (.i64 -1) mantissa)] (#.Some (: Sub (implementation diff --git a/stdlib/source/library/lux/math/number/int.lux b/stdlib/source/library/lux/math/number/int.lux index 88ba6bba1..d5546a4a5 100644 --- a/stdlib/source/library/lux/math/number/int.lux +++ b/stdlib/source/library/lux/math/number/int.lux @@ -186,8 +186,8 @@ (Enum Int) (def: &order ..order) - (def: succ inc) - (def: pred dec)) + (def: succ ++) + (def: pred --)) ... TODO: Find out why the numeric literals fail during JS compilation. (implementation: .public interval @@ -198,7 +198,7 @@ ... +9,223,372,036,854,775,807 (let [half (//i64.left_shifted 62 +1)] (+ half - (dec half)))) + (-- half)))) (def: bottom ... -9,223,372,036,854,775,808 (//i64.left_shifted 63 +1))) @@ -225,7 +225,7 @@ (def: (encode value) (if (..< +0 value) - (|> value inc ..opposite .nat inc (\ <codec> encode) ("lux text concat" ..-sign)) + (|> value ++ ..opposite .nat ++ (\ <codec> encode) ("lux text concat" ..-sign)) (|> value .nat (\ <codec> encode) ("lux text concat" ..+sign)))) (def: (decode repr) @@ -234,15 +234,15 @@ (case ("lux text clip" 0 1 repr) (^ (static ..+sign)) (|> repr - ("lux text clip" 1 (dec input_size)) + ("lux text clip" 1 (-- input_size)) (\ <codec> decode) (\ try.functor map .int)) (^ (static ..-sign)) (|> repr - ("lux text clip" 1 (dec input_size)) + ("lux text clip" 1 (-- input_size)) (\ <codec> decode) - (\ try.functor map (|>> dec .int ..opposite dec))) + (\ try.functor map (|>> -- .int ..opposite --))) _ (#try.Failure <error>)) diff --git a/stdlib/source/library/lux/math/number/nat.lux b/stdlib/source/library/lux/math/number/nat.lux index bd6ff389c..c72289e0d 100644 --- a/stdlib/source/library/lux/math/number/nat.lux +++ b/stdlib/source/library/lux/math/number/nat.lux @@ -170,14 +170,14 @@ (Enum Nat) (def: &order ..order) - (def: succ inc) - (def: pred dec)) + (def: succ ++) + (def: pred --)) (implementation: .public interval (Interval Nat) (def: &enum ..enum) - (def: top (dec 0)) + (def: top (-- 0)) (def: bottom 0)) (template [<name> <compose> <identity>] @@ -303,7 +303,7 @@ (Codec Text Nat) (def: encode - (let [mask (|> 1 ("lux i64 left-shift" <shift>) dec)] + (let [mask (|> 1 ("lux i64 left-shift" <shift>) --)] (function (_ value) (loop [input value output ""] @@ -325,7 +325,7 @@ (if (..< input_size idx) (case (<to_value> ("lux text char" idx repr)) (#.Some digit_value) - (recur (inc idx) + (recur (++ idx) (|> output ("lux i64 left-shift" <shift>) ("lux i64 or" digit_value))) @@ -367,7 +367,7 @@ <failure> (#.Some digit_value) - (recur (inc idx) + (recur (++ idx) (|> output (..* 10) (..+ digit_value)))) (#try.Success output))) <failure>))))) diff --git a/stdlib/source/library/lux/math/number/ratio.lux b/stdlib/source/library/lux/math/number/ratio.lux index cfb3eca00..5d5962b47 100644 --- a/stdlib/source/library/lux/math/number/ratio.lux +++ b/stdlib/source/library/lux/math/number/ratio.lux @@ -30,8 +30,8 @@ (def: .public (nat value) (-> Ratio (Maybe Nat)) - (case (get@ #denominator value) - 1 (#.Some (get@ #numerator value)) + (case (value@ #denominator value) + 1 (#.Some (value@ #numerator value)) _ #.None)) (def: (normal (^slots [#numerator #denominator])) @@ -51,10 +51,10 @@ (def: .public (= parameter subject) (-> Ratio Ratio Bit) - (and (n.= (get@ #numerator parameter) - (get@ #numerator subject)) - (n.= (get@ #denominator parameter) - (get@ #denominator subject)))) + (and (n.= (value@ #numerator parameter) + (value@ #numerator subject)) + (n.= (value@ #denominator parameter) + (value@ #denominator subject)))) (implementation: .public equivalence (Equivalence Ratio) @@ -63,10 +63,10 @@ (def: (equalized parameter subject) (-> Ratio Ratio [Nat Nat]) - [(n.* (get@ #denominator subject) - (get@ #numerator parameter)) - (n.* (get@ #denominator parameter) - (get@ #numerator subject))]) + [(n.* (value@ #denominator subject) + (value@ #numerator parameter)) + (n.* (value@ #denominator parameter) + (value@ #numerator subject))]) (def: .public (< parameter subject) (-> Ratio Ratio Bit) @@ -97,22 +97,22 @@ (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject)] (normal [(n.+ parameter' subject') - (n.* (get@ #denominator parameter) - (get@ #denominator subject))]))) + (n.* (value@ #denominator parameter) + (value@ #denominator subject))]))) (def: .public (- parameter subject) (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject)] (normal [(n.- parameter' subject') - (n.* (get@ #denominator parameter) - (get@ #denominator subject))]))) + (n.* (value@ #denominator parameter) + (value@ #denominator subject))]))) (def: .public (* parameter subject) (-> Ratio Ratio Ratio) - (normal [(n.* (get@ #numerator parameter) - (get@ #numerator subject)) - (n.* (get@ #denominator parameter) - (get@ #denominator subject))])) + (normal [(n.* (value@ #numerator parameter) + (value@ #numerator subject)) + (n.* (value@ #denominator parameter) + (value@ #denominator subject))])) (def: .public (/ parameter subject) (-> Ratio Ratio Ratio) @@ -123,7 +123,7 @@ (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject) quot (n./ parameter' subject')] - (..- (update@ #numerator (n.* quot) parameter) + (..- (revised@ #numerator (n.* quot) parameter) subject))) (def: .public (reciprocal (^slots [#numerator #denominator])) diff --git a/stdlib/source/library/lux/math/number/rev.lux b/stdlib/source/library/lux/math/number/rev.lux index 4eea3ecf7..3fc60202c 100644 --- a/stdlib/source/library/lux/math/number/rev.lux +++ b/stdlib/source/library/lux/math/number/rev.lux @@ -119,7 +119,7 @@ ("lux i64 +" top)))) (def: even_one (//i64.right_rotated 1 1)) -(def: odd_one (dec 0)) +(def: odd_one (-- 0)) (def: (even_reciprocal numerator) (-> Nat Nat) @@ -205,8 +205,8 @@ (Enum Rev) (def: &order ..order) - (def: succ inc) - (def: pred dec)) + (def: succ ++) + (def: pred --)) (implementation: .public interval (Interval Rev) @@ -229,7 +229,7 @@ (def: (decimals input) (-> Text Text) - ("lux text clip" 1 (dec ("lux text size" input)) input)) + ("lux text clip" 1 (-- ("lux text size" input)) input)) (template [<struct> <codec> <char_bit_size> <error>] [(with_expansions [<error_output> (as_is (#try.Failure ("lux text concat" <error> repr)))] @@ -248,7 +248,7 @@ output (: Text "")] (if (//nat.= 0 zeroes_left) output - (recur (dec zeroes_left) + (recur (-- zeroes_left) ("lux text concat" "0" output)))))] (|> raw_output ("lux text concat" zero_padding) @@ -311,7 +311,7 @@ (let [raw (|> (..digit idx output) (//nat.* 5) (//nat.+ carry))] - (recur (dec idx) + (recur (-- idx) (//nat./ 10 raw) (digits\put! idx (//nat.% 10 raw) output))) output))) @@ -322,21 +322,21 @@ output (|> (..digits []) (digits\put! power 1))] (if (//int.>= +0 (.int times)) - (recur (dec times) + (recur (-- times) (digits\times_5! power output)) output))) (def: (format digits) (-> Digits Text) - (loop [idx (dec //i64.width) + (loop [idx (-- //i64.width) all_zeroes? true output ""] (if (//int.>= +0 (.int idx)) (let [digit (..digit idx digits)] (if (and (//nat.= 0 digit) all_zeroes?) - (recur (dec idx) true output) - (recur (dec idx) + (recur (-- idx) true output) + (recur (-- idx) false ("lux text concat" (\ //nat.decimal encode digit) @@ -347,7 +347,7 @@ (def: (digits\+! param subject) (-> Digits Digits Digits) - (loop [idx (dec //i64.width) + (loop [idx (-- //i64.width) carry 0 output (..digits [])] (if (//int.>= +0 (.int idx)) @@ -355,7 +355,7 @@ carry (..digit idx param) (..digit idx subject))] - (recur (dec idx) + (recur (-- idx) (//nat./ 10 raw) (digits\put! idx (//nat.% 10 raw) output))) output))) @@ -372,7 +372,7 @@ #.None (#.Some digit) - (recur (inc idx) + (recur (++ idx) (digits\put! idx digit output))) (#.Some output))) #.None))) @@ -384,7 +384,7 @@ (let [pd (..digit idx param) sd (..digit idx subject)] (if (//nat.= pd sd) - (recur (inc idx)) + (recur (++ idx)) (//nat.< pd sd)))))) (def: (digits\-!' idx param subject) @@ -397,14 +397,14 @@ (//nat.- param))] (|> subject (digits\put! idx diff) - (digits\-!' (dec idx) 1)))))) + (digits\-!' (-- idx) 1)))))) (def: (digits\-! param subject) (-> Digits Digits Digits) - (loop [idx (dec //i64.width) + (loop [idx (-- //i64.width) output subject] (if (//int.>= +0 (.int idx)) - (recur (dec idx) + (recur (-- idx) (digits\-!' idx (..digit idx param) output)) output))) @@ -417,16 +417,16 @@ ".0" input - (let [last_idx (dec //i64.width)] + (let [last_idx (-- //i64.width)] (loop [idx last_idx digits (..digits [])] (if (//int.>= +0 (.int idx)) (if (//i64.one? idx input) (let [digits' (digits\+! (power_digits (//nat.- idx last_idx)) digits)] - (recur (dec idx) + (recur (-- idx) digits')) - (recur (dec idx) + (recur (-- idx) digits)) ("lux text concat" "." (..format digits)) ))))) @@ -438,7 +438,7 @@ _ false) - within_limits? (//nat.<= (inc //i64.width) + within_limits? (//nat.<= (++ //i64.width) ("lux text size" input))] (if (and dotted? within_limits?) (case (|> input ..decimals ..text_digits) @@ -450,10 +450,10 @@ (let [power (power_digits idx)] (if (digits\< power digits) ... Skip power - (recur digits (inc idx) output) + (recur digits (++ idx) output) (recur (digits\-! power digits) - (inc idx) - (//i64.one (//nat.- idx (dec //i64.width)) output)))) + (++ idx) + (//i64.one (//nat.- idx (-- //i64.width)) output)))) (#try.Success (.rev output)))) #.None diff --git a/stdlib/source/library/lux/math/random.lux b/stdlib/source/library/lux/math/random.lux index bb66000be..6b61b5159 100644 --- a/stdlib/source/library/lux/math/random.lux +++ b/stdlib/source/library/lux/math/random.lux @@ -145,7 +145,7 @@ {#.doc (example "A number in the interval [0.0,1.0].")} (Random Frac) (let [mantissa_range (.int (i64.left_shifted 53 1)) - mantissa_max (i.frac (dec mantissa_range))] + mantissa_max (i.frac (-- mantissa_range))] (\ ..monad map (|>> (i.% mantissa_range) i.frac @@ -169,7 +169,7 @@ (\ ..monad in "") (do ..monad [x char_gen - xs (text char_gen (dec size))] + xs (text char_gen (-- size))] (in (text\compose (text.of_char x) xs))))) (template [<name> <set>] @@ -251,12 +251,12 @@ (if (n.> 0 size) (do ..monad [x value_gen - xs (<name> (dec size) value_gen)] + xs (<name> (-- size) value_gen)] (in (<plus> x xs))) (\ ..monad in <zero>)))] [list List (.list) #.Item] - [row Row row.empty row.add] + [row Row row.empty row.suffix] ) (template [<name> <type> <ctor>] @@ -275,7 +275,7 @@ (All [a] (-> (Hash a) Nat (Random a) (Random (Set a)))) (if (n.> 0 size) (do {! ..monad} - [xs (set hash (dec size) value_gen)] + [xs (set hash (-- size) value_gen)] (loop [_ []] (do ! [x value_gen @@ -289,7 +289,7 @@ (All [k v] (-> (Hash k) Nat (Random k) (Random v) (Random (Dictionary k v)))) (if (n.> 0 size) (do {! ..monad} - [kv (dictionary hash (dec size) key_gen value_gen)] + [kv (dictionary hash (-- size) key_gen value_gen)] (loop [_ []] (do ! [k key_gen diff --git a/stdlib/source/library/lux/meta.lux b/stdlib/source/library/lux/meta.lux index b415adb91..7b6e893d3 100644 --- a/stdlib/source/library/lux/meta.lux +++ b/stdlib/source/library/lux/meta.lux @@ -118,13 +118,13 @@ (All [a] (-> Text (Meta a))) (function (_ state) - (#try.Failure (location.with (get@ #.location state) error)))) + (#try.Failure (location.with (value@ #.location state) error)))) (def: .public (module name) {#.doc (example "Looks-up a module with the given name.")} (-> Text (Meta Module)) (function (_ lux) - (case (plist.value name (get@ #.modules lux)) + (case (plist.value name (value@ #.modules lux)) (#.Some module) (#try.Success [lux module]) @@ -135,7 +135,7 @@ {#.doc (example "The name of the module currently being compiled, if any.")} (Meta Text) (function (_ lux) - (case (get@ #.current_module lux) + (case (value@ #.current_module lux) (#.Some current_module) (#try.Success [lux current_module]) @@ -179,7 +179,7 @@ [$module (plist.value module modules) definition (: (Maybe Global) (|> (: Module $module) - (get@ #.definitions) + (value@ #.definitions) (plist.value name)))] (case definition (#.Alias [r_module r_name]) @@ -202,7 +202,7 @@ #.None (#try.Success [_ this_module]) - (macro' (get@ #.modules lux) this_module module name))] + (macro' (value@ #.modules lux) this_module module name))] (#try.Success [lux macro])))))) (def: .public seed @@ -211,13 +211,13 @@ "This number can be used for generating data 'randomly' during compilation.")} (Meta Nat) (function (_ lux) - (#try.Success [(update@ #.seed inc lux) - (get@ #.seed lux)]))) + (#try.Success [(revised@ #.seed ++ lux) + (value@ #.seed lux)]))) (def: .public (module_exists? module) (-> Text (Meta Bit)) (function (_ lux) - (#try.Success [lux (case (plist.value module (get@ #.modules lux)) + (#try.Success [lux (case (plist.value module (value@ #.modules lux)) (#.Some _) #1 @@ -248,7 +248,7 @@ (#.Var var) (function (_ lux) (case (|> lux - (get@ [#.type_context #.var_bindings]) + (value@ [#.type_context #.var_bindings]) (type_variable var)) (^or #.None (#.Some (#.Var _))) (#try.Success [lux type]) @@ -268,15 +268,15 @@ (case (do maybe.monad [scope (list.example (function (_ env) (or (list.any? test (: (List [Text [Type Any]]) - (get@ [#.locals #.mappings] env))) + (value@ [#.locals #.mappings] env))) (list.any? test (: (List [Text [Type Any]]) - (get@ [#.captured #.mappings] env))))) - (get@ #.scopes lux)) + (value@ [#.captured #.mappings] env))))) + (value@ #.scopes lux)) [_ [type _]] (on_either (list.example test) (: (List [Text [Type Any]]) - (get@ [#.locals #.mappings] scope)) + (value@ [#.locals #.mappings] scope)) (: (List [Text [Type Any]]) - (get@ [#.captured #.mappings] scope)))] + (value@ [#.captured #.mappings] scope)))] (in type)) (#.Some var_type) ((clean_type var_type) lux) @@ -310,28 +310,28 @@ (case (: (Maybe Global) (do maybe.monad [(^slots [#.definitions]) (|> lux - (get@ #.modules) + (value@ #.modules) (plist.value normal_module))] (plist.value normal_short definitions))) (#.Some definition) (#try.Success [lux definition]) _ - (let [current_module (|> lux (get@ #.current_module) (maybe.else "???")) + (let [current_module (|> lux (value@ #.current_module) (maybe.else "???")) all_known_modules (|> lux - (get@ #.modules) + (value@ #.modules) (list\map product.left) ..module_listing)] (#try.Failure ($_ text\compose "Unknown definition: " (name\encode name) text.new_line " Current module: " current_module text.new_line - (case (plist.value current_module (get@ #.modules lux)) + (case (plist.value current_module (value@ #.modules lux)) (#.Some this_module) (let [candidates (|> lux - (get@ #.modules) + (value@ #.modules) (list\map (function (_ [module_name module]) (|> module - (get@ #.definitions) + (value@ #.definitions) (list.all (function (_ [def_name global]) (case global (#.Definition [exported? _ _ _]) @@ -342,14 +342,14 @@ (#.Alias _) #.None)))))) - list.joined + list.together (list.sorted text\<) (text.interposed ..listing_separator)) imports (|> this_module - (get@ #.imports) + (value@ #.imports) ..module_listing) aliases (|> this_module - (get@ #.module_aliases) + (value@ #.module_aliases) (list\map (function (_ [alias real]) ($_ text\compose alias " => " real))) (list.sorted text\<) (text.interposed ..listing_separator))] @@ -425,12 +425,12 @@ {#.doc "The entire list of globals in a module (including the non-exported/private ones)."} (-> Text (Meta (List [Text Global]))) (function (_ lux) - (case (plist.value module (get@ #.modules lux)) + (case (plist.value module (value@ #.modules lux)) #.None (#try.Failure ($_ text\compose "Unknown module: " module)) (#.Some module) - (#try.Success [lux (get@ #.definitions module)])))) + (#try.Success [lux (value@ #.definitions module)])))) (def: .public (definitions module) {#.doc "The entire list of definitions in a module (including the non-exported/private ones)."} @@ -461,7 +461,7 @@ (Meta (List [Text Module])) (function (_ lux) (|> lux - (get@ #.modules) + (value@ #.modules) [lux] #try.Success))) @@ -471,7 +471,7 @@ (do ..monad [.let [[module name] type_name] module (..module module)] - (case (plist.value name (get@ #.types module)) + (case (plist.value name (value@ #.types module)) (#.Some [tags _]) (in (#.Some tags)) @@ -482,13 +482,13 @@ {#.doc "The location of the current expression being analyzed."} (Meta Location) (function (_ lux) - (#try.Success [lux (get@ #.location lux)]))) + (#try.Success [lux (value@ #.location lux)]))) (def: .public expected_type {#.doc "The expected type of the current expression being analyzed."} (Meta Type) (function (_ lux) - (case (get@ #.expected lux) + (case (value@ #.expected lux) (#.Some type) (#try.Success [lux type]) @@ -512,7 +512,7 @@ {#.doc (example "Checks if the given module has been imported by the current module.")} (-> Text (Meta Bit)) (\ ..functor map - (|>> (get@ #.imports) (list.any? (text\= import))) + (|>> (value@ #.imports) (list.any? (text\= import))) ..current_module)) (def: .public (tag tag_name) @@ -523,7 +523,7 @@ =module (..module module) this_module_name ..current_module_name imported! (..imported? module)] - (case (plist.value name (get@ #.tags =module)) + (case (plist.value name (value@ #.tags =module)) (#.Some [idx tag_list exported? type]) (if (or (text\= this_module_name module) (and imported! exported?)) @@ -534,9 +534,9 @@ (..failure ($_ text\compose "Unknown tag: " (name\encode tag_name) text.new_line " Known tags: " (|> =module - (get@ #.tags) + (value@ #.tags) (list\map (|>> product.left [module] name\encode (text.prefix text.new_line))) - text.joined) + text.together) ))))) (def: .public (tag_lists module) @@ -545,7 +545,7 @@ (do ..monad [=module (..module module) this_module_name ..current_module_name] - (in (|> (get@ #.types =module) + (in (|> (value@ #.types =module) (list.only (function (_ [type_name [tag_list exported? type]]) (or exported? (text\= this_module_name module)))) @@ -556,13 +556,13 @@ {#.doc "All the local variables currently in scope, separated in different scopes."} (Meta (List (List [Text Type]))) (function (_ lux) - (case (list.inits (get@ #.scopes lux)) + (case (list.inits (value@ #.scopes lux)) #.None (#try.Failure "No local environment") (#.Some scopes) (#try.Success [lux - (list\map (|>> (get@ [#.locals #.mappings]) + (list\map (|>> (value@ [#.locals #.mappings]) (list\map (function (_ [name [type _]]) [name type]))) scopes)])))) @@ -589,7 +589,7 @@ {#.doc (example "The current type-checking context.")} (Meta Type_Context) (function (_ lux) - (#try.Success [lux (get@ #.type_context lux)]))) + (#try.Success [lux (value@ #.type_context lux)]))) (def: .public (lifted result) (All [a] (-> (Try a) (Meta a))) diff --git a/stdlib/source/library/lux/meta/location.lux b/stdlib/source/library/lux/meta/location.lux index 0c089da36..24511eb26 100644 --- a/stdlib/source/library/lux/meta/location.lux +++ b/stdlib/source/library/lux/meta/location.lux @@ -8,9 +8,9 @@ (Equivalence Location) (def: (= reference subject) - (and ("lux text =" (get@ #.module reference) (get@ #.module subject)) - ("lux i64 =" (get@ #.line reference) (get@ #.line subject)) - ("lux i64 =" (get@ #.column reference) (get@ #.column subject))))) + (and ("lux text =" (value@ #.module reference) (value@ #.module subject)) + ("lux i64 =" (value@ #.line reference) (value@ #.line subject)) + ("lux i64 =" (value@ #.column reference) (value@ #.column subject))))) (def: .public dummy Location @@ -23,12 +23,12 @@ (here))} (case tokens #.End - (let [location (get@ #.location compiler)] + (let [location (value@ #.location compiler)] (#.Right [compiler (list (` (.: .Location - [(~ [..dummy (#.Text (get@ #.module location))]) - (~ [..dummy (#.Nat (get@ #.line location))]) - (~ [..dummy (#.Nat (get@ #.column location))])])))])) + [(~ [..dummy (#.Text (value@ #.module location))]) + (~ [..dummy (#.Nat (value@ #.line location))]) + (~ [..dummy (#.Nat (value@ #.column location))])])))])) _ (#.Left (`` (("lux in-module" (~~ (static .prelude_module)) wrong_syntax_error) (name_of ..here)))))) diff --git a/stdlib/source/library/lux/target/js.lux b/stdlib/source/library/lux/target/js.lux index 95c49a200..191b5520a 100644 --- a/stdlib/source/library/lux/target/js.lux +++ b/stdlib/source/library/lux/target/js.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- Location Code or and function if cond undefined for comment not int try) + [lux (#- Location Code or and function if cond undefined for comment not int try ++ --) [control [pipe (#+ case>)]] [data diff --git a/stdlib/source/library/lux/target/jvm/attribute/code.lux b/stdlib/source/library/lux/target/jvm/attribute/code.lux index 1c1cb95a9..81f487d2d 100644 --- a/stdlib/source/library/lux/target/jvm/attribute/code.lux +++ b/stdlib/source/library/lux/target/jvm/attribute/code.lux @@ -37,19 +37,19 @@ ... u4 code_length; ///unsigned.bytes/4 ... u1 code[code_length]; - (binary.size (get@ #code code)) + (binary.size (value@ #code code)) ... u2 exception_table_length; ///unsigned.bytes/2 ... exception_table[exception_table_length]; (|> code - (get@ #exception_table) + (value@ #exception_table) row.size (n.* /exception.length)) ... u2 attributes_count; ///unsigned.bytes/2 ... attribute_info attributes[attributes_count]; (|> code - (get@ #attributes) + (value@ #attributes) (row\map length) (row\fold n.+ 0)))) @@ -69,14 +69,14 @@ ($_ binaryF\compose ... u2 max_stack; ... u2 max_locals; - (///limit.writer (get@ #limit code)) + (///limit.writer (value@ #limit code)) ... u4 code_length; ... u1 code[code_length]; - (binaryF.binary/32 (get@ #code code)) + (binaryF.binary/32 (value@ #code code)) ... u2 exception_table_length; ... exception_table[exception_table_length]; - ((binaryF.row/16 /exception.writer) (get@ #exception_table code)) + ((binaryF.row/16 /exception.writer) (value@ #exception_table code)) ... u2 attributes_count; ... attribute_info attributes[attributes_count]; - ((binaryF.row/16 writer) (get@ #attributes code)) + ((binaryF.row/16 writer) (value@ #attributes code)) )) diff --git a/stdlib/source/library/lux/target/jvm/bytecode.lux b/stdlib/source/library/lux/target/jvm/bytecode.lux index 87b0a75c5..a97f4a1c2 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode.lux @@ -105,9 +105,9 @@ (function (_ [pool environment tracker]) (#try.Success [[pool environment - (update@ #next inc tracker)] + (revised@ #next ++ tracker)] [..relative_identity - (get@ #next tracker)]]))) + (value@ #next tracker)]]))) (exception: .public (label_has_already_been_set {label Label}) (exception.report @@ -127,16 +127,16 @@ (with_expansions [<success> (as_is (in [[pool environment - (update@ #known - (dictionary.has label [actual (#.Some @here)]) - tracker)] + (revised@ #known + (dictionary.has label [actual (#.Some @here)]) + tracker)] [..relative_identity []]]))] (def: .public (set_label label) (-> Label (Bytecode Any)) (function (_ [pool environment tracker]) - (let [@here (get@ #program_counter tracker)] - (case (dictionary.value label (get@ #known tracker)) + (let [@here (value@ #program_counter tracker)] + (case (dictionary.value label (value@ #known tracker)) (#.Some [expected (#.Some address)]) (exception.except ..label_has_already_been_set [label]) @@ -148,7 +148,7 @@ #.None (do try.monad [[actual environment] (/environment.continue (|> environment - (get@ #/environment.stack) + (value@ #/environment.stack) (maybe.else /stack.empty)) environment)] <success>)))))) @@ -175,7 +175,7 @@ (function (_ pool) (do try.monad [[[pool environment tracker] [relative output]] (bytecode [pool environment ..fresh]) - [exceptions instruction] (relative (get@ #known tracker))] + [exceptions instruction] (relative (value@ #known tracker))] (in [pool [environment exceptions instruction output]])))) (def: (step estimator counter) @@ -188,12 +188,12 @@ (do {! try.monad} [environment' (|> environment (/environment.consumes consumption) - (monad.bind ! (/environment.produces production)) - (monad.bind ! (/environment.has registry))) - program_counter' (step estimator (get@ #program_counter tracker))] + (monad.then ! (/environment.produces production)) + (monad.then ! (/environment.has registry))) + program_counter' (step estimator (value@ #program_counter tracker))] (in [[pool environment' - (set@ #program_counter program_counter' tracker)] + (with@ #program_counter program_counter' tracker)] [(function.constant (in [..no_exceptions (bytecode input)])) []]])))) @@ -721,19 +721,19 @@ (def: (acknowledge_label stack label tracker) (-> Stack Label Tracker Tracker) - (case (dictionary.value label (get@ #known tracker)) + (case (dictionary.value label (value@ #known tracker)) (#.Some _) tracker #.None - (update@ #known (dictionary.has label [stack #.None]) tracker))) + (revised@ #known (dictionary.has label [stack #.None]) tracker))) (template [<consumption> <name> <instruction>] [(def: .public (<name> label) (-> Label (Bytecode Any)) (let [[estimator bytecode] <instruction>] (function (_ [pool environment tracker]) - (let [@here (get@ #program_counter tracker)] + (let [@here (value@ #program_counter tracker)] (do try.monad [environment' (|> environment (/environment.consumes <consumption>)) @@ -744,7 +744,7 @@ environment' (|> tracker (..acknowledge_label actual label) - (set@ #program_counter program_counter'))] + (with@ #program_counter program_counter'))] [(function (_ resolver) (do try.monad [[expected @to] (..resolve_label label resolver) @@ -787,14 +787,14 @@ (function (_ [pool environment tracker]) (do try.monad [actual (/environment.stack environment) - .let [@here (get@ #program_counter tracker)] + .let [@here (value@ #program_counter tracker)] program_counter' (step estimator @here)] (in (let [@from @here] [[pool (/environment.discontinue environment) (|> tracker (..acknowledge_label actual label) - (set@ #program_counter program_counter'))] + (with@ #program_counter program_counter'))] [(function (_ resolver) (case (dictionary.value label resolver) (#.Some [expected (#.Some @to)]) @@ -843,22 +843,22 @@ [environment' (|> environment (/environment.consumes $1)) actual (/environment.stack environment') - program_counter' (step (estimator (list.size afterwards)) (get@ #program_counter tracker))] - (in (let [@from (get@ #program_counter tracker)] + program_counter' (step (estimator (list.size afterwards)) (value@ #program_counter tracker))] + (in (let [@from (value@ #program_counter tracker)] [[pool environment' (|> (list\fold (..acknowledge_label actual) tracker (list& default at_minimum afterwards)) - (set@ #program_counter program_counter'))] + (with@ #program_counter program_counter'))] [(function (_ resolver) (let [get (: (-> Label (Maybe [Stack (Maybe Address)])) (function (_ label) (dictionary.value label resolver)))] (case (do {! maybe.monad} - [@default (|> default get (monad.bind ! product.right)) - @at_minimum (|> at_minimum get (monad.bind ! product.right)) + [@default (|> default get (monad.then ! product.right)) + @at_minimum (|> at_minimum get (monad.then ! product.right)) @afterwards (|> afterwards (monad.map ! get) - (monad.bind ! (monad.map ! product.right)))] + (monad.then ! (monad.map ! product.right)))] (in [@default @at_minimum @afterwards])) (#.Some [@default @at_minimum @afterwards]) (do {! try.monad} @@ -886,21 +886,21 @@ [environment' (|> environment (/environment.consumes $1)) actual (/environment.stack environment') - program_counter' (step (estimator (list.size cases)) (get@ #program_counter tracker))] - (in (let [@from (get@ #program_counter tracker)] + program_counter' (step (estimator (list.size cases)) (value@ #program_counter tracker))] + (in (let [@from (value@ #program_counter tracker)] [[pool environment' (|> (list\fold (..acknowledge_label actual) tracker (list& default (list\map product.right cases))) - (set@ #program_counter program_counter'))] + (with@ #program_counter program_counter'))] [(function (_ resolver) (let [get (: (-> Label (Maybe [Stack (Maybe Address)])) (function (_ label) (dictionary.value label resolver)))] (case (do {! maybe.monad} - [@default (|> default get (monad.bind ! product.right)) + [@default (|> default get (monad.then ! product.right)) @cases (|> cases (monad.map ! (|>> product.right get)) - (monad.bind ! (monad.map ! product.right)))] + (monad.then ! (monad.map ! product.right)))] (in [@default @cases])) (#.Some [@default @cases]) (do {! try.monad} diff --git a/stdlib/source/library/lux/target/jvm/bytecode/environment.lux b/stdlib/source/library/lux/target/jvm/bytecode/environment.lux index 6a09af8fd..54c754dc5 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/environment.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/environment.lux @@ -51,7 +51,7 @@ (def: .public (stack environment) (-> Environment (Try Stack)) - (case (get@ #..stack environment) + (case (value@ #..stack environment) (#.Some stack) (#try.Success stack) @@ -60,7 +60,7 @@ (def: .public discontinue (-> Environment Environment) - (set@ #..stack #.None)) + (with@ #..stack #.None)) (exception: .public (mismatched_stacks {expected Stack} {actual Stack}) @@ -70,14 +70,14 @@ (def: .public (continue expected environment) (-> Stack Environment (Try [Stack Environment])) - (case (get@ #..stack environment) + (case (value@ #..stack environment) (#.Some actual) (if (\ /stack.equivalence = expected actual) (#try.Success [actual environment]) (exception.except ..mismatched_stacks [expected actual])) #.None - (#try.Success [expected (set@ #..stack (#.Some expected) environment)]))) + (#try.Success [expected (with@ #..stack (#.Some expected) environment)]))) (def: .public (consumes amount) (-> U2 Condition) @@ -87,7 +87,7 @@ (do try.monad [previous (..stack environment) current (/stack.pop amount previous)] - (in (set@ #..stack (#.Some current) environment))))) + (in (with@ #..stack (#.Some current) environment))))) (def: .public (produces amount) (-> U2 Condition) @@ -96,13 +96,13 @@ [previous (..stack environment) current (/stack.push amount previous) .let [limit (|> environment - (get@ [#..limit #/limit.stack]) + (value@ [#..limit #/limit.stack]) (/stack.max current))]] (in (|> environment - (set@ #..stack (#.Some current)) - (set@ [#..limit #/limit.stack] limit)))))) + (with@ #..stack (#.Some current)) + (with@ [#..limit #/limit.stack] limit)))))) (def: .public (has registry) (-> Registry Condition) - (|>> (update@ [#..limit #/limit.registry] (/registry.has registry)) + (|>> (revised@ [#..limit #/limit.registry] (/registry.has registry)) #try.Success)) diff --git a/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux b/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux index 48bdffd82..d57c07354 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/environment/limit.lux @@ -53,6 +53,6 @@ (def: .public (writer limit) (Writer Limit) ($_ format\compose - (/stack.writer (get@ #stack limit)) - (/registry.writer (get@ #registry limit)) + (/stack.writer (value@ #stack limit)) + (/registry.writer (value@ #registry limit)) )) diff --git a/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux b/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux index 7f8638dca..2e21d2a8e 100644 --- a/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux +++ b/stdlib/source/library/lux/target/jvm/bytecode/instruction.lux @@ -54,7 +54,7 @@ (def: .public result (-> Instruction Specification) - (function.apply format.no_op)) + (function.on format.no_op)) (type: Opcode Nat) @@ -596,7 +596,7 @@ (///unsigned.value ..integer_size) (///unsigned.value ..integer_size) (n.* (///unsigned.value ..big_jump_size) - (inc amount_of_afterwards))) + (++ amount_of_afterwards))) ///unsigned.u2 try.trusted)))] [estimator @@ -622,7 +622,7 @@ _ (case padding 3 (do ! [_ (binary.write/8! offset 0 binary)] - (binary.write/16! (inc offset) 0 binary)) + (binary.write/16! (++ offset) 0 binary)) 2 (binary.write/16! offset 0 binary) 1 (binary.write/8! offset 0 binary) _ (in binary)) @@ -684,7 +684,7 @@ _ (case padding 3 (do ! [_ (binary.write/8! offset 0 binary)] - (binary.write/16! (inc offset) 0 binary)) + (binary.write/16! (++ offset) 0 binary)) 2 (binary.write/16! offset 0 binary) 1 (binary.write/8! offset 0 binary) _ (in binary)) diff --git a/stdlib/source/library/lux/target/jvm/class.lux b/stdlib/source/library/lux/target/jvm/class.lux index b4cb88ec4..586cc2394 100644 --- a/stdlib/source/library/lux/target/jvm/class.lux +++ b/stdlib/source/library/lux/target/jvm/class.lux @@ -76,7 +76,7 @@ (monad.fold ! (function (_ interface @interfaces) (do ! [@interface (//constant/pool.class interface)] - (in (row.add @interface @interfaces)))) + (in (row.suffix @interface @interfaces)))) row.empty interfaces))] (in [@this @super @interfaces]))) @@ -95,8 +95,8 @@ (<| (state.result' //constant/pool.empty) (do //constant/pool.monad [classes (install_classes this super interfaces) - =fields (monad.seq //constant/pool.monad fields) - =methods (monad.seq //constant/pool.monad methods)] + =fields (monad.all //constant/pool.monad fields) + =methods (monad.all //constant/pool.monad methods)] (in [classes =fields =methods])))] (in {#magic //magic.code #minor_version //version.default_minor @@ -114,7 +114,7 @@ (Writer Class) (`` ($_ binaryF\compose (~~ (template [<writer> <slot>] - [(<writer> (get@ <slot> class))] + [(<writer> (value@ <slot> class))] [//magic.writer #magic] [//version.writer #minor_version] @@ -124,7 +124,7 @@ [//index.writer #this] [//index.writer #super])) (~~ (template [<writer> <slot>] - [((binaryF.row/16 <writer>) (get@ <slot> class))] + [((binaryF.row/16 <writer>) (value@ <slot> class))] [//index.writer #interfaces] [//field.writer #fields] diff --git a/stdlib/source/library/lux/target/jvm/constant/pool.lux b/stdlib/source/library/lux/target/jvm/constant/pool.lux index 2278889b8..346dd0f9e 100644 --- a/stdlib/source/library/lux/target/jvm/constant/pool.lux +++ b/stdlib/source/library/lux/target/jvm/constant/pool.lux @@ -53,7 +53,7 @@ (template: (!add <tag> <equivalence> <value>) [(function (_ [current pool]) (let [<value>' <value>] - (with_expansions [<try_again> (as_is (recur (.inc idx)))] + (with_expansions [<try_again> (as_is (recur (.++ idx)))] (loop [idx 0] (case (row.item idx pool) (#try.Success entry) @@ -77,7 +77,7 @@ (//unsigned.+/2 @new) (\ ! map //index.index)))] (in [[next - (row.add [current new] pool)] + (row.suffix [current new] pool)] current]))))))))]) (template: (!index <index>) diff --git a/stdlib/source/library/lux/target/jvm/encoding/signed.lux b/stdlib/source/library/lux/target/jvm/encoding/signed.lux index 8fed13354..1c03a5c47 100644 --- a/stdlib/source/library/lux/target/jvm/encoding/signed.lux +++ b/stdlib/source/library/lux/target/jvm/encoding/signed.lux @@ -58,7 +58,7 @@ (def: .public <maximum> <name> - (|> <bytes> (n.* i64.bits_per_byte) dec i64.mask :abstraction)) + (|> <bytes> (n.* i64.bits_per_byte) -- i64.mask :abstraction)) (def: .public <constructor> (-> Int (Try <name>)) diff --git a/stdlib/source/library/lux/target/jvm/field.lux b/stdlib/source/library/lux/target/jvm/field.lux index a9d783621..b8d84170d 100644 --- a/stdlib/source/library/lux/target/jvm/field.lux +++ b/stdlib/source/library/lux/target/jvm/field.lux @@ -50,7 +50,7 @@ (Writer Field) (`` ($_ binaryF\compose (~~ (template [<writer> <slot>] - [(<writer> (get@ <slot> field))] + [(<writer> (value@ <slot> field))] [modifier.writer #modifier] [//index.writer #name] diff --git a/stdlib/source/library/lux/target/jvm/loader.lux b/stdlib/source/library/lux/target/jvm/loader.lux index 549fb8b01..3d644cf5d 100644 --- a/stdlib/source/library/lux/target/jvm/loader.lux +++ b/stdlib/source/library/lux/target/jvm/loader.lux @@ -66,13 +66,13 @@ (def: java/lang/ClassLoader::defineClass java/lang/reflect/Method (let [signature (|> (ffi.array <elemT> 4) - (ffi.array_write 0 (:as <elemT> - (ffi.class_for java/lang/String))) - (ffi.array_write 1 (java/lang/Object::getClass (ffi.array byte 0))) - (ffi.array_write 2 (:as <elemT> - (java/lang/Integer::TYPE))) - (ffi.array_write 3 (:as <elemT> - (java/lang/Integer::TYPE))))] + (ffi.write! 0 (:as <elemT> + (ffi.class_for java/lang/String))) + (ffi.write! 1 (java/lang/Object::getClass (ffi.array byte 0))) + (ffi.write! 2 (:as <elemT> + (java/lang/Integer::TYPE))) + (ffi.write! 3 (:as <elemT> + (java/lang/Integer::TYPE))))] (do_to (java/lang/Class::getDeclaredMethod "defineClass" signature (ffi.class_for java/lang/ClassLoader)) diff --git a/stdlib/source/library/lux/target/jvm/method.lux b/stdlib/source/library/lux/target/jvm/method.lux index 8c42130d1..e604eb3c2 100644 --- a/stdlib/source/library/lux/target/jvm/method.lux +++ b/stdlib/source/library/lux/target/jvm/method.lux @@ -54,7 +54,7 @@ [@name (//constant/pool.utf8 name) @descriptor (//constant/pool.descriptor (//type.descriptor type)) attributes (|> attributes - (monad.seq !) + (monad.all !) (\ ! map row.of_list)) attributes (case code (#.Some code) @@ -69,11 +69,11 @@ (function (_ _) (#try.Failure error))) [environment exceptions instruction output] (//bytecode.resolve environment code) .let [bytecode (|> instruction //bytecode/instruction.result format.instance)] - @code (//attribute.code {#//attribute/code.limit (get@ #//bytecode/environment.limit environment) + @code (//attribute.code {#//attribute/code.limit (value@ #//bytecode/environment.limit environment) #//attribute/code.code bytecode #//attribute/code.exception_table exceptions #//attribute/code.attributes (row.row)})] - (in (row.add @code attributes))) + (in (row.suffix @code attributes))) #.None (in attributes))] @@ -95,7 +95,7 @@ (Writer Method) (`` ($_ format\compose (~~ (template [<writer> <slot>] - [(<writer> (get@ <slot> field))] + [(<writer> (value@ <slot> field))] [//modifier.writer #modifier] [//index.writer #name] diff --git a/stdlib/source/library/lux/target/jvm/reflection.lux b/stdlib/source/library/lux/target/jvm/reflection.lux index f68b6b59d..db554e4fb 100644 --- a/stdlib/source/library/lux/target/jvm/reflection.lux +++ b/stdlib/source/library/lux/target/jvm/reflection.lux @@ -132,7 +132,7 @@ (#try.Success class) (#try.Failure _) - (exception.except ..unknown_class name))) + (exception.except ..unknown_class [name]))) (def: .public (sub? class_loader super sub) (-> java/lang/ClassLoader External External (Try Bit)) @@ -182,10 +182,10 @@ paramsT))) _ - (exception.except ..not_a_class raw))) + (exception.except ..not_a_class [raw]))) _) ... else - (exception.except ..cannot_convert_to_a_lux_type reflection))) + (exception.except ..cannot_convert_to_a_lux_type [reflection]))) (def: .public (parameter reflection) (-> java/lang/reflect/Type (Try (/.Type Parameter))) diff --git a/stdlib/source/library/lux/target/jvm/type/descriptor.lux b/stdlib/source/library/lux/target/jvm/type/descriptor.lux index 9c0f56021..099a68287 100644 --- a/stdlib/source/library/lux/target/jvm/type/descriptor.lux +++ b/stdlib/source/library/lux/target/jvm/type/descriptor.lux @@ -98,7 +98,7 @@ (:abstraction (format (|> inputs (list\map ..descriptor) - text.joined + text.together (text.enclosed ["(" ")"])) (:representation output)))) diff --git a/stdlib/source/library/lux/target/jvm/type/lux.lux b/stdlib/source/library/lux/target/jvm/type/lux.lux index a9021109b..99845fa7e 100644 --- a/stdlib/source/library/lux/target/jvm/type/lux.lux +++ b/stdlib/source/library/lux/target/jvm/type/lux.lux @@ -135,7 +135,7 @@ (<>.before (<text>.this //signature.parameters_end)) (<>.else (list)))] (in (do {! check.monad} - [parameters (monad.seq ! parameters)] + [parameters (monad.all ! parameters)] (in (#.Primitive name parameters))))) (<>.after (<text>.this //descriptor.class_prefix)) (<>.before (<text>.this //descriptor.class_suffix)))) diff --git a/stdlib/source/library/lux/target/jvm/type/signature.lux b/stdlib/source/library/lux/target/jvm/type/signature.lux index 683ba1432..7195c4918 100644 --- a/stdlib/source/library/lux/target/jvm/type/signature.lux +++ b/stdlib/source/library/lux/target/jvm/type/signature.lux @@ -78,8 +78,13 @@ [upper ..upper_prefix] ) - (def: .public parameters_start "<") - (def: .public parameters_end ">") + (template [<char> <name>] + [(def: .public <name> + <char>)] + + ["<" parameters_start] + [">" parameters_end] + ) (def: .public (class name parameters) (-> External (List (Signature Parameter)) (Signature Class)) @@ -94,7 +99,7 @@ (format ..parameters_start (|> parameters (list\map ..signature) - text.joined) + text.together) ..parameters_end)) //descriptor.class_suffix))) @@ -130,18 +135,18 @@ (|> type_variables (list\map (|>> ..var_name (text.suffix ..class_bound))) - text.joined + text.together (text.enclosed [..parameters_start ..parameters_end]))) (|> inputs (list\map ..signature) - text.joined + text.together (text.enclosed [..arguments_start ..arguments_end])) (:representation output) (|> exceptions (list\map (|>> :representation (format ..exception_prefix))) - text.joined)))) + text.together)))) (implementation: .public equivalence (All [category] (Equivalence (Signature category))) diff --git a/stdlib/source/library/lux/target/lua.lux b/stdlib/source/library/lux/target/lua.lux index b79db8fc4..b70cf80f0 100644 --- a/stdlib/source/library/lux/target/lua.lux +++ b/stdlib/source/library/lux/target/lua.lux @@ -374,7 +374,7 @@ (syntax: (arity_inputs [arity <code>.nat]) (in (case arity 0 (.list) - _ (|> (dec arity) + _ (|> (-- arity) (enum.range n.enum 0) (list\map (|>> %.nat code.local_identifier)))))) diff --git a/stdlib/source/library/lux/target/php.lux b/stdlib/source/library/lux/target/php.lux index 11aea7808..860c33713 100644 --- a/stdlib/source/library/lux/target/php.lux +++ b/stdlib/source/library/lux/target/php.lux @@ -230,7 +230,7 @@ (syntax: (arity_inputs [arity <code>.nat]) (in (case arity 0 (.list) - _ (|> (dec arity) + _ (|> (-- arity) (enum.range n.enum 0) (list\map (|>> %.nat code.local_identifier)))))) @@ -481,10 +481,10 @@ (def: (catch except) (-> Except Text) - (let [declaration (format (:representation (get@ #class except)) - " " (:representation (get@ #exception except)))] + (let [declaration (format (:representation (value@ #class except)) + " " (:representation (value@ #exception except)))] (format "catch" (..group declaration) " " - (..block (:representation (get@ #handler except)))))) + (..block (:representation (value@ #handler except)))))) (def: .public (try body! excepts) (-> Statement (List Except) Statement) diff --git a/stdlib/source/library/lux/target/python.lux b/stdlib/source/library/lux/target/python.lux index c8a62c58b..06ad85593 100644 --- a/stdlib/source/library/lux/target/python.lux +++ b/stdlib/source/library/lux/target/python.lux @@ -243,7 +243,7 @@ (format (:representation func) (format "(" (|> args (list\map (function (_ arg) (format (:representation arg) ", "))) - text.joined) + text.together) (<splat> extra) ")"))))] [apply_poly splat_poly] @@ -268,7 +268,7 @@ [do_keyword apply_keyword] ) - (def: .public (nth idx array) + (def: .public (item idx array) (-> (Expression Any) (Expression Any) Location) (:abstraction (format (:representation array) "[" (:representation idx) "]"))) @@ -409,7 +409,7 @@ (format text.new_line "except (" (text.interposed ", " (list\map ..code classes)) ") as " (:representation exception) ":" (..nested (:representation catch!))))) - text.joined)))) + text.together)))) (template [<name> <keyword> <pre>] [(def: .public (<name> value) @@ -460,7 +460,7 @@ (syntax: (arity_inputs [arity <code>.nat]) (in (case arity 0 (.list) - _ (|> (dec arity) + _ (|> (-- arity) (enum.range n.enum 0) (list\map (|>> %.nat code.local_identifier)))))) diff --git a/stdlib/source/library/lux/target/r.lux b/stdlib/source/library/lux/target/r.lux index 15804b77b..d5344a1c9 100644 --- a/stdlib/source/library/lux/target/r.lux +++ b/stdlib/source/library/lux/target/r.lux @@ -170,7 +170,7 @@ (let [func (:representation func) spacing (|> " " (list.repeated (text.size func)) - text.joined)] + text.together)] (:abstraction (format func "(" (|> args diff --git a/stdlib/source/library/lux/target/ruby.lux b/stdlib/source/library/lux/target/ruby.lux index 032ebb265..954a91d97 100644 --- a/stdlib/source/library/lux/target/ruby.lux +++ b/stdlib/source/library/lux/target/ruby.lux @@ -436,7 +436,7 @@ (syntax: (arity_inputs [arity <code>.nat]) (in (case arity 0 (.list) - _ (|> (dec arity) + _ (|> (-- arity) (enum.range n.enum 0) (list\map (|>> %.nat code.local_identifier)))))) diff --git a/stdlib/source/library/lux/target/scheme.lux b/stdlib/source/library/lux/target/scheme.lux index 7e910a91f..4390d9981 100644 --- a/stdlib/source/library/lux/target/scheme.lux +++ b/stdlib/source/library/lux/target/scheme.lux @@ -341,7 +341,7 @@ (-> Var Arguments Expression Computation) (..form (list (..var "define") (|> arguments - (update@ #mandatory (|>> (#.Item name))) + (revised@ #mandatory (|>> (#.Item name))) ..arguments) body))) diff --git a/stdlib/source/library/lux/test.lux b/stdlib/source/library/lux/test.lux index dbd87627e..29af87345 100644 --- a/stdlib/source/library/lux/test.lux +++ b/stdlib/source/library/lux/test.lux @@ -50,12 +50,12 @@ (def: (total parameter subject) (-> Tally Tally Tally) - {#successes (n.+ (get@ #successes parameter) (get@ #successes subject)) - #failures (n.+ (get@ #failures parameter) (get@ #failures subject)) - #expected_coverage (set.union (get@ #expected_coverage parameter) - (get@ #expected_coverage subject)) - #actual_coverage (set.union (get@ #actual_coverage parameter) - (get@ #actual_coverage subject))}) + {#successes (n.+ (value@ #successes parameter) (value@ #successes subject)) + #failures (n.+ (value@ #failures parameter) (value@ #failures subject)) + #expected_coverage (set.union (value@ #expected_coverage parameter) + (value@ #expected_coverage subject)) + #actual_coverage (set.union (value@ #actual_coverage parameter) + (value@ #actual_coverage subject))}) (def: start Tally @@ -67,7 +67,7 @@ (template [<name> <category>] [(def: <name> Tally - (update@ <category> .inc ..start))] + (revised@ <category> .++ ..start))] [success_tally #successes] [failure_tally #failures] @@ -166,7 +166,7 @@ (def: failed? (-> Tally Bit) - (|>> (get@ #failures) (n.> 0))) + (|>> (value@ #failures) (n.> 0))) (def: (times_failure seed documentation) (-> Seed Text Text) @@ -193,26 +193,26 @@ (case amount 1 instance _ (|> test - (times (dec amount)) + (times (-- amount)) (random.result prng') product.right))))]))))) (def: (description duration tally) (-> Duration Tally Text) - (let [successes (get@ #successes tally) - failures (get@ #failures tally) - missing (set.difference (get@ #actual_coverage tally) - (get@ #expected_coverage tally)) - unexpected (set.difference (get@ #expected_coverage tally) - (get@ #actual_coverage tally)) + (let [successes (value@ #successes tally) + failures (value@ #failures tally) + missing (set.difference (value@ #actual_coverage tally) + (value@ #expected_coverage tally)) + unexpected (set.difference (value@ #expected_coverage tally) + (value@ #actual_coverage tally)) report (: (-> (Set Name) Text) (|>> set.list (list.sorted (\ name.order <)) (exception.listing %.name))) - expected_definitions_to_cover (set.size (get@ #expected_coverage tally)) + expected_definitions_to_cover (set.size (value@ #expected_coverage tally)) unexpected_definitions_covered (set.size unexpected) actual_definitions_covered (n.- unexpected_definitions_covered - (set.size (get@ #actual_coverage tally))) + (set.size (value@ #actual_coverage tally))) coverage (case expected_definitions_to_cover 0 "N/A" expected (let [missing_ratio (f./ (n.frac expected) @@ -265,7 +265,7 @@ (..description duration tally) text.new_line))]] (async.future (\ program.default exit - (case (get@ #failures tally) + (case (value@ #failures tally) 0 ..success_exit_code _ ..failure_exit_code))))) @@ -277,7 +277,7 @@ coverage (set.of_list name.hash coverage)] (|> (..assertion message condition) (async\map (function (_ [tally documentation]) - [(update@ #actual_coverage (set.union coverage) tally) + [(revised@ #actual_coverage (set.union coverage) tally) documentation]))))) (def: (|cover| coverage condition) @@ -292,7 +292,7 @@ (text.interposed " & ")) coverage (set.of_list name.hash coverage)] (random\map (async\map (function (_ [tally documentation]) - [(update@ #actual_coverage (set.union coverage) tally) + [(revised@ #actual_coverage (set.union coverage) tally) documentation])) (..context context test)))) @@ -369,7 +369,7 @@ (let [coverage (..decode_coverage module coverage)] (|> (..context module test) (random\map (async\map (function (_ [tally documentation]) - [(update@ #expected_coverage (set.union coverage) tally) + [(revised@ #expected_coverage (set.union coverage) tally) documentation])))))) (syntax: .public (covering [module <code>.identifier diff --git a/stdlib/source/library/lux/time.lux b/stdlib/source/library/lux/time.lux index eb0928f5c..c6206e167 100644 --- a/stdlib/source/library/lux/time.lux +++ b/stdlib/source/library/lux/time.lux @@ -46,7 +46,7 @@ (exception: .public (time_exceeds_a_day {time Nat}) (exception.report ["Time (in milli-seconds)" (n\encode time)] - ["Maximum (in milli-seconds)" (n\encode (dec limit))])) + ["Maximum (in milli-seconds)" (n\encode (-- limit))])) (def: separator ":") @@ -66,7 +66,7 @@ (exception.report ["Value" (n\encode value)] ["Minimum" (n\encode 0)] - ["Maximum" (n\encode (dec <maximum>))])) + ["Maximum" (n\encode (-- <maximum>))])) (def: <parser> (Parser Nat) @@ -121,13 +121,13 @@ (def: &order ..order) (def: succ - (|>> :representation inc (n.% ..limit) :abstraction)) + (|>> :representation ++ (n.% ..limit) :abstraction)) (def: pred (|>> :representation (case> 0 ..limit millis millis) - dec + -- :abstraction)))) (def: .public parser @@ -197,10 +197,10 @@ (def: .public (time clock) (-> Clock (Try Time)) (|> ($_ duration.merged - (duration.up (get@ #hour clock) duration.hour) - (duration.up (get@ #minute clock) duration.minute) - (duration.up (get@ #second clock) duration.second) - (duration.of_millis (.int (get@ #milli_second clock)))) + (duration.up (value@ #hour clock) duration.hour) + (duration.up (value@ #minute clock) duration.minute) + (duration.up (value@ #second clock) duration.second) + (duration.of_millis (.int (value@ #milli_second clock)))) duration.millis .nat ..of_millis)) diff --git a/stdlib/source/library/lux/time/date.lux b/stdlib/source/library/lux/time/date.lux index 75e5609ea..d06910711 100644 --- a/stdlib/source/library/lux/time/date.lux +++ b/stdlib/source/library/lux/time/date.lux @@ -95,7 +95,7 @@ (template [<name> <type> <field>] [(def: .public <name> (-> Date <type>) - (|>> :representation (get@ <field>)))] + (|>> :representation (value@ <field>)))] [year Year #year] [month Month #month] @@ -109,13 +109,13 @@ (let [reference (:representation reference) sample (:representation sample)] (and (\ //year.equivalence = - (get@ #year reference) - (get@ #year sample)) + (value@ #year reference) + (value@ #year sample)) (\ //month.equivalence = - (get@ #month reference) - (get@ #month sample)) - (n.= (get@ #day reference) - (get@ #day sample)))))) + (value@ #month reference) + (value@ #month sample)) + (n.= (value@ #day reference) + (value@ #day sample)))))) (implementation: .public order (Order Date) @@ -126,19 +126,19 @@ (let [reference (:representation reference) sample (:representation sample)] (or (\ //year.order < - (get@ #year reference) - (get@ #year sample)) + (value@ #year reference) + (value@ #year sample)) (and (\ //year.equivalence = - (get@ #year reference) - (get@ #year sample)) + (value@ #year reference) + (value@ #year sample)) (or (\ //month.order < - (get@ #month reference) - (get@ #month sample)) + (value@ #month reference) + (value@ #month sample)) (and (\ //month.order = - (get@ #month reference) - (get@ #month sample)) - (n.< (get@ #day reference) - (get@ #day sample))))))))) + (value@ #month reference) + (value@ #month sample)) + (n.< (value@ #day reference) + (value@ #day sample))))))))) ) (def: section_parser @@ -271,17 +271,17 @@ ..civil_month))) (def: last_era_leap_day - (.int (dec ..days_per_leap))) + (.int (-- ..days_per_leap))) (def: last_era_day - (.int (dec ..days_per_era))) + (.int (-- ..days_per_era))) (def: (civil_year utc_month utc_year) (-> Nat Year Int) (let [... Coercing, because the year is already in external form. utc_year (:as Int utc_year)] (if (n.< ..first_month_of_civil_year utc_month) - (dec utc_year) + (-- utc_year) utc_year))) ... http://howardhinnant.github.io/date_algorithms.html @@ -290,7 +290,7 @@ (let [utc_month (|> date ..month //month.number) civil_year (..civil_year utc_month (..year date)) era (|> (if (i.< +0 civil_year) - (i.- (.int (dec //year.era)) + (i.- (.int (-- //year.era)) civil_year) civil_year) (i./ (.int //year.era))) @@ -299,7 +299,7 @@ civil_year) day_of_year (|> utc_month ..day_of_year_from_month - (i.+ (.int (dec (..day_of_month date))))) + (i.+ (.int (-- (..day_of_month date))))) day_of_era (|> day_of_year (i.+ (i.* (.int //year.days) year_of_era)) (i.+ (i./ (.int //year.leap) year_of_era)) @@ -334,7 +334,7 @@ (i.+ +1) .nat) year (if (n.< ..first_month_of_civil_year month) - (inc year) + (++ year) year)] ... Coercing, because the year is already in internal form. (try.trusted @@ -348,7 +348,7 @@ (def: &order ..order) (def: succ - (|>> ..days inc ..of_days)) + (|>> ..days ++ ..of_days)) (def: pred - (|>> ..days dec ..of_days))) + (|>> ..days -- ..of_days))) diff --git a/stdlib/source/library/lux/time/instant.lux b/stdlib/source/library/lux/time/instant.lux index 36e0b2504..f454c1425 100644 --- a/stdlib/source/library/lux/time/instant.lux +++ b/stdlib/source/library/lux/time/instant.lux @@ -102,7 +102,7 @@ (let [[days millis] (i./% ..millis_per_day offset)] (case millis +0 [days millis] - _ [(dec days) (i.+ ..millis_per_day millis)])) + _ [(-- days) (i.+ ..millis_per_day millis)])) (i./% ..millis_per_day offset))] [(date.of_days days) (duration.of_millis day_time)])) @@ -214,7 +214,7 @@ day_time (duration.framed duration.day offset) days (if (and (duration.negative? offset) (not (duration.neutral? day_time))) - (dec days) + (-- days) days) ... 1970/01/01 was a Thursday y1970m0d0 +4] diff --git a/stdlib/source/library/lux/time/month.lux b/stdlib/source/library/lux/time/month.lux index d8203e175..07fcc6269 100644 --- a/stdlib/source/library/lux/time/month.lux +++ b/stdlib/source/library/lux/time/month.lux @@ -184,7 +184,7 @@ {#.doc (example "The amount of days of a month (in a leap year).")} (-> Month Nat) (case month - #February (inc (..days month)) + #February (++ (..days month)) _ (..days month))) (def: .public year diff --git a/stdlib/source/library/lux/time/year.lux b/stdlib/source/library/lux/time/year.lux index dd303ed85..3eb12ad90 100644 --- a/stdlib/source/library/lux/time/year.lux +++ b/stdlib/source/library/lux/time/year.lux @@ -23,14 +23,14 @@ (def: (internal year) (-> Int Int) (if (i.< +0 year) - (inc year) + (++ year) year)) (def: (external year) (-> Int Int) (if (i.> +0 year) year - (dec year))) + (-- year))) (exception: .public there_is_no_year_0) @@ -100,8 +100,8 @@ (-> Year Int) (let [year (|> year ..value ..internal) limit (if (i.> +0 year) - (dec year) - (inc year))] + (-- year) + (++ year))] (`` (|> +0 (~~ (template [<polarity> <years>] [(<polarity> (i./ (.int <years>) limit))] diff --git a/stdlib/source/library/lux/tool/compiler/default/init.lux b/stdlib/source/library/lux/tool/compiler/default/init.lux index e8b91db8c..04971dadd 100644 --- a/stdlib/source/library/lux/tool/compiler/default/init.lux +++ b/stdlib/source/library/lux/tool/compiler/default/init.lux @@ -107,8 +107,8 @@ (#.Right [source' output]) (let [[location _] output] (#try.Success [[bundle (|> compiler - (set@ #.source source') - (set@ #.location location))] + (with@ #.source source') + (with@ #.location location))] [source' output]]))))) (type: (Operation a) @@ -125,13 +125,13 @@ (///directive.Operation anchor expression directive [Source (Payload directive)]))) (do ///phase.monad - [.let [module (get@ #///.module input)] + [.let [module (value@ #///.module input)] _ (///directive.set_current_module module)] (///directive.lifted_analysis (do {! ///phase.monad} [_ (module.create hash module) _ (monad.map ! module.import dependencies) - .let [source (///analysis.source (get@ #///.module input) (get@ #///.code input))] + .let [source (///analysis.source (value@ #///.module input) (value@ #///.code input))] _ (///analysis.set_source_code source)] (in [source [///generation.empty_buffer artifact.empty]]))))) @@ -220,13 +220,13 @@ (def: (default_dependencies prelude input) (-> Module ///.Input (List Module)) (list& archive.runtime_module - (if (text\= prelude (get@ #///.module input)) + (if (text\= prelude (value@ #///.module input)) (list) (list prelude)))) (def: module_aliases (-> .Module Aliases) - (|>> (get@ #.module_aliases) (dictionary.of_list text.hash))) + (|>> (value@ #.module_aliases) (dictionary.of_list text.hash))) (def: .public (compiler expander prelude write_directive) (All [anchor expression directive] @@ -238,10 +238,10 @@ {#///.dependencies dependencies #///.process (function (_ state archive) (do {! try.monad} - [.let [hash (text\hash (get@ #///.code input))] + [.let [hash (text\hash (value@ #///.code input))] [state [source buffer]] (<| (///phase.result' state) (..begin dependencies hash input)) - .let [module (get@ #///.module input)]] + .let [module (value@ #///.module input)]] (loop [iteration (<| (///phase.result' state) (..iteration archive expander module source buffer ///syntax.no_aliases))] (do ! @@ -252,7 +252,7 @@ [[state [analysis_module [final_buffer final_registry]]] (///phase.result' state (..end module)) .let [descriptor {#descriptor.hash hash #descriptor.name module - #descriptor.file (get@ #///.file input) + #descriptor.file (value@ #///.file input) #descriptor.references (set.of_list text.hash dependencies) #descriptor.state #.Compiled #descriptor.registry final_registry}]] @@ -267,7 +267,7 @@ (let [[temporary_buffer temporary_registry] temporary_payload] (in [state (#.Left {#///.dependencies (|> requirements - (get@ #///directive.imports) + (value@ #///directive.imports) (list\map product.left)) #///.process (function (_ state archive) (recur (<| (///phase.result' state) @@ -281,7 +281,7 @@ _ (///directive.lifted_generation (///generation.set_registry temporary_registry)) _ (|> requirements - (get@ #///directive.referrals) + (value@ #///directive.referrals) (monad.map ! (execute! archive))) temporary_payload (..get_current_payload temporary_payload)] (..iteration archive expander module source temporary_payload (..module_aliases analysis_module))))))})])) diff --git a/stdlib/source/library/lux/tool/compiler/default/platform.lux b/stdlib/source/library/lux/tool/compiler/default/platform.lux index 53cb07e22..1ac28821f 100644 --- a/stdlib/source/library/lux/tool/compiler/default/platform.lux +++ b/stdlib/source/library/lux/tool/compiler/default/platform.lux @@ -97,7 +97,7 @@ (All [<type_vars>] (-> Static <Platform> archive.ID [Descriptor (Document Any) Output] (Async (Try Any)))) - (let [system (get@ #&file_system platform) + (let [system (value@ #&file_system platform) write_artifact! (: (-> [artifact.ID (Maybe Text) Binary] (Action Any)) (function (_ [artifact_id custom content]) (ioW.write system static module_id artifact_id content)))] @@ -129,7 +129,7 @@ (-> <Platform> (///generation.Operation <type_vars> [Registry Output]))) (do ///phase.monad [_ ..initialize_buffer!] - (get@ #runtime platform))) + (value@ #runtime platform))) (def: (runtime_descriptor registry) (-> Registry Descriptor) @@ -198,7 +198,7 @@ (def: (phase_wrapper archive platform state) (All [<type_vars>] (-> Archive <Platform> <State+> (Try [<State+> Phase_Wrapper]))) - (let [phase_wrapper (get@ #phase_wrapper platform)] + (let [phase_wrapper (value@ #phase_wrapper platform)] (|> archive phase_wrapper ///directive.lifted_generation @@ -236,15 +236,15 @@ Import (List Context) (Async (Try [<State+> Archive])))) (do {! (try.with async.monad)} - [.let [state (//init.state (get@ #static.host static) + [.let [state (//init.state (value@ #static.host static) module expander host_analysis - (get@ #host platform) - (get@ #phase platform) + (value@ #host platform) + (value@ #phase platform) generation_bundle)] - _ (ioW.enable (get@ #&file_system platform) static) - [archive analysis_state bundles] (ioW.thaw (get@ #host platform) (get@ #&file_system platform) static import compilation_sources) + _ (ioW.enable (value@ #&file_system platform) static) + [archive analysis_state bundles] (ioW.thaw (value@ #host platform) (value@ #&file_system platform) static import compilation_sources) .let [with_missing_extensions (: (All [<type_vars>] (-> <Platform> (Program expression directive) <State+> (Async (Try <State+>)))) @@ -276,11 +276,11 @@ (def: (module_compilation_log module) (All [<type_vars>] (-> Module <State+> Text)) - (|>> (get@ [#extension.state - #///directive.generation - #///directive.state - #extension.state - #///generation.log]) + (|>> (value@ [#extension.state + #///directive.generation + #///directive.state + #extension.state + #///generation.log]) (row\fold (function (_ right left) (format left ..compilation_log_separator right)) module))) @@ -288,12 +288,12 @@ (def: with_reset_log (All [<type_vars>] (-> <State+> <State+>)) - (set@ [#extension.state - #///directive.generation - #///directive.state - #extension.state - #///generation.log] - row.empty)) + (with@ [#extension.state + #///directive.generation + #///directive.state + #extension.state + #///generation.log] + row.empty)) (def: empty (Set Module) @@ -320,8 +320,8 @@ lens (dictionary.value module) (maybe.else ..empty)))) - transitive_depends_on (transitive_dependency (get@ #depends_on) import) - transitive_depended_by (transitive_dependency (get@ #depended_by) module) + transitive_depends_on (transitive_dependency (value@ #depends_on) import) + transitive_depended_by (transitive_dependency (value@ #depended_by) module) update_dependence (: (-> [Module (Set Module)] [Module (Set Module)] (-> Mapping Mapping)) (function (_ [source forward] [target backward]) @@ -335,14 +335,14 @@ with_dependence+transitives (set.list backward))))))] (|> dependence - (update@ #depends_on - (update_dependence - [module transitive_depends_on] - [import transitive_depended_by])) - (update@ #depended_by - ((function.flipped update_dependence) - [module transitive_depends_on] - [import transitive_depended_by]))))) + (revised@ #depends_on + (update_dependence + [module transitive_depends_on] + [import transitive_depended_by])) + (revised@ #depended_by + ((function.flipped update_dependence) + [module transitive_depends_on] + [import transitive_depended_by]))))) (def: (circular_dependency? module import dependence) (-> Module Module Dependence Bit) @@ -353,8 +353,8 @@ (dictionary.value from) (maybe.else ..empty))] (set.member? targets to))))] - (or (dependence? import (get@ #depends_on) module) - (dependence? module (get@ #depended_by) import)))) + (or (dependence? import (value@ #depends_on) module) + (dependence? module (value@ #depended_by) import)))) (exception: .public (module_cannot_import_itself {module Module}) (exception.report @@ -499,21 +499,21 @@ .let [additions (|> modules (list\map product.left) (set.of_list text.hash))]] - (in (update@ [#extension.state - #///directive.analysis - #///directive.state - #extension.state] - (function (_ analysis_state) - (|> analysis_state - (:as .Lux) - (update@ #.modules (function (_ current) - (list\compose (list.only (|>> product.left - (set.member? additions) - not) - current) - modules))) - :expected)) - state)))) + (in (revised@ [#extension.state + #///directive.analysis + #///directive.state + #extension.state] + (function (_ analysis_state) + (|> analysis_state + (:as .Lux) + (revised@ #.modules (function (_ current) + (list\compose (list.only (|>> product.left + (set.member? additions) + not) + current) + modules))) + :expected)) + state)))) (def: (set_current_module module state) (All [<type_vars>] @@ -533,24 +533,24 @@ (///.Compiler <State+> .Module Any) (:expected - ((//init.compiler expander syntax.prelude (get@ #write platform)) $.key (list)))) + ((//init.compiler expander syntax.prelude (value@ #write platform)) $.key (list)))) compiler (..parallel context (function (_ importer import! module_id [archive state] module) (do {! (try.with async.monad)} [.let [state (..set_current_module module state)] - input (context.read (get@ #&file_system platform) + input (context.read (value@ #&file_system platform) importer import compilation_sources - (get@ #static.host_module_extension static) + (value@ #static.host_module_extension static) module)] (loop [[archive state] [archive state] compilation (base_compiler (:as ///.Input input)) all_dependencies (: (Set Module) (set.of_list text.hash (list)))] (do ! - [.let [new_dependencies (get@ #///.dependencies compilation) + [.let [new_dependencies (value@ #///.dependencies compilation) continue! (:sharing [<type_vars>] <Platform> platform @@ -582,14 +582,14 @@ (do ! [archive,document+ (|> new_dependencies (list\map (import! module)) - (monad.seq ..monad)) + (monad.all ..monad)) .let [archive (|> archive,document+ (list\map product.left) (list\fold archive.merged archive))]] (in [archive (try.trusted (..updated_state archive state))]))) (async\in (exception.except ..cannot_import_twice [module duplicates])))] - (case ((get@ #///.process compilation) + (case ((value@ #///.process compilation) ... TODO: The "///directive.set_current_module" below shouldn't be necessary. Remove it ASAP. ... TODO: The context shouldn't need to be re-set either. (|> (///directive.set_current_module module) @@ -605,7 +605,7 @@ (#.Right [descriptor document output]) (do ! [.let [_ (debug.log! (..module_compilation_log module state)) - descriptor (set@ #descriptor.references all_dependencies descriptor)] + descriptor (with@ #descriptor.references all_dependencies descriptor)] _ (..cache_module static platform module_id [descriptor document output])] (case (archive.has module [descriptor document output] archive) (#try.Success archive) @@ -617,7 +617,7 @@ (#try.Failure error) (do ! - [_ (ioW.freeze (get@ #&file_system platform) static archive)] + [_ (ioW.freeze (value@ #&file_system platform) static archive)] (async\in (#try.Failure error)))))))))] (compiler archive.runtime_module compilation_module))) ))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux index 571185dee..aefd908c4 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/analysis.lux @@ -55,18 +55,18 @@ (def: .public (tag lefts right?) (-> Nat Bit Nat) (if right? - (inc lefts) + (++ lefts) lefts)) (def: (lefts tag right?) (-> Nat Bit Nat) (if right? - (dec tag) + (-- tag) tag)) (def: .public (choice options pick) (-> Nat Nat [Nat Bit]) - (let [right? (n.= (dec options) pick)] + (let [right? (n.= (-- options) pick)] [(..lefts pick right?) right?])) @@ -253,7 +253,7 @@ (def: (last? size tag) (-> Nat Tag Bit) - (n.= (dec size) tag)) + (n.= (-- size) tag)) (template: .public (no_op value) [(|> 1 #variable.Local #reference.Variable #..Reference @@ -402,10 +402,10 @@ (def: .public (with_source_code source action) (All [a] (-> Source (Operation a) (Operation a))) (function (_ [bundle state]) - (let [old_source (get@ #.source state)] - (case (action [bundle (set@ #.source source state)]) + (let [old_source (value@ #.source state)] + (case (action [bundle (with@ #.source source state)]) (#try.Success [[bundle' state'] output]) - (#try.Success [[bundle' (set@ #.source old_source state')] + (#try.Success [[bundle' (with@ #.source old_source state')] output]) (#try.Failure error) @@ -426,11 +426,11 @@ (def: .public (with_scope action) (All [a] (-> (Operation a) (Operation [Scope a]))) (function (_ [bundle state]) - (case (action [bundle (update@ #.scopes (|>> (#.Item fresh_scope)) state)]) + (case (action [bundle (revised@ #.scopes (|>> (#.Item fresh_scope)) state)]) (#try.Success [[bundle' state'] output]) - (case (get@ #.scopes state') + (case (value@ #.scopes state') (#.Item head tail) - (#try.Success [[bundle' (set@ #.scopes tail state')] + (#try.Success [[bundle' (with@ #.scopes tail state')] [head output]]) #.End @@ -441,8 +441,8 @@ (def: .public (with_current_module name) (All [a] (-> Text (Operation a) (Operation a))) - (extension.localized (get@ #.current_module) - (set@ #.current_module) + (extension.localized (value@ #.current_module) + (with@ #.current_module) (function.constant (#.Some name)))) (def: .public (with_location location action) @@ -450,10 +450,10 @@ (if (text\= "" (product.left location)) action (function (_ [bundle state]) - (let [old_location (get@ #.location state)] - (case (action [bundle (set@ #.location location state)]) + (let [old_location (value@ #.location state)] + (case (action [bundle (with@ #.location location state)]) (#try.Success [[bundle' state'] output]) - (#try.Success [[bundle' (set@ #.location old_location state')] + (#try.Success [[bundle' (with@ #.location old_location state')] output]) (#try.Failure error) @@ -467,7 +467,7 @@ (def: .public (failure error) (-> Text Operation) (function (_ [bundle state]) - (#try.Failure (locate_error (get@ #.location state) error)))) + (#try.Failure (locate_error (value@ #.location state) error)))) (def: .public (except exception parameters) (All [e] (-> (Exception e) e Operation)) @@ -482,7 +482,7 @@ (def: .public (failure' error) (-> Text (phase.Operation Lux)) (function (_ state) - (#try.Failure (locate_error (get@ #.location state) error)))) + (#try.Failure (locate_error (value@ #.location state) error)))) (def: .public (except' exception parameters) (All [e] (-> (Exception e) e (phase.Operation Lux))) @@ -498,7 +498,7 @@ (#try.Failure error) (let [[bundle state] bundle,state] - (#try.Failure (locate_error (get@ #.location state) error)))))) + (#try.Failure (locate_error (value@ #.location state) error)))))) (def: .public (install state) (-> .Lux (Operation Any)) @@ -509,7 +509,7 @@ (template [<name> <type> <field> <value>] [(def: .public (<name> value) (-> <type> (Operation Any)) - (extension.update (set@ <field> <value>)))] + (extension.update (with@ <field> <value>)))] [set_source_code Source #.source value] [set_current_module Text #.current_module (#.Some value)] diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux b/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux index 478697fd4..5f2770068 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/directive.lux @@ -47,8 +47,8 @@ (def: .public (merge_requirements left right) (-> Requirements Requirements Requirements) - {#imports (list\compose (get@ #imports left) (get@ #imports right)) - #referrals (list\compose (get@ #referrals left) (get@ #referrals right))}) + {#imports (list\compose (value@ #imports left) (value@ #imports right)) + #referrals (list\compose (value@ #referrals left) (value@ #referrals right))}) (template [<special> <general>] [(type: .public (<special> anchor expression directive) @@ -66,7 +66,7 @@ (All [anchor expression directive] (Operation anchor expression directive <phase>)) (function (_ [bundle state]) - (#try.Success [[bundle state] (get@ [<component> #..phase] state)])))] + (#try.Success [[bundle state] (value@ [<component> #..phase] state)])))] [analysis #..analysis analysis.Phase] [synthesis #..synthesis synthesis.Phase] @@ -78,8 +78,8 @@ (All [anchor expression directive output] (-> (<operation> output) (Operation anchor expression directive output))) - (|>> (phase.sub [(get@ [<component> #..state]) - (set@ [<component> #..state])]) + (|>> (phase.sub [(value@ [<component> #..state]) + (with@ [<component> #..state])]) extension.lifted))] [lifted_analysis #..analysis analysis.Operation] diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux b/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux index 0a1841ad1..aee61ebc7 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/generation.lux @@ -111,9 +111,9 @@ (All [anchor expression directive output] <with_type>) (function (_ body) (function (_ [bundle state]) - (case (body [bundle (set@ <tag> (#.Some <with_value>) state)]) + (case (body [bundle (with@ <tag> (#.Some <with_value>) state)]) (#try.Success [[bundle' state'] output]) - (#try.Success [[bundle' (set@ <tag> (get@ <tag> state) state')] + (#try.Success [[bundle' (with@ <tag> (value@ <tag> state) state')] output]) (#try.Failure error) @@ -123,7 +123,7 @@ (All [anchor expression directive] (Operation anchor expression directive <get_type>)) (function (_ (^@ stateE [bundle state])) - (case (get@ <tag> state) + (case (value@ <tag> state) (#.Some output) (#try.Success [stateE output]) @@ -134,7 +134,7 @@ (All [anchor expression directive] (-> <get_type> (Operation anchor expression directive Any))) (function (_ [bundle state]) - (#try.Success [[bundle (set@ <tag> (#.Some value) state)] + (#try.Success [[bundle (with@ <tag> (#.Some value) state)] []])))] [#anchor @@ -156,21 +156,21 @@ (All [anchor expression directive] (Operation anchor expression directive artifact.Registry)) (function (_ (^@ stateE [bundle state])) - (#try.Success [stateE (get@ #registry state)]))) + (#try.Success [stateE (value@ #registry state)]))) (def: .public (set_registry value) (All [anchor expression directive] (-> artifact.Registry (Operation anchor expression directive Any))) (function (_ [bundle state]) - (#try.Success [[bundle (set@ #registry value state)] + (#try.Success [[bundle (with@ #registry value state)] []]))) (def: .public next (All [anchor expression directive] (Operation anchor expression directive Nat)) (do phase.monad - [count (extension.read (get@ #counter)) - _ (extension.update (update@ #counter inc))] + [count (extension.read (value@ #counter)) + _ (extension.update (revised@ #counter ++))] (in count))) (def: .public (identifier prefix) @@ -181,18 +181,18 @@ (def: .public (enter_module module) (All [anchor expression directive] (-> Module (Operation anchor expression directive Any))) - (extension.update (set@ #module module))) + (extension.update (with@ #module module))) (def: .public module (All [anchor expression directive] (Operation anchor expression directive Module)) - (extension.read (get@ #module))) + (extension.read (value@ #module))) (def: .public (evaluate! label code) (All [anchor expression directive] (-> Context expression (Operation anchor expression directive Any))) (function (_ (^@ state+ [bundle state])) - (case (\ (get@ #host state) evaluate! label code) + (case (\ (value@ #host state) evaluate! label code) (#try.Success output) (#try.Success [state+ output]) @@ -203,7 +203,7 @@ (All [anchor expression directive] (-> directive (Operation anchor expression directive Any))) (function (_ (^@ state+ [bundle state])) - (case (\ (get@ #host state) execute! code) + (case (\ (value@ #host state) execute! code) (#try.Success output) (#try.Success [state+ output]) @@ -214,7 +214,7 @@ (All [anchor expression directive] (-> Context (Maybe Text) expression (Operation anchor expression directive [Text Any directive]))) (function (_ (^@ stateE [bundle state])) - (case (\ (get@ #host state) define! context custom code) + (case (\ (value@ #host state) define! context custom code) (#try.Success output) (#try.Success [stateE output]) @@ -225,13 +225,13 @@ (All [anchor expression directive] (-> artifact.ID (Maybe Text) directive (Operation anchor expression directive Any))) (do {! phase.monad} - [?buffer (extension.read (get@ #buffer))] + [?buffer (extension.read (value@ #buffer))] (case ?buffer (#.Some buffer) ... TODO: Optimize by no longer checking for overwrites... (if (row.any? (|>> product.left (n.= artifact_id)) buffer) (phase.except ..cannot_overwrite_output [artifact_id]) - (extension.update (set@ #buffer (#.Some (row.add [artifact_id custom code] buffer))))) + (extension.update (with@ #buffer (#.Some (row.suffix [artifact_id custom code] buffer))))) #.None (phase.except ..no_buffer_for_saving_code [artifact_id])))) @@ -241,8 +241,8 @@ (All [anchor expression directive] (-> Text (Operation anchor expression directive artifact.ID))) (function (_ (^@ stateE [bundle state])) - (let [[id registry'] (<artifact> name (get@ #registry state))] - (#try.Success [[bundle (set@ #registry registry' state)] + (let [[id registry'] (<artifact> name (value@ #registry state))] + (#try.Success [[bundle (with@ #registry registry' state)] id]))))] [learn artifact.definition] @@ -267,11 +267,11 @@ (let [[_module _name] name] (do try.monad [module_id (archive.id _module archive) - registry (if (text\= (get@ #module state) _module) - (#try.Success (get@ #registry state)) + registry (if (text\= (value@ #module state) _module) + (#try.Success (value@ #registry state)) (do try.monad [[descriptor document] (archive.find _module archive)] - (#try.Success (get@ #descriptor.registry descriptor))))] + (#try.Success (value@ #descriptor.registry descriptor))))] (case (artifact.remember _name registry) #.None (exception.except ..unknown_definition [name (artifact.definitions registry)]) @@ -293,13 +293,13 @@ (All [anchor expression directive] (-> Archive (Operation anchor expression directive Context))) (function (_ (^@ stateE [bundle state])) - (case (get@ #context state) + (case (value@ #context state) #.None (exception.except ..no_context []) (#.Some id) (do try.monad - [module_id (archive.id (get@ #module state) archive)] + [module_id (archive.id (value@ #module state) archive)] (in [stateE [module_id id]]))))) (def: .public (with_context id body) @@ -309,8 +309,8 @@ (Operation anchor expression directive a))) (function (_ [bundle state]) (do try.monad - [[[bundle' state'] output] (body [bundle (set@ #context (#.Some id) state)])] - (in [[bundle' (set@ #context (get@ #context state) state')] + [[[bundle' state'] output] (body [bundle (with@ #context (#.Some id) state)])] + (in [[bundle' (with@ #context (value@ #context state) state')] output])))) (def: .public (with_new_context archive body) @@ -318,13 +318,13 @@ (-> Archive (Operation anchor expression directive a) (Operation anchor expression directive [Context a]))) (function (_ (^@ stateE [bundle state])) - (let [[id registry'] (artifact.resource (get@ #registry state))] + (let [[id registry'] (artifact.resource (value@ #registry state))] (do try.monad [[[bundle' state'] output] (body [bundle (|> state - (set@ #registry registry') - (set@ #context (#.Some id)))]) - module_id (archive.id (get@ #module state) archive)] - (in [[bundle' (set@ #context (get@ #context state) state')] + (with@ #registry registry') + (with@ #context (#.Some id)))]) + module_id (archive.id (value@ #module state) archive)] + (in [[bundle' (with@ #context (value@ #context state) state')] [[module_id id] output]]))))) @@ -333,5 +333,5 @@ (-> Text (Operation anchor expression directive Any))) (function (_ [bundle state]) (#try.Success [[bundle - (update@ #log (row.add message) state)] + (revised@ #log (row.suffix message) state)] []]))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux index c8cfe9c0e..ee12a8bf0 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis.lux @@ -124,10 +124,10 @@ (compile archive expansion)) _ - (/function.apply compile argsC+ functionT functionA archive functionC))) + (/function.on compile argsC+ functionT functionA archive functionC))) _ - (/function.apply compile argsC+ functionT functionA archive functionC))) + (/function.on compile argsC+ functionT functionA archive functionC))) _ (//.except ..unrecognized_syntax [location.dummy code']))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux index 9463eeb8f..b3642f5f3 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case.lux @@ -193,20 +193,28 @@ [inputT' (simplify_case inputT)] (.case inputT' (#.Product _) - (let [subs (type.flat_tuple inputT') - num_subs (maybe.else (list.size subs) - num_tags) - num_sub_patterns (list.size sub_patterns) - matches (cond (n.< num_subs num_sub_patterns) - (let [[prefix suffix] (list.split_at (dec num_sub_patterns) subs)] - (list.zipped/2 (list\compose prefix (list (type.tuple suffix))) sub_patterns)) - - (n.> num_subs num_sub_patterns) - (let [[prefix suffix] (list.split_at (dec num_subs) sub_patterns)] - (list.zipped/2 subs (list\compose prefix (list (code.tuple suffix))))) - - ... (n.= num_subs num_sub_patterns) - (list.zipped/2 subs sub_patterns))] + (let [matches (loop [types (type.flat_tuple inputT') + patterns sub_patterns + output (: (List [Type Code]) + #.End)] + (.case [types patterns] + [#.End #.End] + output + + [(#.Item headT #.End) (#.Item headP #.End)] + (#.Item [headT headP] output) + + [remainingT (#.Item headP #.End)] + (#.Item [(type.tuple remainingT) headP] output) + + [(#.Item headT #.End) remainingP] + (#.Item [headT (code.tuple remainingP)] output) + + [(#.Item headT tailT) (#.Item headP tailP)] + (recur tailT tailP (#.Item [headT headP] output)) + + _ + (undefined)))] (do ! [[memberP+ thenA] (list\fold (: (All [a] (-> [Type Code] (Operation [(List Pattern) a]) @@ -220,7 +228,7 @@ (do ! [nextA next] (in [(list) nextA])) - (list.reversed matches))] + matches)] (in [(/.pattern/tuple memberP+) thenA]))) @@ -231,7 +239,7 @@ [location (#.Record record)] (do ///.monad [record (//structure.normal record) - [members recordT] (//structure.order record) + [record_size members recordT] (//structure.order record) _ (.case inputT (#.Var _id) (//type.with_env @@ -239,7 +247,7 @@ _ (in []))] - (analyse_pattern (#.Some (list.size members)) inputT [location (#.Tuple members)] next)) + (analyse_pattern (#.Some record_size) inputT [location (#.Tuple members)] next)) [location (#.Tag tag)] (/.with_location location @@ -260,9 +268,9 @@ (n.< num_cases idx)) (do ///.monad [[testP nextA] (if (and (n.> num_cases size_sum) - (n.= (dec num_cases) idx)) + (n.= (-- num_cases) idx)) (analyse_pattern #.None - (type.variant (list.after (dec num_cases) flat_sum)) + (type.variant (list.after (-- num_cases) flat_sum)) (` [(~+ values)]) next) (analyse_pattern #.None caseT (` [(~+ values)]) next))] diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case/coverage.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case/coverage.lux index 25c85514e..e7efacf3c 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case/coverage.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/case/coverage.lux @@ -146,7 +146,7 @@ (do ////.monad [value_coverage (determine value) .let [idx (if right? - (inc lefts) + (++ lefts) lefts)]] (in (#Variant (if right? (#.Some idx) @@ -256,7 +256,7 @@ casesSF (dictionary.entries casesA))] (in (if (and (or (known_cases? addition_cases) (known_cases? so_far_cases)) - (n.= (inc (n.max addition_cases so_far_cases)) + (n.= (++ (n.max addition_cases so_far_cases)) (dictionary.size casesM)) (list.every? exhaustive? (dictionary.values casesM))) #Exhaustive diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/inference.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/inference.lux index 6282980be..0420b7811 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/inference.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/inference.lux @@ -10,7 +10,7 @@ ["." text ["%" format (#+ format)]] [collection - ["." list ("#\." functor)]]] + ["." list ("#\." functor monoid)]]] [math [number ["n" nat]]] @@ -204,16 +204,16 @@ base))) ... Turns a record type into the kind of function type suitable for inference. -(def: (record' target originalT inferT) - (-> Nat Type Type (Operation Type)) +(def: (record' record_size target originalT inferT) + (-> Nat Nat Type Type (Operation Type)) (case inferT (#.Named name unnamedT) - (record' target originalT unnamedT) + (record' record_size target originalT unnamedT) (^template [<tag>] [(<tag> env bodyT) (do ///.monad - [bodyT+ (record' (n.+ 2 target) originalT bodyT)] + [bodyT+ (record' record_size (n.+ 2 target) originalT bodyT)] (in (<tag> env bodyT+)))]) ([#.UnivQ] [#.ExQ]) @@ -221,22 +221,23 @@ (#.Apply inputT funcT) (case (type.applied (list inputT) funcT) (#.Some outputT) - (record' target originalT outputT) + (record' record_size target originalT outputT) #.None (/.except ..invalid_type_application inferT)) (#.Product _) - (///\in (|> inferT - (type.function (type.flat_tuple inferT)) - (substitute_bound target originalT))) + (let [[lefts right] (list.split_at (-- record_size) (type.flat_tuple inferT))] + (///\in (|> inferT + (type.function (list\compose lefts (list (type.tuple right)))) + (substitute_bound target originalT)))) _ (/.except ..not_a_record_type inferT))) -(def: .public (record inferT) - (-> Type (Operation Type)) - (record' (n.- 2 0) inferT inferT)) +(def: .public (record record_size inferT) + (-> Nat Type (Operation Type)) + (record' record_size (n.- 2 0) inferT inferT)) ... Turns a variant type into the kind of function type suitable for inference. (def: .public (variant tag expected_size inferT) @@ -252,7 +253,7 @@ (^template [<tag>] [(<tag> env bodyT) (do ///.monad - [bodyT+ (recur (inc depth) bodyT)] + [bodyT+ (recur (++ depth) bodyT)] (in (<tag> env bodyT+)))]) ([#.UnivQ] [#.ExQ]) @@ -260,7 +261,7 @@ (#.Sum _) (let [cases (type.flat_variant currentT) actual_size (list.size cases) - boundary (dec expected_size)] + boundary (-- expected_size)] (cond (or (n.= expected_size actual_size) (and (n.> expected_size actual_size) (n.< boundary tag))) @@ -268,7 +269,7 @@ (#.Some caseT) (///\in (if (n.= 0 depth) (type.function (list caseT) currentT) - (let [replace' (replace (|> depth dec (n.* 2)) inferT)] + (let [replace' (replace (|> depth -- (n.* 2)) inferT)] (type.function (list (replace' caseT)) (replace' currentT))))) @@ -282,7 +283,7 @@ (let [caseT (type.variant (list.after boundary cases))] (///\in (if (n.= 0 depth) (type.function (list caseT) currentT) - (let [replace' (replace (|> depth dec (n.* 2)) inferT)] + (let [replace' (replace (|> depth -- (n.* 2)) inferT)] (type.function (list (replace' caseT)) (replace' currentT)))))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/module.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/module.lux index d5e2fd691..14e08a4c0 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/module.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/module.lux @@ -84,12 +84,12 @@ (do ///.monad [self_name meta.current_module_name self meta.current_module] - (case (get@ #.module_annotations self) + (case (value@ #.module_annotations self) #.None (function (_ state) - (#try.Success [(update@ #.modules - (plist.has self_name (set@ #.module_annotations (#.Some annotations) self)) - state) + (#try.Success [(revised@ #.modules + (plist.has self_name (with@ #.module_annotations (#.Some annotations) self)) + state) []])) (#.Some old) @@ -101,13 +101,13 @@ (do ///.monad [self_name meta.current_module_name] (function (_ state) - (#try.Success [(update@ #.modules - (plist.revised self_name (update@ #.imports (function (_ current) - (if (list.any? (text\= module) - current) - current - (#.Item module current))))) - state) + (#try.Success [(revised@ #.modules + (plist.revised self_name (revised@ #.imports (function (_ current) + (if (list.any? (text\= module) + current) + current + (#.Item module current))))) + state) []]))))) (def: .public (alias alias module) @@ -116,10 +116,10 @@ (do ///.monad [self_name meta.current_module_name] (function (_ state) - (#try.Success [(update@ #.modules - (plist.revised self_name (update@ #.module_aliases (: (-> (List [Text Text]) (List [Text Text])) - (|>> (#.Item [alias module]))))) - state) + (#try.Success [(revised@ #.modules + (plist.revised self_name (revised@ #.module_aliases (: (-> (List [Text Text]) (List [Text Text])) + (|>> (#.Item [alias module]))))) + state) []]))))) (def: .public (exists? module) @@ -127,7 +127,7 @@ (///extension.lifted (function (_ state) (|> state - (get@ #.modules) + (value@ #.modules) (plist.value module) (case> (#.Some _) #1 #.None #0) [state] #try.Success)))) @@ -139,15 +139,15 @@ [self_name meta.current_module_name self meta.current_module] (function (_ state) - (case (plist.value name (get@ #.definitions self)) + (case (plist.value name (value@ #.definitions self)) #.None - (#try.Success [(update@ #.modules - (plist.has self_name - (update@ #.definitions - (: (-> (List [Text Global]) (List [Text Global])) - (|>> (#.Item [name definition]))) - self)) - state) + (#try.Success [(revised@ #.modules + (plist.has self_name + (revised@ #.definitions + (: (-> (List [Text Global]) (List [Text Global])) + (|>> (#.Item [name definition]))) + self)) + state) []]) (#.Some already_existing) @@ -157,9 +157,9 @@ (-> Nat Text (Operation Any)) (///extension.lifted (function (_ state) - (#try.Success [(update@ #.modules - (plist.has name (..empty hash)) - state) + (#try.Success [(revised@ #.modules + (plist.has name (..empty hash)) + state) []])))) (def: .public (with_module hash name action) @@ -176,15 +176,15 @@ (-> Text (Operation Any)) (///extension.lifted (function (_ state) - (case (|> state (get@ #.modules) (plist.value module_name)) + (case (|> state (value@ #.modules) (plist.value module_name)) (#.Some module) - (let [active? (case (get@ #.module_state module) + (let [active? (case (value@ #.module_state module) #.Active #1 _ #0)] (if active? - (#try.Success [(update@ #.modules - (plist.has module_name (set@ #.module_state <tag> module)) - state) + (#try.Success [(revised@ #.modules + (plist.has module_name (with@ #.module_state <tag> module)) + state) []]) ((/.except' can_only_change_state_of_active_module [module_name <tag>]) state))) @@ -196,10 +196,10 @@ (-> Text (Operation Bit)) (///extension.lifted (function (_ state) - (case (|> state (get@ #.modules) (plist.value module_name)) + (case (|> state (value@ #.modules) (plist.value module_name)) (#.Some module) (#try.Success [state - (case (get@ #.module_state module) + (case (value@ #.module_state module) <tag> #1 _ #0)]) @@ -216,9 +216,9 @@ (-> Text (Operation <type>)) (///extension.lifted (function (_ state) - (case (|> state (get@ #.modules) (plist.value module_name)) + (case (|> state (value@ #.modules) (plist.value module_name)) (#.Some module) - (#try.Success [state (get@ <tag> module)]) + (#try.Success [state (value@ <tag> module)]) #.None ((/.except' unknown_module module_name) state)))))] @@ -258,18 +258,18 @@ (text\= self_name type_module))] (///extension.lifted (function (_ state) - (case (|> state (get@ #.modules) (plist.value self_name)) + (case (|> state (value@ #.modules) (plist.value self_name)) (#.Some module) (let [namespaced_tags (list\map (|>> [self_name]) tags)] - (#try.Success [(update@ #.modules - (plist.revised self_name - (|>> (update@ #.tags (function (_ tag_bindings) - (list\fold (function (_ [idx tag] table) - (plist.has tag [idx namespaced_tags exported? type] table)) - tag_bindings - (list.enumeration tags)))) - (update@ #.types (plist.has type_name [namespaced_tags exported? type])))) - state) + (#try.Success [(revised@ #.modules + (plist.revised self_name + (|>> (revised@ #.tags (function (_ tag_bindings) + (list\fold (function (_ [idx tag] table) + (plist.has tag [idx namespaced_tags exported? type] table)) + tag_bindings + (list.enumeration tags)))) + (revised@ #.types (plist.has type_name [namespaced_tags exported? type])))) + state) []])) #.None ((/.except' unknown_module self_name) state)))))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/scope.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/scope.lux index 052173d1f..44d3b7deb 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/scope.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/scope.lux @@ -32,13 +32,13 @@ (def: (local? name scope) (-> Text Scope Bit) (|> scope - (get@ [#.locals #.mappings]) + (value@ [#.locals #.mappings]) (plist.contains? name))) (def: (local name scope) (-> Text Scope (Maybe [Type Variable])) (|> scope - (get@ [#.locals #.mappings]) + (value@ [#.locals #.mappings]) (plist.value name) (maybe\map (function (_ [type value]) [type (#variable.Local value)])))) @@ -46,18 +46,18 @@ (def: (captured? name scope) (-> Text Scope Bit) (|> scope - (get@ [#.captured #.mappings]) + (value@ [#.captured #.mappings]) (plist.contains? name))) (def: (captured name scope) (-> Text Scope (Maybe [Type Variable])) (loop [idx 0 - mappings (get@ [#.captured #.mappings] scope)] + mappings (value@ [#.captured #.mappings] scope)] (case mappings (#.Item [_name [_source_type _source_ref]] mappings') (if (text\= name _name) (#.Some [_source_type (#variable.Foreign idx)]) - (recur (inc idx) mappings')) + (recur (++ idx) mappings')) #.End #.None))) @@ -81,7 +81,7 @@ (///extension.lifted (function (_ state) (let [[inner outer] (|> state - (get@ #.scopes) + (value@ #.scopes) (list.split_when (|>> (reference? name))))] (case outer #.End @@ -92,17 +92,17 @@ (..reference name top_outer)) [ref inner'] (list\fold (: (-> Scope [Variable (List Scope)] [Variable (List Scope)]) (function (_ scope ref+inner) - [(#variable.Foreign (get@ [#.captured #.counter] scope)) - (#.Item (update@ #.captured - (: (-> Foreign Foreign) - (|>> (update@ #.counter inc) - (update@ #.mappings (plist.has name [ref_type (product.left ref+inner)])))) - scope) + [(#variable.Foreign (value@ [#.captured #.counter] scope)) + (#.Item (revised@ #.captured + (: (-> Foreign Foreign) + (|>> (revised@ #.counter ++) + (revised@ #.mappings (plist.has name [ref_type (product.left ref+inner)])))) + scope) (product.right ref+inner))])) [init_ref #.End] (list.reversed inner)) scopes (list\compose inner' outer)] - (#.Right [(set@ #.scopes scopes state) + (#.Right [(with@ #.scopes scopes state) (#.Some [ref_type ref])])) ))))) @@ -112,23 +112,23 @@ (def: .public (with_local [name type] action) (All [a] (-> [Text Type] (Operation a) (Operation a))) (function (_ [bundle state]) - (case (get@ #.scopes state) + (case (value@ #.scopes state) (#.Item head tail) - (let [old_mappings (get@ [#.locals #.mappings] head) - new_var_id (get@ [#.locals #.counter] head) - new_head (update@ #.locals - (: (-> Local Local) - (|>> (update@ #.counter inc) - (update@ #.mappings (plist.has name [type new_var_id])))) - head)] - (case (///.result' [bundle (set@ #.scopes (#.Item new_head tail) state)] + (let [old_mappings (value@ [#.locals #.mappings] head) + new_var_id (value@ [#.locals #.counter] head) + new_head (revised@ #.locals + (: (-> Local Local) + (|>> (revised@ #.counter ++) + (revised@ #.mappings (plist.has name [type new_var_id])))) + head)] + (case (///.result' [bundle (with@ #.scopes (#.Item new_head tail) state)] action) (#try.Success [[bundle' state'] output]) - (case (get@ #.scopes state') + (case (value@ #.scopes state') (#.Item head' tail') - (let [scopes' (#.Item (set@ #.locals (get@ #.locals head) head') + (let [scopes' (#.Item (with@ #.locals (value@ #.locals head) head') tail')] - (#try.Success [[bundle' (set@ #.scopes scopes' state')] + (#try.Success [[bundle' (with@ #.scopes scopes' state')] output])) _ @@ -161,19 +161,19 @@ (def: .public (with_scope name action) (All [a] (-> Text (Operation a) (Operation a))) (function (_ [bundle state]) - (let [parent_name (case (get@ #.scopes state) + (let [parent_name (case (value@ #.scopes state) #.End (list) (#.Item top _) - (get@ #.name top))] - (case (action [bundle (update@ #.scopes - (|>> (#.Item (scope parent_name name))) - state)]) + (value@ #.name top))] + (case (action [bundle (revised@ #.scopes + (|>> (#.Item (scope parent_name name))) + state)]) (#try.Success [[bundle' state'] output]) - (#try.Success [[bundle' (update@ #.scopes - (|>> list.tail (maybe.else (list))) - state')] + (#try.Success [[bundle' (revised@ #.scopes + (|>> list.tail (maybe.else (list))) + state')] output]) (#try.Failure error) @@ -185,9 +185,9 @@ (Operation Register) (///extension.lifted (function (_ state) - (case (get@ #.scopes state) + (case (value@ #.scopes state) (#.Item top _) - (#try.Success [state (get@ [#.locals #.counter] top)]) + (#try.Success [state (value@ [#.locals #.counter] top)]) #.End (exception.except ..cannot_get_next_reference_when_there_is_no_scope []))))) @@ -204,5 +204,5 @@ (def: .public (environment scope) (-> Scope (List Variable)) (|> scope - (get@ [#.captured #.mappings]) + (value@ [#.captured #.mappings]) (list\map (function (_ [_ [_ ref]]) (ref_variable ref))))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/structure.lux index 56924a102..fe296c83e 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/structure.lux @@ -299,11 +299,11 @@ ... re-implementing the same functionality for records makes no sense. ... Records, thus, get transformed into tuples by ordering the elements. (def: .public (order record) - (-> (List [Name Code]) (Operation [(List Code) Type])) + (-> (List [Name Code]) (Operation [Nat (List Code) Type])) (case record - ... empty_record = empty_tuple = unit = [] + ... empty_record = empty_tuple = unit/any = [] #.End - (\ ///.monad in [(list) Any]) + (\ ///.monad in [0 (list) Any]) (#.Item [head_k head_v] _) (do {! ///.monad} @@ -334,7 +334,7 @@ .let [ordered_tuple (list\map (function (_ idx) (maybe.trusted (dictionary.value idx idx->val))) tuple_range)]] - (in [ordered_tuple recordT])) + (in [size_ts ordered_tuple recordT])) )) (def: .public (record archive analyse members) @@ -349,12 +349,12 @@ _ (do {! ///.monad} [members (normal members) - [membersC recordT] (order members) + [record_size membersC recordT] (..order members) expectedT (///extension.lifted meta.expected_type)] (case expectedT (#.Var _) (do ! - [inferenceT (//inference.record recordT) + [inferenceT (//inference.record record_size recordT) [inferredT membersA] (//inference.general archive analyse inferenceT membersC)] (in (/.tuple membersA))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/type.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/type.lux index ed980b1e6..f1ffa9026 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/type.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/analysis/type.lux @@ -18,15 +18,15 @@ (def: .public (with_type expected) (All [a] (-> Type (Operation a) (Operation a))) - (///extension.localized (get@ #.expected) (set@ #.expected) + (///extension.localized (value@ #.expected) (with@ #.expected) (function.constant (#.Some expected)))) (def: .public (with_env action) (All [a] (-> (Check a) (Operation a))) (function (_ (^@ stateE [bundle state])) - (case (action (get@ #.type_context state)) + (case (action (value@ #.type_context state)) (#try.Success [context' output]) - (#try.Success [[bundle (set@ #.type_context context' state)] + (#try.Success [[bundle (with@ #.type_context context' state)] output]) (#try.Failure error) @@ -34,7 +34,7 @@ (def: .public with_fresh_env (All [a] (-> (Operation a) (Operation a))) - (///extension.localized (get@ #.type_context) (set@ #.type_context) + (///extension.localized (value@ #.type_context) (with@ #.type_context) (function.constant check.fresh_context))) (def: .public (infer actualT) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/directive.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/directive.lux index 81fc21caa..cc34e04cf 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/directive.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/directive.lux @@ -68,7 +68,7 @@ (case expansion (^ (list& <lux_def_module> referrals)) (|> (recur archive <lux_def_module>) - (\ ! map (update@ #/.referrals (list\compose referrals)))) + (\ ! map (revised@ #/.referrals (list\compose referrals)))) _ (|> expansion 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 aa1730655..508242cd8 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 @@ -1140,24 +1140,22 @@ phase.lifted)] (in (and (java/lang/Object::equals class (java/lang/reflect/Constructor::getDeclaringClass constructor)) (n.= (list.size inputsJT) (list.size parameters)) - (list\fold (function (_ [expectedJC actualJC] prev) - (and prev - (jvm\= expectedJC (: (Type Value) - (case (jvm_parser.var? actualJC) - (#.Some name) - (|> aliasing - (dictionary.value name) - (maybe.else name) - jvm.var) - - #.None - actualJC))))) - true - (list.zipped/2 parameters inputsJT)))))) + (list.every? (function (_ [expectedJC actualJC]) + (jvm\= expectedJC (: (Type Value) + (case (jvm_parser.var? actualJC) + (#.Some name) + (|> aliasing + (dictionary.value name) + (maybe.else name) + jvm.var) + + #.None + actualJC)))) + (list.zipped/2 parameters inputsJT)))))) (def: index_parameter (-> Nat .Type) - (|>> (n.* 2) inc #.Parameter)) + (|>> (n.* 2) ++ #.Parameter)) (def: (jvm_type_var_mapping owner_tvars method_tvars) (-> (List Text) (List Text) [(List .Type) Mapping]) 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 61f4e3763..0242d94b6 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 @@ -279,9 +279,9 @@ super_classT super_interfaceT+)] state (extension.lifted phase.get_state) - .let [analyse (get@ [#directive.analysis #directive.phase] state) - synthesize (get@ [#directive.synthesis #directive.phase] state) - generate (get@ [#directive.generation #directive.phase] state)] + .let [analyse (value@ [#directive.analysis #directive.phase] state) + synthesize (value@ [#directive.synthesis #directive.phase] state) + generate (value@ [#directive.generation #directive.phase] state)] methods (monad.map ! (..method_definition [mapping selfT] [analyse synthesize generate]) methods) ... _ (directive.lifted_generation 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 604292cdd..329c79611 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 @@ -63,7 +63,7 @@ (def: (context [module_id artifact_id]) (-> Context Context) ... TODO: Find a better way that doesn't rely on clever tricks. - [module_id (n.- (inc artifact_id) 0)]) + [module_id (n.- (++ artifact_id) 0)]) ... TODO: Inline "evaluate!'" into "evaluate!" ASAP (def: (evaluate!' archive generate code//type codeS) @@ -87,9 +87,9 @@ (-> Archive Type Code (Operation anchor expression directive [Type expression Any]))) (do phase.monad [state (///.lifted phase.get_state) - .let [analyse (get@ [#/////directive.analysis #/////directive.phase] state) - synthesize (get@ [#/////directive.synthesis #/////directive.phase] state) - generate (get@ [#/////directive.generation #/////directive.phase] state)] + .let [analyse (value@ [#/////directive.analysis #/////directive.phase] state) + synthesize (value@ [#/////directive.synthesis #/////directive.phase] state) + generate (value@ [#/////directive.generation #/////directive.phase] state)] [_ codeA] (/////directive.lifted_analysis (/////analysis.with_scope (typeA.with_fresh_env @@ -123,9 +123,9 @@ (Operation anchor expression directive [Type expression Any]))) (do {! phase.monad} [state (///.lifted phase.get_state) - .let [analyse (get@ [#/////directive.analysis #/////directive.phase] state) - synthesize (get@ [#/////directive.synthesis #/////directive.phase] state) - generate (get@ [#/////directive.generation #/////directive.phase] state)] + .let [analyse (value@ [#/////directive.analysis #/////directive.phase] state) + synthesize (value@ [#/////directive.synthesis #/////directive.phase] state) + generate (value@ [#/////directive.generation #/////directive.phase] state)] [_ code//type codeA] (/////directive.lifted_analysis (/////analysis.with_scope (typeA.with_fresh_env @@ -175,9 +175,9 @@ (Operation anchor expression directive [expression Any]))) (do phase.monad [state (///.lifted phase.get_state) - .let [analyse (get@ [#/////directive.analysis #/////directive.phase] state) - synthesize (get@ [#/////directive.synthesis #/////directive.phase] state) - generate (get@ [#/////directive.generation #/////directive.phase] state)] + .let [analyse (value@ [#/////directive.analysis #/////directive.phase] state) + synthesize (value@ [#/////directive.synthesis #/////directive.phase] state) + generate (value@ [#/////directive.generation #/////directive.phase] state)] [_ codeA] (/////directive.lifted_analysis (/////analysis.with_scope (typeA.with_fresh_env @@ -199,15 +199,15 @@ (do phase.monad [[bundle state] phase.get_state .let [eval (/////analysis/evaluation.evaluator expander - (get@ [#/////directive.synthesis #/////directive.state] state) - (get@ [#/////directive.generation #/////directive.state] state) - (get@ [#/////directive.generation #/////directive.phase] state))]] + (value@ [#/////directive.synthesis #/////directive.state] state) + (value@ [#/////directive.generation #/////directive.state] state) + (value@ [#/////directive.generation #/////directive.phase] state))]] (phase.set_state [bundle - (update@ [#/////directive.analysis #/////directive.state] - (: (-> /////analysis.State+ /////analysis.State+) - (|>> product.right - [(///analysis.bundle eval host_analysis)])) - state)]))) + (revised@ [#/////directive.analysis #/////directive.state] + (: (-> /////analysis.State+ /////analysis.State+) + (|>> product.right + [(///analysis.bundle eval host_analysis)])) + state)]))) (def: (announce_definition! short type) (All [anchor expression directive] @@ -310,8 +310,8 @@ (function (_ extension_name phase archive [alias def_name]) (do phase.monad [_ (///.lifted - (phase.sub [(get@ [#/////directive.analysis #/////directive.state]) - (set@ [#/////directive.analysis #/////directive.state])] + (phase.sub [(value@ [#/////directive.analysis #/////directive.state]) + (with@ [#/////directive.analysis #/////directive.state])] (define_alias alias def_name)))] (in /////directive.no_requirements)))])) @@ -405,9 +405,9 @@ (^ (list programC)) (do phase.monad [state (///.lifted phase.get_state) - .let [analyse (get@ [#/////directive.analysis #/////directive.phase] state) - synthesize (get@ [#/////directive.synthesis #/////directive.phase] state) - generate (get@ [#/////directive.generation #/////directive.phase] state)] + .let [analyse (value@ [#/////directive.analysis #/////directive.phase] state) + synthesize (value@ [#/////directive.synthesis #/////directive.phase] state) + generate (value@ [#/////directive.generation #/////directive.phase] state)] programS (prepare_program archive analyse synthesize programC) current_module (/////directive.lifted_analysis (///.lifted meta.current_module_name)) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux index a8caf13bf..e18b6d356 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/common.lux @@ -128,7 +128,7 @@ list\join) conditionalsG (|> conditionalsG+ (list\map product.right) - (monad.seq _.monad))]] + (monad.all _.monad))]] (in (do _.monad [@else _.new_label] ($_ _.composite diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux index a749fb6cd..be90b8876 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/jvm/host.lux @@ -948,7 +948,7 @@ (monad.map _.monad (.function (_ register) ($_ _.composite (_.aload 0) - (_.aload (inc register)) + (_.aload (++ register)) (_.putfield class (///reference.foreign_name register) $Object)))))] (method.method method.public "<init>" (anonymous_init_method env) (list) @@ -966,7 +966,7 @@ (in ($_ _.composite (_.new class) _.dup - (monad.seq _.monad captureG+) + (monad.all _.monad captureG+) (_.invokespecial class "<init>" (anonymous_init_method env)))))) (def: (returnG returnT) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux index 45d6873da..02ddfbd71 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/php/common.lux @@ -84,7 +84,7 @@ .let [foreigns (|> conditionals (list\map (|>> product.right synthesis.path/then //case.dependencies)) (list& (//case.dependencies (synthesis.path/then else))) - list.joined + list.together (set.of_list _.hash) set.list) @expression (_.constant (reference.artifact [context_module context_artifact])) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux index f683c9b9a..c531d05d9 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/extension/generation/python/common.lux @@ -7,7 +7,7 @@ ["." function] ["." try] ["<>" parser - ["<s>" synthesis (#+ Parser)]]] + ["<.>" synthesis (#+ Parser)]]] [data ["." product] ["." text @@ -41,7 +41,7 @@ (-> Text (Generator s))] Handler)) (function (_ extension_name phase archive input) - (case (<s>.result parser input) + (case (<synthesis>.result parser input) (#try.Success input') (handler extension_name phase archive input') @@ -51,11 +51,11 @@ ... TODO: Get rid of this ASAP (def: lux::syntax_char_case! (..custom [($_ <>.and - <s>.any - <s>.any - (<>.some (<s>.tuple ($_ <>.and - (<s>.tuple (<>.many <s>.i64)) - <s>.any)))) + <synthesis>.any + <synthesis>.any + (<>.some (<synthesis>.tuple ($_ <>.and + (<synthesis>.tuple (<>.many <synthesis>.i64)) + <synthesis>.any)))) (function (_ extension_name phase archive [input else conditionals]) (do {! /////.monad} [inputG (phase archive input) @@ -101,9 +101,9 @@ (/.install "and" (binary (product.uncurried //runtime.i64::and))) (/.install "or" (binary (product.uncurried //runtime.i64::or))) (/.install "xor" (binary (product.uncurried //runtime.i64::xor))) - (/.install "left-shift" (binary (product.uncurried //runtime.i64::left_shift))) - (/.install "right-shift" (binary (product.uncurried //runtime.i64::right_shift))) - + (/.install "left-shift" (binary (product.uncurried //runtime.i64::left_shifted))) + (/.install "right-shift" (binary (product.uncurried //runtime.i64::right_shifted))) + (/.install "<" (binary (product.uncurried _.<))) (/.install "=" (binary (product.uncurried _.=))) (/.install "+" (binary (product.uncurried (..capped _.+)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/case.lux index 7bc4f46df..fae91850c 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/case.lux @@ -124,7 +124,7 @@ (list))))))] [left_choice _.nil (<|)] - [right_choice (_.string "") inc] + [right_choice (_.string "") ++] ) (def: (alternation @otherwise pre! post!) @@ -248,7 +248,7 @@ pattern_matching! (pattern_matching $output expression archive pathP) .let [storage (|> pathP ////synthesis/case.storage - (get@ #////synthesis/case.bindings) + (value@ #////synthesis/case.bindings) set.list (list\map (function (_ register) [(..register register) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/function.lux index 917ab8503..41faa95b6 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/function.lux @@ -56,7 +56,7 @@ (_.funcall/+ [(_.function/1 @closure) inits])))))) (def: input - (|>> inc //case.register)) + (|>> ++ //case.register)) (def: .public (function expression archive [environment arity bodyS]) (Generator (Abstraction Synthesis)) 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 db8c9b18e..7eca077bf 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/runtime.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- Location inc) + [lux (#- Location) ["." meta] [abstract ["." monad (#+ do)]] @@ -90,13 +90,13 @@ (syntax: .public (with_vars [vars (<code>.tuple (<>.some <code>.local_identifier)) body <code>.any]) (do {! meta.monad} - [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))] + [ids (monad.all ! (list.repeated (list.size vars) meta.seed))] (in (list (` (let [(~+ (|> vars (list.zipped/2 ids) (list\map (function (_ [id var]) (list (code.local_identifier var) (` (_.var (~ (code.text (format "v" (%.nat id))))))))) - list.joined))] + list.together))] (~ body))))))) (syntax: (runtime: [declaration (<>.or <code>.local_identifier diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/structure.lux index df957a3cd..6755b8f33 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/common_lisp/structure.lux @@ -31,7 +31,7 @@ (def: .public (variant expression archive [lefts right? valueS]) (Generator (Variant Synthesis)) (let [tag (if right? - (inc lefts) + (++ lefts) lefts)] (///////phase\map (|>> [tag right?] //runtime.variant) (expression archive valueS)))) 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 6a5f40ef7..3802776c8 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 @@ -36,7 +36,7 @@ type <code>.any]) (with_identifiers [g!_ g!extension g!name g!phase g!archive g!inputs g!of g!anchor g!expression g!directive] (do {! meta.monad} - [g!input+ (monad.seq ! (list.repeated arity (macro.identifier "input")))] + [g!input+ (monad.all ! (list.repeated arity (macro.identifier "input")))] (in (list (` (def: .public ((~ (code.local_identifier name)) (~ g!extension)) (All [(~ g!anchor) (~ g!expression) (~ g!directive)] (-> ((~ type) (~ g!expression)) @@ -48,7 +48,7 @@ [(~+ (|> g!input+ (list\map (function (_ g!input) (list g!input (` ((~ g!phase) (~ g!archive) (~ g!input)))))) - list.joined))] + list.together))] ((~' in) ((~ g!extension) [(~+ g!input+)]))) (~' _) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/case.lux index b89ca3c5a..9b0431808 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/case.lux @@ -144,7 +144,7 @@ (push_cursor! @temp)))))] [left_choice _.null (<|)] - [right_choice (_.string "") inc] + [right_choice (_.string "") ++] ) (def: (alternation pre! post!) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/function.lux index cccb72dd5..fdfc768a0 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/function.lux @@ -56,7 +56,7 @@ (_.var "curried")) (def: input - (|>> inc //case.register)) + (|>> ++ //case.register)) (def: @@arguments (_.var "arguments")) 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 57916d38a..368c69bb0 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 @@ -68,7 +68,7 @@ (def: .public low (-> (I64 Any) (I64 Any)) - (let [mask (dec (i64.left_shifted 32 1))] + (let [mask (-- (i64.left_shifted 32 1))] (|>> (i64.and mask)))) (def: .public unit @@ -88,13 +88,13 @@ (syntax: .public (with_vars [vars (<code>.tuple (<>.some <code>.local_identifier)) body <code>.any]) (do {! meta.monad} - [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))] + [ids (monad.all ! (list.repeated (list.size vars) meta.seed))] (in (list (` (let [(~+ (|> vars (list.zipped/2 ids) (list\map (function (_ [id var]) (list (code.local_identifier var) (` (_.var (~ (code.text (format "v" (%.nat id))))))))) - list.joined))] + list.together))] (~ body))))))) (syntax: (runtime: [declaration (<>.or <code>.local_identifier diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/structure.lux index ebaaa7f49..6253b38b5 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/structure.lux @@ -31,7 +31,7 @@ (def: .public (variant generate archive [lefts right? valueS]) (Generator (Variant Synthesis)) (let [tag (if right? - (inc lefts) + (++ lefts) lefts)] (///////phase\map (//runtime.variant (_.i32 (.int tag)) (//runtime.flag right?)) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/case.lux index aebb30404..417f74d2d 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/case.lux @@ -174,7 +174,7 @@ (#synthesis.Alt leftP rightP) (do phase.monad [@alt_else //runtime.forge_label - left! (path' (inc stack_depth) @alt_else @end phase archive leftP) + left! (path' (++ stack_depth) @alt_else @end phase archive leftP) right! (path' stack_depth @else @end phase archive rightP)] (in ($_ _.composite _.dup diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function.lux index f3938db06..5eafc6556 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function.lux @@ -74,7 +74,7 @@ (if (arity.multiary? arity) (|> (n.min arity /arity.maximum) list.indices - (list\map (|>> inc (/apply.method classT environment arity @begin body))) + (list\map (|>> ++ (/apply.method classT environment arity @begin body))) (list& (/implementation.method arity @begin body))) (list (/implementation.method' //runtime.apply::name arity @begin body)))))] (do phase.monad @@ -129,7 +129,7 @@ (function (_ batchG) ($_ _.composite (_.checkcast /abstract.class) - (monad.seq _.monad batchG) + (monad.all _.monad batchG) (_.invokevirtual /abstract.class //runtime.apply::name (//runtime.apply::type (list.size batchG))) )))) )))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial/count.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/count.lux index 30f27def6..1ec854f71 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial/count.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/count.lux @@ -6,11 +6,11 @@ [target [jvm ["_" bytecode (#+ Bytecode)] + ["." type] [encoding [name (#+ External)] - ["." signed]] - ["." type]]]]] - ["." ///// #_ + ["." signed]]]]]] + ["." //// #_ ["#." abstract]]) (def: .public field "partials") @@ -30,5 +30,5 @@ (Bytecode Any) ($_ _.composite ..this - (_.getfield /////abstract.class ..field ..type) + (_.getfield ////abstract.class ..field ..type) )) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux index 57d285e8a..19dc23779 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/field/variable/partial.lux @@ -35,7 +35,7 @@ ($_ _.composite (|> _.aconst_null (list.repeated amount) - (monad.seq _.monad)) + (monad.all _.monad)) (_\in []))) (def: .public (get class register) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/apply.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/apply.lux index da3292be8..1addefe99 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/apply.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/apply.lux @@ -79,7 +79,7 @@ (def: .public (method class environment function_arity @begin body apply_arity) (-> (Type Class) (Environment Synthesis) Arity Label (Bytecode Any) Arity (Resource Method)) - (let [num_partials (dec function_arity) + (let [num_partials (-- function_arity) over_extent (i.- (.int apply_arity) (.int function_arity))] (method.method //.modifier ////runtime.apply::name @@ -95,15 +95,15 @@ [@default _.new_label @labelsH _.new_label @labelsT (|> _.new_label - (list.repeated (dec num_partials)) - (monad.seq _.monad)) + (list.repeated (-- num_partials)) + (monad.all _.monad)) .let [cases (|> (list\compose (#.Item [@labelsH @labelsT]) (list @default)) list.enumeration (list\map (function (_ [stage @case]) (let [current_partials (|> (list.indices stage) (list\map (///partial.get class)) - (monad.seq _.monad)) + (monad.all _.monad)) already_partial? (n.> 0 stage) exact_match? (i.= over_extent (.int stage)) has_more_than_necessary? (i.> over_extent (.int stage))] @@ -135,10 +135,10 @@ ... (i.< over_extent (.int stage)) (let [current_environment (|> (list.indices (list.size environment)) (list\map (///foreign.get class)) - (monad.seq _.monad)) + (monad.all _.monad)) missing_partials (|> _.aconst_null (list.repeated (|> num_partials (n.- apply_arity) (n.- stage))) - (monad.seq _.monad))] + (monad.all _.monad))] ($_ _.composite (_.new class) _.dup @@ -150,7 +150,7 @@ missing_partials (_.invokevirtual class //init.name (//init.type environment function_arity)) _.areturn))))))) - (monad.seq _.monad))]] + (monad.all _.monad))]] ($_ _.composite ///partial/count.value (_.tableswitch (try.trusted (signed.s4 +0)) @default [@labelsH @labelsT]) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/init.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/init.lux index cd92f4aca..3c1922063 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/init.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/init.lux @@ -45,7 +45,7 @@ (def: (partials arity) (-> Arity (List (Type Value))) - (list.repeated (dec arity) ////type.value)) + (list.repeated (-- arity) ////type.value)) (def: .public (type environment arity) (-> (Environment Synthesis) Arity (Type category.Method)) @@ -64,7 +64,7 @@ (def: .public (super environment_size arity) (-> Nat Arity (Bytecode Any)) - (let [arity_register (inc environment_size)] + (let [arity_register (++ environment_size)] ($_ _.composite (if (arity.unary? arity) ..no_partials @@ -80,7 +80,7 @@ (list\map (function (_ register) (put register (_.aload (offset register))))) - (monad.seq _.monad))) + (monad.all _.monad))) (def: .public (method class environment arity) (-> (Type Class) (Environment Synthesis) Arity (Resource Method)) @@ -98,5 +98,5 @@ ////reference.this (..super environment_size arity) (store_all environment_size (///foreign.put class) offset_foreign) - (store_all (dec arity) (///partial.put class) offset_partial) + (store_all (-- arity) (///partial.put class) offset_partial) _.return))))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux index d153b35e9..c126f0296 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/function/method/new.lux @@ -47,7 +47,7 @@ ($_ _.composite (_.new class) _.dup - (monad.seq _.monad foreign_setup) + (monad.all _.monad foreign_setup) (///partial.new arity) (_.invokespecial class //init.name (//init.type environment arity)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/loop.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/loop.lux index 6757bc987..9b69ffbae 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/loop.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/loop.lux @@ -64,11 +64,11 @@ ... should be the case. (|> updatesG (list\map product.left) - (monad.seq _.monad)) + (monad.all _.monad)) (|> updatesG list.reversed (list\map product.right) - (monad.seq _.monad)) + (monad.all _.monad)) (_.goto @begin))))) (def: .public (scope translate archive [offset initsS+ iterationS]) @@ -83,7 +83,7 @@ ($_ _.composite initG (_.astore (n.+ offset index))))) - (monad.seq _.monad))]] + (monad.all _.monad))]] (in ($_ _.composite initializationG (_.set_label @begin) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/runtime.lux index f11c871c1..1d414ab77 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/runtime.lux @@ -44,8 +44,7 @@ [constant ["#/." arity]] [variable - [partial - ["#/." count]]]]] + ["#/." count]]]] ["//#" /// #_ [// ["." version] @@ -60,11 +59,14 @@ [io (#+ lux_context)] [archive (#+ Archive)]]]]]]) -(type: .public Byte_Code Binary) +(type: .public Byte_Code + Binary) -(type: .public Definition [Text Byte_Code]) +(type: .public Definition + [Text Byte_Code]) -(type: .public Anchor [Label Register]) +(type: .public Anchor + [Label Register]) (template [<name> <base>] [(type: .public <name> @@ -542,7 +544,7 @@ (def: generate_function (Operation Any) (let [apply::method+ (|> (enum.range n.enum - (inc //function/arity.minimum) + (++ //function/arity.minimum) //function/arity.maximum) (list\map (function (_ arity) (method.method method.public ..apply::name (..apply::type arity) @@ -553,7 +555,7 @@ (monad.map _.monad _.aload))] ($_ _.composite previous_inputs - (_.invokevirtual //function.class ..apply::name (..apply::type (dec arity))) + (_.invokevirtual //function.class ..apply::name (..apply::type (-- arity))) (_.checkcast //function.class) (_.aload arity) (_.invokevirtual //function.class ..apply::name (..apply::type //function/arity.minimum)) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/structure.lux index 062708388..815c4fca0 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/jvm/structure.lux @@ -50,12 +50,12 @@ (in (do {! _.monad} [_ (_.int (.i64 (list.size membersS))) _ (_.anewarray $Object)] - (monad.seq ! membersI)))))) + (monad.all ! membersI)))))) (def: .public (tag lefts right?) (-> Nat Bit (Bytecode Any)) (case (if right? - (.inc lefts) + (.++ lefts) lefts) 0 _.iconst_0 1 _.iconst_1 diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/case.lux index d21adc3ef..ef53de88c 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/case.lux @@ -145,7 +145,7 @@ (..push! @temp)))))] [left_choice _.nil (<|)] - [right_choice (_.string "") inc] + [right_choice (_.string "") ++] ) (def: (alternation pre! post!) @@ -250,7 +250,7 @@ (def: .public dependencies (-> Path (List Var)) (|>> ////synthesis/case.storage - (get@ #////synthesis/case.dependencies) + (value@ #////synthesis/case.dependencies) set.list (list\map (function (_ variable) (.case variable diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/function.lux index 65930fb75..509808d62 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/function.lux @@ -57,7 +57,7 @@ (_.apply/* inits @self)]))) (def: input - (|>> inc //case.register)) + (|>> ++ //case.register)) (def: (@scope function_name) (-> Context Label) @@ -82,7 +82,7 @@ initialize! (list\fold (.function (_ post pre!) ($_ _.then pre! - (_.local/1 (..input post) (_.item (|> post inc .int _.int) @curried)))) + (_.local/1 (..input post) (_.item (|> post ++ .int _.int) @curried)))) initialize_self! (list.indices arity)) pack (|>> (list) _.array) 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 a1c3d7ca2..988274333 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/runtime.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- Location inc) + [lux (#- Location) ["." meta] [abstract ["." monad (#+ do)]] @@ -105,13 +105,13 @@ (syntax: .public (with_vars [vars (<code>.tuple (<>.some <code>.local_identifier)) body <code>.any]) (do {! meta.monad} - [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))] + [ids (monad.all ! (list.repeated (list.size vars) meta.seed))] (in (list (` (let [(~+ (|> vars (list.zipped/2 ids) (list\map (function (_ [id var]) (list (code.local_identifier var) (` (_.var (~ (code.text (format "v" (%.nat id))))))))) - list.joined))] + list.together))] (~ body))))))) (def: module_id diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/structure.lux index 8c78dea65..6bbd167eb 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/lua/structure.lux @@ -31,7 +31,7 @@ (def: .public (variant generate archive [lefts right? valueS]) (Generator (Variant Synthesis)) (let [tag (if right? - (inc lefts) + (++ lefts) lefts)] (///////phase\map (//runtime.variant tag right?) (generate archive valueS)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/case.lux index 04cce603a..28744fe33 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/case.lux @@ -145,7 +145,7 @@ (..push! @temp)))))] [left_choice _.null (<|)] - [right_choice (_.string "") inc] + [right_choice (_.string "") ++] ) (def: (alternation pre! post!) @@ -260,7 +260,7 @@ (def: .public dependencies (-> Path (List Var)) (|>> ////synthesis/case.storage - (get@ #////synthesis/case.dependencies) + (value@ #////synthesis/case.dependencies) set.list (list\map (function (_ variable) (.case variable diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/function.lux index 5cc25a622..175fadfc3 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/function.lux @@ -41,7 +41,7 @@ (|>> (///reference.foreign //reference.system) :expected)) (def: input - (|>> inc //case.register)) + (|>> ++ //case.register)) (def: (@scope function_name) (-> Context Label) 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 6f69ba6e6..bd36c0785 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/runtime.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- Location inc) + [lux (#- Location) ["." meta] [abstract ["." monad (#+ do)]] @@ -73,13 +73,13 @@ (syntax: .public (with_vars [vars (<code>.tuple (<>.some <code>.local_identifier)) body <code>.any]) (do {! meta.monad} - [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))] + [ids (monad.all ! (list.repeated (list.size vars) meta.seed))] (in (list (` (let [(~+ (|> vars (list.zipped/2 ids) (list\map (function (_ [id var]) (list (code.local_identifier var) (` (_.var (~ (code.text (format "v" (%.nat id))))))))) - list.joined))] + list.together))] (~ body))))))) (def: module_id @@ -342,7 +342,7 @@ (def: .public low (-> (I64 Any) (I64 Any)) - (let [mask (dec (i64.left_shifted 32 1))] + (let [mask (-- (i64.left_shifted 32 1))] (|>> (i64.and mask)))) (runtime: (i64//right_shifted param subject) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/structure.lux index 69979afd6..a7fe22f6d 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/php/structure.lux @@ -36,7 +36,7 @@ (def: .public (variant expression archive [lefts right? valueS]) (Generator (Variant Synthesis)) (let [tag (if right? - (inc lefts) + (++ lefts) lefts)] (///////phase\map (//runtime.variant tag right?) (expression archive valueS)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/case.lux index df2a1a3fc..5d66730d1 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/case.lux @@ -148,7 +148,7 @@ )))] [left_choice _.none (<|)] - [right_choice (_.string "") inc] + [right_choice (_.string "") ++] ) (def: (with_looping in_closure? g!once body!) @@ -298,7 +298,7 @@ (def: .public dependencies (-> Path (List SVar)) (|>> case.storage - (get@ #case.dependencies) + (value@ #case.dependencies) set.list (list\map (function (_ variable) (.case variable diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/function.lux index b1ce3f5c8..eee714ea8 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/function.lux @@ -19,7 +19,7 @@ ["/#" // #_ ["#." reference] ["//#" /// #_ - [analysis (#+ Variant Tuple Environment Abstraction Application Analysis)] + [analysis (#+ Environment Abstraction Application Analysis)] [synthesis (#+ Synthesis)] ["#." generation (#+ Context)] ["//#" /// #_ @@ -64,7 +64,7 @@ (in (_.apply/* @function inits))))) (def: input - (|>> inc //case.register)) + (|>> ++ //case.register)) (def: .public (function statement expression archive [environment arity bodyS]) (-> Phase! (Generator (Abstraction Synthesis))) 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 e26aca84a..207b74654 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 @@ -1,6 +1,6 @@ (.module: [library - [lux (#- inc) + [lux (#- ++) ["." meta] [abstract ["." monad (#+ do)]] @@ -112,13 +112,13 @@ (syntax: .public (with_vars [vars (<code>.tuple (<>.some <code>.local_identifier)) body <code>.any]) (do {! meta.monad} - [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))] + [ids (monad.all ! (list.repeated (list.size vars) meta.seed))] (in (list (` (let [(~+ (|> vars (list.zipped/2 ids) (list\map (function (_ [id var]) (list (code.local_identifier var) (` (_.var (~ (code.text (format "v" (%.nat id))))))))) - list.joined))] + list.together))] (~ body))))))) (syntax: (runtime: [declaration (<>.or <code>.local_identifier @@ -395,7 +395,7 @@ ..none (..some (..i64::64 idx))))))) -(def: inc +(def: ++ (|>> (_.+ (_.int +1)))) (def: (within? top value) @@ -408,7 +408,7 @@ (runtime: (text::char idx text) (_.if (|> idx (within? (_.len/1 text))) - (_.return (|> text (_.slice idx (..inc idx)) _.ord/1 ..i64::64)) + (_.return (|> text (_.slice idx (..++ idx)) _.ord/1 ..i64::64)) (_.raise (_.Exception/1 (_.unicode "[Lux Error] Cannot get char from text."))))) (def: runtime::text diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/structure.lux index 1ab751074..756e3f00d 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/python/structure.lux @@ -1,6 +1,6 @@ (.module: [library - [lux #* + [lux (#- Variant Tuple) [abstract ["." monad (#+ do)]] [target @@ -31,7 +31,7 @@ (def: .public (variant generate archive [lefts right? valueS]) (Generator (Variant Synthesis)) (let [tag (if right? - (inc lefts) + (++ lefts) lefts)] (///////phase\map (//runtime.variant tag right?) (generate archive valueS)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/case.lux index cd41e5f3d..288fdc4bf 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/case.lux @@ -187,7 +187,7 @@ ..fail! (..push_cursor! $temp))))]) ([/////synthesis.side/left false (<|)] - [/////synthesis.side/right true inc]) + [/////synthesis.side/right true ++]) (^ (/////synthesis.member/left 0)) (///////phase\in (_.item (_.int +1) ..peek)) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/function.lux index 34334c668..4ae6231c5 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/function.lux @@ -68,8 +68,8 @@ (def: (input_declaration register) (-> Register Expression) - (_.set! (|> register inc //case.register) - (|> $curried (_.item (|> register inc .int _.int))))) + (_.set! (|> register ++ //case.register) + (|> $curried (_.item (|> register ++ .int _.int))))) (def: .public (function expression archive [environment arity bodyS]) (Generator (Abstraction Synthesis)) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/common.lux index e6134cb95..624826639 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/common.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/procedure/common.lux @@ -67,7 +67,7 @@ arity s.nat]) (with_identifiers [g!_ g!proc g!name g!translate g!inputs] (do {@ macro.monad} - [g!input+ (monad.seq @ (list.repeated arity (macro.identifier "input")))] + [g!input+ (monad.all @ (list.repeated arity (macro.identifier "input")))] (in (list (` (def: .public ((~ (code.local_identifier name)) (~ g!proc)) (-> (-> (..Vector (~ (code.nat arity)) Expression) Expression) (-> Text ..Proc)) @@ -79,7 +79,7 @@ [(~+ (|> g!input+ (list/map (function (_ g!input) (list g!input (` ((~ g!translate) (~ g!input)))))) - list.joined))] + list.together))] ((~' in) ((~ g!proc) [(~+ g!input+)]))) (~' _) @@ -125,7 +125,7 @@ (-> Text Proc) (function (_ proc_name) (function (_ translate inputsS) - (case (s.result inputsS ($_ p.seq s.nat (s.tuple (p.many s.any)) s.any)) + (case (s.result inputsS ($_ p.and s.nat (s.tuple (p.many s.any)) s.any)) (#e.Success [offset initsS+ bodyS]) (loopT.translate_loop translate offset initsS+ bodyS) 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 36e86df65..21f2ded5a 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/runtime.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- Location inc i64) + [lux (#- Location ++ i64) ["." meta] [abstract ["." monad (#+ do)]] @@ -79,13 +79,13 @@ (syntax: .public (with_vars [vars (<code>.tuple (<>.some <code>.local_identifier)) body <code>.any]) (do {! meta.monad} - [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))] + [ids (monad.all ! (list.repeated (list.size vars) meta.seed))] (in (list (` (let [(~+ (|> vars (list.zipped/2 ids) (list\map (function (_ [id var]) (list (code.local_identifier var) (` (_.var (~ (code.text (format "v" (%.nat id))))))))) - list.joined))] + list.together))] (~ body))))))) (syntax: (runtime: [declaration (<>.or <code>.local_identifier @@ -718,7 +718,7 @@ @frac::decode )) -(def: inc +(def: ++ (-> Expression Expression) (|>> (_.+ (_.int +1)))) @@ -749,8 +749,8 @@ ($_ _.then (_.set! idx (|> (_.apply_kw (list param (_.if (|> startF (_.= (_.int +0))) subject - (text_clip (inc startF) - (inc subjectL) + (text_clip (++ startF) + (++ subjectL) subject))) (list ["fixed" (_.bool #1)]) (_.var "regexpr")) @@ -766,7 +766,7 @@ (_.set! length (_.length text)) (_.set! to (_.+ additional minimum)) (_.if (within? length to) - (..some (text_clip (inc minimum) (inc to) text)) + (..some (text_clip (++ minimum) (++ to) text)) ..none)))) (def: (char_at idx text) @@ -777,7 +777,7 @@ (runtime: (text::char text idx) (_.if (|> idx (within? (_.length text))) ($_ _.then - (_.set! idx (inc idx)) + (_.set! idx (++ idx)) (..some (i64::of_float (char_at idx text)))) ..none)) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/structure.lux index 3c74989df..748f56955 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/r/structure.lux @@ -34,7 +34,7 @@ (def: .public (variant expression archive [lefts right? valueS]) (Generator (Variant Synthesis)) (let [tag (if right? - (inc lefts) + (++ lefts) lefts)] (///////phase\map (|>> (//runtime.variant tag right?)) (expression archive valueS)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/reference.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/reference.lux index 608bffb04..26ccf116d 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/reference.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/reference.lux @@ -1,6 +1,6 @@ (.module: [library - [lux #* + [lux (#- local) ["@" target] [data [text diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/case.lux index fa95d1ba3..2af4e0dee 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/case.lux @@ -151,7 +151,7 @@ (..push! @temp)))))] [left_choice _.nil (<|)] - [right_choice (_.string "") inc] + [right_choice (_.string "") ++] ) (def: (with_looping in_closure? g!once g!continue? body!) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux index b64895b0e..192807829 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux @@ -61,7 +61,7 @@ (_.apply/* inits @self)]))) (def: input - (|>> inc //case.register)) + (|>> ++ //case.register)) (def: .public (function statement expression archive [environment arity bodyS]) (-> Phase! (Generator (Abstraction Synthesis))) @@ -73,7 +73,7 @@ .let [function_name (///reference.artifact [function_module function_artifact]) @curried (_.local "curried") arityO (|> arity .int _.int) - limitO (|> arity dec .int _.int) + limitO (|> arity -- .int _.int) @num_args (_.local "num_args") @self (_.local function_name) initialize_self! (_.set (list (//case.register 0)) @self) 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 1bcb1d528..8a825e466 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/runtime.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- inc) + [lux #* ["." meta] [abstract ["." monad (#+ do)]] @@ -74,13 +74,13 @@ (syntax: .public (with_vars [vars (<code>.tuple (<>.some <code>.local_identifier)) body <code>.any]) (do {! meta.monad} - [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))] + [ids (monad.all ! (list.repeated (list.size vars) meta.seed))] (in (list (` (let [(~+ (|> vars (list.zipped/2 ids) (list\map (function (_ [id var]) (list (code.local_identifier var) (` (_.local (~ (code.text (format "v" (%.nat id))))))))) - list.joined))] + list.together))] (~ body))))))) (def: module_id diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/structure.lux index f51cad8bc..57861f7d4 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/ruby/structure.lux @@ -31,7 +31,7 @@ (def: .public (variant generate archive [lefts right? valueS]) (Generator (Variant Synthesis)) (let [tag (if right? - (inc lefts) + (++ lefts) lefts)] (///////phase\map (//runtime.variant tag right?) (generate archive valueS)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux index 70dfee409..ae841dc5b 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux @@ -180,7 +180,7 @@ ..fail! (push_cursor! @temp))))]) ([/////synthesis.side/left false (<|)] - [/////synthesis.side/right true inc]) + [/////synthesis.side/right true ++]) (^ (/////synthesis.member/left 0)) (///////phase\in (..push_cursor! (_.vector_ref/2 ..peek (_.int +0)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/extension/common.lux index c52ecd6dd..dc3c75d98 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 @@ -42,7 +42,7 @@ arity <code>.nat]) (with_identifiers [g!_ g!extension g!name g!phase g!inputs] (do {! macro.monad} - [g!input+ (monad.seq ! (list.repeated arity (macro.identifier "input")))] + [g!input+ (monad.all ! (list.repeated arity (macro.identifier "input")))] (in (list (` (def: .public ((~ (code.local_identifier name)) (~ g!extension)) (-> (-> (..Vector (~ (code.nat arity)) Expression) Computation) Handler) @@ -53,7 +53,7 @@ [(~+ (|> g!input+ (list\map (function (_ g!input) (list g!input (` ((~ g!phase) (~ g!input)))))) - list.joined))] + list.together))] ((~' in) ((~ g!extension) [(~+ g!input+)]))) (~' _) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/function.lux index a36feb036..58d8b55c6 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/function.lux @@ -58,7 +58,7 @@ (def: @missing (_.var "missing")) (def: input - (|>> inc //case.register)) + (|>> ++ //case.register)) (def: .public (function expression archive [environment arity bodyS]) (Generator (Abstraction Synthesis)) 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 95dfef826..452da33ef 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/runtime.lux @@ -1,6 +1,6 @@ (.module: [library - [lux (#- Location inc) + [lux (#- Location) ["." meta] [abstract ["." monad (#+ do)]] @@ -61,13 +61,13 @@ (syntax: .public (with_vars [vars (<code>.tuple (<>.some <code>.local_identifier)) body <code>.any]) (do {! meta.monad} - [ids (monad.seq ! (list.repeated (list.size vars) meta.seed))] + [ids (monad.all ! (list.repeated (list.size vars) meta.seed))] (in (list (` (let [(~+ (|> vars (list.zipped/2 ids) (list\map (function (_ [id var]) (list (code.local_identifier var) (` (_.var (~ (code.text (format "v" (%.nat id))))))))) - list.joined))] + list.together))] (~ body))))))) (syntax: (runtime: [declaration (<>.or <code>.local_identifier diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux index ebc933d4c..3c21b5e17 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux @@ -34,7 +34,7 @@ (def: .public (variant expression archive [lefts right? valueS]) (Generator (Variant Synthesis)) (let [tag (if right? - (inc lefts) + (++ lefts) lefts)] (///////phase\map (|>> [tag right?] //runtime.variant) (expression archive valueS)))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis.lux index c234f9902..9e80130aa 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis.lux @@ -59,8 +59,8 @@ (case structure (#///analysis.Variant variant) (do phase.monad - [valueS (optimization' (get@ #///analysis.value variant))] - (in (/.variant (set@ #///analysis.value valueS variant)))) + [valueS (optimization' (value@ #///analysis.value variant))] + (in (/.variant (with@ #///analysis.value valueS variant)))) (#///analysis.Tuple tuple) (|> tuple diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/case.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/case.lux index 7f2666d8b..1a178900e 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/case.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/case.lux @@ -71,7 +71,7 @@ thenC) (#///analysis.Complex (#///analysis.Tuple tuple)) - (let [tuple::last (dec (list.size tuple))] + (let [tuple::last (-- (list.size tuple))] (list\fold (function (_ [tuple::lefts tuple::member] nextC) (.case tuple::member (#///analysis.Simple #///analysis.Unit) @@ -81,7 +81,7 @@ (let [right? (n.= tuple::last tuple::lefts) end?' (and end? right?)] (<| (///\map (|>> (#/.Seq (#/.Access (#/.Member (if right? - (#.Right (dec tuple::lefts)) + (#.Right (-- tuple::lefts)) (#.Left tuple::lefts))))))) (path' tuple::member end?') (when> [(new> (not end?') [])] [(///\map ..clean_up)]) @@ -193,10 +193,10 @@ (loop [lefts 0 patterns patterns] (with_expansions [<failure> (as_is (list)) - <continue> (as_is (recur (inc lefts) + <continue> (as_is (recur (++ lefts) tail)) <member> (as_is (if (list.empty? tail) - (#.Right (dec lefts)) + (#.Right (-- lefts)) (#.Left lefts)))] (case patterns #.End @@ -308,7 +308,7 @@ (case path (^ (/.path/seq #/.Pop path')) (let [[pops post_pops] (count_pops path')] - [(inc pops) post_pops]) + [(++ pops) post_pops]) _ [0 path])) @@ -341,8 +341,8 @@ path_storage (^ (/.path/bind register)) - (update@ #bindings (set.has register) - path_storage) + (revised@ #bindings (set.has register) + path_storage) (#/.Bit_Fork _ default otherwise) (|> (case otherwise @@ -376,12 +376,12 @@ (list\fold for_synthesis synthesis_storage members) (#/.Reference (#///reference.Variable (#///reference/variable.Local register))) - (if (set.member? (get@ #bindings synthesis_storage) register) + (if (set.member? (value@ #bindings synthesis_storage) register) synthesis_storage - (update@ #dependencies (set.has (#///reference/variable.Local register)) synthesis_storage)) + (revised@ #dependencies (set.has (#///reference/variable.Local register)) synthesis_storage)) (#/.Reference (#///reference.Variable var)) - (update@ #dependencies (set.has var) synthesis_storage) + (revised@ #dependencies (set.has var) synthesis_storage) (^ (/.function/apply [functionS argsS])) (list\fold for_synthesis synthesis_storage (#.Item functionS argsS)) @@ -390,17 +390,17 @@ (list\fold for_synthesis synthesis_storage environment) (^ (/.branch/case [inputS pathS])) - (update@ #dependencies - (set.union (get@ #dependencies (for_path pathS synthesis_storage))) - (for_synthesis inputS synthesis_storage)) + (revised@ #dependencies + (set.union (value@ #dependencies (for_path pathS synthesis_storage))) + (for_synthesis inputS synthesis_storage)) (^ (/.branch/let [inputS register exprS])) - (update@ #dependencies - (set.union (|> synthesis_storage - (update@ #bindings (set.has register)) - (for_synthesis exprS) - (get@ #dependencies))) - (for_synthesis inputS synthesis_storage)) + (revised@ #dependencies + (set.union (|> synthesis_storage + (revised@ #bindings (set.has register)) + (for_synthesis exprS) + (value@ #dependencies))) + (for_synthesis inputS synthesis_storage)) (^ (/.branch/if [testS thenS elseS])) (list\fold for_synthesis synthesis_storage (list testS thenS elseS)) @@ -409,15 +409,15 @@ (for_synthesis whole synthesis_storage) (^ (/.loop/scope [start initsS+ iterationS])) - (update@ #dependencies - (set.union (|> synthesis_storage - (update@ #bindings (set.union (|> initsS+ - list.enumeration - (list\map (|>> product.left (n.+ start))) - (set.of_list n.hash)))) - (for_synthesis iterationS) - (get@ #dependencies))) - (list\fold for_synthesis synthesis_storage initsS+)) + (revised@ #dependencies + (set.union (|> synthesis_storage + (revised@ #bindings (set.union (|> initsS+ + list.enumeration + (list\map (|>> product.left (n.+ start))) + (set.of_list n.hash)))) + (for_synthesis iterationS) + (value@ #dependencies))) + (list\fold for_synthesis synthesis_storage initsS+)) (^ (/.loop/recur replacementsS+)) (list\fold for_synthesis synthesis_storage replacementsS+) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/function.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/function.lux index 7becfbe4d..1e7ca8cc3 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/function.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/function.lux @@ -55,7 +55,7 @@ (with_expansions [<apply> (as_is (/.function/apply [funcS argsS]))] (case funcS (^ (/.function/abstraction functionS)) - (if (n.= (get@ #/.arity functionS) + (if (n.= (value@ #/.arity functionS) (list.size argsS)) (do ! [locals /.locals] @@ -94,7 +94,7 @@ (-> (-> Synthesis (Operation Synthesis)) Path (Operation Path)) (case path (#/.Bind register) - (phase\in (#/.Bind (inc register))) + (phase\in (#/.Bind (++ register))) (^template [<tag>] [(<tag> left right) @@ -160,7 +160,7 @@ (#////reference.Variable variable) (case variable (#////reference/variable.Local register) - (phase\in (/.variable/local (inc register))) + (phase\in (/.variable/local (++ register))) (#////reference/variable.Foreign register) (..find_foreign environment register)) @@ -176,7 +176,7 @@ (do phase.monad [inputS' (grow environment inputS) bodyS' (grow environment bodyS)] - (in (/.branch/let [inputS' (inc register) bodyS']))) + (in (/.branch/let [inputS' (++ register) bodyS']))) (#/.If [testS thenS elseS]) (do phase.monad @@ -202,7 +202,7 @@ (do {! phase.monad} [initsS+' (monad.map ! (grow environment) initsS+) iterationS' (grow environment iterationS)] - (in (/.loop/scope [(inc start) initsS+' iterationS']))) + (in (/.loop/scope [(++ start) initsS+' iterationS']))) (#/.Recur argumentsS+) (|> argumentsS+ @@ -258,7 +258,7 @@ (grow env') (\ ! map (function (_ body) {#/.environment environment - #/.arity (inc down_arity') + #/.arity (++ down_arity') #/.body body}))) _ @@ -270,7 +270,7 @@ (case (//loop.optimization false 1 (list) abstraction) (#.Some [startL initsL bodyL]) (/.function/abstraction {#/.environment environment - #/.arity (get@ #/.arity abstraction) + #/.arity (value@ #/.arity abstraction) #/.body (/.loop/scope [startL initsL bodyL])}) #.None diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/loop.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/loop.lux index d9890dbc9..a615c00ef 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/loop.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/loop.lux @@ -24,7 +24,7 @@ (def: .public (register_optimization offset) (-> Register (-> Register Register)) - (|>> dec (n.+ offset))) + (|>> -- (n.+ offset))) (def: (path_optimization body_optimization offset) (-> (Transform Synthesis) Register (Transform Path)) @@ -86,9 +86,9 @@ (case structure (#analysis.Variant variant) (do maybe.monad - [value' (|> variant (get@ #analysis.value) (recur false))] + [value' (|> variant (value@ #analysis.value) (recur false))] (in (|> variant - (set@ #analysis.value value') + (with@ #analysis.value value') /.variant))) (#analysis.Tuple tuple) @@ -141,10 +141,10 @@ (^ (/.loop/scope scope)) (do {! maybe.monad} [inits' (|> scope - (get@ #/.inits) + (value@ #/.inits) (monad.map ! (recur false))) - iteration' (recur return? (get@ #/.iteration scope))] - (in (/.loop/scope {#/.start (|> scope (get@ #/.start) (register_optimization offset)) + iteration' (recur return? (value@ #/.iteration scope))] + (in (/.loop/scope {#/.start (|> scope (value@ #/.start) (register_optimization offset)) #/.inits inits' #/.iteration iteration'}))) @@ -183,6 +183,6 @@ (def: .public (optimization true_loop? offset inits functionS) (-> Bit Register (List Synthesis) Abstraction (Maybe [Register (List Synthesis) Synthesis])) - (|> (get@ #/.body functionS) - (body_optimization true_loop? offset (get@ #/.environment functionS) (get@ #/.arity functionS)) + (|> (value@ #/.body functionS) + (body_optimization true_loop? offset (value@ #/.environment functionS) (value@ #/.arity functionS)) (maybe\map (|>> [offset inits])))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/variable.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/variable.lux index feadf7fa5..cb647c284 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/variable.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/synthesis/variable.lux @@ -29,7 +29,7 @@ (def: (prune redundant register) (-> Register Register Register) (if (n.> redundant register) - (dec register) + (-- register) register)) (type: (Remover a) @@ -44,7 +44,7 @@ (if (n.= redundant register) (recur post) (#/.Seq (#/.Bind (if (n.> redundant register) - (dec register) + (-- register) register)) (recur post))) @@ -60,7 +60,7 @@ (recur post) (#/.Seq (#/.Access (#/.Member member)) (#/.Seq (#/.Bind (if (n.> redundant register) - (dec register) + (-- register) register)) (recur post)))) @@ -188,7 +188,7 @@ (def: (default arity) (-> Arity Redundancy) - (product.right (..extended 0 (inc arity) ..initial))) + (product.right (..extended 0 (++ arity) ..initial))) (type: (Optimization a) (-> [Redundancy a] (Try [Redundancy a]))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/program.lux b/stdlib/source/library/lux/tool/compiler/language/lux/program.lux index 365f9e804..f181fd077 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/program.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/program.lux @@ -42,7 +42,7 @@ (do ! [id (archive.id module archive) [descriptor document] (archive.find module archive)] - (in [[module id] (get@ #descriptor.registry descriptor)])))))] + (in [[module id] (value@ #descriptor.registry descriptor)])))))] (case (list.one (function (_ [[module module_id] registry]) (do maybe.monad [program_id (artifact.remember ..name registry)] 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 15539ae10..d4b612bf2 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/syntax.lux @@ -70,13 +70,13 @@ (type: Char Nat) -(template [<name> <extension> <diff>] +(template [<extension> <diff> <name>] [(template: (<name> value) [(<extension> <diff> value)])] - [!inc "lux i64 +" 1] - [!inc/2 "lux i64 +" 2] - [!dec "lux i64 -" 1] + ["lux i64 +" 1 !++] + ["lux i64 +" 2 !++/2] + ["lux i64 -" 1 !--] ) (template: (!clip from to text) @@ -198,14 +198,14 @@ (:expected <<otherwise>>))]) (template: (!horizontal where offset source_code) - [[(update@ #.column inc where) - (!inc offset) + [[(revised@ #.column ++ where) + (!++ offset) source_code]]) (inline: (!new_line where) (-> Location Location) (let [[where::file where::line where::column] where] - [where::file (!inc where::line) 0])) + [where::file (!++ where::line) 0])) (inline: (!forward length where) (-> Nat Location Location) @@ -214,7 +214,7 @@ (template: (!vertical where offset source_code) [[(!new_line where) - (!inc offset) + (!++ offset) source_code]]) (template [<name> <close> <tag>] @@ -272,8 +272,8 @@ (<| (let [g!content (!clip offset g!end source_code)]) (!guarantee_no_new_lines where offset source_code g!content) (#.Right [[(let [size (!n/- offset g!end)] - (update@ #.column (|>> (!n/+ size) (!n/+ 2)) where)) - (!inc g!end) + (revised@ #.column (|>> (!n/+ size) (!n/+ 2)) where)) + (!++ g!end) source_code] [where (#.Text g!content)]])) @@ -365,11 +365,11 @@ exponent (static ..no_exponent)] (<| (!with_char+ source_code//size source_code end char/0 <frac_output>) (!if_digit?+ char/0 - (recur (!inc end) exponent) + (recur (!++ end) exponent) [["e" "E"] (if (same? (static ..no_exponent) exponent) - (<| (!with_char+ source_code//size source_code (!inc end) char/1 <failure>) + (<| (!with_char+ source_code//size source_code (!++ end) char/1 <failure>) (`` ("lux syntax char case!" char/1 [[<signs>] (<| (!with_char+ source_code//size source_code (!n/+ 2 end) char/2 <failure>) @@ -389,10 +389,10 @@ (loop [end offset] (<| (!with_char+ source_code//size source_code end char <int_output>) (!if_digit?+ char - (recur (!inc end)) + (recur (!++ end)) [[<frac_separator>] - (frac_parser source_code//size start where (!inc end) source_code)] + (frac_parser source_code//size start where (!++ end) source_code)] <int_output>)))) ) @@ -404,7 +404,7 @@ (loop [g!end offset] (<| (!with_char+ source_code//size source_code g!end g!char (!number_output source_code start g!end <codec> <tag>)) (!if_digit?+ g!char - (recur (!inc g!end)) + (recur (!++ g!end)) [] (!number_output source_code start g!end <codec> <tag>)))))] @@ -413,13 +413,13 @@ ) (template: (!signed_parser source_code//size offset where source_code @aliases @end) - [(<| (let [g!offset/1 (!inc offset)]) + [(<| (let [g!offset/1 (!++ offset)]) (!with_char+ source_code//size source_code g!offset/1 g!char/1 @end) (!if_digit? g!char/1 - (signed_parser source_code//size offset where (!inc/2 offset) source_code) - (!full_name_parser offset [where (!inc offset) source_code] where @aliases #.Identifier)))]) + (signed_parser source_code//size offset where (!++/2 offset) source_code) + (!full_name_parser offset [where (!++ offset) source_code] where @aliases #.Identifier)))]) -(with_expansions [<output> (#.Right [[(update@ #.column (|>> (!n/+ (!n/- start end))) where) +(with_expansions [<output> (#.Right [[(revised@ #.column (|>> (!n/+ (!n/- start end))) where) end source_code] (!clip start end source_code)])] @@ -430,12 +430,12 @@ (loop [end offset] (<| (!with_char+ source_code//size source_code end char <output>) (!if_name_char?|tail char - (recur (!inc end)) + (recur (!++ end)) <output>)))))) (template: (!half_name_parser @offset @char @module) [(!if_name_char?|head @char - (!letE [source' name] (..name_part_parser @offset where (!inc @offset) source_code) + (!letE [source' name] (..name_part_parser @offset where (!++ @offset) source_code) (#.Right [source' [@module name]])) (!failure ..!half_name_parser where @offset source_code))]) @@ -444,7 +444,7 @@ (<| (!with_char+ source_code//size source_code offset/0 char/0 (!end_of_file where offset/0 source_code current_module)) (if (!n/= (char (~~ (static ..name_separator))) char/0) - (<| (let [offset/1 (!inc offset/0)]) + (<| (let [offset/1 (!++ offset/0)]) (!with_char+ source_code//size source_code offset/1 char/1 (!end_of_file where offset/1 source_code current_module)) (!half_name_parser offset/1 char/1 current_module)) @@ -462,7 +462,7 @@ (let [[where' offset' source_code'] source']) (!with_char source_code' offset' char/separator <simple>) (if (!n/= (char (~~ (static ..name_separator))) char/separator) - (<| (let [offset'' (!inc offset')]) + (<| (let [offset'' (!++ offset')]) (!letE [source'' complex] (..name_part_parser offset'' (!forward 1 where') offset'' source_code')) (if ("lux text =" "" complex) (let [[where offset source_code] source] @@ -482,9 +482,9 @@ ... [expression ...] ... [form "(" [#* expression] ")"]) -(with_expansions [<consume_1> (as_is where (!inc offset/0) source_code) - <move_1> (as_is [(!forward 1 where) (!inc offset/0) source_code]) - <move_2> (as_is [(!forward 1 where) (!inc/2 offset/0) source_code]) +(with_expansions [<consume_1> (as_is where (!++ offset/0) source_code) + <move_1> (as_is [(!forward 1 where) (!++ offset/0) source_code]) + <move_2> (as_is [(!forward 1 where) (!++/2 offset/0) source_code]) <recur> (as_is (parse current_module aliases source_code//size))] (template: (!close closer) @@ -492,8 +492,8 @@ (def: (bit_syntax value [where offset/0 source_code]) (-> Bit (Parser Code)) - (#.Right [[(update@ #.column (|>> !inc/2) where) - (!inc/2 offset/0) + (#.Right [[(revised@ #.column (|>> !++/2) where) + (!++/2 offset/0) source_code] [where (#.Bit value)]])) @@ -530,11 +530,11 @@ ... Text [(~~ (static ..text_delimiter))] - (text_parser where (!inc offset/0) source_code) + (text_parser where (!++ offset/0) source_code) ... Special code [(~~ (static ..sigil))] - (<| (let [offset/1 (!inc offset/0)]) + (<| (let [offset/1 (!++ offset/0)]) (!with_char+ source_code//size source_code offset/1 char/1 (!end_of_file where offset/1 source_code current_module)) ("lux syntax char case!" char/1 @@ -559,15 +559,15 @@ ... (~~ (static ..frac_separator)) ] ... It's either a Rev, an identifier, or a comment. - (with_expansions [<rev_parser> (rev_parser source_code//size offset/0 where (!inc offset/1) source_code) + (with_expansions [<rev_parser> (rev_parser source_code//size offset/0 where (!++ offset/1) source_code) <short_name_parser> (!short_name_parser source_code//size current_module [where offset/1 source_code] where #.Identifier) - <comment_parser> (case ("lux text index" (!inc offset/1) (static text.new_line) source_code) + <comment_parser> (case ("lux text index" (!++ offset/1) (static text.new_line) source_code) (#.Some end) (recur (!vertical where end source_code)) _ (!end_of_file where offset/1 source_code current_module))] - (<| (let [offset/1 (!inc offset/0)]) + (<| (let [offset/1 (!++ offset/0)]) (!with_char+ source_code//size source_code offset/1 char/1 (!end_of_file where offset/1 source_code current_module)) (!if_digit? char/1 @@ -577,7 +577,7 @@ ("lux syntax char case!" char/1 [[(~~ (static ..name_separator))] ... It's either an identifier, or a comment. - (<| (let [offset/2 (!inc offset/1)]) + (<| (let [offset/2 (!++ offset/1)]) (!with_char+ source_code//size source_code offset/2 char/2 (!end_of_file where offset/2 source_code current_module)) ("lux syntax char case!" char/2 @@ -597,7 +597,7 @@ ... else (!if_digit? char/0 ... Natural number - (nat_parser source_code//size offset/0 where (!inc offset/0) source_code) + (nat_parser source_code//size offset/0 where (!++ offset/0) source_code) ... Identifier (!full_name_parser offset/0 [<consume_1>] where aliases #.Identifier)) ))) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux b/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux index 58dc336dd..7f7d205c3 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/synthesis.lux @@ -190,11 +190,11 @@ (template [<with> <query> <tag> <type>] [(def: .public (<with> value) (-> <type> (All [a] (-> (Operation a) (Operation a)))) - (extension.temporary (set@ <tag> value))) + (extension.temporary (with@ <tag> value))) (def: .public <query> (Operation <type>) - (extension.read (get@ <tag>)))] + (extension.read (value@ <tag>)))] [with_locals locals #locals Nat] [with_currying? currying? #currying? Bit] @@ -204,7 +204,7 @@ (All [a] (-> (Operation a) (Operation a))) (<<| (do phase.monad [locals ..locals]) - (..with_locals (inc locals)))) + (..with_locals (++ locals)))) (template [<name> <tag>] [(template: .public (<name> content) @@ -389,12 +389,12 @@ (#Loop loop) (case loop (#Scope scope) - (|> (format (%.nat (get@ #start scope)) - " " (|> (get@ #inits scope) + (|> (format (%.nat (value@ #start scope)) + " " (|> (value@ #inits scope) (list\map %synthesis) (text.interposed " ") (text.enclosed ["[" "]"])) - " " (%synthesis (get@ #iteration scope))) + " " (%synthesis (value@ #iteration scope))) (text.enclosed ["(#loop " ")"])) (#Recur args) diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive.lux b/stdlib/source/library/lux/tool/compiler/meta/archive.lux index 06a2d5ca8..d810d7aca 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive.lux @@ -82,7 +82,7 @@ (def: next (-> Archive ID) - (|>> :representation (get@ #next))) + (|>> :representation (value@ #next))) (def: .public empty Archive @@ -111,8 +111,8 @@ (#try.Success [next (|> archive :representation - (update@ #..resolver (dictionary.has module [next #.None])) - (update@ #..next inc) + (revised@ #..resolver (dictionary.has module [next #.None])) + (revised@ #..next ++) :abstraction)])))) (def: .public (has module [descriptor document output] archive) @@ -122,7 +122,7 @@ (#.Some [id #.None]) (#try.Success (|> archive :representation - (update@ #..resolver (dictionary.has module [id (#.Some [descriptor document output])])) + (revised@ #..resolver (dictionary.has module [id (#.Some [descriptor document output])])) :abstraction)) (#.Some [id (#.Some [existing_descriptor existing_document existing_output])]) @@ -160,7 +160,7 @@ (def: .public archived (-> Archive (List Module)) (|>> :representation - (get@ #resolver) + (value@ #resolver) dictionary.entries (list.all (function (_ [module [id descriptor+document]]) (case descriptor+document @@ -180,13 +180,13 @@ (def: .public reserved (-> Archive (List Module)) (|>> :representation - (get@ #resolver) + (value@ #resolver) dictionary.keys)) (def: .public reservations (-> Archive (List [Module ID])) (|>> :representation - (get@ #resolver) + (value@ #resolver) dictionary.entries (list\map (function (_ [module [id _]]) [module id])))) @@ -196,17 +196,17 @@ (let [[+next +resolver] (:representation additions)] (|> archive :representation - (update@ #next (n.max +next)) - (update@ #resolver (function (_ resolver) - (list\fold (function (_ [module [id entry]] resolver) - (case entry - (#.Some _) - (dictionary.has module [id entry] resolver) - - #.None - resolver)) - resolver - (dictionary.entries +resolver)))) + (revised@ #next (n.max +next)) + (revised@ #resolver (function (_ resolver) + (list\fold (function (_ [module [id entry]] resolver) + (case entry + (#.Some _) + (dictionary.has module [id entry] resolver) + + #.None + resolver)) + resolver + (dictionary.entries +resolver)))) :abstraction))) (type: Reservation @@ -281,6 +281,6 @@ {#next next #resolver (list\fold (function (_ [module id] archive) (dictionary.has module [id #.None] archive)) - (get@ #resolver (:representation ..empty)) + (value@ #resolver (:representation ..empty)) reservations)})))) ) diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux index de1858b97..e4cc633de 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive/artifact.lux @@ -50,7 +50,7 @@ (def: .public artifacts (-> Registry (Row Artifact)) - (|>> :representation (get@ #artifacts))) + (|>> :representation (value@ #artifacts))) (def: next (-> Registry ID) @@ -62,8 +62,8 @@ [id (|> registry :representation - (update@ #artifacts (row.add {#id id - #category #Anonymous})) + (revised@ #artifacts (row.suffix {#id id + #category #Anonymous})) :abstraction)])) (template [<tag> <create> <fetch>] @@ -73,18 +73,18 @@ [id (|> registry :representation - (update@ #artifacts (row.add {#id id - #category (<tag> name)})) - (update@ #resolver (dictionary.has name id)) + (revised@ #artifacts (row.suffix {#id id + #category (<tag> name)})) + (revised@ #resolver (dictionary.has name id)) :abstraction)])) (def: .public (<fetch> registry) (-> Registry (List Text)) (|> registry :representation - (get@ #artifacts) + (value@ #artifacts) row.list - (list.all (|>> (get@ #category) + (list.all (|>> (value@ #category) (case> (<tag> name) (#.Some name) _ #.None)))))] @@ -99,7 +99,7 @@ (def: .public (remember name registry) (-> Text Registry (Maybe ID)) (|> (:representation registry) - (get@ #resolver) + (value@ #resolver) (dictionary.value name))) (def: .public writer @@ -119,8 +119,8 @@ artifacts (: (Writer (Row Category)) (binary.row/64 category))] (|>> :representation - (get@ #artifacts) - (row\map (get@ #category)) + (value@ #artifacts) + (row\map (value@ #category)) artifacts))) (exception: .public (invalid_category {tag Nat}) diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux index 30777c282..a14d708d5 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux @@ -59,7 +59,7 @@ (def: .public signature (-> (Document Any) Signature) - (|>> :representation (get@ #signature))) + (|>> :representation (value@ #signature))) (def: .public (writer content) (All [d] (-> (Writer d) (Writer (Document d)))) diff --git a/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux b/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux index bc413b413..8b4dfedb8 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive/signature.lux @@ -29,7 +29,7 @@ (def: .public (description signature) (-> Signature Text) - (format (%.name (get@ #name signature)) " " (%.nat (get@ #version signature)))) + (format (%.name (value@ #name signature)) " " (%.nat (value@ #version signature)))) (def: .public writer (Writer Signature) diff --git a/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux b/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux index 2df8c36ec..6ee936f42 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/cache/dependency.lux @@ -57,7 +57,7 @@ (do {! state.monad} [.let [parents (case (archive.find module archive) (#try.Success [descriptor document]) - (get@ #descriptor.references descriptor) + (value@ #descriptor.references descriptor) (#try.Failure error) ..fresh)] diff --git a/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux b/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux index c5483ac0c..b4fa30d12 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/io/archive.lux @@ -61,9 +61,9 @@ (def: (archive fs static) (All [!] (-> (file.System !) Static file.Path)) - (format (get@ #static.target static) + (format (value@ #static.target static) (\ fs separator) - (get@ #static.host static))) + (value@ #static.host static))) (def: (unversioned_lux_archive fs static) (All [!] (-> (file.System !) Static file.Path)) @@ -88,7 +88,7 @@ (format (..module fs static module_id) (\ fs separator) (%.nat artifact_id) - (get@ #static.artifact_extension static))) + (value@ #static.artifact_extension static))) (def: (ensure_directory fs path) (-> (file.System Async) file.Path (Async (Try Any))) @@ -125,7 +125,7 @@ (def: .public (enable fs static) (-> (file.System Async) Static (Async (Try Any))) (do (try.with async.monad) - [_ (..ensure_directory fs (get@ #static.target static))] + [_ (..ensure_directory fs (value@ #static.target static))] (..ensure_directory fs (..archive fs static)))) (def: (general_descriptor fs static) @@ -174,7 +174,7 @@ content (document.read $.key document)] (in [module content]))) (archive.archived archive)))] - (in (set@ #.modules modules (fresh_analysis_state host))))) + (in (with@ #.modules modules (fresh_analysis_state host))))) (def: (cached_artifacts fs static module_id) (-> (file.System Async) Static archive.ID (Async (Try (Dictionary Text Binary)))) @@ -231,7 +231,7 @@ (case artifact_category #artifact.Anonymous (do ! - [.let [output (row.add [artifact_id #.None data] output)] + [.let [output (row.suffix [artifact_id #.None data] output)] _ (\ host re_learn context #.None directive)] (in [definitions [analysers @@ -241,7 +241,7 @@ output])) (#artifact.Definition name) - (let [output (row.add [artifact_id #.None data] output)] + (let [output (row.suffix [artifact_id #.None data] output)] (if (text\= $/program.name name) (in [definitions [analysers @@ -260,7 +260,7 @@ (#artifact.Analyser extension) (do ! - [.let [output (row.add [artifact_id #.None data] output)] + [.let [output (row.suffix [artifact_id #.None data] output)] value (\ host re_load context #.None directive)] (in [definitions [(dictionary.has extension (:as analysis.Handler value) analysers) @@ -271,7 +271,7 @@ (#artifact.Synthesizer extension) (do ! - [.let [output (row.add [artifact_id #.None data] output)] + [.let [output (row.suffix [artifact_id #.None data] output)] value (\ host re_load context #.None directive)] (in [definitions [analysers @@ -282,7 +282,7 @@ (#artifact.Generator extension) (do ! - [.let [output (row.add [artifact_id #.None data] output)] + [.let [output (row.suffix [artifact_id #.None data] output)] value (\ host re_load context #.None directive)] (in [definitions [analysers @@ -293,7 +293,7 @@ (#artifact.Directive extension) (do ! - [.let [output (row.add [artifact_id #.None data] output)] + [.let [output (row.suffix [artifact_id #.None data] output)] value (\ host re_load context #.None directive)] (in [definitions [analysers @@ -304,7 +304,7 @@ (#artifact.Custom name) (do ! - [.let [output (row.add [artifact_id (#.Some name) data] output)] + [.let [output (row.suffix [artifact_id (#.Some name) data] output)] _ (\ host re_learn context (#.Some name) directive)] (in [definitions [analysers @@ -333,8 +333,8 @@ (\ ! map (|>> [exported? type annotations] #.Definition [def_name]))))) - (get@ #.definitions content))] - (in [(document.write $.key (set@ #.definitions definitions content)) + (value@ #.definitions content))] + (in [(document.write $.key (with@ #.definitions definitions content)) bundles]))) (def: (load_definitions fs static module_id host_environment descriptor document) @@ -345,8 +345,8 @@ Bundles])))) (do (try.with async.monad) [actual (cached_artifacts fs static module_id) - .let [expected (|> descriptor (get@ #descriptor.registry) artifact.artifacts)] - [document bundles output] (async\in (loaded_document (get@ #static.artifact_extension static) host_environment module_id expected actual document))] + .let [expected (|> descriptor (value@ #descriptor.registry) artifact.artifacts)] + [document bundles output] (async\in (loaded_document (value@ #static.artifact_extension static) host_environment module_id expected actual document))] (in [[descriptor document output] bundles]))) (def: (purge! fs static [module_name module_id]) @@ -361,12 +361,12 @@ (def: (valid_cache? expected actual) (-> Descriptor Input Bit) - (and (text\= (get@ #descriptor.name expected) - (get@ #////.module actual)) - (text\= (get@ #descriptor.file expected) - (get@ #////.file actual)) - (n.= (get@ #descriptor.hash expected) - (get@ #////.hash actual)))) + (and (text\= (value@ #descriptor.name expected) + (value@ #////.module actual)) + (text\= (value@ #descriptor.file expected) + (value@ #////.file actual)) + (n.= (value@ #descriptor.hash expected) + (value@ #////.hash actual)))) (type: Purge (Dictionary Module archive.ID)) @@ -390,7 +390,7 @@ (if (purged? module_name) purge (if (|> descriptor - (get@ #descriptor.references) + (value@ #descriptor.references) set.list (list.any? purged?)) (dictionary.has module_name module_id purge) @@ -417,7 +417,7 @@ (in [true [module_name [module_id [descriptor document]]]]) (do ! - [input (//context.read fs ..pseudo_module import contexts (get@ #static.host_module_extension static) module_name)] + [input (//context.read fs ..pseudo_module import contexts (value@ #static.host_module_extension static) module_name)] (in [(..valid_cache? descriptor input) [module_name [module_id [descriptor document]]]]))))))) load_order (|> pre_loaded_caches @@ -447,7 +447,7 @@ (archive.has module descriptor,document,output archive)) archive loaded_caches) - analysis_state (..analysis_state (get@ #static.host static) archive)] + analysis_state (..analysis_state (value@ #static.host static) archive)] (in [archive analysis_state (list\fold (function (_ [_ [+analysers +synthesizers +generators +directives]] @@ -473,5 +473,5 @@ (#try.Failure error) (in (#try.Success [archive.empty - (fresh_analysis_state (get@ #static.host static)) + (fresh_analysis_state (value@ #static.host static)) ..empty_bundles]))))) diff --git a/stdlib/source/library/lux/tool/compiler/meta/io/context.lux b/stdlib/source/library/lux/tool/compiler/meta/io/context.lux index 0c7969507..979edaa76 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/io/context.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/io/context.lux @@ -6,6 +6,7 @@ [predicate (#+ Predicate)] ["." monad (#+ Monad do)]] [control + ["." maybe] ["." try (#+ Try)] ["." exception (#+ exception:)] [concurrency @@ -17,7 +18,8 @@ [encoding ["." utf8]]] [collection - ["." dictionary (#+ Dictionary)]]] + ["." dictionary (#+ Dictionary)] + ["." list]]] [world ["." file]]]] [program @@ -138,8 +140,8 @@ (type: .public Enumeration (Dictionary file.Path Binary)) -(def: (context_listing fs directory enumeration) - (-> (file.System Async) Context Enumeration (Async (Try Enumeration))) +(def: (context_listing fs context directory enumeration) + (-> (file.System Async) Context file.Path Enumeration (Async (Try Enumeration))) (do {! (try.with async.monad)} [enumeration (|> directory (\ fs directory_files) @@ -147,23 +149,40 @@ (if (text.ends_with? ..lux_extension file) (do ! [source_code (\ fs read file)] - (async\in (dictionary.has' (file.name fs file) source_code enumeration))) + (async\in (dictionary.has' (text.replaced context "" file) source_code enumeration))) (in enumeration))) enumeration)) (\ ! join))] (|> directory (\ fs sub_directories) - (\ ! map (monad.fold ! (context_listing fs) enumeration)) + (\ ! map (monad.fold ! (context_listing fs context) enumeration)) (\ ! join)))) (def: Action (type (All [a] (Async (Try a))))) +(def: (canonical fs context) + (-> (file.System Async) Context (Action Context)) + (do (try.with async.monad) + [subs (\ fs sub_directories context)] + (in (|> subs + list.head + (maybe.else context) + (file.parent fs) + (maybe.else context))))) + (def: .public (listing fs contexts) (-> (file.System Async) (List Context) (Action Enumeration)) - (monad.fold (: (Monad Action) - (try.with async.monad)) - (..context_listing fs) - (: Enumeration - (dictionary.empty text.hash)) - contexts)) + (let [! (: (Monad Action) + (try.with async.monad))] + (monad.fold ! + (function (_ context enumeration) + (do ! + [context (..canonical fs context)] + (..context_listing fs + (format context (\ fs separator)) + context + enumeration))) + (: Enumeration + (dictionary.empty text.hash)) + contexts))) diff --git a/stdlib/source/library/lux/tool/compiler/meta/packager.lux b/stdlib/source/library/lux/tool/compiler/meta/packager.lux index 21c15d551..744d0ecb9 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/packager.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/packager.lux @@ -35,8 +35,8 @@ (-> dependency.Order Order) (list\map (function (_ [module [module_id [descriptor document]]]) (|> descriptor - (get@ #descriptor.registry) + (value@ #descriptor.registry) artifact.artifacts row.list - (list\map (|>> (get@ #artifact.id))) + (list\map (|>> (value@ #artifact.id))) [module_id])))) diff --git a/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux b/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux index 06ef9b25b..d9707b0c0 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/packager/jvm.lux @@ -143,7 +143,7 @@ (let [class_path (|> custom (maybe\map (|>> name.internal name.read)) (maybe.else (runtime.class_name [module artifact])) - (text.suffix (get@ #static.artifact_extension static)))] + (text.suffix (value@ #static.artifact_extension static)))] (do try.monad [_ (java/util/jar/JarOutputStream::putNextEntry (java/util/jar/JarEntry::new class_path) sink)] (in (do_to sink diff --git a/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux b/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux index 90d28197a..a229c78a1 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/packager/scheme.lux @@ -104,7 +104,7 @@ (..bundle_module output)) entry_content (: (Try tar.Content) (|> descriptor - (get@ #descriptor.references) + (value@ #descriptor.references) set.list (list.all (function (_ module) (dictionary.value module mapping))) (list\map (|>> ..module_file _.string _.load_relative/1)) diff --git a/stdlib/source/library/lux/tool/interpreter.lux b/stdlib/source/library/lux/tool/interpreter.lux index 6e28d5c1a..ee02eacc9 100644 --- a/stdlib/source/library/lux/tool/interpreter.lux +++ b/stdlib/source/library/lux/tool/interpreter.lux @@ -75,14 +75,14 @@ (do Monad<!> [state (platform.initialize platform generation_bundle) state (platform.compile platform - (set@ #cli.module syntax.prelude configuration) - (set@ [#extension.state - #directive.analysis #directive.state - #extension.state - #.info #.mode] - #.Interpreter - state)) - [state _] (\ (get@ #platform.file_system platform) + (with@ #cli.module syntax.prelude configuration) + (with@ [#extension.state + #directive.analysis #directive.state + #extension.state + #.info #.mode] + #.Interpreter + state)) + [state _] (\ (value@ #platform.file_system platform) lift (phase.result' state enter_module)) _ (\ Console<!> write ..welcome_message)] (in state))) @@ -102,9 +102,9 @@ (-> Code <Interpretation>)) (do {! phase.monad} [state (extension.lifted phase.get_state) - .let [analyse (get@ [#directive.analysis #directive.phase] state) - synthesize (get@ [#directive.synthesis #directive.phase] state) - generate (get@ [#directive.generation #directive.phase] state)] + .let [analyse (value@ [#directive.analysis #directive.phase] state) + synthesize (value@ [#directive.synthesis #directive.phase] state) + generate (value@ [#directive.generation #directive.phase] state)] [_ codeT codeA] (directive.lifted_analysis (analysis.with_scope (type.with_fresh_env @@ -154,10 +154,10 @@ (do phase.monad [[codeT codeV] (interpret configuration code) state phase.get_state] - (in (/type.represent (get@ [#extension.state - #directive.analysis #directive.state - #extension.state] - state) + (in (/type.represent (value@ [#extension.state + #directive.analysis #directive.state + #extension.state] + state) codeT codeV)))) @@ -171,24 +171,24 @@ (All [anchor expression directive] (-> <Context> (Try [<Context> Text]))) (do try.monad - [.let [[_where _offset _code] (get@ #source context)] - [source' input] (syntax.parse ..module syntax.no_aliases (text.size _code) (get@ #source context)) + [.let [[_where _offset _code] (value@ #source context)] + [source' input] (syntax.parse ..module syntax.no_aliases (text.size _code) (value@ #source context)) [state' representation] (let [... TODO: Simplify ASAP state (:sharing [anchor expression directive] {<Context> context} {(State+ anchor expression directive) - (get@ #state context)})] + (value@ #state context)})] (<| (phase.result' state) ... TODO: Simplify ASAP (:sharing [anchor expression directive] {<Context> context} {(Operation anchor expression directive Text) - (execute (get@ #configuration context) input)})))] + (execute (value@ #configuration context) input)})))] (in [(|> context - (set@ #state state') - (set@ #source source')) + (with@ #state state') + (with@ #source source')) representation])))) (def: .public (run! Monad<!> Console<!> platform configuration generation_bundle) @@ -212,7 +212,7 @@ (if (and (not multi_line?) (text\= ..exit_command line)) (\ Console<!> write ..farewell_message) - (case (read_eval_print (update@ #source (add_line line) context)) + (case (read_eval_print (revised@ #source (add_line line) context)) (#try.Success [context' representation]) (do ! [_ (\ Console<!> write representation)] @@ -222,5 +222,5 @@ (if (ex.match? syntax.end_of_file error) (recur context #1) (exec (log! (ex.error ..error error)) - (recur (set@ #source ..fresh_source context) #0)))))) + (recur (with@ #source ..fresh_source context) #0)))))) ))) diff --git a/stdlib/source/library/lux/type.lux b/stdlib/source/library/lux/type.lux index c6be00945..2a99dded3 100644 --- a/stdlib/source/library/lux/type.lux +++ b/stdlib/source/library/lux/type.lux @@ -36,7 +36,7 @@ type type] (case type (<tag> env sub_type) - (recur (inc num_args) sub_type) + (recur (++ num_args) sub_type) _ [num_args type])))] @@ -345,7 +345,7 @@ (-> Nat Type Type) (case size 0 body - _ (|> body (<name> (dec size)) (<tag> (list)))))] + _ (|> body (<name> (-- size)) (<tag> (list)))))] [univ_q #.UnivQ] [ex_q #.ExQ] @@ -375,7 +375,7 @@ (case depth 0 element_type _ (|> element_type - (array (dec depth)) + (array (-- depth)) (list) (#.Primitive array.type_name)))) @@ -386,7 +386,7 @@ (^multi (^ (#.Primitive name (list element_type))) (text\= array.type_name name)) (let [[depth element_type] (flat_array element_type)] - [(inc depth) element_type]) + [(++ depth) element_type]) _ [0 type])) @@ -487,11 +487,11 @@ (bar expression))))} (macro.with_identifiers [g!_] (let [shareC (` (: (All [(~+ (list\map code.local_identifier type_vars))] - (-> (~ (get@ #type exemplar)) - (~ (get@ #type computation)))) + (-> (~ (value@ #type exemplar)) + (~ (value@ #type computation)))) (.function ((~ g!_) (~ g!_)) - (~ (get@ #expression computation)))))] - (in (list (` ((~ shareC) (~ (get@ #expression exemplar))))))))) + (~ (value@ #expression computation)))))] + (in (list (` ((~ shareC) (~ (value@ #expression exemplar))))))))) (syntax: .public (:by_example [type_vars ..type_parameters exemplar ..typed @@ -509,8 +509,8 @@ (in (list (` (:of ((~! :sharing) [(~+ (list\map code.local_identifier type_vars))] - (~ (get@ #type exemplar)) - (~ (get@ #expression exemplar)) + (~ (value@ #type exemplar)) + (~ (value@ #expression exemplar)) (~ extraction) (:expected []))))))) diff --git a/stdlib/source/library/lux/type/abstract.lux b/stdlib/source/library/lux/type/abstract.lux index 25c864755..9b657cb19 100644 --- a/stdlib/source/library/lux/type/abstract.lux +++ b/stdlib/source/library/lux/type/abstract.lux @@ -69,7 +69,7 @@ (def: (peek_frames reference definition_reference source) (-> Text Text (List [Text Module]) (Stack Frame)) (!peek source reference - (peek_frames_definition definition_reference (get@ #.definitions head)))) + (peek_frames_definition definition_reference (value@ #.definitions head)))) (exception: .public no_active_frames) @@ -77,7 +77,7 @@ (-> (Maybe Text) (Meta Frame)) (function (_ compiler) (let [[reference definition_reference] (name_of ..frames) - current_frames (peek_frames reference definition_reference (get@ #.modules compiler))] + current_frames (peek_frames reference definition_reference (value@ #.modules compiler))] (case (case frame (#.Some frame) (list.example (function (_ [actual _]) @@ -131,14 +131,14 @@ (def: (push_frame [module_reference definition_reference] frame source) (-> Name Frame (List [Text Module]) (List [Text Module])) (!push source module_reference - (update@ #.definitions (push_frame_definition definition_reference frame) head))) + (revised@ #.definitions (push_frame_definition definition_reference frame) head))) (def: (push! frame) (-> Frame (Meta Any)) (function (_ compiler) - (#.Right [(update@ #.modules - (..push_frame (name_of ..frames) frame) - compiler) + (#.Right [(revised@ #.modules + (..push_frame (name_of ..frames) frame) + compiler) []]))) (def: (pop_frame_definition reference source) @@ -163,13 +163,13 @@ (def: (pop_frame [module_reference definition_reference] source) (-> Name (List [Text Module]) (List [Text Module])) (!push source module_reference - (|> head (update@ #.definitions (pop_frame_definition definition_reference))))) + (|> head (revised@ #.definitions (pop_frame_definition definition_reference))))) (syntax: (pop! []) (function (_ compiler) - (#.Right [(update@ #.modules - (..pop_frame (name_of ..frames)) - compiler) + (#.Right [(revised@ #.modules + (..pop_frame (name_of ..frames)) + compiler) (list)]))) (def: cast diff --git a/stdlib/source/library/lux/type/check.lux b/stdlib/source/library/lux/type/check.lux index b4aedaef1..aa8e213af 100644 --- a/stdlib/source/library/lux/type/check.lux +++ b/stdlib/source/library/lux/type/check.lux @@ -188,15 +188,15 @@ {#.doc "A brand-new existential type."} (Check [Nat Type]) (function (_ context) - (let [id (get@ #.ex_counter context)] - (#try.Success [(update@ #.ex_counter inc context) + (let [id (value@ #.ex_counter context)] + (#try.Success [(revised@ #.ex_counter ++ context) [id (#.Ex id)]])))) (template [<name> <outputT> <fail> <succeed>] [(def: .public (<name> id) (-> Var (Check <outputT>)) (function (_ context) - (case (|> context (get@ #.var_bindings) (var::get id)) + (case (|> context (value@ #.var_bindings) (var::get id)) (^or (#.Some (#.Some (#.Var _))) (#.Some #.None)) (#try.Success [context <fail>]) @@ -208,13 +208,13 @@ (exception.except ..unknown_type_var id))))] [bound? Bit false true] - [read (Maybe Type) #.None (#.Some bound)] + [read' (Maybe Type) #.None (#.Some bound)] ) -(def: .public (read! id) +(def: .public (read id) (-> Var (Check Type)) (do ..monad - [?type (read id)] + [?type (read' id)] (case ?type (#.Some type) (in type) @@ -225,7 +225,7 @@ (def: (bound id) (-> Var (Check Type)) (function (_ context) - (case (|> context (get@ #.var_bindings) (var::get id)) + (case (|> context (value@ #.var_bindings) (var::get id)) (#.Some (#.Some bound)) (#try.Success [context bound]) @@ -240,9 +240,9 @@ "Fails if the variable has been bound already.")} (-> Type Var (Check Any)) (function (_ context) - (case (|> context (get@ #.var_bindings) (var::get id)) + (case (|> context (value@ #.var_bindings) (var::get id)) (#.Some #.None) - (#try.Success [(update@ #.var_bindings (var::put id (#.Some type)) context) + (#try.Success [(revised@ #.var_bindings (var::put id (#.Some type)) context) []]) (#.Some (#.Some bound)) @@ -251,12 +251,12 @@ _ (exception.except ..unknown_type_var id)))) -(def: (update type id) +(def: (re_bind type id) (-> Type Var (Check Any)) (function (_ context) - (case (|> context (get@ #.var_bindings) (var::get id)) + (case (|> context (value@ #.var_bindings) (var::get id)) (#.Some _) - (#try.Success [(update@ #.var_bindings (var::put id (#.Some type)) context) + (#try.Success [(revised@ #.var_bindings (var::put id (#.Some type)) context) []]) _ @@ -266,29 +266,29 @@ {#.doc (example "A brand-new (unbound) type-variable.")} (Check [Var Type]) (function (_ context) - (let [id (get@ #.var_counter context)] + (let [id (value@ #.var_counter context)] (#try.Success [(|> context - (update@ #.var_counter inc) - (update@ #.var_bindings (var::new id))) + (revised@ #.var_counter ++) + (revised@ #.var_bindings (var::new id))) [id (#.Var id)]])))) -(def: (apply_type! funcT argT) +(def: (on argT funcT) (-> Type Type (Check Type)) (case funcT (#.Var func_id) (do ..monad - [?funcT' (read func_id)] + [?funcT' (read' func_id)] (case ?funcT' (#.Some funcT') - (apply_type! funcT' argT) + (on argT funcT') _ (except ..invalid_type_application [funcT argT]))) (#.Apply argT' funcT') (do ..monad - [funcT'' (apply_type! funcT' argT')] - (apply_type! funcT'' argT)) + [funcT'' (on argT' funcT')] + (on argT funcT'')) _ (case (//.applied (list argT) funcT) @@ -311,7 +311,7 @@ (function (_ context) (loop [current start output (set.has start empty_ring)] - (case (|> context (get@ #.var_bindings) (var::get current)) + (case (|> context (value@ #.var_bindings) (var::get current)) (#.Some (#.Some type)) (case type (#.Var post) @@ -362,12 +362,8 @@ (//\= a a'))) assumptions)) -(def: (assume! assumption assumptions) - (-> Assumption (List Assumption) (List Assumption)) - (#.Item assumption assumptions)) - -... TODO: "if_bind" can be optimized... -(def: (if_bind id type then else) +... TODO: "if_can_bind" can be optimized... +(def: (if_can_bind id type then else) (All [a] (-> Var Type (Check a) (-> Type (Check a)) (Check a))) @@ -378,10 +374,10 @@ (do {! ..monad} [ring (..ring id) _ (..assertion "" (n.> 1 (set.size ring))) - _ (monad.map ! (update type) (set.list ring))] + _ (monad.map ! (re_bind type) (set.list ring))] then) (do ..monad - [?bound (read id)] + [?bound (read' id)] (else (maybe.else (#.Var id) ?bound))))) ... TODO: "link/2" can be optimized... @@ -395,8 +391,8 @@ (def: (link/3 interpose to from) (-> Var Var Var (Check Any)) (do ..monad - [_ (update (#.Var interpose) from)] - (update (#.Var to) interpose))) + [_ (re_bind (#.Var interpose) from)] + (re_bind (#.Var to) interpose))) ... TODO: "check_vars" can be optimized... (def: (check_vars check' assumptions idE idA) @@ -457,7 +453,7 @@ [<pattern> (do ! [ring (..ring <id>) - _ (monad.map ! (update <type>) (set.list ring))] + _ (monad.map ! (re_bind <type>) (set.list ring))] (in assumptions))]) ([[(#.Var _) _] idE atype] [[_ (#.Var _)] idA etype]) @@ -482,22 +478,22 @@ [(#.UnivQ _ _) (#.Ex _)] (do ..monad - [expected' (apply_type! expected_function expected_input)] + [expected' (..on expected_input expected_function)] (check' assumptions expected' (#.Apply actual))) [(#.Ex _) (#.UnivQ _ _)] (do ..monad - [actual' (apply_type! actual_function actual_input)] + [actual' (..on actual_input actual_function)] (check' assumptions (#.Apply expected) actual')) [(#.Apply [expected_input' expected_function']) (#.Ex _)] (do ..monad - [expected_function'' (apply_type! expected_function' expected_input')] + [expected_function'' (..on expected_input' expected_function')] (check' assumptions (#.Apply [expected_input expected_function'']) (#.Apply actual))) [(#.Ex _) (#.Apply [actual_input' actual_function'])] (do ..monad - [actual_function'' (apply_type! actual_function' actual_input')] + [actual_function'' (..on actual_input' actual_function')] (check' assumptions (#.Apply expected) (#.Apply [actual_input actual_function'']))) (^or [(#.Ex _) _] [_ (#.Ex _)]) @@ -508,7 +504,7 @@ [(#.Var id) _] (function (_ context) (case ((do ..monad - [expected_function' (..read! id)] + [expected_function' (..read id)] (check' assumptions (#.Apply expected_input expected_function') (#.Apply actual))) context) (#try.Success output) @@ -518,7 +514,7 @@ (case actual_function (#.UnivQ _ _) ((do ..monad - [actual' (apply_type! actual_function actual_input)] + [actual' (..on actual_input actual_function)] (check' assumptions (#.Apply expected) actual')) context) @@ -531,15 +527,15 @@ _ ((do ..monad [assumptions (check' assumptions expected_function actual_function) - expected' (apply_type! actual_function expected_input) - actual' (apply_type! actual_function actual_input)] + expected' (..on expected_input actual_function) + actual' (..on actual_input actual_function)] (check' assumptions expected' actual')) context)))) [_ (#.Var id)] (function (_ context) (case ((do ..monad - [actual_function' (read! id)] + [actual_function' (read id)] (check' assumptions (#.Apply expected) (#.Apply actual_input actual_function'))) context) (#try.Success output) @@ -548,8 +544,8 @@ _ ((do ..monad [assumptions (check' assumptions expected_function actual_function) - expected' (apply_type! expected_function expected_input) - actual' (apply_type! expected_function actual_input)] + expected' (..on expected_input expected_function) + actual' (..on actual_input expected_function)] (check' assumptions expected' actual')) context))) @@ -573,16 +569,16 @@ (check_vars check' assumptions idE idA) [(#.Var id) _] - (if_bind id actual - (check\in assumptions) - (function (_ bound) - (check' assumptions bound actual))) + (if_can_bind id actual + (check\in assumptions) + (function (_ bound) + (check' assumptions bound actual))) [_ (#.Var id)] - (if_bind id expected - (check\in assumptions) - (function (_ bound) - (check' assumptions expected bound))) + (if_can_bind id expected + (check\in assumptions) + (function (_ bound) + (check' assumptions expected bound))) (^template [<fE> <fA>] [[(#.Apply aE <fE>) (#.Apply aA <fA>)] @@ -597,12 +593,12 @@ (if (assumed? new_assumption assumptions) (check\in assumptions) (do ..monad - [expected' (apply_type! F A)] - (check' (assume! new_assumption assumptions) expected' actual)))) + [expected' (..on A F)] + (check' (#.Item new_assumption assumptions) expected' actual)))) [_ (#.Apply A F)] (do ..monad - [actual' (apply_type! F A)] + [actual' (..on A F)] (check' assumptions expected actual')) ... TODO: Refactor-away as cold-code @@ -610,7 +606,7 @@ [[(<tag> _) _] (do ..monad [[_ paramT] <instancer> - expected' (apply_type! expected paramT)] + expected' (..on paramT expected)] (check' assumptions expected' actual))]) ([#.UnivQ ..existential] [#.ExQ ..var]) @@ -620,7 +616,7 @@ [[_ (<tag> _)] (do ..monad [[_ paramT] <instancer> - actual' (apply_type! actual paramT)] + actual' (..on paramT actual)] (check' assumptions expected actual'))]) ([#.UnivQ ..var] [#.ExQ ..existential]) @@ -713,7 +709,7 @@ (#.Var id) (do ..monad - [?actualT (read id)] + [?actualT (read' id)] (case ?actualT (#.Some actualT) (clean actualT) diff --git a/stdlib/source/library/lux/type/implicit.lux b/stdlib/source/library/lux/type/implicit.lux index 99cafdcda..cc54a82a1 100644 --- a/stdlib/source/library/lux/type/implicit.lux +++ b/stdlib/source/library/lux/type/implicit.lux @@ -30,7 +30,7 @@ (def: (type_var id env) (-> Nat Type_Context (Meta Type)) (case (list.example (|>> product.left (n.= id)) - (get@ #.var_bindings env)) + (value@ #.var_bindings env)) (#.Some [_ (#.Some type)]) (case type (#.Var id') @@ -53,7 +53,7 @@ compiler meta.compiler_state] (case raw_type (#.Var id) - (type_var id (get@ #.type_context compiler)) + (type_var id (value@ #.type_context compiler)) _ (in raw_type)))) @@ -75,7 +75,7 @@ (#.Product left right) (if (n.= 0 idx) (\ check.monad in left) - (member_type (dec idx) right)) + (member_type (-- idx) right)) _ (if (n.= 0 idx) @@ -336,7 +336,7 @@ (list.indices 10) (list.indices 10)) "(Functor List) map" - (\\ map inc (list.indices 10)) + (\\ map ++ (list.indices 10)) "Caveat emptor: You need to make sure to import the module of any implementation you want to use." "Otherwise, this macro will not find it.")} (case args @@ -364,7 +364,7 @@ (#.Right [args _]) (do {! meta.monad} - [labels (|> (macro.identifier "") (list.repeated (list.size args)) (monad.seq !))] + [labels (|> (macro.identifier "") (list.repeated (list.size args)) (monad.all !))] (in (list (` (let [(~+ (|> args (list.zipped/2 labels) (list\map ..pair_list) list\join))] (..\\ (~ (code.identifier member)) (~+ labels))))))) )) @@ -373,7 +373,7 @@ (-> Nat (Meta (List Code))) (|> (macro.identifier "g!implicit") (list.repeated amount) - (monad.seq meta.monad))) + (monad.all meta.monad))) (def: implicits (Parser (List Code)) diff --git a/stdlib/source/library/lux/type/poly.lux b/stdlib/source/library/lux/type/poly.lux index edd21a88c..51f0b7618 100644 --- a/stdlib/source/library/lux/type/poly.lux +++ b/stdlib/source/library/lux/type/poly.lux @@ -86,7 +86,7 @@ (let [idx (<type>.adjusted_idx env idx)] (if (n.= 0 idx) (|> (dictionary.value idx env) maybe.trusted product.left (code env)) - (` (.$ (~ (code.nat (dec idx))))))) + (` (.$ (~ (code.nat (-- idx))))))) (#.Apply (#.Named [(~~ (static .prelude_module)) "Nothing"] _) (#.Parameter idx)) (let [idx (<type>.adjusted_idx env idx)] diff --git a/stdlib/source/library/lux/type/quotient.lux b/stdlib/source/library/lux/type/quotient.lux index 0006d9dbd..6334d68f3 100644 --- a/stdlib/source/library/lux/type/quotient.lux +++ b/stdlib/source/library/lux/type/quotient.lux @@ -40,7 +40,7 @@ (template [<name> <output> <slot>] [(def: .public <name> (All [t c %] (-> (Quotient t c %) <output>)) - (|>> :representation (get@ <slot>)))] + (|>> :representation (value@ <slot>)))] [value t #value] [label c #label] diff --git a/stdlib/source/library/lux/type/refinement.lux b/stdlib/source/library/lux/type/refinement.lux index 4e1a88c09..7bb718659 100644 --- a/stdlib/source/library/lux/type/refinement.lux +++ b/stdlib/source/library/lux/type/refinement.lux @@ -34,7 +34,7 @@ (template [<name> <output> <slot>] [(def: .public <name> (All [t %] (-> (Refined t %) <output>)) - (|>> :representation (get@ <slot>)))] + (|>> :representation (value@ <slot>)))] [value t #value] [predicate (Predicate t) #predicate] diff --git a/stdlib/source/library/lux/type/resource.lux b/stdlib/source/library/lux/type/resource.lux index 5ee949bd3..fee4aaf79 100644 --- a/stdlib/source/library/lux/type/resource.lux +++ b/stdlib/source/library/lux/type/resource.lux @@ -55,7 +55,7 @@ (function (_ keys) (\ monad in [keys value]))) - (def: (bind f input) + (def: (then f input) (function (_ keysI) (do monad [[keysT value] (input keysI)] @@ -166,12 +166,12 @@ (#.Item head tail) (do {! meta.monad} [.let [max_idx (list\fold n.max head tail)] - g!inputs (<| (monad.seq !) (list.repeated (inc max_idx)) (macro.identifier "input")) + g!inputs (<| (monad.all !) (list.repeated (++ max_idx)) (macro.identifier "input")) .let [g!outputs (|> (monad.fold maybe.monad (function (_ from to) (do maybe.monad [input (list.item from g!inputs)] - (in (row.add input to)))) + (in (row.suffix input to)))) (: (Row Code) row.empty) swaps) maybe.trusted @@ -210,7 +210,7 @@ (do {! meta.monad} [g!keys (|> (macro.identifier "keys") (list.repeated amount) - (monad.seq !))] + (monad.all !))] (in (list (` (: (All [(~ g!!) (~+ g!keys) (~ g!context)] (-> ((~! monad.Monad) (~ g!!)) (Procedure (~ g!!) diff --git a/stdlib/source/library/lux/type/unit.lux b/stdlib/source/library/lux/type/unit.lux index fcbfe0711..e18af25b0 100644 --- a/stdlib/source/library/lux/type/unit.lux +++ b/stdlib/source/library/lux/type/unit.lux @@ -217,5 +217,5 @@ (All [unit] (Enum (Qty unit))) (def: &order ..order) - (def: succ (|>> ..out inc ..in)) - (def: pred (|>> ..out dec ..in))) + (def: succ (|>> ..out ++ ..in)) + (def: pred (|>> ..out -- ..in))) diff --git a/stdlib/source/library/lux/world/db/jdbc.lux b/stdlib/source/library/lux/world/db/jdbc.lux index 2906cebeb..76c1cc17b 100644 --- a/stdlib/source/library/lux/world/db/jdbc.lux +++ b/stdlib/source/library/lux/world/db/jdbc.lux @@ -92,10 +92,10 @@ (-> java/sql/PreparedStatement (IO (Try a))) (IO (Try a)))) (do (try.with io.monad) - [prepared (io.io (java/sql/Connection::prepareStatement (sql.sql (get@ #sql statement)) + [prepared (io.io (java/sql/Connection::prepareStatement (sql.sql (value@ #sql statement)) (java/sql/Statement::RETURN_GENERATED_KEYS) conn)) - _ (io.io ((get@ #input statement) (get@ #value statement) [1 prepared])) + _ (io.io ((value@ #input statement) (value@ #value statement) [1 prepared])) result (action prepared) _ (java/sql/Statement::close prepared)] (in result))) @@ -114,29 +114,29 @@ (def: .public (connect creds) (-> Credentials (IO (Try (DB IO)))) (do (try.with io.monad) - [connection (java/sql/DriverManager::getConnection (get@ #url creds) - (get@ #user creds) - (get@ #password creds))] + [connection (java/sql/DriverManager::getConnection (value@ #url creds) + (value@ #user creds) + (value@ #password creds))] (in (: (DB IO) (implementation (def: execute (..can_execute (function (execute statement) (with_statement statement connection - (function (_ prepared) - (do (try.with io.monad) - [row_count (java/sql/PreparedStatement::executeUpdate prepared)] - (in (.nat row_count)))))))) + (function (_ prepared) + (do (try.with io.monad) + [row_count (java/sql/PreparedStatement::executeUpdate prepared)] + (in (.nat row_count)))))))) (def: insert (..can_insert (function (insert statement) (with_statement statement connection - (function (_ prepared) - (do (try.with io.monad) - [_ (java/sql/PreparedStatement::executeUpdate prepared) - result_set (io.io (java/sql/Statement::getGeneratedKeys prepared))] - (/output.rows /output.long result_set))))))) + (function (_ prepared) + (do (try.with io.monad) + [_ (java/sql/PreparedStatement::executeUpdate prepared) + result_set (io.io (java/sql/Statement::getGeneratedKeys prepared))] + (/output.rows /output.long result_set))))))) (def: close (..can_close @@ -147,10 +147,10 @@ (..can_query (function (query [statement output]) (with_statement statement connection - (function (_ prepared) - (do (try.with io.monad) - [result_set (java/sql/PreparedStatement::executeQuery prepared)] - (/output.rows output result_set))))))) + (function (_ prepared) + (do (try.with io.monad) + [result_set (java/sql/PreparedStatement::executeQuery prepared)] + (/output.rows output result_set))))))) ))))) (def: .public (with_db creds action) diff --git a/stdlib/source/library/lux/world/db/jdbc/input.lux b/stdlib/source/library/lux/world/db/jdbc/input.lux index fe510ea66..4a2f43507 100644 --- a/stdlib/source/library/lux/world/db/jdbc/input.lux +++ b/stdlib/source/library/lux/world/db/jdbc/input.lux @@ -75,7 +75,7 @@ (function (_ value [idx statement]) (do try.monad [_ (<setter> (.int idx) value statement)] - (in [(.inc idx) statement]))))] + (in [(.++ idx) statement]))))] [boolean Bit java/sql/PreparedStatement::setBoolean] @@ -99,7 +99,7 @@ [_ (<setter> (.int idx) (<constructor> (instant.millis value)) statement)] - (in [(.inc idx) statement]))))] + (in [(.++ idx) statement]))))] [date java/sql/PreparedStatement::setDate java/sql/Date::new] [time java/sql/PreparedStatement::setTime java/sql/Time::new] diff --git a/stdlib/source/library/lux/world/db/jdbc/output.lux b/stdlib/source/library/lux/world/db/jdbc/output.lux index 08c7354f5..e6e9a8306 100644 --- a/stdlib/source/library/lux/world/db/jdbc/output.lux +++ b/stdlib/source/library/lux/world/db/jdbc/output.lux @@ -121,7 +121,7 @@ (#try.Failure error) (#try.Success value) - (#try.Success [(inc idx) value]))))] + (#try.Success [(++ idx) value]))))] [boolean java/sql/ResultSet::getBoolean Bit] @@ -146,7 +146,7 @@ (#try.Failure error) (#try.Success value) - (#try.Success [(inc idx) + (#try.Success [(++ idx) (instant.from_millis (java/util/Date::getTime value))]))))] [date java/sql/ResultSet::getDate] diff --git a/stdlib/source/library/lux/world/file.lux b/stdlib/source/library/lux/world/file.lux index e6c10352f..05925b4e8 100644 --- a/stdlib/source/library/lux/world/file.lux +++ b/stdlib/source/library/lux/world/file.lux @@ -1059,8 +1059,8 @@ [(#.Left file) #.End] (#try.Success (dictionary.has head (#.Left (|> file - (set@ #mock_last_modified now) - (set@ #mock_content content))) + (with@ #mock_last_modified now) + (with@ #mock_content content))) directory)) [(#.Right sub_directory) (#.Item _)] @@ -1239,7 +1239,7 @@ (in (|> |store| (..retrieve_mock_file! separator path) (try\map (|>> product.right - (get@ #mock_content) + (value@ #mock_content) binary.size))))))) (def: (last_modified path) @@ -1249,7 +1249,7 @@ (in (|> |store| (..retrieve_mock_file! separator path) (try\map (|>> product.right - (get@ #mock_last_modified)))))))) + (value@ #mock_last_modified)))))))) (def: (can_execute? path) (stm.commit! @@ -1258,7 +1258,7 @@ (in (|> |store| (..retrieve_mock_file! separator path) (try\map (|>> product.right - (get@ #mock_can_execute)))))))) + (value@ #mock_can_execute)))))))) (def: (read path) (stm.commit! @@ -1267,7 +1267,7 @@ (in (|> |store| (..retrieve_mock_file! separator path) (try\map (|>> product.right - (get@ #mock_content)))))))) + (value@ #mock_content)))))))) (def: (delete path) (stm.commit! @@ -1278,7 +1278,7 @@ (..attempt! (function (_ |store|) (do try.monad [[name file] (..retrieve_mock_file! separator path |store|)] - (..update_mock_file! separator path now (get@ #mock_content file) |store|))) + (..update_mock_file! separator path now (value@ #mock_content file) |store|))) store))) (def: (write content path) @@ -1296,7 +1296,7 @@ [[name file] (..retrieve_mock_file! separator path |store|)] (..update_mock_file! separator path now (\ binary.monoid compose - (get@ #mock_content file) + (value@ #mock_content file) content) |store|))) store)))) @@ -1308,7 +1308,7 @@ (case (do try.monad [[name file] (..retrieve_mock_file! separator origin |store|) |store| (..delete_mock_node! separator origin |store|)] - (..update_mock_file! separator destination (get@ #mock_last_modified file) (get@ #mock_content file) |store|)) + (..update_mock_file! separator destination (value@ #mock_last_modified file) (value@ #mock_content file) |store|)) (#try.Success |store|) (do ! [_ (stm.write |store| store)] diff --git a/stdlib/source/library/lux/world/file/watch.lux b/stdlib/source/library/lux/world/file/watch.lux index 3a0b98f86..0e5deec4a 100644 --- a/stdlib/source/library/lux/world/file/watch.lux +++ b/stdlib/source/library/lux/world/file/watch.lux @@ -56,7 +56,7 @@ (def: .public <predicate> (Predicate Concern) - (|>> :representation (get@ <event>)))] + (|>> :representation (value@ <event>)))] [creation creation? #create true false false] @@ -283,7 +283,7 @@ (loop [idx 0 output #.End] (if (n.< size idx) - (recur (inc idx) + (recur (++ idx) (#.Item (java/util/List::get (.int idx) list) output)) output)))) @@ -365,7 +365,7 @@ (def: (default_start watch_events watcher path) (-> (List Watch_Event) java/nio/file/WatchService //.Path (Async (Try java/nio/file/WatchKey))) (let [watch_events' (list\fold (function (_ [index watch_event] watch_events') - (ffi.array_write index watch_event watch_events')) + (ffi.write! index watch_event watch_events')) (ffi.array (java/nio/file/WatchEvent$Kind java/lang/Object) (list.size watch_events)) (list.enumeration watch_events))] diff --git a/stdlib/source/library/lux/world/net/http/client.lux b/stdlib/source/library/lux/world/net/http/client.lux index 167d87c88..50a5a2436 100644 --- a/stdlib/source/library/lux/world/net/http/client.lux +++ b/stdlib/source/library/lux/world/net/http/client.lux @@ -182,7 +182,7 @@ (#.Some name) (do ! [?value (java/net/URLConnection::getHeaderField index connection)] - (recur (inc index) + (recur (++ index) (dictionary.has name (maybe.else "" ?value) headers))) #.None @@ -232,10 +232,10 @@ async.future (\ async.monad map (|>> (case> (#try.Success [status message]) - (#try.Success [status (update@ #//.body (: (-> (//.Body IO) (//.Body Async)) - (function (_ body) - (|>> body async.future))) - message)]) + (#try.Success [status (revised@ #//.body (: (-> (//.Body IO) (//.Body Async)) + (function (_ body) + (|>> body async.future))) + message)]) (#try.Failure error) (#try.Failure error))))))) diff --git a/stdlib/source/library/lux/world/net/http/request.lux b/stdlib/source/library/lux/world/net/http/request.lux index 6d9e94b8e..5b0a254e4 100644 --- a/stdlib/source/library/lux/world/net/http/request.lux +++ b/stdlib/source/library/lux/world/net/http/request.lux @@ -56,7 +56,7 @@ (All [a] (-> (<json>.Reader a) (-> a Server) Server)) (function (_ (^@ request [identification protocol resource message])) (do async.monad - [?raw (read_text_body (get@ #//.body message))] + [?raw (read_text_body (value@ #//.body message))] (case (do try.monad [raw ?raw content (\ json.codec decode raw)] @@ -71,7 +71,7 @@ (-> (-> Text Server) Server) (function (_ (^@ request [identification protocol resource message])) (do async.monad - [?raw (read_text_body (get@ #//.body message))] + [?raw (read_text_body (value@ #//.body message))] (case ?raw (#try.Success content) (server content request) @@ -82,14 +82,14 @@ (def: .public (query property server) (All [a] (-> (Property a) (-> a Server) Server)) (function (_ [identification protocol resource message]) - (let [full (get@ #//.uri resource) + (let [full (value@ #//.uri resource) [uri query] (|> full (text.split_by "?") (maybe.else [full ""]))] (case (do try.monad [query (//query.parameters query) input (context.result query property)] - (in [[identification protocol (set@ #//.uri uri resource) message] + (in [[identification protocol (with@ #//.uri uri resource) message] input])) (#try.Success [request input]) (server input request) @@ -101,7 +101,7 @@ (All [a] (-> (Property a) (-> a Server) Server)) (function (_ (^@ request [identification protocol resource message])) (do async.monad - [?body (read_text_body (get@ #//.body message))] + [?body (read_text_body (value@ #//.body message))] (case (do try.monad [body ?body form (//query.parameters body)] @@ -116,7 +116,7 @@ (All [a] (-> (Property a) (-> a Server) Server)) (function (_ (^@ request [identification protocol resource message])) (case (do try.monad - [cookies (|> (get@ #//.headers message) + [cookies (|> (value@ #//.headers message) (dictionary.value "Cookie") (maybe.else "") //cookie.get)] diff --git a/stdlib/source/library/lux/world/net/http/response.lux b/stdlib/source/library/lux/world/net/http/response.lux index 9d74ced0c..b49715c4d 100644 --- a/stdlib/source/library/lux/world/net/http/response.lux +++ b/stdlib/source/library/lux/world/net/http/response.lux @@ -40,7 +40,7 @@ (def: .public (temporary_redirect to) (-> URL Response) (let [[status message] (..empty status.temporary_redirect)] - [status (update@ #//.headers (header.location to) message)])) + [status (revised@ #//.headers (header.location to) message)])) (def: .public not_found Response diff --git a/stdlib/source/library/lux/world/net/http/route.lux b/stdlib/source/library/lux/world/net/http/route.lux index a650f53d2..9689e3414 100644 --- a/stdlib/source/library/lux/world/net/http/route.lux +++ b/stdlib/source/library/lux/world/net/http/route.lux @@ -18,7 +18,7 @@ [(def: .public (<name> server) (-> Server Server) (function (_ (^@ request [identification protocol resource message])) - (case (get@ #//.scheme protocol) + (case (value@ #//.scheme protocol) <scheme> (server request) @@ -33,7 +33,7 @@ [(def: .public (<name> server) (-> Server Server) (function (_ (^@ request [identification protocol resource message])) - (case (get@ #//.method resource) + (case (value@ #//.method resource) <method> (server request) @@ -54,12 +54,12 @@ (def: .public (uri path server) (-> URI Server Server) (function (_ [identification protocol resource message]) - (if (text.starts_with? path (get@ #//.uri resource)) + (if (text.starts_with? path (value@ #//.uri resource)) (server [identification protocol - (update@ #//.uri - (|>> (text.clip' (text.size path)) maybe.trusted) - resource) + (revised@ #//.uri + (|>> (text.clip' (text.size path)) maybe.trusted) + resource) message]) (async.resolved //response.not_found)))) diff --git a/stdlib/source/library/lux/world/service/journal.lux b/stdlib/source/library/lux/world/service/journal.lux index 424288cb5..afab93a3e 100644 --- a/stdlib/source/library/lux/world/service/journal.lux +++ b/stdlib/source/library/lux/world/service/journal.lux @@ -33,12 +33,12 @@ (implementation: .public (equivalence (^open "_\.")) (All [a] (-> (Equivalence a) (Equivalence (Entry a)))) (def: (= reference sample) - (and (_\= (get@ #what reference) (get@ #what sample)) - (text\= (get@ #why reference) (get@ #why sample)) - (text\= (get@ #how reference) (get@ #how sample)) - (text\= (get@ #who reference) (get@ #who sample)) - (text\= (get@ #where reference) (get@ #where sample)) - (instant\= (get@ #when reference) (get@ #when sample))))) + (and (_\= (value@ #what reference) (value@ #what sample)) + (text\= (value@ #why reference) (value@ #why sample)) + (text\= (value@ #how reference) (value@ #how sample)) + (text\= (value@ #who reference) (value@ #who sample)) + (text\= (value@ #where reference) (value@ #where sample)) + (instant\= (value@ #when reference) (value@ #when sample))))) (capability: .public (Can_Write ! a) (can_write (Entry a) (! (Try Any)))) diff --git a/stdlib/source/library/lux/world/shell.lux b/stdlib/source/library/lux/world/shell.lux index 429c46897..d59b72786 100644 --- a/stdlib/source/library/lux/world/shell.lux +++ b/stdlib/source/library/lux/world/shell.lux @@ -182,9 +182,9 @@ (-> (List Argument) (Array java/lang/String)) (product.right (list\fold (function (_ argument [idx output]) - [(inc idx) (jvm.array_write idx - (:as java/lang/String argument) - output)]) + [(++ idx) (jvm.write! idx + (:as java/lang/String argument) + output)]) [0 (jvm.array java/lang/String (list.size arguments))] arguments))) @@ -197,9 +197,10 @@ (java/util/Map java/lang/String java/lang/String) (java/util/Map java/lang/String java/lang/String)) (list\fold (function (_ [key value] target') - (exec (java/util/Map::put (:as java/lang/String key) - (:as java/lang/String value) - target') + (exec + (java/util/Map::put (:as java/lang/String key) + (:as java/lang/String value) + target') target')) target (dictionary.entries input))) |